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
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow