Spisu treści:

Maszyna do karmienia zwierząt domowych z RasPi i Telegram Bot: 4 kroki (ze zdjęciami)
Maszyna do karmienia zwierząt domowych z RasPi i Telegram Bot: 4 kroki (ze zdjęciami)

Wideo: Maszyna do karmienia zwierząt domowych z RasPi i Telegram Bot: 4 kroki (ze zdjęciami)

Wideo: Maszyna do karmienia zwierząt domowych z RasPi i Telegram Bot: 4 kroki (ze zdjęciami)
Wideo: Automatic Pet Feeder- CSM MEGN200 2024, Listopad
Anonim
Maszyna do karmienia zwierząt z RasPi i Telegram Bot
Maszyna do karmienia zwierząt z RasPi i Telegram Bot
Maszyna do karmienia zwierząt z RasPi i Telegram Bot
Maszyna do karmienia zwierząt z RasPi i Telegram Bot

Przede wszystkim muszę wyjaśnić, że nie jest to oryginalna kopalnia pomysłów, po prostu zaktualizuj i dostosuj skrypty programistyczne do pracy z telegramem, znalazłem to w poprzednim Instructable, więc napisy naprawdę są autorem tego.

Możesz zobaczyć hiszpańską wersję tego na moim osobistym blogu:

Musisz zbudować mały obwód, który aktywuje silnik o wysokim momencie obrotowym, a ponieważ moja wiedza na temat elektroniki jest bardzo, bardzo ograniczona, musiałem spędzić kilka dni, ucząc się podstaw, oglądając filmy na YouTube.

Oryginalny skrypt automatyzacji jest napisany w Pythonie i używa połączenia GMail do sprawdzania poleceń, nigdy nie używałem tego języka programowania, ale prawda nie różni się tak bardzo od innych, trochę go zmodyfikowałem, aby lepiej dostosowywał się do nowego Biblioteki Pythona i proces automatyzacji wraz z konfiguracjami systemu operacyjnego pozwalają na parametryzację:

  • Interakcja za pomocą poleceń wysyłanych do Chat kontrolowanego przez ChatBots.
  • Pozwala śledzić status wydawanej żywności.
  • Kontroluje, ile żywności zostanie wydane.
  • Posiada przyciski umożliwiające ręczne karmienie.
  • Nie pozwala na przekarmianie poprzez wyłączenie karmienia w odstępach 8-godzinnych.
  • Posiada statusowy wyświetlacz LCD, który pokazuje dane jako datę i godzinę następnego razu dla kolejnego zasilania, identyfikator SSID do którego jest podłączony do WiFi oraz adres IP urządzenia.
  • Opcjonalnie: pokazuje kilka losowych żartów Chucka Norrisa i/lub ciekawostek liczbowych przy użyciu pary publicznych interfejsów API (Ingenious według oryginalnego autora).
  • System jest odporny na ponowne uruchomienie z powodu przerw w zasilaniu, ponieważ zapisuje plik stanu.
  • System wykrywa utratę połączenia i próbuje połączyć się ponownie, dopóki się nie powiedzie.

Krok 1: Używane materiały

  • 1 Raperry Pi, najlepiej wersja 3 która jest już zintegrowana z kartą Wireless, można też zastosować wersję Pi 3 Zero, zajmuje to trochę więcej pracy bo trzeba wlutować piny, ale bardzo późno dowiedziałem się, że może użyj jednego z tych, które są bardziej ekonomiczne.
  • 1 silnik elektryczny o wysokim momencie obrotowym, 37 mm, 3,5 obr./min i 12 V.
  • 1 hamulec do silnika 37mm.
  • 1-znakowy ekran LCD o wymiarach 20x4 linii ze sterowaniem HD44780.
  • 1 dozownik płatków zbożowych Zevro Model WM1001 wał-D o długości 5 cali, średnicy 0,63 cm (wycięcie D jest konieczne do przymocowania go do dozownika)
  • 1 Łącznik wału od 1/4 "do 6 mm do połączenia z silnikiem.

