Es tun sich interessante Dinge am ESP32 Horizont. Die Firma ESPRESSIF hat ein kleines Board names ESP-EYE vorgestellt, welches neben dem ESP 32 auch eine Kamera beinhaltet! Damit soll mit dem kleinen ESP32 Microcontroller Gesichtserkennung möglich werden! Sogar das Zauberwort ‚Artificial Intelligence‘ (AI) ist im Artikel erwähnt.
In einem ersten Impuls dachte ich, dass ESPRESSIF jetzt sogar einen speziellen KI-Chip entwickelt hat! Ich denke aber mittlerweile, dass das nicht der Fall ist. Denn passend zum Board gibt es eine Software mit der Bezeichnung ESP-WHO mit den notwendigen Algorithmen für die Gesichtserkennung. Das macht es für Entwickler leicht, das Board für verschiedene Aufgaben zu programmieren.
Ich wage einmal eine vorsichtige Erklärung zur AI: Vermutlich enthält das Framework nur Algorithmen, die die Daten eines bei ESPRESSIF trainierten neuronalen Netzes verwendet, um Objekte wie Gesichter schnell erkennen zu können. Ob dass schon Artificial Intelligence ist?
Noch ist das Board nicht verfügbar. Die Firma lilygo bietet allerdings ein ähnlich bestücktes Board an. Ich habe mir das Board mit der etwas länglichen Bezeichnung TTGO T-Camera ESP32 WROVER & PSRAM Camera Module ESP32-WROVER-B OV2640 Camera Module 0.96 OLED gleich einmal bestellt und vor ein paar Tagen ist es bei mir angekommen.
Ich konnte den vielen Highlights einfach nicht widerstehen:
-
ESP32 Microcontroller (Dual Core usw.).
-
Und damit natürlich Wifi und Bluetooth.
-
Eingebaute Kamera OV2640 mit einer Auflösung von ungefähr 1600 x 1200 Pixeln.
-
OLED-Display mit 128 x 64 Pixeln (Anbindung über SSD1306).
-
Ein Annäherungssensor AS312!
-
Ein Umweltsensor BME280 von Bosch (Temperatur, Luftdruck, Luftfeuchtigkeit).
Für mich ist es immer wieder nahezu unglaublich, dass so ein geballtes Stück Technik für knapp 15,- Euro zu kaufen ist.
Mit Hilfe der Software von hier lies sich das Board nach einem anfänglichen Problem in Betrieb nehmen. Zur Kompilierung benötigt man noch zwei Bibliotheken:
Nachdem ich die Bibliotheken korrekt installiert hatte, lies sich der Code komplett kompilieren und auf das lilygo hochladen und flashen. Beim Start erschien aber jedes Mal eine Fehlermeldung ‚Camera init Fail‘. Nach einem Blick in den Quellcode konnte das Problem auf die Initialisierung der Kamera zurück geführt werden (Sagt ja auch die Fehlermeldung 🙂 ). In Zeile 238 schlägt der Aufruf von ‚esp_err_t err = esp_camera_init(&config);‘ fehl.
Ich kontrollierte die Pinbelegung mit dem auf Banggood gezeigten Pinout. War aber alles Ok. Mit einigen Schlüsselbegriffen begab ich mich im Internet auf die Suche und fand in einem Forum einen Hinweis auf eine zu große Speichereservierung, bedingt durch die Angabe ‚FRAMESIZE_UXGA‘. Ich probierte ‚FRAMESIZE_QVGA‘ und sogleich klappte es! Jetzt probierte ich die jeweils nächstgrößeren Auflösungen aus und auch mit ‚FRAMESIZE_XGA‘ startete das Board durch.
Einige Auflösungen:
-
QVGA – 320 x 240
-
XGA – 1024 x 768
-
UXGA – 1600 x 1200
Eigentlich sollte UXGA auch funktionieren, denn die Kamera liefert ja eine entsprechende Auflösung. Bei Gelegenheit muss ich das Problem einmal genauer untersuchen.
Mein nächstes Problem war ein Irrtum meinerseits. Bei GitHub auf der Seite des Projekts findet man ein Foto, auf dem ein Smartphone mit Einstellungsmöglichkeiten und dem von der Kamera gelieferten Bild zu sehen ist. Ich nahm irrtümlich an, dass das eine App ist und habe verzweifelt in Google Play und im Internet nach einer App gesucht, mit der man das vom Board gelieferte Bild betrachten kann. Bis ich endlich darauf kam, dass das Board ja selbst einen Accesspoint darstellen kann, mit dem ich mich mit dem Smartphone verbinden und dann über den Browser mit der IP 2.2.2.1 eine Seite mit den Einstellungen geliefert bekomme. Über diese lässt sich dann auch ein Standbild oder ein Stream abrufen!
Durch Ausklammern der Zeile 11 ‚#define SOFTAP_MODE‘ kann man erreichen, dass das Board sich am eigenen Wifi anmeldet, sofern man ‚WIFI_SSID‘ und ‚WIFI_PASSWD‘ korrekt konfiguriert hat. Anschließend lässt sich die Kamera von jedem Computer im Haus, unter der auf dem Display ausgegebenen IP, erreichen!
Da ja auch ein Bosch BME280 auf dem Board verbaut ist, dachte ich daran es als Wetterstation irgendwo im Garten aufzuhängen. Leider wird der Temperatursensor aber vom Board selbst so stark erhitzt, dass er nicht zum Messen der Umgebungstemperatur zu gebrauchen ist!
Negativ aufgefallen ist mir noch die starke Erhitzung des Displays. Es wird im Betrieb so heiß, dass man es nicht anfassen kann! Möglicherweise kann man es aber programmgesteuert abschalten. Vielleicht ist dann auch die Temperatur vom Bosch Sensor zu gebrauchen?
Hier gibt es noch eine Unmenge zu experimentieren! Besonders spannend könnte das Ausprobieren des ESP-WHO Frameworks werden. Vermutlich kann man es mit dem von lilygo gelieferten Board einsetzen. Allerdings hat das lilygo Board kein eingebautes Mikrofon, im Gegensatz zum ESP-EYE.
Schreibt mir bitte, wenn Ihr zu diesem Thema gerne noch mehr lesen wollt!