Innehållsförteckning:

Pet Feedermaskin med RasPi och Telegram Bot: 4 steg (med bilder)
Pet Feedermaskin med RasPi och Telegram Bot: 4 steg (med bilder)

Video: Pet Feedermaskin med RasPi och Telegram Bot: 4 steg (med bilder)

Video: Pet Feedermaskin med RasPi och Telegram Bot: 4 steg (med bilder)
Video: Дневник хранящий жуткие тайны. Переход. Джеральд Даррелл. Мистика. Ужасы 2024, Juli
Anonim
Husdjursmatningsmaskin med RasPi och Telegram Bot
Husdjursmatningsmaskin med RasPi och Telegram Bot
Husdjursmatningsmaskin med RasPi och Telegram Bot
Husdjursmatningsmaskin med RasPi och Telegram Bot

Först och främst måste jag förtydliga att detta inte är en original Idea Mine, bara uppdatera och anpassa programmeringsskripten för att fungera med telegram, jag hittade det i en tidigare Instructable så krediterna är verkligen författaren till det.

Du kan se den spanska versionen av detta i min personliga blogg:

Du måste bygga en liten krets som aktiverar en motor med högt vridmoment, och eftersom min kunskap om elektronik är väldigt, väldigt knapp, fick jag ägna ett par dagar åt att lära mig grunderna genom att titta på videor på YouTube.

Det ursprungliga automatiseringsskriptet är skrivet i Python och använder en GMail -anslutning för att konsultera kommandona, jag hade aldrig använt detta programmeringsspråk men sanningen är inte så annorlunda än de andra, jag har modifierat det lite så att det anpassar sig bättre till det nya med Python -biblioteken och automatiseringsprocessen tillsammans med operativsystemets konfigurationer kan du parametrisera följande:

  • Interaktion genom kommandon som skickas till Chat som styrs via ChatBots.
  • Det gör det möjligt att spåra statusen för den utmatade maten.
  • Kontrollerar hur mycket mat som ska delas ut.
  • Den har knappar som låter dig mata manuellt.
  • Det tillåter inte övermatning genom att inaktivera matningen med 8 timmars mellanrum.
  • Den har en status -LCD som visar data som datum och tid för nästa gång för nästa strömförsörjning, SSID som den är ansluten till WiFi och enhetens IP -adress.
  • Valfritt: Visar några Chuck Norris Random Jokes och / eller Trivia of Numbers med ett par offentliga APIS (genial av originalförfattaren).
  • Systemet är immun mot omstart på grund av strömavbrott eftersom det sparar en statusfil.
  • Systemet upptäcker när det uppstår en anslutningsförlust och försöker återansluta tills det lyckas.

Steg 1: Använda material

  • 1 Raperry Pi, helst version 3 som redan är integrerad med det trådlösa kortet, du kan också använda Pi 3 Zero -versionen, det tar lite mer arbete eftersom du måste löda stiften, men jag fick reda på väldigt sent att det kunde använd en av dessa som är mer ekonomiska.
  • 1 elmotor med högt vridmoment, 37 mm, 3,5 varv / min och 12 V.
  • 1 brake för 37 mm motor.
  • 1 tecken LCD -skärm på 20 x 4 rader med HD44780 -kontroll.
  • 1 spannmålsdispenser Zevro modell WM1001 axel-D på 5 tum lång, 0,63 cm i diameter (D-snitt är nödvändigt för att fästa den på dispensern)
  • 1 axelkopplare från 1/4 "till 6 mm för att ansluta motorn.

