ESP-EYE – spraak- en gezichtsherkenning in het heel klein!

Het leek heel gemakkelijk, was het ook voor wat betreft de eerste demo, maar stap 2 was een stuk complexer.

Ik had een aantal voorbeelden gezien van, wat mij betreft, enorm indrukwekkende demonstraties van de kracht van de ESP32 microprocessor. Je blijkt er een heel kleine camera op aan te kunnen sluiten (daar zijn de meeste mensen niet meer zo vreselijk van onder de indruk). Maar Espressif (de bedenkers van de chip) heeft nu ook een demo/test board gemaakt, genaamd de ESP-EYE, met niet alleen de camera voorgeïnstalleerd, maar ook spraak- en gezichtsherkenning alvast voorgeprogrammeerd. Je kunt dus meteen aan de slag!

Als je de video hierboven bekeken hebt voordat je verder las, dan weet je waarom dat indrukwekkend is: het is namelijk niet zo dat de ESP-EYE stiekumpjes gebruik maakt van een online webservice, dus bv Google of Amazon die al het werk uit handen neemt. Nee, de ESP-EYE werkt volledig zelfstandig. Dus geen data die over het internet naar de een of andere, meer of minder betrouwbare aanbieder gaat. Alles gebeurt 100% op het boardje zelf. Dat wilde ik zelf uitproberen, dus heb ik er eentje besteld bij AliExpress. Ik heb er overigens zelf €22,65 voor betaald, ik zie dat hij nu iets boven de 26 euro kost. Ik verdien niets aan de link of het verwijzen naar AliExpress, shop gerust dus even rond voor de beste deal. Hieronder zie je wat foto’s van de verpakking, de ESP-EYE met als referentie voor het formaat een 5 eurocent muntje ernaast. Het ding is klein!

De video hierboven van Luca Dentella was heel handig en behulpzaam, hij laat zien hoe de ESP-EYE zo uit het doosje werkt, dat lukte mij ook. Maar de instructies zorgden ook voor de nodige problemen toen ik hem letterlijk probeerde te volgen bij het aanpassen van de standaardcode.

De eerste veronderstelling die Luca maakt, waarschijnlijk terecht gezien het gegeven dat hij op zijn blog al een hele serie tutorials had staan die gebruik maken van de ESP-IDF omgeving. Voor mij was het nieuw, dus had het geholpen als ik meteen even de installatie-instructies opgezocht en gevolgd had.

Je kunt die hier vinden: https://docs.espressif.com/projects/esp-idf/en/latest/get-started/windows-setup.html
De download is best stevig, het uitpakken duurde tamelijk lang.
De tweede stap vind je hier: https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html#get-started-get-esp-idf
Het is daarna handig als derde stap de IDF_PATH variabele standaard toe te voegen aan het opstarten van mingw32.exe

Als dat allemaal werkt is het tijd om ESP-WHO repository te klonen zoals Luca ook doet. Start dus mingw32.exe op en in dat venster voer je dan de verschillende opdrachten uit.

$ cd ~/esp
$ git clone --recursive https://github.com/espressif/esp-who.git
$ cd esp-who/examples/single_chip/recognition_solution

Belangrijk ander verschil met de instructies van Luca is dat hij het IDF_PATH wijzigt zodat hij naar de ESP-IDF map van ESP-WHO verwijst. Als ik dat deed, kreeg ik aansluitend problemen met het compileren van de code. Als ik het niet deed, dan ging alles OK.
Na het clonen volgt dan:

$ make -j4 defconfig
$ make menuconfig

In dit menu kun/moet je niet alleen de juist COM-poort instellen, maar als je wilt dat ESP-EYE verbinding maakt je eigen WiFi-netwerk, dan moet je de toegangsgegevens daarvoor instellen in hetzelfde menu als waarmee je ander de naam van het netwerk dat de ESP-EYE maakt (en bijbehorende optionele wachtwoord) instelt!
Dat lijkt nogal verwarrend, maar de programmacode maakt gebruikt van deze variabelen in de code.

De WiFi-setup kun je vinden onder “Example configuration”, de COM-poort instelling onder “Serial flasher config”.
Daarna type je:

$ make

En kon ik in mijn geval een flinke tijd andere dingen gaan doen omdat het de eerste keer was, bij kleine wijzigingen in de code gaat het sneller.
Is het compileren klaar, dan kun je met

$ make flash

het resultaat naar de ESP-EYE flashen en kijken of het allemaal werkt.

Daarbij gebruik ik Putty om verbinding te maken met de COM3 poort waar de ESP-EYE aan verbonden is. Daar kun je namelijk alle berichten (en het IP-nummer dat hij krijgt via DHCP) voorbij zien komen. Wel belangrijk om de verbinding van Putty te sluiten *voordat* je probeert om code te flashen. Dat kan namelijk niet tegelijkertijd.

Tot zover de aantekeningen voor nu. Ik heb niet helemaal de IFTTT koppeling van Lucas nagebouwd, ik wilde dat liever met MQTT doen zodat de data nog steeds 100% binnen het eigen netwerk kan blijven. Maar daar was het weekend te kort voor.

Tot slot
Veel dank aan Luca natuurlijk voor zijn uitleg. Hoewel hij me een stuk de verkeerde kant op stuurde, was het leerzaam.
Zoals ik zei, hij heeft veel meer tutorials, je kunt ze hier vinden op zijn weblog, de code is hier te vinden.

De kwaliteit van het videobeeld van de ESP-EYE is zeker niet zo goed als van de RPi-camera of van een gewone webcam. De herkenning van gezichten werkt, maar is (zo kun je in alle verschillende demo’s zien) rudimentair. De stap van het met een simpele druk op de knop proberen naar een klein beetje aanpassen van de code is tamelijk groot als je nog nooit met de ESP-IDF gewerkt hebt. Kopen doe je wat mij betreft alleen als je hiermee (en het ESP-WHO platform) echt wilt kunnen experimenteren.