Energeticky sebestačná kamera pre vtáčie kŕmidlo Solar powered camera for bird feeder.
🔗 EN Project info bellow, ⬇️
Živý pohľad je dostupný na adrese vtaciky.lukasporubcan.sk Projekt popisuje použitie lacného modulu ESP-32 CAM, ako kameru ktorá sníma vtáčikov v kŕmidle umiestnenom na balkóne bytového domu. Riešenie je energeticky sebestačné, napájané štvoricou solárnych panelov.
Samotná kamera používa objektív so širokouhlou optikou, tým je zabezpečená viditeľnosť širokého priestoru z krátkej vzdialenosti.
Keďže doska ESP-32 je pomerne napäťovo hladná (cca 200mA pri vysielaní), plocha strechy nestačí na dostatočne veľké solárne panely, ktoré by dokázali napájať kameru aj po západe slnka. Kamera však nemá IR filter takže v noci nevidí. Preto som tento problém vyriešil modulom ktorý sa zopne po východe slnka čím pripojí kameru k batérií. Pre zvýšenie výdrže ESP-32 napájam z pinu 3V3 s použitím LDO 3,3V. Tento plánujem vymeniť za 3V, výdrž by mala byť ešte o niečo lepšia, ESP-32 dokáže podľa testov naštartovať zhruba pri 2,9V. Ako úložisko energie som použil 2x 18650 LiPo batérie zapojené paralelne k sebe, nabíjací obvod TP4056 so vstavaným ochranným obvodom pred podbitím batérie. Medzi solárnymi panelmi a nabíjacím obvodom je umiestnený ešte DC-DC boost modul ktorý zvyšuje napätie pri slabom osvetlení solárnych panelov.
Na indikáciu stavu batérie bez potreby pripojenia modulu k wifi je v krabičke vstavaný LED indikátor nabitia batérie.
Základný program v kamere je ESPHome, kamera komunikuje cez WiFi do riadiaceho systému HomeAssistant. Pod HomeAssistantom je nainštalovaný addon Frigate NVR ktorý umožňuje detekciu objektov z videa pomocou naučených modelov umelej inteligencie.
Verejná stránka je jednoduchý web založený na Bootstrap 5 frameworku. Aby som sa vyhol sprístupneniu celého API verejnosti, používam NGINX Proxy Manager ktorý presmerováva požiadavky na konkrétne systémy v lokálnej sieti. Webová stránka dotazuje Nginx, ktorý cez Frigate API vracia aktuálny obrázok kamery a tiež historické snímky na ktorých bol detegovaný objekt, v našom prípade vták. Pre zobrazenie aktuálnej teploty a atmosférických podmienok používam HTTP Endpoint v NodeRED ktorý informácie z HomeAssistantu transformuje do JSON odpovede, ktorá sa zobrazuje na webe.
Rozloženie, obrázky a celkovú kompozíciu webu som vygeneroval za pomoci umelej inteligencie cez službu MidJourney. Jednotlivé časti obrázkov som upravil, poskladal a usporiadal v Photoshope.
Časti zdrojového kódu webu ktorý má na starosti načítavanie aktuálneho obrázku z kamery, ako aj zobrazenie počasia, napísala taktiež umelá inteligencia, cez službu ChatGPT.
Krabička pre uloženie komponentov, ako aj držiaky solárnych panelov sú dostupné v zložke 3D-files. Súčasťou krabičky je integrovaný tunel pre binderku ktorá zabezpečuje batérie pred pohybom. Pre jednoduchšiu tlač je kryt kamery a svetelného senzoru vytlačená zvlášť a spolu sú prichytené sekundovým lepidlom. Pre vyššiu odolnosť pôsobením vonkajších vplyvov odporúčam krabičku tlačiť z PET-G alebo podobného materiálu.
You can check live view at vtaciky.lukasporubcan.sk In this project I use cheap ESP-32 CAM module as camera for capturing birds in birds feeder, placed at balcony of our building. Solution is self powered with help of 4 solar panels mounted to the roof.
To be able to view whole internal part of bird feeder from relatively shor distance, I found 160 degrees fish eye lens for ESP-32.
ESP-32 is quite power hungry for battery operated solutions (cca 200mA while transmitting), there is no enough space for bigger solar panels on the roof. But the camera module doesn't have IR filter so we don't need to broadcast at night. I solved this problem with cheap light dependend module switch, which will turn on power to the camera after sunrise. For better battery life I fed the ESP-32 module through 3V3 pin, using LDO AMS1117. I am planning to switch this to 3V LDO and prolong the battery life even a bit more. From my tests, my ESP-32 can boot sucessfully from about 2,9V. For energy storage I used 2x 18650 LiPo batteries, I harvested from old laptops. They are connected in parallel to gain capacity. For charging there is TP4056 module with integrated protection for battery undervolage and overvoltage cutout. Between solar panels and charger there is also DC-DC boost module to slightly increase voltage in cases there is not enough sunlinght. As visual battery indicator without need to be connected to WiFi, there is LED battery indicator module built in to the case.
Camera runs on basic ESPHome firmware, it sends data through WiFi to the HomeAssistant. Under HomeAssistant there is addon called Frigate NVR, which is capable of detecting objects from video using pre-learned AI models.
Public WEB is simple website based on Bootstrap 5 framework. I don't wanted to exposed whole HomeAssistant, NodeRED, or Frigate API to the public internet, So I used NGINX Proxy manager as redirector for API calls from outside my network. Public web is requesting NGINX Proxy, which grabs actual image from Frigate, and also historical snapshots with detected objects, in our case birds, and shows it on the web. There is also API for loading outside temperature and humidity, this call handles HTTP Node in NodeRED, which asks HomeAssistant for data, encode response to JSON and sends it back.
Overall design, composition, images and birds were generated through AI, with MidJourney. Later I cleaned, aligned and edited all images in Photoshop.
Parts of code of public web page, reponsible for loading and showing actual camera image, as well as loading of weather, was too written with help of AI, using ChatGPT.
All 3D files for case for electronics as well as mounting of solar panels, are in 3D-files folder. There is integrated slot for zip tie under the batteries so you can secure them inside the case. For ease of print I splitted some parts of front cover as camera cover and LDR cover to separate files, these can be stitched together with drop of superglue.
To prolong case life in the wild, I suggest to use PET-G or similar material for printing the case.
- ESP32-CAM module
- ESP32-CAM 160 Degree fisheye lens
- DC-DC Boost module
- 18650 Battery
- TP4056 Charger with protection
- External Antenna
- Battery indicator
- Light Sensor switch module
- AMS1117 LDO
- Schottky diode 12SQ045 12A 45V
- 145x145mm Solar panel (Pozor, reálne má polovičný výkon ako reklamovaných 550mA / Watchout, only half of stated 550mA is real)