Zpět na úvodní stránku

Chytré ptačí krmítko

Datum realizace: 5.6.2025

Datum dokončení 5. června 2025
Technologie 3D tisk, CAD, Elektronika, Optimalizace napájení v terénu, Práce se dřevem, programování ESP, Raspberry Pi, Flask webserver, Senzory

O projektu

Můj finální projekt se zabývá vytvořením inteligentního ptačího krmítka s kamerou a senzory. Toto krmítko bude umožňovat sledování ptáčků v reálném čase. Bude vybaveno kamerou pro záznam a zpracování dat externí výpočetní jednotkou (Malina). Dále také bude fungovat jako chytrá meteostanice, která bude měřit teplotu, vlhkost a případně další parametry. V následujících částí můžete shlédnout kompletní návrh a realizaci tohoto projektu.

Kapitola 0. - Research

Před samotným návrhem bylo třeba provést důkladný průzkum dostupných technologií a materiálů. Zjistil jsem, že pro tento projekt je ideální použít desku ESP32 s kamerou, která umožňuje nízkou spotřebu energie. Původně jsem si přál použít Raspberry Pi Zero W. Bohužel pro můj účel není vhodné, protože má vysokou spotřebu energie a narozdíl od ESP32 nemá sleep mód. Dále jsem se rozhodl pro použití solárního panelu pro napájení, což umožní dlouhodobý provoz bez nutnosti časté údržby. Jako backup pro solární panel slouží 3 články Li-ion baterie s celkovou kapacitou přes 8Ah.


Musel jsem se také rozhodnout pro vhodné materiály na samostatnou konstrukci krmítka. Pro střechu jsem se rozhodl použít PETG, protože je odolný vůči počasí. Navíc má výhodu, že je lehce translucentní, tudíž kamerka bude mít snad i více světla. Pro podlahu a boční stěny jsem zvolil 12mm OSB desku kategorie 3, která je již z výroby odolná proti vlhkosti. I tak ji plánuji natřít ochranným lakem. Pro sloupky zajišťující uchycení střechy jsem zvolil 30x50mm dřevěné hranoly.

Kapitola 1. Modelování

Nejprve bylo třeba vytvořit 3D model celého krmítka. Pro tento účel jsem použil software Fusion 360. Modelování jsem začal nejprve návrhem střechy, která je nejdůležitější pro ochranu vnitřních komponentů před deštěm. Rozdhol jsem se neortodoxně pro střechu vyrobenou na 3D tiskárně, která bude z průsvitného PETG materiálu. Následně jsem vybral vhodné rozměry pro nosné sloupky a podlahu. Pro sloupky jsem zvolil 30x50mm dřevěné hranoly a pro podlahu 12mm OSB desku. Dále jsem vytvořil model vnitřního elektroboxu, který bude obsahovat ESP32 s kamerou, napájecí obvod a další komponenty. Vnitřek elektroboxu jsem navrhl tak, aby jednotlivé komponenty mohly být snadno uchyceny pomocí zip pásků k víku elektroboxu. To zajistní dobrou organizaci a snadnou údržbu. Celkové modelování mi zabralo hodně času, ale naučil jsem se konečně pořádně pracovat s komponentami a vazbami ve Fusionu.

Dále bylo potřeba vymyslet jakým způsobem vůbec uchytím budku a solární panel do vyvýšené polohy. Jelikož máme na zahradě víno, které roste kolem ocelových sloupků, rozhodl jsem se použít právě tyto sloupky jako oporu pro krmítko. Ve Fusionu jsem vymodeloval držák, který se nasadí na sloupek a přivrtá se k podlaze krmítka. Pro solární panel jsem dlouho neveďěl jak ho uchytit, jelikož je poměrně těžký a velký. Nakonec jsem však nalezl doma starý vesa držák monitoru, ze kterého jsem sundal objímku, do které jsem vyvrtal díru. Ta se následně přišroubuje k 3D tištěnému držáku a na ní se přichytí pomocí OSB desky solární panel. Velká výhoda tohoto řešení je, že solární panel je možné naklonit do různých úhlů, což umožní lepší využití slunečního svitu. Zde jsou modely držáků:

