Forestill deg en slik situasjon: Klokken er 06:00 en lørdag morgen, du ligger komfortabelt i sengen din og sover fortsatt godt. Plutselig hører du katten din klore på døren, dens høylytte mjauing blir uutholdelig, og katten din har all verdens tid til å fortelle deg hva den trenger. Vet du hva den egentlig trenger? Jeg vet det - katten din vil ha mat nå! Akkurat nå! Hvordan vet jeg det? Fordi jeg på et tidspunkt begynte å mate katten min på det tidspunktet ... Og det ble selvfølgelig et nytt standardtidspunkt for å få mat.
Dette scenariet inspirerte meg til å bygge en automatisk kattemater, som ville fjerne problemene med å mate katten om morgenen og holde katten fornøyd.
Første generasjon
Den første generasjonen av kattemateren var en enkel MVP laget av litt papp, en enkel servo og ESP WeMos. Den brukte servo til å rotere den øverste beholderen 180 grader for å dispensere maten.
En mikrokontroller var koblet til mitt lokale Wi-Fi og kommuniserte med Smart Home-serveren som kjører HomeAssistant via MQTT-protokollen. Takket være dette kunne jeg bruke HomeAssistant-automatiseringssystemet til å planlegge mating og utdeling av mat gjennom Google Home-kommandoer. Hver fôring ble definert som en spesiell hendelse i Google Kalender. På den måten kunne jeg enkelt kontrollere fôringstiden til katten og endre den ved behov.
Denne generasjonen møtte selvfølgelig på noen problemer:
- den øverste beholderen kunne av og til løsne fra servohåndtaket og søle ut all maten (jeg kalte det "Jackpot-effekten"),
- Den hadde ikke det beste designet,
- begynte pappen å bli dårligere.
Som med de fleste MVP-er ble den bare brukt i to år før den gikk i stykker.
Andre generasjon
Jeg bestemte meg for at neste kattemater skulle:
- bygges av 3D-printede deler,
- bruke Raspberry Pi 3,
- ha et lite kamera for å se hvordan katten reagerte og hva dyret gjorde.
Jeg startet hele prosessen med å designe grunnleggende elementer for matinndeling. Da designene var klare, ble alle elementene skrevet ut ved hjelp av Creality Ender-3 og PLA
Deler
Etter å ha forsikret meg om at alt fungerte, fortsatte jeg med å designe og skrive ut resten av delene:
Base for RaspberryPi (nivå 0)

Den har spesielle steder for skruer som gjør det enklere å installere Raspberry Pi. I tillegg er det et lite hull på forsiden for enkel tilgang til SD-kortet til Raspberry Pi.
Skålholder
Denne plastdelen brukes til å plassere en matskål av metall (selvfølgelig ble den trykt med gullfilamenter, til ære og berømmelse for katten min). Den er koblet til basen ved hjelp av 2 neodymmagneter.

Servoholder (nivå 1)
Dette nivået brukes til å holde servoen mens den roterer delen på neste nivå. Det har også en liten helling for bedre matservering.

Beholder for rasjoneringsmekanisme (nivå 2)
Dette er et enkelt, generisk nivå som porsjonerer mat fra en beholder som er plassert over. Den roteres av servoen.

Holder for matbeholder (nivå 3)
Denne delen brukes til å holde matbeholderen. Det er den eneste plastdelen som ikke er 3D-printet. Jeg ønsket å minimere matkontakt med 3D-printede deler. I teorien har gjennomsiktig PLA-plast ingen giftige forurensninger, men jeg kjøpte den billigste frokostblandingsdispenseren og tok matbeholderdelen, bare for å være på den sikre siden. Dessuten ser den veldig kul ut.

Hus og lokk
De to siste delene var huset og lokket. Ikke noe spesielt her, bortsett fra mer gull for å få det til å se bedre ut og vinne kattens beundring.

Alle deler

Endelig montering

Programvare
Raspberry Pi kjører en Raspbian som er klargjort ved hjelp av ansible spillbok for å kjøre disse tjenestene:
MotionEye
MotionEye er en programvare med åpen kildekode for å bygge din egen private overvåking. Den oppdager alle kameraer som er koblet til Raspberry Pi. I tillegg får du bevegelsesdeteksjon, et endepunkt for deling av strømmen og støtte for webhook.
Servoservice
Denne tjenesten styrer servoens rotasjon. Det er en enkel Python skript som kobler seg til MQTT-serveren som kjører Smart House-programvaren min, og venter på en melding for å utløse rotasjonen.
Ledet tjeneste
På samme måte som servotjenesten implementerer den en protokoll for lyskilder som styres av MQTT i HomeAssistant.
Automatisering av hjemmeassistenter
Og til slutt, HomeAssistant-automatiseringen som utløser mating.
Den utløser matutdeling i to situasjoner:
- når fôringstiden dukker opp i kalenderen,
- når den internasjonale romstasjonen er over der jeg bor.
Denne automatiseringen kode ser slik ut:
- alias: Gi katten mat
utløser:
- plattform: stat
entity_id: 'binær_sensor.iss'
fra: 'av'
til: "på
- plattform: stat
entity_id: calendar.cat_feed_schedule
fra: 'av'
til: "på
handling:
- tjeneste: script.feed_the_cat
Sammendrag
Denne versjonen er selvsagt ikke den siste. Men den tjener sitt formål - katten får god mat og jeg har mine late morgener 🙂 🙂 .
Les mer om dette:
– E-commerce: Ny status for spillet 2020 (rapport)
– Hvordan drive en virksomhet under krisen?
– Programmering i Ruby. Nybegynnerens terminal - del 2