Toen Espressif met de ESP32 op de markt kwam, werd die meteen een hit in de maker-wereld. Dankzij de vele ontwikkelkaarten, documentatie, gratis ontwikkeltools (zoals de Arduino-IDE) en library’s, biedt hij veel rekenkracht en draadloze technologie voor weinig geld. Intussen heeft Espressif de koers een beetje verlegd in de richting van Kunstmatige Intelligentie (AI) op het ESP32-platform, ze noemen dat AIoT. Het nieuwe ESP-EYE-board is hun nieuwste ontwikkelkaart voor beeldherkenning en het verwerken van audio in AIoT-applicaties.

Wat zit er op het ESP-EYE-board?

Het ESP-EYE-board is heel klein, het meet niet meer dan 40 × 20 mm, maar het zit wel vol power. Naast een ESP32-D0WD en een 3D-antenne bevat het 4 MB flashgeheugen, 8 MB PSRAM (pseudo-static RAM), een 2 megapixel camera, een microfoon, een CP2102 USB/UART-interface, twee LED’s (rood en wit) en drie drukknoppen (Reset, Boot en Function). Er is ook ruimte voor een connector voor een IPEX-antenne, maar die is niet geplaatst. Er zitten ook enkele spanningsregelaars op en er is zelfs een bevestigingsgat.

Uitbreidingsconnectors?

Wat ontbreekt in die lijst is een uitbreidingsconnector. Er is er wel een, maar die bestaat alleen uit vier testpads, die zijn verbonden met IO12 (DOUT), IO2 (DIN), IO0 (CLK) en IO19 (CS), bedoeld voor SPI. De beste manieren om met het board te communiceren is via USB of WiFi. De USB-poort wordt ook gebruikt om de kaart te programmeren.

Start een terminalprogramma

Sluit het board aan op een computer. Als op de PC geschikte CP2102-drivers zijn geïnstalleerd, zal het beschikbaar komen als een seriële poort (bij mij als COM42). Als we met een terminalprogramma verbinding maken met die poort op 115200 baud (115200n81), verschijnt een aanbeveling om PuTTY te gebruiken, omdat dat een prettiger werkomgeving is.

Het bootproces van de kaart is te zien in het terminalvenster. Als het lijkt alsof het booten klaar is, moet u nog even wachten, want het opstarten van de applicatie neemt nogal wat tijd in beslag. Als de rode LED gaat branden, is het echt klaar. Er komen dan enkele meldingen op het scherm. De laatste is:
 
esp-eye: Please say 'Hi LeXin' to the board

Hoe zeg je 'Hi LeXin'?

Het klinkt vrij eenvoudig, maar hoe moet je dat uitspreken? Ik deed verschillende pogingen, maar het lukte niet. Ik wilde al bijna opgeven, toen het opeens toch lukte: ik zei heel snel zoiets als “haaileeksin”. Waarom hebben ze niet iets gekozen, waarvan iedereen weet hoe je het uitspreekt? (‘hi Obi-Wan’) De module gaat dan verder met opstarten en de rode LED gaat knipperen in een tempo van 0,5 Hz.

En dan?

En dan wordt het moeilijk voor wie geen Chinees kan lezen. De Engelse getting started guide voor de ESP-EYE op GitHub zegt geen woord over hoe je ermee aan de slag kunt. Als je de Chinese versie bekijkt, zie je dat die veel langer is en blijkbaar ook installatie-instructies bevat. Gelukkig bestaan er online vertaalmachines en door daar gebruik van te maken, ontdekte ik, dat ik nu verbinding kon maken met de kaart via het access point (AP) ‘esp-eye-xxx’ (waarin ‘xxx’ een getal is).
 
http://192.168.4.1/face_stream