Kapitola 2. 3D tisk

Po dokončení modelování jsem přistoupil k 3D tisku jednotlivých dílů. Pro tisk jsem použil PETG. Tisknul jsem na obvyklou teplotu 240°C a podložku na 70°C. Zejména u střechy bylo potřeba velice pečlivě naslicovat tiskový profil. Model je totiž velice tenký ale vysoký, tudíž jsem musel řešit problémy se špatnou adhezí a vzhledem k mému bedslingeru i s velkým zpomalením v horních vrstvách k předejití vibracím. Celkem jsem protiskl přes 1,5 kilogramu PETG materiálu. Všechny díly jsem tisknul na Creality Ender 3 S1 Pro.

UI design

Střecha střechuje


Pro držáky solárního panelu a budky na sloupcích jsem však potřeboval maximální pevnost a odolnost. Proto jsem využil poměrně nové technologi nonplanar brick layering, která každou stěnu vytiskne v rozdílné výšce a tím pádem vytvoří mnohem pevnější strukturu. Pro použití této technologie stačí nastavit vlastní postprocessing skript, který upraví G-code tak, aby se tiskly jednotlivé vrstvy v různých výškách. Tento skript a vše ostatní je skvěle zpracované zde: Brick Layers.

Wireframy

Elektrobox se systémem zip uchycení

UI design

Patka pro sloupky krmítka

Wireframy

Držáky na sloupky

UI design

Uchycení krmítka venku na sloupku

Wireframy

Šerosvit a vyvrtaná díra do VESA držáku

UI design

Uchycení solárního panelu

Kapitola 3. manuální práce

Jelikož jsem chtěl snížit již tak poměrně vysoké náklady na projekt, rozhodl jsem se pro použití co nejelementárnějších materiálů. V Hornbachu jsem koupil OSB desku třídy 3, která by již v základu měla být odolná vůči vlhkosti. Také jsem koupil 30x50mm dřevěný hranol. To vše však muselo projít úpravou, aby bylo možné vše smontovat dohromady. Jelikož jsem zlomil pilku na lupínkové pile, musel jsem barbarsky řezat ruční pilkou. Alespoň jsem si vyzkoušel, že pokud nedám KyR, tak umřu hlady , jelikož se rukama neuživím :D. Po velice šikmém řezání nastal čas opravit všechny hrany. K tomu jsem použil pilník a brusku. Následně jsem vše natřel ochrannou vodnou ředitelnou Lazurou, která by měla zajistit ochranu proti vlhkosti a UV záření. Aplikoval jsem postupně tři vrstvy a nechal vše důkladně zaschnout. Sestavil jsem také celou střechu a ihned se projevily všechny nedostatky přesnosti 3D tisku. Naštěstí šla střecha v pořádku smontovat a všechny spáry a díry jsem zalepil silikonem, aby se dovnitř nedostala voda.

Wireframy

Brutus

UI design

Broušení

Wireframy

Natírání lazurou

UI design

Silikonování střechy

Došlo mi, že i přes použití lazury s dětskou atestací by se mohlo stát, že při zobání ptáčci uždíbnou i trochu dřevotřísky. Nechtěl jsem proto nic nechat náhodě a na 3D tiskárně jsem ještě vytiskl mističku na zrní, která zabrání přímému styku s lakovaným dřevem.

Kapitola 4. Elektronika

Nejprve jsem se rozhodl otestovat zapojení na breadboardu. K ESP32CAM jsem připojil napájení, PIR senzor a BME280 senzor. Napájení bude ve finále zajištěno pomocí solárního panelu. Pro testování jsem však použil samostatné baterie.

UI design

Zapojení pro testování

Při sestavování do krabičky jsem bohužel zapojil se špatnou polaritou jak PIR senzor, tak BME280. Bohužel se trvale poškodily a musel jsem objednat nové.

Kapitola 5. Programování

Nejprve bylo třeba nastavit externí Raspberry Pi, které pracuje jako externí server a zajišťuje zpracování a zobrazení dat z krmítka. Na Raspberry Pi jsem nainstaloval operační systém Raspberry Pi OS lite, který sice nemá GUI, avšak je velmi efektivní a nenáročný na výkon. Následně jsem se pomocí SSH připojil k Raspberry Pi pomocí VS Code server a nainstaloval potřebné knihovny a baličky pro můj webový server. Použil jsem Python Flask framework pro vytvoření jednoduchého webového serveru, který bude zpracovávat data z krmítka a zobrazovat je na webové stránce. Důležitá je také komunikace. Nastavil jsem jednotlivé HTTP endpointy pro komunikaci, abych mohl zasílat ESP32 i pokyny a zároveň přijímat data. Následně jsem vytvořil webové rozhraní, ve kterém jsem implementoval zobrazení dat ze senzorů a možnost ovládání krmítka (zejména manuální měření a focení). Paralelně s tím jsem pracoval na samotném kódu pro ESP32, který bude zajišťovat komunikaci s Raspberry Pi a sběr dat ze senzorů. Pro ESP32 jsem použil Arduino IDE a nainstaloval potřebné knihovny pro práci s kamerou, PIR senzorem a BME280 senzorem. Jelikož jsem nikdy nepracoval s webserverem pořádně, dost mi pomohl copilot a následují článek: Flask tutorial . Jakmile jsem pochopil princip komunikace, bylo vše již poměrně přímočaré. Frontend jsem vytovřil pomocí HTML, CSS a JavaScriptu. K vizualizaci dat jsem použil knihovnu Plotly.js, která umožňuje snadné vytváření grafů. Data z ESP32 ukládám na externí disk, připojený k Rpi. Enviromentální měření následně ukládám do JSON souboru, který je pravidelně aktualizován. V budoucnu možná spíše změním ukládání dat do CSV, abych mohl snadno analyzovat data pomocí Pythonu a knihovny Pandas.


Byl tu malý zádrhel. Jelikož jsem zatím vše nastavoval přes vlastní hotspot, po nějaké době přestala fungovat komunikace flask s esp32. To bylo způsobeno, že hotspot přiřazoval dynamicky IP adresy a tudíž se po nějaké době změnila IP adresa jak ESP32 tak i Flask serveru. Bohužel Samsung hotpsot neumí přiřazovat statické IP adresy, tudíž jsem musel manuálně nastavit pevné IP adresy pro ESP32 a Flask server uvnitř kódu.

Po zapojení jsem otestoval webserver několika měřeními a vše fungovalo, jak mělo. Vyzkoušel jsem také PIR senzor a manuální focení a to také fungovalo parádně.

Kapitola 6. kompletace

Finální zapojení provedu až po převozu do školy. Zatím jsem však vše otestoval doma a výsledek vypadá velice pěkně.

UI design

Funkce meteostanice

UI design

Hlavní stránka s ovládáním

Následně jsem jednotlivé komponenty přenesl ven. Ještě není propojeno napájení z panelu, ale pro vizualizaci to postačí. Napájení zapojím až ve škole, jelikož se mi doma rozbila páječka. a nová mi nestihne přijít. Patky na zbylé rohy se právě tisknou. Ty na krmítko přilepím

UI design

Takto to asi uvidí ptáčci

UI design

Uchycení krmítka s panelem

Seznam použitých komponent

Komponenta Odkaz
ESP32-CAM ESP32CAM
PIR senzor AM312 PIR senzor
BME280 senzor BME280
Raspberry Pi 5 Raspberry Pi5
Solární panel 20W Solární panel 20w
Li-ion baterie 18650 18650 Li-ion baterie
Solární power module Waveshare Solar Power Manager d
Programátor ESP32CAM Laskakit CH9102 Programmer
Dřevěný sloupek Dřevěný sloupek
OSB deska 12mm OSB deska 12mm
Lazura na dřevo Lazurol palisandr
Filament PETG Sunlu PETG
Vodiče a spojovací materiál M3 šroubky a matky, M4 vruty, Silikon, vteřinové lepidlo, pryskyřice