Wszystkich poprzednich materiałów poza dwoma ostatnimi nie udało mi się dostać w moim kraju (a przynajmniej nie wiedziałem gdzie je zdobyć), jednak pręt i złączka są chyba w warsztacie spawalniczym ale jako pierwszy coś robię w ten sposób nie miałem pojęcia, jak powinien być dopasowany silnik, więc zapytałem stronę z linkami opisanymi powyżej; Poniżej materiały, które mogłem kupić w lokalnych sklepach:

  • 1 drewniane pudełko, używam 20,3 cm szerokości × 26,7 cm wysokości x 13 cm głębokości. skrzynka posiada otwierane w prawo drzwiczki z otworem 10cm x 4cm do umieszczenia ekranu LCD (lokalna stolarka)
  • 3 przyciski
  • 1 mała płyta prototypowa
  • 1 dioda LED 3,3 V (nie ma znaczenia kolor, ale dla napięcia zwykle są czerwone)
  • 1 tranzystor NPN PN2222
  • 1 Rezystancja 270 Ω
  • 1 Rezystancja 10 KΩ
  • 1 potencjometr 10 KΩ
  • 1 dioda IN4003 (może działać IN4001 lub IN4004)
  • 1 adapter 12 V 3A
  • 1 adapter 5V 2A
  • 4 śruby z nakrętką motylkową od 1,5 cala do 2 cali (w zależności od grubości użytego drewna służą do mocowania wspornika silnika do drewnianej skrzyni)
  • Kable zworki w różnych kolorach
  • 1 składana rura lub zestaw PVC o średnicy 4 cali, zależy to od wysokości, na której zostanie umieszczone drewniane pudełko.
  • 1 kolanko z PVC, które mocuje się do poprzedniego odlewu.
  • 3 obejmy do rur samochodowych (Świat)
  • 4 stopy kabla UTP (do wykonania połączeń potrzebne są skrętki)
  • 1 kamera internetowa USB, nie musi być wysokiej rozdzielczości.

Niektóre różne materiały, które można nabyć w sklepach ze sprzętem lub być może już mamy: Taśma przemysłowa

  • Spawacz cyny
  • Cyna
  • Wiertarka
  • Wiertarka 5/16
  • Śruby S8 z ekspanderami

Krok 2: Umieszczenie struktury

Umieszczanie konstrukcji
Umieszczanie konstrukcji
Umieszczanie konstrukcji
Umieszczanie konstrukcji
Umieszczanie konstrukcji
Umieszczanie konstrukcji

Główną ideą jest zastąpienie uchwytu dozującego, który znajduje się w ZEVRO, prętem D, który następnie zostanie połączony z silnikiem za pomocą łącznika. Dozownik zostanie przymocowany do drewnianej skrzynki, a skrzynka drewniana do ściany. Ponieważ nie znam się na elektronice do montażu układu nie użyłem żadnej płytki bakelitowej więc wykorzystałem płytkę stykową do ułożenia wszystkich elementów więc na dole pudełka przykręcono śrubami Rapberry Pi i płytkę stykową która miała już klej z tyłu, więc po prostu poszedłem go wkleić. Skrzynka musi mieć trzy przyciski, które będą miały funkcję Restart timera, aktywację podajnika a ostatni będzie bezpośrednim krokiem do uruchomienia silnika bez przechodzenia przez obwód. Silnik będzie utrzymywany wewnątrz pudełka za pomocą wspornika, dzięki czemu tylko pręt D, który łączy się z dozownikiem będzie wystawał z pudełka, w dolnej części pudełka zamocuj i wyreguluj kamerkę tak, aby przy każdej konsultacjach mailowych i potwierdzeniu ja wysłałem zdjęcie jak jest talerz, żeby się nie przekarmić w przypadku, gdy nie skończyli ostatniej rundy jedzenia.

