Ich würde gerne auf dem BOB-HAT-V5 ein OLED-Display benutzen, um Messwerte, Aktivitäten, Configurationen usw. anzuzeigen, da WLAN nicht immer auf Anhieb funktioniert und man dann nicht sieht, was los ist. Als ich den FiPy mit der Arduino-IDE programmiert habe, hat es sehr gut funktioniert. Doch mit MicroPython tauchen Probleme auf.
Im Internet habe ich folgendes Projekt gefunden:
Software: MicroPython-on-ESP32-master.zip (11,0 KB)
Es ist aber für einen ESP8266 mit uPiCraft code editor programmiert. Dieser MicroPython-Dialekt ist leider nicht ganz kompatibel zu dem von PyCom.
So konnte ich den I2C-Bus mit dem BME280 in Betrieb nehmen.
Original uPiCraft
i2c = I2C(scl=Pin(22), sda=Pin(21), freq=100000) # ESP32 DevKit
bme = bme280.BME280(i2c=i2c,address=addrBME280)
auf FiPy funktioniert
i2c = I2C(0, I2C.MASTER, pins=('P9', 'P10')) # FiPy
bme = bme280.BME280(i2c=i2c,address=addrBME280)
Aber beim SSD1306 OLED gibt es noch Probleme. In der Library ssd1306.py werden Methoden aufgerufen, die es bei PyCom nicht gibt.
def write_data(self, buf):
self.temp[0] = self.addr << 1
self.temp[1] = 0x40 # Co=0, D/C#=1
global currentBoard
if currentBoard=="esp8266" or currentBoard=="esp32":
self.i2c.start()
self.i2c.write(self.temp)
self.i2c.write(buf)
self.i2c.stop()
Ich wollte i2c.start()
, i2c.write(self.temp)
und i2c.stop()
durch i2c.writeto(self.addr, self.temp)
ersetzen, aber das hat nicht richtig funktionert.
Kann mir jemand helfen?