Als u dat doet, komt u terecht op een zwarte pagina met een live videostream in een kleine rechthoek in het midden. Ook gaat de witte LED branden. (Als u routinematig naar de gebruikelijke URI van de ESP gaat op 192.168.4.1, krijgt u de melding| “This URI doesn't exist”. En als u dat eenmaal gedaan hebt, lijkt het niet meer mogelijk om naar de face_stream-pagina te gaan, zonder de kaart te resetten. En nu wordt het pas echt leuk.

 
ESP-EYE recognizing faces
Nadat ik me zorgvuldig had vermomd, kon de ESP-EYE me niet meer herkennen.

Uw gezicht vastleggen in de ESP-EYE

Als u de camera op uw gezicht richt, verschijnt er een gele rechthoek om het gebied waar de ESP-EYE een gezicht denkt te zien. (De camera werkt met een snelheid van ongeveer twee frames per seconde, dus gun hem even tijd.) Als u op de functietoets drukt (de kleine drukknop aan de zijkant van de kaart, naast de cameraconnector), legt de module uw gezicht vast. Als dat lukt, verschijnt er een tekst in het groen: “Hello ID 0” (als dit de eerste keer is dat u het probeert). Er kunnen meerdere gezichten worden opgeslagen. Als de camera het gezicht niet herkent, verschijnt in het rood de tekst: “WHO?”. De opgeslagen gezichten wordt bewaard in niet-vluchtig geheugen, dus als u de module uitschakelt en later weer inschakelt, zal hij u nog steeds herkennen.

Het opzetten van een ontwikkelomgeving

Nu kunt u eigen applicaties gaan ontwikkelen voor de ESP-EYE Daarvoor moet u de ESP IDF-toolchain het pakket ESP-WHO installeren. Ik had de toolchain al, maar ik kreeg hem niet gecompileerd onder Windows 10, zelfs niet, nadat ik hem opnieuw had geïnstalleerd. Gelukkig vond ik een oplossing op deze pagina (voor Linux en Mac schijnt het gemakkelijker te zijn dan voor Windows):

Download https://dl.espressif.com/dl/esp-idf-tools-setup-1.2.exe en voer het uit.

Open een commandoregel (CLI) en maak een map aan om de ESP-WHO git-repository in op te slaan (met het commando ‘mkdir’). Ga met ‘cd’ naar die map en geef het commando:
 
git clone --recursive https://github.com/espressif/esp-who.git

Als Git nog niet geïnstalleerd is op uw systeem, kunt u het hier downloaden en daarna installeren. Bij de installatie kunt u alle standaardinstellingen accepteren.

Als de repository is gedownload (dat kan even duren, afhankelijk van de snelheid van uw internetverbinding), kunt u proberen een voorbeeld te compileren, b.v.:
 
cd esp-who/examples/single_chip/detection_with_command_line
idf.py build

Vergeet niet het PATH in te stellen

Om dit goed te laten werken, moet wel het zoekpad voor uitvoerbare programma’s correct worden ingesteld. Voeg een omgevingsvariable ‘IDF_PATH’, die verwijst naar ‘<volledig pad>/esp-who/esp-idf’, toe in Windows.
Zoek op het Internet uit, hoe u dat op uw systeem moet doen. (Hint: zoek op Windows in het configuratiescherm naar ‘variabelen’ en gebruik in het dialoogvenster ‘Omgevingsvariabelen’ de knop ‘Nieuw…’. Als er in het venster waarmee u de variabele toevoegt een knop ‘Bladeren...’ aanwezig is, is het verstandig om daar gebruik van te maken.) U moet ook ‘%IDF_PATH%\tools’ aan uw pad toevoegen.

Het compileren moet zonder foutmeldingen en waarschuwingen verlopen. Als dat het geval is, kunt u nu uw ESP-EYE-board programmeren met het volgende commando (vervang ‘COM42’ door de naam van uw seriële poort):
 
idf.py -p COM42 flash

Conclusie

Het ESP-EYE-board is een goedkope, gemakkelijke manier om kennis te maken met AI en gezichtsherkenning. Hoewel de documentatie hier en daar wat summier en onduidelijk is, is het gemakkelijk om er eigen toepassingen voor te ontwikkelen als u eenmaal hebt uitgevonden hoe alles in zijn werk gaat.