You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Thonny IDE中树莓派Pico连SSD1306的OSError: [Errno 110] ETIMEDOUT错误

树莓派Pico+SSD1306 OLED ETIMEDOUT错误解决方法

问题场景

使用树莓派Pico和SSD1306 OLED屏幕运行代码时出现超时错误,执行i2c.scan()返回空列表,具体信息如下:

运行代码

from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
import framebuf
width = 128
height = 64
i2c = I2C(1, scl=Pin(15), sda=Pin(14), freq=400000)
oled = SSD1306_I2C(width, height, i2c)
oled.fill(0)
oled.text("Hola perro", 5, 8)
oled.text("2022", 5, 18)
oled.show()

错误信息

Traceback (most recent call last):
  File "<stdin>", line 12, in <module>
  File "ssd1306.py", line 118, in __init__
  File "ssd1306.py", line 37, in __init__
  File "ssd1306.py", line 74, in init_display
  File "ssd1306.py", line 123, in write_cmd
OSError: [Errno 110] ETIMEDOUT

I2C扫描结果

>>> print(i2c.scan())
[]

解决步骤

  • 检查硬件接线

    • 确认引脚对应关系:Pico的GPIO14(SDA)接OLED的SDA引脚,GPIO15(SCL)接OLED的SCL引脚;如果用I2C0总线,对应引脚是GPIO0(SDA)和GPIO1(SCL),别混淆总线编号。
    • 电源适配:OLED的VCC接Pico的3.3V引脚(多数SSD1306不支持5V供电,接5V可能导致通信异常或硬件损坏),GND引脚必须和Pico的GND连通。
    • 排查接线故障:检查杜邦线是否损坏、引脚是否虚焊、连接是否松动。
  • 调整I2C配置

    • 确认总线编号正确:代码中用I2C(1)对应Pico的I2C1总线,若实际接线用的是I2C0,需修改为I2C(0, scl=Pin(1), sda=Pin(0), freq=400000)。
    • 降低通信频率:部分OLED模块对400kHz的高频支持不佳,将freq=400000改为freq=100000重试。
  • 验证库文件正确性

    • 确保Pico上的ssd1306.py是适配MicroPython的版本,避免使用Arduino等其他平台的库文件,必要时重新上传官方适配的SSD1306库。

内容的提问来源于stack exchange,提问作者AmirMohammad Poresmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:50:14