Von Jeremy Cook
Ein „Dali-Uhrprojekt“ zeigt, was der Espressif ESP32 zu bieten hat
The ESP32 – von Espressif Systems ist der Nachfolger des unglaublich beliebten und leistungsfähigen WiFi-Modus ESP8266 und bietet noch mehr Möglichkeiten als sein Vorgänger. Zu den Highlights zählen eine Doppelkern-Verarbeitungseinheit mit 32 Bit und bis zu 240 MHz Taktfrequenz sowie Drahtloskommunikation sowohl über WiFi als auch Bluetooth.
Zum weiteren Funktionsumfang gehören die kapazitive Touch-Sensorik, Datenübertragung über I2S, Funktionen für Audio-PLL (Phase-locked Loop) sowie zwei Digital-Analog-Wandler-Ausgänge (D/A-W). Der Funktionsumfang variiert geringfügig zwischen verschiedenen ESP32-Varianten.
Adafruit Huzzah23 (oben) mit DFRobot Firebeetle (unten)
Nutzung des ESP32 mit einer Composite-Video-Uhr
Für ein konkretes (und gleichzeitig einfach zu implementierendes) Verwendungsbeispiel des ESP32 empfiehlt sich die von Marcio L. Teixeira gebaute „Dali-Uhr“. Dieses Setup nutzt ein älteres Fernsehgerät mit Composite-Eingang und eine ESP-Experimentierplatine zum Anzeigen einer „zerfließenden“ Uhrdarstellung auf dem Bildschirm.
Das Projekt fußt – wie jedes bahnbrechende Projekt – auf metaphorischen Schultern der ganz Großen: Es kombiniert das Konzept der „Dali-Uhr“) (entwickelt 1979 für den Xerox Alto) mit einer durchlaufenden Sonnenuntergangsszene im Stil der Popart der 1980er Jahre. Auf technischer Ebene basiert es auf mehreren Hardware-Hacks/Hackern. Und natürlich wäre es ohne den ESP32 nicht möglich. Last not least müssen wir natürlich auch Salvador Dali als ursprünglichen künstlerischen Ideengeber erwähnen.
So beeindruckend die Liste der Ideengeber ist, braucht man zum Einrichten dieser Uhr nur Folgendes:
Das originale Projekt verwendet ein Adafruit Huzzah32 ESP32 -Featherboard. Theoretisch könnte man auch andere Bausteine auf der Basis des ESP32 verwenden, und ich habe das Projekt auch mit einem DFRobot FireBeetle ESP32-Modul versucht. Beide haben ähnliche Eigenschaften und Nenndaten, um Videos wiederzugeben. Allerdings besteht ein kleiner Unterschied zwischen den beiden, auf den später noch näher eingegangen wird.
Videoanzeige
Setup: Code laden und verbinden
Zur Vorbereitung laden Sie den Code von GitHub und übertragen ihn mit der Arduino-IDE auf den ESP32. Nähere Anleitungen für diesen Vorgang finden Sie hier
Sie müssen in der Arduino-IDE die Möglichkeit zum Arbeiten mit ESP32-Platinen einrichten. Hierzu geben Sie in den Einstellungen die Zeichenfolge „https://dl.espressif.com/dl/package_esp32_index.json“ in den Abschnitt „Additional Boards Manager URLs“ ein.
Danach wählen Sie Ihre Experimentierplatine aus (Adafruit ESP32 Feather oder in diesem Fall FireBeetle-ESP32) und den korrekten seriellen Anschluss aus. Anschließend laden Sie den Code auf Ihren ESP.
Videoanzeige
Verbinden Sie den GND-Kontakt der Adafruit Huzzah32-Platine mit der äußeren Abschirmung des RCA-Steckers.
Verbinden Sie dann einen anderen Draht vom DAC1-Kontakt A1 mit dem Mittelpfosten des Steckers, der an den Composite-Video-Eingang des Fernsehgeräts angeschlossen werden soll. Die Verbindung mit einem handelsüblichen Stecker (Male/Male) kann mittels Krokodilklemmen erfolgen. Es sind aber auch Klemmschraubenstecker erhältlich, die eine sicherere Verbindung ermöglichen. Wahrscheinlich könnte man auch ein RCA-Kabel öffnen und die Adern herausführen.
Schließen Sie die RCA-Buchse an den TV/Monitor an, verbinden Sie die Spannungsversorgung mit der Experimentierplatine und schalten Sie den TV auf die richtige Eingangsquelle.
Voila, der Bildschirm zeigt eine schmelzende digitale „Dali-Uhr“ – höchstwahrscheinlich noch mit der falschen Uhrzeit. Zum Stellen melden Sie sich per Telefon oder Computer bei mit dem ESP32 erstellten WiFi-Netzwerk „ESP32 Dali Clock“ an und konfigurieren die Einstellungen über eine Browserschnittstelle. Nach der richtigen Einrichtung ist der Zugriff über Ihr Heimnetzwerk möglich. Die Zeit lässt sich automatisch per NTP/Zeitzone einstellen, auf Wunsch aber auch manuell.
Gerätekopplung
Die Uhr kann zur Anzeige des Datums anstelle der Uhrzeit wechseln. Zum Aktivieren dieser Funktion verbinden Sie Drähte zu A5 4 und A4 36 auf der Huzzah-Platine und berühren Sie beide mit dem Finger (auf dem FireBeetle habe ich das nicht probiert, es sollte aber auch funktionieren). Die Schaltung lässt sich auch so einstellen, dass die Farben während des Tages wechseln, was sehr gefällig aussieht.
Funktionen des verwendeten ESP32
Neben der hohen Prozessorgeschwindigkeit (die vor nicht allzu langer Zeit für einem Desktop alle Ehre gemacht hätte), sind an diesem Build einige Merkmale des ESP32 gut zu zeigen:
Grenzen sprengen
Laut diesem separaten Video, das eine Konfiguration ähnlich wie diesen Build zeigt, enthält das Datenblatt des ESP32 keine Composite-Video-Funktionen. Allerdings ist er durch die Möglichkeit der Digital-Analog-Wandlung (D/A-W) und die Verwendung des I2S-Protokolls sehr leistungsfähig und allgemein für retro-futuristisches Video-Hacking geeignet.
Wenn Sie mehr erfahren möchten, wie Marcio diese Farbausgabe durch Nutzung der PLL-Fähigkeiten des ESP32 aufrüsten konnte, finden Sie auf dieser GitHub-Seite.
In meiner extrem beschränkten Stichprobe von jeweils einer Platine an einem einzigen TV-Gerät funktionierte die Darstellung mit dem Adafruit Huzzah32 recht gut. Der FireBeetle, mit gleichen Ausgangskontakten, funktionierte auch, hat aber intermittierende Synchronisierungsprobleme.
Hier noch nähere Angaben zu den beiden Platinen: Die Huzzah32 verwendet ein WiFi-Modul ESP32-WROOM-32E, die DFRobot-Platine ein ESP32-WROOM-32D. Trotz der weitgehend gleichen Funktionen bietet das -32E einige interne Verbesserungen unter anderem in der Art und Weise der Interaktion mit dem Quarzoszillator zur Steuerung des CPU-Takts.
Möglicherweise ist dieser geringfügige Designunterschied verantwortlich für die unterschiedliche Anzeige von -32D und -32E auf meinem Fernseher. Hierzu ist anzumerken, dass in der Mehrzahl der Fälle, in denen die Grenzen des ESP nicht kreative ausgenutzt werden, beide Module eine Aufgabe gleichermaßen gut bewältigen müssten. Für eine Produktionsanwendung, die den vollen Leistungsumfang des ESP-32 benötigt, lohnt sich aber die Überlegung, welcher ESP-32 benutzt werden soll.