Aus Raspberry Pi Geek 07/2025

Entwicklungs-Kit mit dem ESP32 und einem kreisförmigen Display (Seite 2)

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].

Abbildung 4: Ausgabe des Programms auf dem runden Display des Kits.

Abbildung 4: Ausgabe des Programms auf dem runden Display des Kits.

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&current=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.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben