Listing 2
http_client
$ mpremote mip install github:balloob/micropython-http-client/http_client.py
Die Bibliothek für das runde Display befindet sich schon in der Firmware. Doch Sie müssen sie zunächst für diese konkrete Hardware konfigurieren (Listing 3). Die Werte für die Pins entnehmen Sie bitte der Tabelle “Pin-Belegung des ESP32-C3”. Die Datei legen Sie im Controller ab. Die vollständige Dokumentation zur Bibliothek sehen Sie bei Github [9] ein.
Listing 3
tft_config.py
from machine import Pin, SPI
import gc9a01
TFA = 0
BFA = 0
WIDE = 0
TALL = 1
def config(rotation=0, buffer_size=0, options=0):
spi = SPI(1, baudrate=60000000, sck=Pin(1), mosi=Pin(0))
return gc9a01.GC9A01(
spi,
240,
240,
cs=Pin(7, Pin.OUT),
dc=Pin(2, Pin.OUT),
rotation=rotation,
options=options,
buffer_size= buffer_size)
Das Programm, das die Wetterdaten aus dem Internet auf das Display überträgt, beschreibt Listing 4. Im ersten Schritt stellt es eine Verbindung mit dem lokalen Netzwerk her. Anschließend erfolgt der Request auf die API von Open-Meteo. Bitte beachten Sie dabei, dass die für mich passenden Parameter in der URL hartkodiert (Zeile 23) sind. Sie benötigen vermutlich andere Werte, um die Ihrem Standort entsprechenden Informationen zu erhalten. Falls Sie Fragen zur API haben, werfen Sie einen Blick in die Dokumentation [10].
Die Antwort der API wird in den folgenden Zeilen decodiert und in Variablen zwischengespeichert. Sie dienen im Anschluss für die Anzeige auf dem Display. Um immer wieder aktuelle Daten zu bekommen, wiederholt sich die Abfrage mit Anzeige alle fünf Minuten (Abbildung 4). Die Arbeitsweise des Programms erklärt ein Youtube-Video [11].
Listing 4
Wetter.py
import network
import time
import gc9a01
import tft_config
import http_client
import json
import vga1_8x16 as font
tft = tft_config.config(tft_config.TALL)
WIDTH = tft.width()
HEIGHT = tft.height()
interface = network.WLAN(network.STA_IF)
if not interface.isconnected():
print('stelle Verbindung her')
interface.active(True)
interface.connect('SSID>', 'PASSWORT')
while not interface.isconnected():
time.sleep(0.1)
print('.', end='')
print()
print(interface.ifconfig())
tft.init()
while(True):
response=http_client.get('https://api.open-meteo.com/v1/forecast?latitude=49.9594&longitude=8.9589¤t=temperature_2m,relative_humidity_2m')
data=json.loads(response.content)
current=data["current"]
tim = current["time"]
temp = current["temperature_2m"]
hum = current["relative_humidity_2m"]
tft.fill(0)
for i in range(0,119):
tft.circle(119, 119, i, gc9a01.color565(0, 0, i+100))
tft.text(font,"Temperatur:",55, 60)
tft.text(font,str(temp),151, 60)
tft.text(font,"Luftfeuchtigkeit:",40,100)
tft.text(font,str(hum),40+(18*8), 100)
tft.text(font,str(tim),60, 140)
time.sleep(300)
Fazit
Das ESP32-C3-LCDkit bietet eine tolle Möglichkeit, sich ausgiebig mit einem runden Display zu beschäftigen. Die hier eingesetzte Variante von MicroPython arbeitet jedoch reichlich träge. Falls Sie flüssige Animationen auf dem Display anzeigen möchten, kommen Sie um ein in C geschriebenes Programm nicht herum. Ein solches, das Daten aus einer API zieht und auf dem Display wiedergibt, fällt allerdings deutlich komplexer aus. Ein spannender Punkt an diesem Projekt ist die Open-Meteo-API, die Sie für private Zwecke kostenfrei verwenden dürfen. (tle)
Der Autor
Martin Mohr hat die komplette Entwicklung der modernen Computertechnik live miterlebt. Nach dem Studium entwickelte er überwiegend Java-Applikationen. Mit dem Raspberry Pi erwachte seine alte Liebe zur Elektronik wieder.
Infos
- Datenblatt Display-Treiber (Hardware): https://www.buydisplay.com/download/ic/GC9A01A.pdf
- ESP32-C3-LCDkit bei Amazon kaufen: https://www.amazon.de/Espressif-ESP32-C3-LCDkit-Entwicklungsboard/dp/B0C9M1887C
- ESP32-C3-LCDkit bei Mouser kaufen: https://www.mouser.de/ProductDetail/Espressif-Systems/ESP32-C3-LCDkit?qs=1Kr7Jg1SGW80G9%2FrsoY2tQ%3D%3D
- Ausführliche Dokumentation: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32c3/esp32-c3-lcdkit/user_guide.html
- MicroPython mit Display Treiber: https://github.com/russhughes/gc9a01_mpy/tree/main?tab=readme-ov-file
- Thonny IDE: https://thonny.org/
- Open Meteo: https://open-meteo.com/
- mpremote Tool: https://docs.micropython.org/en/latest/reference/mpremote.html
- Dokumentation Display Bibliothek: https://russhughes.github.io/gc9a01_mpy/
- Dokumentation Open Meteo API:https://open-meteo.com/en/docs
- YouTube – Arbeitsweise des Programms Wetter.py: https://youtube.com/shorts/PMFsXMuvz9M