Allt tidigare material förutom de två sista kunde jag inte få dem i mitt land (eller åtminstone visste jag inte var jag skulle få dem), men stången och kopplingen är förmodligen i en svetsverkstad men det är första gången jag gör något som det, jag hade ingen aning om hur det skulle vara att passa motorn så jag frågade sidan med länkarna som beskrivs ovan; Nedanför materialet som jag kunde köpa i lokala butiker:

  • 1 trälåda, jag använder en 20,3 cm bred × 26,7 cm hög x 13 cm djup. lådan har en dörr som öppnas till höger med ett hål på 10 cm x 4 cm för att placera LCD -skärmen (lokal snickeri)
  • 3 tryckknappar
  • 1 Litet Protoboard
  • 1 lysdiod på 3,3 volt (det spelar ingen roll färg men för spänningen är de vanligtvis röda)
  • 1 NPN PN2222 transistor
  • 1 Motstånd på 270 Ω
  • 1 Motstånd på 10 KΩ
  • 1 Potentiometer på 10 KΩ
  • 1 IN4003 -diod (IN4001 eller IN4004 kan fungera)
  • 1 12V 3A adapter
  • 1 5V 2A adapter
  • 4 skruvar med vingmutter från 1,5 tum till 2 tum (beror på tjockleken på träet som används, de ska fixera motorfästet till trälådan)
  • Kablar Tröjor i olika färger
  • 1 vikrör eller en uppsättning PVC med 4 tum diameter, detta beror på höjden på vilken trälådan kommer att placeras.
  • 1 PVC -armbåge som fästs vid den tidigare gjutningen.
  • 3 klämmor för bilrör (världen)
  • 4 fot UTP -kabel (vi behöver de tvinnade paren för att göra anslutningarna)
  • 1 USB WebCam, det är inte nödvändigt att ha hög upplösning.

Några diverse material som kan erhållas i järnaffärer eller möjligen har vi redan: Industriband

  • Tennsvetsare
  • Tenn
  • Borra
  • Borr 5/16
  • S8 skruvar med expanderare

Steg 2: Placera strukturen

Placera strukturen
Placera strukturen
Placera strukturen
Placera strukturen
Placera strukturen
Placera strukturen

Huvudidén är att byta ut doseringshandtaget som kommer i ZEVRO med stången D som sedan kommer att anslutas till motorn med hjälp av kopplingen. Dispensern fästs på trälådan och trälådan på väggen. Eftersom jag inte kan mycket elektronik använde jag inte någon bakelitplatta för att montera kretsen så jag använde brödbrädan för att sätta alla komponenter så att botten av lådan fästs med skruvar Rapberry Pi och brödbrädan som redan hade ett lim på baksidan så jag bara klistrade in den. Lådan måste ha tre knappar som har funktionen att starta om timern, aktivera mataren och den sista kommer att vara ett direkt steg för att aktivera motorn utan att gå igenom kretsen. Motorn kommer att hållas inuti lådan med hjälp av fästet, så att bara stången D som ansluter till dispensern kommer att sticka ut ur lådan, i botten av lådan fixa och justera webbkameran så att vid varje e -postkonsultation och bekräftelse I skickade ett foto av hur är tallriken, detta för att inte överfodra om de inte har avslutat den sista omgången mat.

Från botten av dispensern placerades röret som går ner till tallriken och PVC -armbågen placerades på basen, jag placerade lite industritape i utloppet för att minimera matflödets hastighet och gjorde en doseringsbas för förhindra att mat sprutar överallt. För att fästa röret på väggen, använd metallfästen som du fäster på väggen med S8 -skruvarna.

På lådans dörr håller du plattan på LCD -skärmen och använder de tvinnade paren på UTP -kabeln för att ta dem direkt till Hallon, i andra änden av kablarna skarvar de kvinnliga spetsarna på hopparna för att underlätta anslutningen i GPIO -portarna på hallon. Detta skulle vara kretsschemat. Jag ska försöka förklara det med det lilla jag kan få av elektronik.

Motorn är ansluten direkt till den positiva polen på 12 volts transformatorn men för att strömmen ska strömma måste den passera genom kretsen i motorns neutralpol, för denna transistor används N2222. Transistorerna har normalt 3 ben som motsvarar en kollektor, en bas och en emitter, beroende på transistorns modell kan platsen för dessa ben variera; Denna transistor gör att omkopplaren fungerar. Det är här vi ansluter motorns neutralpol till transistorns kollektor, stift nr 19 på rapberry är anslutet till basen med ett motstånd på 270Ω och sändaren är ansluten till transistorns neutrala terminal. 12V transformator tillsammans med en av jordpålarna på hallon; transistorn kommer att låta strömmen flöda mellan kollektor och emitter så länge basen stimuleras med tillräcklig spänning; senare kommer vi att programmera rapberry så att port 19 kommer att avge 3,3 volt enligt vissa order, tillräckligt för att kretsen ska kunna fortsätta och aktivera motorn.

För LCD -skärmen används en annan del av protobarden i en annan krets där du ansluter 10KΩ potentiometern som avvisar kontrasten i texten som visas på LCD -skärmen, så om ingenting visas på skärmen är det förmodligen för att potentiometern är helt stängd; i mitt fall lämnar jag den helt öppen så att texten blir bättre visualiserad. I slutändan skulle anslutningarna i panelen vara följande.

