Neue Firmware für den TTGO (Version 1.14)
Verfasst: Fr 14. Mai 2021, 12:28
Seit dem März 2021 gibt es neue Versionen für die Firmware unseres ESP32-Moduls "TTGO T-Display". In diesem Beitrag möchte ich die Neuerungen vorstellen, welche durch die Version "MicroPython v1.14 on 2021-03-08" geboten werden; die zugehörige bin-Datei finden Sie im Anhang "Materialien_TTGO_v1_14.zip". Die Original-Informationen dazu findet man unter https://github.com/russhughes/st7789_mpy. Dort wird inzwischen (Stand: Anfang Mai) ein neueres Update zum Download bereit gestellt; dieses funktioniert leider nicht auf meinem TTGO.
Was bietet nun diese Version "MicroPython v1.14 on 2021-03-08"? Die meisten Neuerungen beziehen sich auf das Display. Zusätzlich habe ich aber auch feststellen können, dass einige Programme zum Thema BLE, welche unter der Firmware v1.12 noch Probleme bereiteten, nun funktionieren.
Auf folgende Aspekte möchte ich näher eingehen:
Vektorzeichensätze und draw-Methode
Im Gegensatz zu den bislang zur Verfügung gestellten Zeichensätzen sind diese Zeichensätze skalierbar; das bedeutet: Wir können ihre Größe mit Hilfe eines Skalierungs-Parameters frei einstellen. Diese neuen Zeichensätze findet man unter der oben angegebenen URL. Sie sind allerdings nicht - wie wir es bislang von der Version v1.12 gewöhnt waren - bereits in der Firmware abgelegt. Deswegen müssen sämtliche Vektorzeichensätze, die zum Einsatz kommen sollen, zunächst auf den ESP32 hochgeladen werden. In der Anlage finden Sie unter dem Dateinamen "greekc.py" einen Zeichensatz für griechische Buchstaben. Mit der Thonny-IDE kann man diese Datei sehr einfach hochladen: Zunächst aktivieren Sie (falls noch nicht geschehen) die Datei-Ansicht über den Menü-Punkt Ansicht - Dateien. In dem unteren Datei-Fenster suchen Sie nun nach dieser Datei und klicken sie mit der rechten Maustaste an. Es öffnet sich ein Kontext-Menü; in diesem wählen Sie die Option "upload to /".
Das folgende Programm zeigt, wie man alle Zeichen dieses Zeichensatzes auf dem Display darstellen lassen kann.
Die Methode, mit welcher eine Zeichenkette zk durch einen Vektorzeichensatz font auf dem Display (hier durch die Instanz display repräsentiert) dargestellt wird, ist die draw-Methode:
display.draw(font, zk, x, y, fg, scale)
Hierbei gibt x die linke horizontale Position und y die mittlere vertikale Position des Textes an. fg steht für die Textfarbe, und scale gibt den Skalierungsfaktor an. An dieser Stelle ist die Dokumentation leider nicht korrekt!
Das griechische Alphabet weicht etwas von dem deutschen/lateinischen ab. Der folgende Tabellenausschnitt zeigt die Zuordnung zwischen diesen beiden Alphabeten, wie sie für die Eingabe der Zeichenketten benutzt werden muss.
Die vollständige Tabelle finden Sie im Anhang.
Darstellen von jpeg-Dateien
jpeg-Dateien lassen sich mit der jpg-Methode sehr einfach auf dem Display darstellen. Zwei Voraussetzungen müssen allerdings erfüllt sein:
Der zweite und dritte Parameter geben die Position der linken oberen Ecke des Bildes auf dem Display an.
Erweiterte Zeichensätze
Die erweiterten Zeichensätze (vgl. https://www.forum.g-heinrichs.de/viewto ... f=18&t=140, Abschnitt 5) sind in dieser neuen Version leider nicht mehr in die Firmware eingebunden. Sie müssen deswegen (genauso wie die Vektorzeichensätze) zusätzlich auf den ESP32 hochgeladen werden.
.
Was bietet nun diese Version "MicroPython v1.14 on 2021-03-08"? Die meisten Neuerungen beziehen sich auf das Display. Zusätzlich habe ich aber auch feststellen können, dass einige Programme zum Thema BLE, welche unter der Firmware v1.12 noch Probleme bereiteten, nun funktionieren.
Auf folgende Aspekte möchte ich näher eingehen:
- Vektor-Zeichensätze und draw-Methode
- Darstellen von jpeg-Dateien
- Erweiterte Zeichensätze
Vektorzeichensätze und draw-Methode
Im Gegensatz zu den bislang zur Verfügung gestellten Zeichensätzen sind diese Zeichensätze skalierbar; das bedeutet: Wir können ihre Größe mit Hilfe eines Skalierungs-Parameters frei einstellen. Diese neuen Zeichensätze findet man unter der oben angegebenen URL. Sie sind allerdings nicht - wie wir es bislang von der Version v1.12 gewöhnt waren - bereits in der Firmware abgelegt. Deswegen müssen sämtliche Vektorzeichensätze, die zum Einsatz kommen sollen, zunächst auf den ESP32 hochgeladen werden. In der Anlage finden Sie unter dem Dateinamen "greekc.py" einen Zeichensatz für griechische Buchstaben. Mit der Thonny-IDE kann man diese Datei sehr einfach hochladen: Zunächst aktivieren Sie (falls noch nicht geschehen) die Datei-Ansicht über den Menü-Punkt Ansicht - Dateien. In dem unteren Datei-Fenster suchen Sie nun nach dieser Datei und klicken sie mit der rechten Maustaste an. Es öffnet sich ein Kontext-Menü; in diesem wählen Sie die Option "upload to /".
Das folgende Programm zeigt, wie man alle Zeichen dieses Zeichensatzes auf dem Display darstellen lassen kann.
Code: Alles auswählen
from machine import Pin, SPI
import st7789
import greekc as font1
spi = SPI(2, baudrate=20000000, polarity=1, sck=Pin(18), mosi=Pin(19))
display = st7789.ST7789(spi, 135, 240, reset=Pin(23, Pin.OUT), cs=Pin(5, Pin.OUT), dc=Pin(16, Pin.OUT), backlight=Pin(4, Pin.OUT), rotation=3)
# Landscape
display.init()
display.fill(0)
scale = 0.8
display.draw(font1, 'ABGDEZHQIKLM', 10, 20, st7789.WHITE, scale) # (10|15) = (linke horiz. Position| mittlere vert. Position) des Textes
display.draw(font1, 'NXOPRSTUFCYW', 10, 50, st7789.WHITE, scale)
display.draw(font1, 'abgdezhqiklm', 10, 85, st7789.WHITE, scale)
display.draw(font1, 'nxoprstufcyw', 10, 115, st7789.WHITE, scale)
display.draw(font, zk, x, y, fg, scale)
Hierbei gibt x die linke horizontale Position und y die mittlere vertikale Position des Textes an. fg steht für die Textfarbe, und scale gibt den Skalierungsfaktor an. An dieser Stelle ist die Dokumentation leider nicht korrekt!
Das griechische Alphabet weicht etwas von dem deutschen/lateinischen ab. Der folgende Tabellenausschnitt zeigt die Zuordnung zwischen diesen beiden Alphabeten, wie sie für die Eingabe der Zeichenketten benutzt werden muss.
Die vollständige Tabelle finden Sie im Anhang.
Darstellen von jpeg-Dateien
jpeg-Dateien lassen sich mit der jpg-Methode sehr einfach auf dem Display darstellen. Zwei Voraussetzungen müssen allerdings erfüllt sein:
- Das Format der Datei darf höchstens 240x135 Pixel groß sein.
- Die Datei muss zuvor auf den ESP32 hochgeladen worden sein (s. o.)
Code: Alles auswählen
from machine import Pin, SPI
import st7789
spi = SPI(2, baudrate=20000000, polarity=1, sck=Pin(18), mosi=Pin(19))
display = st7789.ST7789(spi, 135, 240, reset=Pin(23, Pin.OUT), cs=Pin(5, Pin.OUT), dc=Pin(16, Pin.OUT), backlight=Pin(4, Pin.OUT), rotation=3) # Landscape
display.init()
display.fill(0)
jpg_filename = 'testbild.jpg' # Diese Datei muss auf dem ESP32 bereits gespeichert sein
display.jpg(jpg_filename, 0, 0)
Erweiterte Zeichensätze
Die erweiterten Zeichensätze (vgl. https://www.forum.g-heinrichs.de/viewto ... f=18&t=140, Abschnitt 5) sind in dieser neuen Version leider nicht mehr in die Firmware eingebunden. Sie müssen deswegen (genauso wie die Vektorzeichensätze) zusätzlich auf den ESP32 hochgeladen werden.
.