window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster już istnieje') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Automatyczny karmnik dla kotów - The Codest
The Codest
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Branże
    • Fintech i bankowość
    • E-commerce
    • Adtech
    • Healthtech
    • Produkcja
    • Logistyka
    • Motoryzacja
    • IOT
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
Strzałka w tył WSTECZ
2020-04-28
The Codest

Automatyczny karmnik dla kotów

Arkadiusz Buras

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

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:

  • Górny pojemnik czasami odłączał się od uchwytu serwomechanizmu i wysypywał całe jedzenie (nazwałem to "efektem Jackpota"),
  • nie miał najlepszego designu,
  • karton zaczął się niszczyć.

Podobnie jak w przypadku większości MVP, był używany tylko przez 2 lata, aż się zepsuł.

Druga generacja

Zdecydowałem, że następny karmnik dla kota powinien:

  • być zbudowany z części wydrukowanych w 3D,
  • używać Raspberry Pi 3,
  • mieć małą kamerę, aby obserwować, jak kot reaguje i co robi zwierzę.

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

Części

Po upewnieniu się, że wszystko działa, przystąpiłem do projektowania i drukowania pozostałych części:

Baza dla RaspberryPi (poziom 0)

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.

Uchwyt miski

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.

Uchwyt serwomechanizmu (poziom 1)

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.

Pojemnik mechanizmu racji żywnościowej (poziom 2)

Jest to prosty poziom, który porcjuje żywność z pojemnika umieszczonego powyżej. Jest on obracany przez serwomechanizm.

Uchwyt na pojemnik na żywność (poziom 3)

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.

Obudowa i pokrywa

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.

Wszystkie części

Montaż końcowy

Oprogramowanie

Raspberry Pi działa pod kontrolą systemu Raspbian udostępnionego przy użyciu aplikacji ansible playbook aby uruchomić te usługi:

MotionEye

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.

Serwis serwomechanizmó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.

Prowadzona usługa

Podobnie jak usługa servo, implementuje ona protokół dla źródła światła kontrolowanego przez MQTT w HomeAssistant.

Automatyzacja asystenta domowego

I wreszcie automatyzacja HomeAssistant, która uruchamia karmienie.

Uruchamia on wydawanie żywności w dwóch sytuacjach:

  • gdy w kalendarzu pojawi się czas karmienia,
  • kiedy Międzynarodowa Stacja Kosmiczna znajduje się nad moim domem.

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

Podsumowanie

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

Powiązane artykuły

The Codest

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...

The Codest
Greg Polec CEO
The Codest

Historia sukcesu The Codest: Poznaj naszą Izę Finance Lead

W tej serii artykułów dzielimy się historiami członków zespołu The Codest, którzy mieli wpływ na obecny kształt naszej firmy. W poniższym artykule pytamy...

The Codest
Monika Krupa Marketing Lead
The Codest

Historia sukcesu The Codest: Poznaj Łukasza Brzeszcza

Tym razem gwiazdą The Codest Success Story jest Łukasz Brzeszcz, nasz programista Ruby. Jak zaczęła się przygoda Łukasza z The Codest i co pomogło mu...

The Codest
Monika Krupa Marketing Lead
The Codest

Wykorzystanie podejścia MVP do udanego rebrandingu The Codest

Jakiś czas temu chwaliliśmy się nowym otwarciem dla The Codest. Przeprowadziliśmy intensywny proces rebrandingu i kilka dni temu zaprezentowaliśmy go światu. To...

The Codest
Jakub Czosnyka Marketing Lead
The Codest

TheCodestReview #2 - cotygodniowy sok z inżynierii oprogramowania

Witam serdecznie w 2. odcinku naszej serii TheCodesReview. W tym tygodniu skupiliśmy się na jakości w projektach inżynierii oprogramowania, znaczeniu architektury frontendowej i przejściu...

The Codest
Kamil Ferens Dyrektor ds. rozwoju

Subskrybuj naszą bazę wiedzy i bądź na bieżąco!

    O nas

    The Codest - Międzynarodowa firma programistyczna z centrami technologicznymi w Polsce.

    Wielka Brytania - siedziba główna

    • Office 303B, 182-184 High Street North E6 2JA
      Londyn, Anglia

    Polska - lokalne centra technologiczne

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polska

      The Codest

    • Strona główna
    • O nas
    • Nasze Usługi
    • Case Studies
    • Nasze Know How
    • Kariera
    • Słownik

      Nasze Usługi

    • Konsultacje IT
    • Software Development
    • Backend Development
    • Frontend Development
    • Zespoły IT
    • Backend Dev
    • Inżynierowie rozwiązań chmurowych
    • Inżynierowie danych
    • Inne
    • Inżynierowie QA

      Raporty

    • Fakty i mity na temat współpracy z zewnętrznym partnerem programistycznym
    • Z USA do Europy: Dlaczego amerykańskie startupy decydują się na relokację do Europy?
    • Porównanie centrów rozwoju Tech Offshore: Tech Offshore Europa (Polska), ASEAN (Filipiny), Eurazja (Turcja)
    • Jakie są największe wyzwania CTO i CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Warunki korzystania z witryny

    Copyright © 2025 by The Codest. Wszelkie prawa zastrzeżone.

    pl_PLPolish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek pl_PLPolish