Od spodu dozownika położono rurkę schodzącą do talerza oraz kolano PCV na podstawie, umieściłem małą taśmę Industrial Tape w wylocie, aby zminimalizować prędkość przepływu żywności i wykonałem podstawę dozującą dla zapobiegaj rozpryskiwaniu się żywności wszędzie. Aby przymocować rurę do ściany, użyj metalowych wsporników, które mocujesz do ściany za pomocą śrub dwustronnych S8.

Na drzwiczkach puszki przytrzymaj płytkę ekranu LCD i za pomocą skręconych par kabla UTP doprowadź je bezpośrednio do Raspberry, na drugim końcu kabli połącz żeńskie końcówki zworek, aby ułatwić połączenie w porty GPIO Raspberry. To byłby schemat obwodu. Postaram się to wytłumaczyć tym, jak niewiele mogę uzyskać od Elektroniki.

Silnik jest podłączony bezpośrednio do dodatniego bieguna transformatora 12 V, ale aby prąd mógł płynąć, musi on przejść przez obwód w biegunie neutralnym silnika, ponieważ jest używany ten tranzystor N2222. Tranzystory mają zwykle 3 nóżki, które odpowiadają kolektorowi, podstawie i emiterowi, w zależności od modelu tranzystora położenie tych nóżek może się różnić; Ten tranzystor pełni funkcję przełącznika. To tutaj podłączamy biegun neutralny silnika do kolektora tranzystora, pin nr 19 rapberry łączymy z bazą za pomocą rezystancji 270Ω a emiter łączymy z neutralnym zaciskiem tranzystora. Transformator 12V wraz z jednym z biegunów maliny; tranzystor pozwoli na przepływ prądu między kolektorem a emiterem, o ile baza jest stymulowana wystarczającym napięciem; później zaprogramujemy rapberry tak, aby zgodnie z pewnymi rozkazami port 19 emitował 3,3 wolta, co wystarczy do kontynuowania obwodu i uruchomienia silnika.

Do ekranu LCD druga część protobarda jest używana w innym obwodzie gdzie podłączasz potencjometr 10KΩ który odrzuca kontrast tekstu który pojawia się na LCD więc jeśli nic nie pojawia się na ekranie to prawdopodobnie dlatego że potencjometr jest totalnie Zamknięte; w moim przypadku zostawiam to całkowicie otwarte, aby tekst był lepiej zwizualizowany. W końcu połączenia w płytce stykowej wyglądałyby następująco.

Krok 3: Konfiguracja Raspberry Pi

Przede wszystkim ważne jest, aby utworzyć Telegram Bot, który będzie zarządzany systemem. Będziesz potrzebować klucza do modyfikacji załączonego skryptu Pythona. Proszę przeczytać kroki w dokumentacji telegramu:

core.telegram.org/bots#3-how-do-i-create-a-bot

Aby skonfigurować rapberry, użyj wersji Lite Rapbiana (nie potrzebujemy interfejsu graficznego) i zastosuj podstawową konfigurację, która pokazuje raspbian po jego zainstalowaniu lub za pomocą polecenia raspi-config: rozszerz przestrzeń do 100% i włącz SSH, ale szczególnie najważniejszą rzeczą jest zmiana hasła i nazwy użytkownika na użytkownika pi, który przychodzi domyślnie (w przeciwnym razie, jak to się stało, mogą zostać zaatakowane przez port 22, jeśli mają publiczny adres IP zaadresowany do maliny). Poza tym konfiguracja automatycznego łączenia się z moją siecią Wi-Fi (zakładając, że moja sieć nazywa się „BlogSoriano” a moje hasło to „$ecure123!”) Generujemy i zapisujemy klucz w pliku połączeń bezprzewodowych za pomocą następującego polecenia:

sudo wpa_passphrase "BlogSoriano" "$ecure123!" | koszulka sudo -a /etc/wpa_supplicant/wpa_supplicant.conf > /dev/null

następną rzeczą jest aktualizacja i zainstalowanie systemu instalacyjnego Pythona „pip”, dzięki czemu będziemy logować się jako root, aktualizować i instalować niezbędne pakiety:

sudo -i apt-get update apt-get install build-essential python-dev python-smbus python-pip

Dzięki temu mamy już dostęp do biblioteki klas Pythona, dla skryptu, którego będziemy używać, musimy zainstalować:

pip zainstaluj RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces bezprzewodowy telepot cv2

Po zakończeniu instalacji zależności użyjemy skryptu dołączonego do tego kroku, zapiszę go w ścieżce /opt/petfeeder.py i plik można utworzyć za pomocą polecenia nano /opt/petfeeder.py i wewnątrz tego pliku wklejamy kod lub, jeśli masz większe doświadczenie w Linuksie, możesz pobrać bezpośrednio za pomocą wget. W skrypcie ważne jest zmodyfikowanie zmiennych BOTKEY (w linii 36) i SYSPASSWORD (w linii 23).

Wyjaśniam, że ten kod nie został napisany przeze mnie, ponieważ nigdy nie programowałem w Pythonie, zmodyfikowałem go tylko do pracy z nowymi bibliotekami i ekranem LCD 20x4 oraz do obsługi telegramu Bot.

Kiedy już mamy Skrypt, musimy zmienić wartości zmiennych za pomocą klucza dla bota; w tym celu konieczne jest utworzenie nowego Telegram Bot, dzięki czemu będzie tylko zapisanie pliku i wyjście (za pomocą Ctrl + lub save i ctrl + x opuszcza edytor nano), musimy tylko być dowodem na ponowne uruchomienie; sam skrypt zapisuje ostatnią aktywację systemu zasilania, więc musimy tylko uruchamiać skrypt przy każdym uruchomieniu systemu operacyjnego, do tego znalazłem bardzo szczególne rozwiązanie z programem o nazwie superwizor, który jest instalowany z repozytoriów Debiana:

nadzorca instalacji apt-get

a po zainstalowaniu musimy tylko utworzyć plik konfiguracyjny w /etc/supervisor/conf.d/petfeeder.conf, tak jak w poprzednim przypadku możemy go utworzyć i zapisać za pomocą nano, ten plik będzie miał następujące wartości:

[program:petfeederd]katalog=/opt command=python petfeeder.py autostart=true autorestart=true

Po zapisaniu pliku możemy użyć polecenia superwizorctl [start | przestań | restart] petfeederd, ponieważ w tym przypadku usługa nie została uruchomiona, uruchamiamy ją startem:

przełożony ctl start petfeederd

Krok 4: Gotowy do testu

Image
Image
Gotowy do testu
Gotowy do testu
Gotowy do testu
Gotowy do testu
Gotowy do testu
Gotowy do testu

I przy tym system powinien działać, ekran LCD powinien pokazywać informacje o tym, kiedy powinien być następny kanał lub czy jest gotowy do karmienia, powinienem tak powiedzieć. Musisz również pokazać nazwę sieci bezprzewodowej do której jesteś podłączony i adres IP, który jest używany na wypadek, gdybyśmy musieli połączyć się przez SSH, udostępniam mały film, który zrobiłem, przepraszam za jakość, ja nie jestem zbyt dobry, to temat vlogów.

Powinieneś być w stanie przeszukać swojego bota w Telegramie i wysłać jedno z następnych poleceń po / autoryzacji czatu:

/feed: Rozpoczyna proces karmienia po upływie sparametryzowanego okresu czasu.

/kiedy: zwraca informację o tym, kiedy było ostatnie karmienie oraz zdjęcie talerza z jedzeniem.

/photo: Zwróć zdjęcie talerza z jedzeniem.

/restart: Zrestartuj system, ustaw zmienną ostatniego kanału na 0, aby móc natychmiast karmić.

/status Informuje o stanie połączenia internetowego: SSID podłączonej sieci bezprzewodowej oraz adresie IP, który system posiada w sieci.

Zalecana: