DE ESP32-CAM is een ESP32 met een camera, en al de belangrijke mogelijkheden van de ESP32 zoals Wifi en Bluetooth. Hiermee kan je bijvoorbeeld een toestel maken dat je een foto doorstuurt op het moment dat er beweging wordt waargenomen. Bij de A.I.-Thinker versie kan je zelfs met gezichtsherkenning werken. Ook deze bordjes zijn erg goedkoop (voor minder dan €10) te vinden.
Zoals je ziet is er ruimte voor een SD-kaart, zodat je foto's kan opslaan. Een aansluiting voor USB zit er niet op. Om je code door te sturen heb je daarom nog een extra onderdeel nodig: een FTDI-programmer. Let op mogelijk moet je hiervoor nog een nieuwe driver installeren. Die kan je installeren via ftdichip.com. Zie hieronder het voorbeeld voor Windows.
De jumper op de FTDI moet zeker op 5V staan.
De ESP32-CAM is nog maar zo'n twee jaar op de markt. Toch vind je met wat zoeken al wel wat handleidingen online.
De FTDI driver voor Windows installeren via ftdichip.com/drivers/
ESP-32 CAM voor en achter
FTDI-programmer met jumper op 5V
Op de site van RandomNerdTutorials vind je verschillende tutorials voor de ESP32 en de ESP-32 CAM.
Het schema hier van de verschillende pins komt ook van die site.
GPIO 1 en 3 gebruiken we om de code via de FTDI naar ons bord te sturen.
GPIO 0 bepaalt de flits. Wanneer die met GND verbonden is, dan wordt de flits geactiveerd.
Voor je de ESP32-CAM kan gebruiken met de Arduino software moet je net als bij de ESP32 nog enkele uitbreidingen aan de software installeren. Hoe je dat doet kan je hier vinden: Core-extensions installeren.
Je kan de ESP32-CAM niet rechstreeks verbinden met je computer.
Voor een eerste test maken we gebruik van de voorbeeldcode die we in de Arduino IDE kunnen vinden eens we de uitbreiding geïnstalleerd hebben. Volg nauwgezet alle stappen.
1) In die voorbeeldcode moet je het juiste type ESP32 CAM selecteren in de regels 10-14 en in regel 18 en 19 moet je de naam van je wifi-netwerk en het bijhorende paswoord ingeven.
2) Voor je schakeling kan je gebruik maken van het schema hieronder. Op de ESP32-CAM moet je GPIO0 verbinden met GND. Kijk goed naar de namen van de pins op de FTDI-programmer, bij zo'n bord liggen die vaak net omgekeerd als in het schema. Zorg dat de jumper op de FTDI op 5V staat. Je FTDI verbind je via een USB-kabel met je computer.
3) Kies bij 'Hulpmiddelen/Tools' bij 'Board' de 'AI-Thinker ESP32-CAM' (of jouw type).
4) Kies bij 'Hulpmiddelen/Tools' bij 'Poort' de juiste poort.
5) Nu kan je de code uploaden. Wanneer je in het 'debugging window' onderaan 'Connecting ...' blijft zien, dan moet je even op de reset-button van de ESP32-CAM drukken. Normaal zie je dan in het debugging venster hoe het uploaden vordert (...%)
6) Misschien moet je enkele keren proberen, maar wanneer je ziet dat je code is geupload, dan mag je de draad die GPIO0 met GND verbindt weghalen.
7) Open nu de Serial Monitor en kijk na dat de baudrate onderaan op 115200 staat.
8) Druk nu op de reset knop van de ESP32-CAM. Je ESP32-CAM is nu verbonden met je wifi netwerk. Na enkele seconden zie je dan in de Serial Monitor de URL die je kan gebruiken om de beelden van je ESP32-CAM in een browser te bekijken.
9) Onderaan in het menu in je browser klik je op Start Streaming, en je kan de beelden van je ESP32-CAM bekijken. Je ziet onderaan ook dat deze ESP32-CAM kan gebruikt worden voor gezichtsherkenning.
Dit is het resultaat in je browser wanneer je verbonden bent met je ESP-32 CAM.
Hier vind je de voorbeeldcode voor de CameraWebServer.
Zo verbind je de ESP32-CAM met de FTDI. Let op, bij je FTDI is dit waarschijnlijk het onderaanzicht. Je FTDI mag je gewoon met een USB-kabel met je computer verbinden. Na het uploaden moet je op de ESP32-CAM de draad van GPIO0 naar GND (hier grijs) weghalen.
In de Serial Monitor zie je onderaan het adres dat je moet ingeven in je browser om de beelden van je ESP32-CAM te bekijken.
Extra info?
Voor deze test hebben we grotendeels gebruik gemaakt van de een tutorial op RandomNerdTutorial. Hier vind je nog verschillende andere tutorials die je snel wat meer inzicht kunnen geven.
Problemen?
Er zijn wel wat dingen die je in de gaten moet houden, we. overlopen ze nog eens.
Heb je alle extra's geïnstalleerd in Arduino?
Heb je in je code het juiste cameramodel aangeduid?
Heb je in je code je wifi-netwerk en paswoord ingegeven?
Zitten al je kabels goed?
Is de kabel van GPIO0 naar GND verbonden tijdens het doorsturen?
Heb je de baudrate in de Serial Monitor juist gezet?
Is je USB-kabel geschikt om data door te sturen?
Heb je nadien de kabel van GPIO0 naar GND weer weggehaald?
Heb je na het doorsturen van je code even op de reset-knop gedrukt van je ESP32-CAM?
Voor dit voorbeeld maken we grotendeels gebruik van een project van bitluni, maar we houden onze versie iets eenvoudiger.
Een Timelapse-video: Het idee van dit project is dat je met een tussentijd van enkele seconden een foto neemt met de ESP32-CAM en die opslaat op je SD-kaart. Nadien kan je dan een video maken van de bewaarde foto's.
Je krijgt zo een versnelde weergave van een gebeurtenis, zoals in dit voorbeeld met de paddestoel. Dit is natuurlijk ideaal om bijvoorbeeld de groei van planten mooi in beeld te brengen. Probeer best wel ongeveer 50cm afstand te houden van je plant of wat je wil vastleggen.
1) De code installeren: Op deze pagina op Github vind je de map 'Timelapse'. Die map mag je als ZIP downloaden. Op je computer mag je die in Documenten > Arduino > libraries steken. Daarna sluit je en herstart je Arduino op je computer.
2) De code aanpassen: Nu kan je in deze map Timelapse in je libraries het bestand 'TimeLapse.ino' openen. Je opent zo de sketch met de verschillende tabbladen. In het tabblad TimeLapse moet je nog wel ssid (naam van wifi netwerk) en het bijhorende password ingeven zoals in het eerste voorbeeld. Moest je niet meteen een wifi netwerk hebben, dan kan je ook de hotspot functie van je gsm gebruiken om de timelapse op te starten. In het tabblad 'camera.cpp' moet je even controlleren of de juiste module actief staat. Wij gebruiken #define CAMERA_MODEL_AI_THINKER, de andere modellen staan achter commentaarstreepjes.
3) Je sketch uploaden: dit gebeurt exact zoals je dat in de vorige test hebt gedaan. Zorg wel dat je nu een microSD kaart in je ESP32-CAM hebt zitten en volg nauwkeurig stappen 1 tot 9 van de CameraWebServer.
4) Je programma aanpassen in de browser: Je zal nu in je browser een ander venster zien. Hier kan je onderaan ingeven om de hoeveel seconden je een opname wil maken. Eventueel kan je hier al enkele testopnames maken en nog wat andere aanpassingen doen. Die aanpassingen worden doorgegeven aan de ESP32-CAM. Zodra je een foto maakt wordt automatisch een map aangemaakt op je SD-kaart waarin de foto's in JPG-formaat bewaard worden.
5) Je ESP32-CAM los van je computer gebruiken: Nu kan je de ESP32-CAM loskoppelen van je computer en zonder FTDI-module verbinden met een powermodule of een andere 5V voeding (5V > 5V en GND > GND). Zodra je ESP32-CAM opnieuw voeding krijgt, kan je via je browser de timelapse starten. De timelapse blijft lopen tot je hem stopt in het menu in je browser of tot de kaart vol is. Zet wel meteen ook de weergave in je browser af zodat je ESP32-CAM niet teveel dingen tegelijk moet doen.
7) Een timelapse-video maken: Je kan nu de foto's op je SD-kaart omzetten naar een MP4 video bestand. Hiervoor bestaan verschillende mogelijkheden. In het PO-lokaal kan je hiervoor gebruik maken van iStopMotion.
Het TimeLapse-menu in de browser
De map 'TimeLapse' bewaar je in Documenten > Arduino > Libraries
De ESP32-CAM aangesloten op een PowerModule. Enkel 5V en GND zijn nog aangesloten.
Sinds kort is het mogelijk om Machine Learning projecten te realiseren op kleine boards. De ESP32-CAM kan al gezichten herkennen, maar er is nog veel meer mogelijk. Op de 'Thinking Machines' site van onze school staat een project waar in je kan leren hoe je een model kan trainen binnen Teachable Machine om het daarna te gebruiken op je ESP32-CAM.
Het model draait dan eigenlijk nog niet op je ESP32-CAM maar in je browser, maar onze ESP32-CAM kan het model wel steeds gebruiken en meteen reageren op de beelden die hij ziet.
Deze versie van de ESP32-cam is nog een pak kleiner dan de originele en bovendien erg betaalbaar.
De module bestaat uit 3 delen:
Het bord met de ESP32 controller, pins, aansluitpunten en USB-poort
Het expansion-board met 1600*1200 pixels camera, SD-kaart houder, microfoon
De antenne
Bronnen: Voor de korte handleiding hieronder hebben we ons vooral gebaseerd op de uitgebreide info op de Wiki van Seeed en het ebook XIAO: Big Power, Small Board van Lei Feng en Marcelo Rovai.
Net als bij de ESP32 zal je nog een URL moeten toevoegen bij de Aditional Boards Manager.
Ga hiervoor naar File > Preferences, en plak bij "Additional Boards Manager URLs" deze URL: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Controleer best of deze URL nog overeenkomt met die op de Wiki van Seeed.
Navigeer naar Tools > Board > Boards Manager en typ esp32 in de zoekbalk en instaleer deze. (Hieronder is die al geïnstalleerd, daarom staat er 'Remove' ipv 'install'.
Nu moet je Tools > Board enkel nog het juiste board selecteren: esp32 > XIAO_ESP32S3 en bij Poort de juiste poort.
Je kan nu best eerst even testen of je de blink-voorbeeldcode kan doorsturen naar je module.
File > Examples > 01.Basics > Blink
Als dat gelukt is kan je de camera testen met het voorbeeldprogramma (zie hierboven).
Op de wiki van Seeedstudio vind je een uitgebreide tutorial voor deze module.
Het schema hier van de verschillende pins komt ook van die site.
Op de gif hieronder zie je hoe je de antenne kan monteren op de module.
Hieronder zie je hoe je de camera kan bevestigen aan de module.