Steg 3: Raspberry Pi -konfiguration

Först och främst är det viktigt att skapa Telegram Bot att systemet kommer att hanteras. Du behöver en nyckel för att ändra det bifogade python -skriptet. Läs stegen i telegramdokumentationen:

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

För att konfigurera rapberry, använd Lite-versionen av Rapbian (vi behöver inte det grafiska gränssnittet) och tillämpa den grundläggande konfigurationen som visar raspbian när den är installerad eller använd kommandot raspi-config: expandera utrymmet till 100% och aktivera SSH men särskilt det viktigaste är att ändra lösenordet och användarnamnet till användaren pi som kommer som standard (Annars, som hände mig, kan de drabbas av en attack från port 22 om de har en offentlig IP adresserad till hallon). Bortsett från det konfigurationen för att ansluta automatiskt till mitt WiFi -nätverk (förutsatt att mitt nätverk heter "BlogSoriano" och mitt lösenord är "$ ecure123!") Vi genererar och sparar nyckeln i filen för trådlösa anslutningar med följande kommando:

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

nästa sak är att uppdatera och installera python -installationssystemet "pip" så att vi loggar in som root, uppdaterar och installerar nödvändiga paket:

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

Med detta har vi redan tillgång till python -klassbiblioteket, för skriptet som vi ska använda måste vi installera följande:

pip installera RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces trådlös telepot cv2

När installationen av beroenden är klar kommer vi att använda skriptet som bifogas detta steg, jag sparar det i sökvägen /opt/petfeeder.py och filen kan skapas med kommandot nano /opt/petfeeder.py och inuti denna fil vi klistrar in koden eller, om du har mer Linux -erfarenhet, kan du ladda ner direkt med wget. I skriptet är det viktigt att ändra variablerna BOTKEY (på rad 36) och SYSPASSORD (på rad 23).

Jag förtydligar att denna kod inte skrevs av mig eftersom jag aldrig hade programmerat i Python, jag ändrade den bara för att fungera med de nya biblioteken och med 20x4 LCD -skärmen och för att använda telegram Bot.

När vi har skriptet måste vi ändra värdena på variablerna med nyckeln för botten; för detta är det nödvändigt att skapa en ny Telegram Bot, med det skulle det bara vara att spara filen och avsluta (med Ctrl + eller spara och ctrl + x lämnar redigeraren nano), vi behöver bara vara ett bevis på omstart; själva skriptet sparar sista gången kraftsystemet aktiveras, så vi behöver bara göra skriptet att köra varje gång operativsystemet startar, för detta hittade jag en mycket speciell lösning med ett program som heter supervisor, som installeras från Debians förråd:

apt-get install supervisor

och när den väl är installerad behöver vi bara skapa en konfigurationsfil i /etc/supervisor/conf.d/petfeeder.conf, eftersom vi i det tidigare fallet kan skapa och spara den med nano, den här filen kommer att ha följande:

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

När filen är sparad kan vi använda kommandot supervisorctl [start | stopp | restart] petfeederd, eftersom tjänsten i detta fall inte har startats, kör vi den med start:

supervisorctl start petfeederd

Steg 4: Klar att testa

Image
Image
Redo att testa
Redo att testa
Redo att testa
Redo att testa
Redo att testa
Redo att testa

Och med detta bör systemet fungera, LCD -skärmen ska visa information om när det ska vara nästa flöde eller om det är klart att mata om jag skulle säga det. Du måste också visa namnet på det trådlösa nätverk som du är ansluten till och IP -adressen som används om vi behöver ansluta via SSH, jag delar en liten video som jag gjorde, jag ber om ursäkt för kvaliteten på den, jag är inte särskilt bra är detta ämne för vloggarna.

Du bör kunna söka i din bot på Telegram och skicka ett av nästa kommando efter att du /auktoriserat din chatt:

/feed: Startar matningsprocessen så länge den parametrerade tidsperioden har gått.

/när: den returnerar information om när den senaste utfodringen var och en bild av matbordet.

/foto: Returnera en bild på maträtten.

/starta om: Starta om systemet, ställ in variabeln för senaste flödet till 0 för att kunna mata omedelbart.

/status Det informerar om Internetanslutningens status: SSID för den anslutna trådlösa och IP -adressen som systemet har i nätverket.

Rekommenderad: