Wie man MicroPython einfach und schnell auf den ESP32 bekommt und relativ komfortabel damit arbeiten kann, habe ich hier beschreiben.
Allerdings besitze ich einige TTGO T-Display von der Firma Lilygo und das sind ESP32 mit fertig verlötetem schickem Display. Da habe ich mir gedacht es wäre schön, wenn ich das Display mit MicroPython ansprechen könnte und ein bisschen herum recherchiert. Dabei bin ich auf 2 verschiedene Methoden gestoßen. Leider haben beide für mich verschiedene Nachteile.
Zum einen können beide Methoden keine Pixel auslesen, so dass ich nicht in der Lage bin Farbinformationen vom fertigen Bild zu ermitteln. Die LoBo Lösung bietet zwar den Befehl ‘ReadPixel’ an, aber leider funktioniert der nicht.
Zum anderen habe ich keine Möglichkeit gefunden, eine Grafik erst im RAM aufzubauen und dann auf einmal auf das Display zu schreiben, wie es zum Beispiel mit ‘TFT_eSPI’ in C++ unter der Arduino IDE möglich ist, wenn ich Sprites verwenden.
Methode 1
Ersten Erfolg bei meiner Recherche hatte ich auf Boris Lovosevics GitHub Seite. Er bietet eine Firmware an, die MicroPython und das Display des TTGO T-Display so verknüpft, das ich damit mit Python direkt auf das Display zeichnen kann! Ich musste sie nur auf mein TTGO T-Display flashen und schon konnte ich mit ersten Versuchen beginnen.
Hier finden sich verschiedene Firmwares.
https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo/wiki/firmwares
Ich habe diese verwendet:
Direktlink:
Als ich das Paket entpackte, wurde ich mit mehreren ‚bin‘-Dateien konfrontiert. Viele Anleitungen zum Flashen von Firmwares gehen von einer Python-Installation auf dem Betriebssystem aus und beziehen sich auf das Python-Tool ‚esptool.py‘. Ich möchte aber keine Python-Installation auf meinem Computer haben und habe darum nach Alternativen gesucht.
Bei ESPRESSIF gibt es ‘Flash Download Tools’, mit denen auch ohne Python das Flashen von ESP32 möglich ist. Das Herunterladen ist von dieser Seite aus möglich:
https://www.espressif.com/en/support/download/other-tools
Auf die Schaltfläche mit dem Pfeil-nach-unten klicken. Wenn Ihr die entsprechende ZIP-Datei heruntergeladen und ausgepackt habt, findet Ihr dort ein Programm ‘flash_download_tool_3.9.2.exe’, die nach dem Start folgendes Fenster zeigt:
Dort müsst Ihr die vom ebenfalls entpackten LoBo-Archiv enthaltenen Dateien wie im obigen Bild gezeigt eintragen. Seht Euch auch alle anderen Einstellungen an und stellt sie bei Euch passend ein!
Nun könnt Ihr Eure ersten Programme ausprobieren. Zur Initialisierung habe ich folgende Anweisungen verwendet:
tft = display.TFT ()
tft.init (tft.ST7789, \
bgr=False, \
rot=tft.PORTRAIT_FLIP, \
miso=17, \
backl_pin=4, \
backl_on=1, \
mosi=19, \
clk=18, \
cs=5, \
dc=16, \
splash=False)
tft.setwin (52, 40, 240, 320)
tft.tft_writecmd (0x21)
Weitere Beispiele könnt Ihr auf nachfolgender Instructables Seite finden:
https://www.instructables.com/TTGO-color-Display-With-Micropython-TTGO-T-display/
Allerdings gehen alle Beispiele auf dieser Seite von invertierten Farbwerten aus. Damit Ihr dieses Problem nicht habt, habe ich bei meiner Initialisierung noch den Befehl tft.tft_writecmd (0x21)
angehängt. Damit könnt Ihr Farben wie gewohnt in Hexadezimal angeben. Also zum Beispiel 0x00000 für Schwarz oder 0xFFFFFF für Weiß. Die ersten beiden Stellen stehen für Rot, die mittleren beiden Stellen für Grün und die ganz rechts stehenden beiden Stellen für Blau.
Für mein Mandelbrot Video habe ich bis auf die Texte nur einen einzigen Grafik-Befehl verwendet:
tft.pixel(x, y, color)
Methode 2
Bei dieser Lösung wird eine zusätzliche Grafik-Bibliothek zu einer schon auf dem ESP32 befindlichen MicroPython Installation gespeichert und kann anschließend einfach über ‘IMPORT’ verwendet werden. Ihr holt Euch von dieser Seite:
https://github.com/russhughes/st7789py_mpy
das ZIP-Archiv, entpackt es und kopiert den entstandenen Ordner irgendwo hin. In der dadurch entstandenen Verzeichnisstruktur öffnet Ihr über Thonny die Datei ‘st7789py_mpy-master\lib\st7789py.py’ und speichert sie auf dem ESP32 ab. Das war es auch schon.
Für allererste Versuche empfiehlt sich ein möglichst einfaches Beispielprogramm. Zum Beispiel das im Ordner ‘st7789py_mpy-master\examples\ttgo_tdisplay\’ befindliche ‘lines.py’.
Viel Spaß beim Experimentieren.