Trevlig WiFi kamera

En digitalkamera, t.o.m. en högkvalitativ sådan kostar idag ingenting eftersom man tillverkar någon miljard per år för montering i främst mobiltelefoner. Eftersom kameror massproduceras så kommer det alltid att finnas ett överskott som bl.a. kan användas av tekniskt intresserade amatörer.

Jag stötte för en tid sedan på ESP32-CAM som bygger på en ESP32 mikroprocessor med kameramodulen OV2640. Hela paketet kostar $6.99 och inklusive transport kostade paketet ungefär 10 Euro (100 SEK).

ESP32-kortet har storleken ca. 40×25 mm. Trådarna som är kopplade till kortet är strömförsörjning via USB samt serielinje för att kunna följa med vad som händer på kortet. Serieförbindelsen behövs inte i ett senare skede och strömförsörjningen kommer att skötas med laddningsbara batterier.

Vad innehåller paketet?

Processorn är en ESP32 med dubbla kärnor, 512 kByte SRAM och 4 MByte pseudostatiskt RAM. Processorn kör på en klockfrekvens upp till 240 MHz och har alla vanliga anslutningar för periferienheter SPI, I2C, serielinje etc. samt inbyggd WiFi alltså trådlöst nätverk utan extra komponenter. En enkel utvecklingsomgivning som finns för Linux, Windows och MacOS är Arduino IDE. För att skriva program för ESP32 behövs en IDE version som är någorlunda ny, jag kör 1.8.13.

Hur lägger jag in webbservern för kameran om den inte finns från början?

Hämta Arduino IDE för ditt operativsystem. Googla ”Arduino IDE xxxxc” där xxxx är ditt operativsystem.

Starta Arduino IDE och lägg till kortfamiljen ESP32 via File/Preferences

Nere i fönstret finns ett fält för Additional Boards Manager URLs .

Klistra in https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Tryck på OK.

Gå därefter till Tools/Board/Board Manager . Skriv ESP32 i fältet Filter your Search. Board managern visar vad den hittar (esp32) klicka på Install varvid systemet automatiskt laddar ner de hjälpprogram, drivrutiner, bibliotek och exempel man behöver. Om man tidigare har laddat ner hjälprutiner för ESP32 så meddelar Board manager status: Installed för paketet.

Hämta kameraprogrammet i File/Examples/ESP32/Camera/CameraWebServer . Programkoden öppnas automatiskt i fönstret.

För att programmera ESP32 behöver jag en USB till Serial konversionsmodul som kostar några Euro. Moderna datorer saknar en konventionell serieport varför det behövs en USB-modul som skapar en serieport via USB-porten. Jag beställde en ”USB To TTL FT232RL FTDI Serial Adapter Converter Module For Arduino 3.3V 5V Mini” tillsammans med ESP32-CAM modulen.

Spänningen i USB seriemodulen väljs via en jumper (bygel) till antingen 3.3 V eller 5V. Väljer man 3.3V måste stiftet VCC på USB modulen kopplas till 3.3V på ESP32. Om man väljer 5V kopplas VCC i stället till 5V på ESP32. Det är viktigt att inte klanta och koppla 5V till 3.3V på ESP32 eftersom detta kan leda till att man släpper ut rök. Som känt fungerar all elektronik på rök eftersom elektronik tenderar att sluta fungera om man släpper ut röken.

USB-modulens RX kopplas till UOT på ESP32 och på motsvarande sätt kopplas TX på USB-modulen till UOR på ESP32. Notera att Transmit (sänd) på ena sidan alltid kopplas till Receive (mottag) på andra sidan och tvärtom.

Koppla GND på USB-modulen till GND på ESP32.

För programmering kopplas ytterligare IO0 till GND på ESP32. Byglingen av IO0 till jord signalerar Arduino IDE att uppladdning av program till ESP32 önskas. Då man vill köra ett uppladdat program kopplar man bort denna bygel.

Koppla i USB till datorn där Arduino IDE är aktivt. Kontrollera i Tools/Port att en serieport t.ex. /dev/ttyUSB0 under Linux har detekterats. Kontrollera samtidigt att Upload speed är satt till t.ex. 9212000 bit/sekund (kör man på lägre hastighet kan uppladdningen bli besvärande långsam). Sätt Tools/Partitition Scheme är satt till Huge APP . Glömmer man att organisera minnet till Huge App så kommer kompileringen att misslyckas.

Vi kan nu försöka kompilera exempelprogrammet via Sketch/Verify/Compile. Kompileringen gick inte igenom för mig vid första försöket eftersom en pythonmodul <serial> inte hittades. Det gick att identifiera problemet genom att felet låg i ett program med typen .py medan språket som används under Arduino IDE normalt är C/C++.Notera att felet inte låg i ESP32 vebbserverprogrammet utan det var ett hjälpprogram från ESP32 som behövde modulen. Felet avhjälptes genom att ladda in serial:

sudo apt install python-serial

Modifiera därefter programkoden så att du lägger in WiFi SSID samt password. Dessutom måste man välja kameramodell. I mitt fall fungerar alternativet:

#define CAMERA_MODEL_AI_THINKER

Man väljer kameramodell genom att ta bort kommentaren före ifrågavarande #define. En kommentar börjar med ”//”.

Nu gick kompileringen igenom och programmet kan laddas upp till ESP32. Tryck på Reset på ESP32, en mycket liten trycktangent bredvid 3.3V anslutningen. Välj nu Sketch/Upload och om allt går korrekt så börjar programmet laddas upp (tid kanske 30-60 sekunder beroende på vilken uppladdningshastighet man valt). Då uppladdningen har lyckats kopplar man ur programmeringsbygeln IO0-GND för att köra programmet.

Starta Tools/serial Monitoroch kontrollera att hastigheten är vettig t.ex. 115200. Tryck på ESP32 Reset varefter ESP bör skriva diverse text till monitorn. I texten hittar vi den IP adress som ESP32 har fått via det lokala WiFi nätverket.

Vi öppnar nu en vebbläsare (jag använder Firefox) och lägger in den IP-adress vi fick oss tilldelad och som vi grävde fram åt oss från texten på monitorskärmen. I mitt fall fick jag adressen http://192.168.10.42/. Notera att den angivna adressen ovan inte är verklig och den kommer inte att fungera i ditt fall.

Ett fönster med kamerakontroller på vänster sida öppnas i vebbläsaren. Längst ner finns kontrollerna Get still, Start stream . Tryck på Start Stream varvid ESP32 börjar sända video över WiFi till datorn. Det är nu möjligt att via kontrollerna ändra ljushet/mörkhet, kontrast, upplösning etc. Fritt fram att experimentera.

Följande steg?

Följande steg blir att planera och skriva ut ett lämpligt skal samt förse ESP32 med ett laddningsbart batteripaket så att jag kan hänga systemet på fågelbordet och avslöja våra stora (vitsvanshjortar 😉 ) småfåglar som länsar fågelbordet på nolltid.

Källor:

Det finns en hel del artiklar på engelska om hur ESP32 skall kopplas för programutveckling. Nedan enast ett exempel. Vid problem lönar det sig oftast att Google på den felkod man får. Det finns oftast någon annan som har stött på samma problem och en lösning kan ofta hittas direkt.

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com-logga

Du kommenterar med ditt WordPress.com-konto. Logga ut /  Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut /  Ändra )

Ansluter till %s


%d bloggare gillar detta: