Įsivaizduokite tokią situaciją: šeštadienio rytas, 6 val. ryto, jūs patogiai gulite lovoje ir dar ramiai miegate. Staiga išgirstate, kad jūsų katė drasko duris, jos garsus miauksėjimas tampa nepakenčiamas, o jūsų katė turi visą pasaulio laiką, kad praneštų jums, ko jai reikia. Ar žinote, ko jai iš tikrųjų reikia? Žinau - jūsų katė nori maisto dabar! Tuoj pat! Iš kur aš tai žinau? Nes kažkuriuo metu pradėjau šerti savo katę tuo metu... Ir, žinoma, tai tapo nauju standartiniu maisto gavimo laiku.
Šis scenarijus mane įkvėpė sukurti automatinę kačių šėryklą, kuri pašalintų rytinio kačių šėrimo rūpesčius ir užtikrintų, kad katės būtų laimingos.
Pirmoji karta
Pirmosios kartos kačių maitintuvė buvo paprasta MVP pagamintas iš kartono, paprasto servo ir ESP WeMos. Naudojant servopavarą viršutinė talpykla pasukama 180 laipsnių kampu, kad būtų galima išpilstyti maistą.
Mikrokontroleris buvo prijungtas prie mano vietinio "Wi-Fi" ir su "Smart Home" serveriu, kuriame veikia "HomeAssistant", bendravo naudodamas MQTT protokolą. Dėl to galėjau naudoti "HomeAssistant" automatizavimo sistemą, kad suplanuočiau šėrimą ir maisto išdavimą "Google Home" komandomis. Kiekvienas šėrimas "Google" kalendoriuje buvo apibrėžtas kaip specialus įvykis. Tai leido man lengvai kontroliuoti katės šėrimo laiką ir prireikus jį keisti.
Žinoma, ši karta susidūrė su tam tikromis problemomis:
- viršutinė talpykla kartais atsiskirdavo nuo servo rankenos ir išsipildydavo visas maistas (vadinau tai “Jackpot efektu”),
- jis nebuvo geriausio dizaino,
- kartonas pradėjo irti.
Kaip ir dauguma MVP, jis buvo naudojamas tik 2 metus, kol sugedo.
Antroji karta
Nusprendžiau, kad kitą katės maitintuvę reikėtų:
- galima pagaminti iš 3D spausdintuvu atspausdintų dalių,
- naudoti Raspberry Pi 3,
- turėti nedidelę kamerą, kad galėtumėte stebėti, kaip katė reacted ir ką daro gyvūnas.
Visą procesą pradėjau nuo pagrindinių maisto skirstymo elementų projektavimo. Tada, kai projektai buvo paruošti, visi elementai buvo atspausdinti naudojant "Creality Ender-3" ir PLA
Dalys
Įsitikinęs, kad viskas veikia, pradėjau kurti ir spausdinti likusias dalis:
RaspberryPi bazė (0 lygis)

Jame yra specialios vietos varžtams, kad būtų lengviau įdiegti "Raspberry Pi". Be to, priekyje yra nedidelė skylutė, kad būtų galima lengvai pasiekti "Raspberry Pi" SD kortelę.
Dubens laikiklis
Ši plastikinė dalis naudojama metaliniam maisto dubenėliui (žinoma, jis buvo atspausdintas aukso gijomis - mano katės šlovei ir garbei). Ji sujungta su pagrindu naudojant 2 neodimio magnetus.

Servo laikiklis (1 lygis)
Šis lygis naudojamas servo laikymui, kol jis suka kitame lygyje esančią detalę. Jis taip pat turi nedidelį nuolydį, kad būtų galima geriau patiekti maistą.

Raciono mechanizmo talpykla (2 lygis)
Tai paprastas bendras lygis, kuriame maistas dalijamas iš viršuje esančio indo. Jį suka servopavaros.

Maisto indų laikiklis (3 lygis)
Ši dalis naudojama maisto talpyklai laikyti. Tai vienintelė plastikinė dalis, kuri nebuvo atspausdinta 3D spausdintuvu. Norėjau, kad 3D spausdinamos dalys kuo mažiau liestųsi su maistu. Teoriškai skaidrus PLA plastikas neturi jokių toksinių teršalų, tačiau nusipirkau pigiausią dribsnių dozatorių ir maisto konteinerio dalį paėmiau, kad būčiau saugus. Be to, jis atrodo tikrai šauniai.

Korpusas ir dangtis
Paskutinės dvi dalys buvo korpusas ir dangtis. Čia nieko ypatingo, išskyrus daugiau aukso, kad atrodytų geriau ir pelnytų katės susižavėjimą.

Visos dalys

Galutinis surinkimas

Programinė įranga
Aviečių Pi veikia Raspbian aprūpinta naudojant ansible grojaraštis paleisti šias paslaugas:
MotionEye
"MotionEye" yra atvirojo kodo programinė įranga, skirta privačiam stebėjimui kurti. Ji aptinka bet kokią kamerą, prijungtą prie "Raspberry Pi". Be to, iš karto gaunate judesio aptikimo funkciją, galinį tašką srautui bendrinti ir webhook palaikymą.
Servo servisas
Ši tarnyba kontroliuoja servopavaros sukimąsi. Tai paprastas Python scenarijų, kuris prisijungia prie MQTT serverio, kuriame veikia mano "Smart House" programinė įranga, ir laukia pranešimo, kad būtų paleista rotacija.
Vedama paslauga
Kaip ir servo paslauga, ji įgyvendina šviesos šaltinio, valdomo per MQTT, protokolą. PradžiaAsistentas.
Namų asistentų automatizavimas
Ir galiausiai - "HomeAssistant" automatika, paleidžianti maitinimą.
Jis įjungia maisto išdavimą dviem atvejais:
- kai kalendoriuje pasirodo maitinimo laikas,
- kai Tarptautinė kosminė stotis yra virš mano namų.
Šis automatizavimas kodas atrodo taip:
- slapyvardis: Maitinti katę
sukelti:
- platforma: valstybė
entity_id: ‘binary_sensor.iss’
nuo: ‘off’
į: ‘įjungta’
- platforma: valstybė
entity_id: calendar.cat_feed_schedule
nuo: ‘off’
į: ‘įjungta’
veiksmai:
- paslauga: script.feed_the_cat
Santrauka
Akivaizdu, kad ši versija nėra paskutinė. Bet jis tarnauja savo tikslui - katė yra gerai pamaitinta, o aš turiu savo tingius rytus 🙂
Skaityti daugiau:
- E-commerce: Nauja žaidimo būklė 2020 m. (ataskaita)
- Kaip valdyti verslą per krizę?
- "Ruby" programavimas. Pradedančiojo terminalas - 2 dalis