MicroPython I2C keine Daten beheben

English Deutsch

Problem:

Du hast MicroPythons I2C ähnlich wie diesem konfiguriert (in meinem Fall auf dem ESP8266, aber dies gilt für viele MCUs):

micropython_i2c_example.py
i2c = machine.I2C(-1, machine.Pin(5), machine.Pin(4))

aber du kannst keine Geräte auf dem Bus finden:

micropython_i2c_scan.py
>>> i2c.scan()
[]

Lösung

Wahrscheinlich hast du vergessen, die Pins als Pullups zu konfigurieren. I2C benötigt Pullups zum Funktionieren, und viele MCUs (wie der ESP8266) bieten Unterstützung für integrierte (schwache) Pull-ups.

micropython_i2c_pullup.py
p4 = machine.Pin(4, mode=machine.Pin.OUT, pull=machine.Pin.PULL_UP)
p5 = machine.Pin(5, mode=machine.Pin.OUT, pull=machine.Pin.PULL_UP)
i2c = machine.I2C(-1, p5, p4)

i2c.scan() # [47]

Du kannst dies auch überprüfen, indem du mit einem Multimeter oder einem Oszilloskop messst: Wenn keine Kommunikation auf dem I2C-Bus stattfindet, sollte die Spannung der Versorgungsspannung deines MCUs entsprechen (normalerweise 3.3V oder 5V – 0V zeigt einen fehlenden Pullup oder einen anderen Fehler an).


Check out similar posts by category: Electronics, MicroPython, Python