The Codest Wartość podstawowa #1
The Codest wierzy w cztery kluczowe wartości, które są podstawą wszystkich działań podejmowanych przez zespoły The Codest. W tym artykule nasz CEO i współzałożyciel, Greg Polec, wyjaśnia, co...
Wyobraź sobie taką sytuację: jest 6:00 rano w sobotę, leżysz wygodnie w swoim łóżku, wciąż śpiąc spokojnie. Nagle słyszysz, jak twój kot drapie w drzwi, jego głośne miauczenie staje się nie do zniesienia, a twój kot ma cały czas na świecie, aby dać ci znać, czego potrzebuje. Czy wiesz, czego naprawdę potrzebuje?
Wyobraź sobie taką sytuację: jest 6:00 rano w sobotę, leżysz wygodnie w swoim łóżku, wciąż śpiąc spokojnie. Nagle słyszysz, jak twój kot drapie w drzwi, jego głośne miauczenie staje się nie do zniesienia, a twój kot ma cały czas na świecie, aby dać ci znać, czego potrzebuje. Czy wiesz, czego naprawdę potrzebuje? Wiem - twój kot chce jedzenia teraz! Właśnie teraz! Skąd to wiem? Ponieważ w pewnym momencie zacząłem karmić mojego kota o tej porze... I oczywiście stało się to nowym standardem czasu na jedzenie.
Ten scenariusz zainspirował mnie do zbudowania automatycznego karmnika dla kotów, który wyeliminowałby kłopoty związane z porannym karmieniem kota i sprawił, że kot byłby szczęśliwy.
Pierwsza generacja karmników dla kotów była prosta. MVP wykonany z kartonu, prostego serwomechanizmu i ESP WeMos. Używał serwomechanizmu do obracania górnego pojemnika o 180 stopni w celu dozowania żywności.
Mikrokontroler był podłączony do mojej lokalnej sieci Wi-Fi i komunikował się z serwerem Smart Home z HomeAssistant za pośrednictwem protokołu MQTT. Dzięki temu mogłem wykorzystać system automatyzacji HomeAssistant do planowania karmienia i wydawania jedzenia za pomocą poleceń Google Home. Każde karmienie było definiowane jako specjalne wydarzenie w Kalendarzu Google. Pozwoliło mi to łatwo kontrolować czas karmienia kota i zmieniać go w razie potrzeby.
Oczywiście generacja ta napotkała pewne problemy:
Podobnie jak w przypadku większości MVP, był używany tylko przez 2 lata, aż się zepsuł.
Zdecydowałem, że następny karmnik dla kota powinien:
Cały proces rozpocząłem od zaprojektowania podstawowych elementów do podziału żywności. Następnie, gdy projekty były gotowe, wszystkie elementy zostały wydrukowane przy użyciu Creality Ender-3 i PLA
Po upewnieniu się, że wszystko działa, przystąpiłem do projektowania i drukowania pozostałych części:
Posiada specjalne miejsca na śruby ułatwiające instalację Raspberry Pi. Dodatkowo z przodu znajduje się mały otwór ułatwiający dostęp do karty SD Raspberry Pi.
Ta plastikowa część służy do umieszczenia metalowej miski na jedzenie (oczywiście została wydrukowana ze złotych filamentów, dla sławy i chwały mojego kota). Jest ona połączona z podstawą za pomocą 2 magnesów neodymowych.
Poziom ten służy do przytrzymywania serwomechanizmu podczas obracania części na następnym poziomie. Ma również niewielkie nachylenie dla lepszego podawania jedzenia.
Jest to prosty poziom, który porcjuje żywność z pojemnika umieszczonego powyżej. Jest on obracany przez serwomechanizm.
Ta część służy do przytrzymywania pojemnika na żywność. Jest to jedyna plastikowa część, która nie została wydrukowana w 3D. Chciałem zminimalizować kontakt części drukowanych 3D z żywnością. Teoretycznie przezroczysty plastik PLA nie zawiera żadnych toksycznych zanieczyszczeń, ale kupiłem najtańszy dozownik płatków śniadaniowych i wziąłem część pojemnika na żywność, aby być po bezpiecznej stronie. Poza tym wygląda naprawdę fajnie.
Ostatnie dwie części to obudowa i pokrywa. Nic specjalnego, poza większą ilością złota, aby wyglądało lepiej i zdobyło podziw kota.
Raspberry Pi działa pod kontrolą systemu Raspbian udostępnionego przy użyciu aplikacji ansible playbook aby uruchomić te usługi:
MotionEye to oprogramowanie open source do tworzenia własnego prywatnego monitoringu. Wykrywa ono każdą kamerę podłączoną do Raspberry Pi. Dodatkowo, po wyjęciu z pudełka, otrzymujesz wykrywanie ruchu, punkt końcowy do udostępniania strumienia i obsługę webhooków.
Ta usługa kontroluje obrót serwomechanizmu. Jest to prosta Python który łączy się z serwerem MQTT, na którym działa moje oprogramowanie Smart House i oczekuje na wiadomość uruchamiającą obrót.
Podobnie jak usługa servo, implementuje ona protokół dla źródła światła kontrolowanego przez MQTT w HomeAssistant.
I wreszcie automatyzacja HomeAssistant, która uruchamia karmienie.
Uruchamia on wydawanie żywności w dwóch sytuacjach:
Ta automatyzacja kod wygląda następująco:
- alias: Nakarm kota
spust:
- platforma: stan
entity_id: 'binary_sensor.iss'
od: "wyłączony
do: 'on'
- platforma: stan
entity_id: calendar.cat_feed_schedule
od: "wyłączony
do: 'on'
działanie:
- usługa: script.feed_the_cat
Oczywiście ta wersja nie jest ostatnią. Ale spełnia swoją rolę - kot jest dobrze odżywiony, a ja mam swoje leniwe poranki 🙂
Czytaj więcej:
– E-commerce: Nowy stan gry 2020 (raport)
– Jak prowadzić firmę w czasie kryzysu?
– Programowanie w Ruby. Terminal dla początkujących - część 2