Inhoudsopgave:

Voermachine voor huisdieren met RasPi en Telegram Bot - Ajarnpa
Voermachine voor huisdieren met RasPi en Telegram Bot - Ajarnpa

Video: Voermachine voor huisdieren met RasPi en Telegram Bot - Ajarnpa

Video: Voermachine voor huisdieren met RasPi en Telegram Bot - Ajarnpa
Video: PetSafe® Smart Feed Automatische voerbak voor huisdieren voor katten en honden - NL 2024, Juli-
Anonim
Voerautomaat voor huisdieren met RasPi en Telegram Bot
Voerautomaat voor huisdieren met RasPi en Telegram Bot
Voerautomaat voor huisdieren met RasPi en Telegram Bot
Voerautomaat voor huisdieren met RasPi en Telegram Bot

Allereerst moet ik verduidelijken dat dit geen originele Idea Mine is, gewoon de programmeerscripts bijwerken en aanpassen om met telegram te werken, ik vond het in een eerdere Instructable, dus de credits zijn er echt de auteur van.

Je zou de Spaanse versie hiervan kunnen zien in mijn persoonlijke Blog:

Je moet een klein circuit bouwen dat een motor met hoog koppel activeert, en aangezien mijn kennis van elektronica erg schaars is, moest ik een paar dagen besteden aan het leren van de basis door video's op YouTube te bekijken.

Het originele automatiseringsscript is geschreven in Python en gebruikt een GMail-verbinding om de commando's te raadplegen, ik had deze programmeertaal nog nooit gebruikt, maar de waarheid is niet zo anders dan de anderen, ik heb het een beetje aangepast zodat het beter aanpast aan de nieuwe Met Python-bibliotheken en het automatiseringsproces kunt u samen met de configuraties van het besturingssysteem het volgende parametriseren:

  • Interactie door middel van opdrachten die via ChatBots naar Chat worden gestuurd.
  • Hiermee kunt u de status van het verstrekte voedsel volgen.
  • Regelt hoeveel voedsel er wordt verstrekt.
  • Het heeft knoppen waarmee u handmatig kunt voeden.
  • Het staat overvoeding niet toe door het voeren met tussenpozen van 8 uur uit te schakelen.
  • Het heeft een status-LCD dat de gegevens toont als de datum en tijd van de volgende keer voor de volgende stroomvoorziening, de SSID waarmee het is verbonden met de WiFi en het IP-adres van het apparaat.
  • Optioneel: toont enkele Chuck Norris Random Jokes en/of Trivia of Numbers met behulp van een paar openbare APIS (Ingenious van de oorspronkelijke auteur).
  • Het systeem is immuun voor herstarten als gevolg van stroomuitval omdat het een statusbestand opslaat.
  • Het systeem detecteert wanneer er een verbindingsverlies is en probeert opnieuw verbinding te maken totdat dit is gelukt.

Stap 1: Gebruikte materialen

  • 1 Raperry Pi, bij voorkeur de versie 3 die al met de Wireless-kaart is geïntegreerd, je kunt ook de Pi 3 Zero-versie gebruiken, het kost wat meer werk omdat je de pinnen moet solderen, maar ik kwam er heel laat achter dat het zou kunnen gebruik een van deze die zuiniger zijn.
  • 1 elektrische motor met hoog koppel, 37 mm, 3,5 tpm en 12V.
  • 1 rem voor 37 mm motor.
  • LCD-scherm met 1 karakter van 20x4 lijnen met HD44780-besturing.
  • 1 Cereal Dispenser Zevro Model WM1001 schacht-D van 5 inch lang, 0,63 cm in diameter (D-snede is nodig om deze aan de dispenser te bevestigen)
  • 1 askoppeling van 1/4 "tot 6 mm om de motor aan te sluiten.

Alle vorige materialen, behalve de laatste twee, ik kon ze niet in mijn land krijgen (of ik wist tenminste niet waar ik ze kon krijgen), maar de staaf en de koppeling zijn waarschijnlijk in een laswerkplaats, maar het is de eerste keer dat ik iets doe zo had ik geen idee hoe het in de motor moest passen, dus ik vroeg de pagina met de hierboven beschreven links; Hieronder de materialen die ik in lokale winkels kon kopen:

  • 1 houten kist, ik gebruik een 20,3 cm breed x 26,7 cm hoog x 13 cm diep. de doos heeft een deur die naar rechts opent met een gat van 10 cm x 4 cm om het LCD-scherm te plaatsen (plaatselijk schrijnwerk)
  • 3 drukknoppen
  • 1 klein prototypebord
  • 1 LED van 3,3 Volt (het maakt niet uit de kleur maar voor de spanning zijn ze meestal rood)
  • 1 NPN PN2222-transistor
  • 1 Weerstand van 270
  • 1 Weerstand van 10 KΩ
  • 1 Potentiometer van 10 KΩ
  • 1 IN4003-diode (IN4001 of IN4004 kan werken)
  • 1 12V 3A-adapter
  • 1 5V 2A-adapter
  • 4 schroeven met vleugelmoer van 1,5 inch tot 2 inch (afhankelijk van de dikte van het gebruikte hout, ze zijn bedoeld om de motorbeugel aan de houten kist te bevestigen)
  • Kabels Jumper strengen van verschillende kleuren
  • 1 vouwbuis of een set PVC van 4 Inch Diameter, dit is afhankelijk van de hoogte waarop de houten kist komt te staan.
  • 1 PVC-elleboog die aan het vorige gips wordt bevestigd.
  • 3 klemmen voor autoleidingen (The World)
  • 4 voet UTP-kabel (we hebben de getwiste paren nodig om de verbindingen te maken)
  • 1 USB WebCam, het is niet nodig om een hoge resolutie te hebben.

Enkele diverse materialen die verkrijgbaar zijn in bouwmarkten of die we mogelijk al hebben:Industrial Tape

  • Tin lasser
  • Blik
  • Oefening
  • Boor 5/16
  • S8 schroeven met expanders

Stap 2: De structuur plaatsen

De structuur plaatsen
De structuur plaatsen
De structuur plaatsen
De structuur plaatsen
De structuur plaatsen
De structuur plaatsen

Het belangrijkste idee is om de doseerhendel die in de ZEVRO wordt geleverd te vervangen door de stang D die vervolgens door middel van de koppeling met de motor wordt verbonden. De dispenser wordt aan de houten kist bevestigd en de houten kist aan de muur. Omdat ik niet veel elektronica ken, heb ik geen bakelieten plaat gebruikt om het circuit te monteren, dus ik heb het breadboard gebruikt om alle componenten te plaatsen, dus aan de onderkant van de doos is de Rapberry Pi en het breadboard met schroeven vastgemaakt die al een lijm hadden op de achterkant, dus ik ging het gewoon plakken. De doos moet drie knoppen hebben die de functie hebben van Herstart de timer, activeer de feeder en de laatste zal een directe stap zijn om de motor te activeren zonder door het circuit te gaan. De motor wordt door middel van de beugel in de doos gehouden, dus alleen de stang D die op de dispenser is aangesloten, steekt uit de doos, in de bodem van de doos fixeer en verstel de webcam zodat ik bij elke mailconsult en bevestiging ik een foto gestuurd van hoe het bord is, dit om niet te veel te voeren voor het geval ze de laatste ronde voer niet op hebben.

Vanaf de onderkant van de dispenser werd de buis geplaatst die naar de plaat gaat en de PVC-elleboog werd op de basis geplaatst, ik plaatste een beetje Industrial Tape in de uitlaat om de snelheid van de voedselstroom te minimaliseren en maakte een dispenserbasis voor voorkomen dat voedsel overal sproeit. Om de buis aan de muur te bevestigen, gebruikt u metalen beugels die u aan de muur bevestigt met de S8-bouten.

Op de deur van de doos houdt u de plaat van het LCD-scherm vast en gebruikt u de getwiste paren van de UTP-kabel om ze rechtstreeks naar de Raspberry te brengen, aan het andere uiteinde van de kabels splitst u de vrouwelijke uiteinden van de jumpers om de aansluiting te vergemakkelijken de GPIO-poorten van de Raspberry. Dit zou het schakelschema zijn. Ik zal proberen het uit te leggen met het weinige dat ik van elektronica kan krijgen.

De motor is rechtstreeks aangesloten op de positieve pool van de 12 volt transformator, maar om de stroom te laten vloeien, moet deze door het circuit in de neutrale pool van de motor gaan, want deze transistor N2222 wordt gebruikt. De transistors hebben normaal gesproken 3 poten die overeenkomen met een collector, een basis en een emitter, afhankelijk van het model van de transistor kan de locatie van deze poten variëren; Deze transistor laat de schakelaar functioneren. Hier verbinden we de neutrale pool van de motor met de collector van de transistor, pin # 19 van de rapberry is verbonden met de basis door middel van een weerstand van 270Ω en de emitter wordt verbonden met de neutrale terminal van de transistor. 12V transformator samen met een van de aardpolen van de framboos; de transistor laat de stroom tussen collector en emitter vloeien zolang de basis met voldoende spanning wordt gestimuleerd; later zullen we de rapberry zo programmeren dat volgens bepaalde orders poort 19 3,3 volt zal afgeven, genoeg om het circuit verder te laten gaan en de motor te activeren.

Voor het LCD-scherm wordt een ander deel van de protobard gebruikt in een ander circuit waar u de 10KΩ-potentiometer aansluit die het contrast van de tekst op het LCD-scherm verwerpt, dus als er niets op het scherm verschijnt, komt dit waarschijnlijk omdat de potentiometer volledig is gesloten; in mijn geval laat ik het helemaal open zodat de tekst beter gevisualiseerd wordt. Uiteindelijk zouden de aansluitingen in het breadboard als volgt zijn.

Stap 3: Raspberry Pi-configuratie

Allereerst is het belangrijk om de Telegram Bot te maken die het systeem zal beheren. U hebt een sleutel nodig om het bijgevoegde python-script te wijzigen. Lees de stappen op de telegramdocumentatie:

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

Om de rapberry te configureren, gebruikt u de Lite-versie van de Rapbian (we hebben de grafische interface niet nodig) en past u de basisconfiguratie toe die de raspbian toont zodra deze is geïnstalleerd of met behulp van de opdracht raspi-config: breid de ruimte uit tot 100% en schakel de SSH, maar vooral het belangrijkste is om het wachtwoord en de gebruikersnaam te wijzigen in de gebruiker pi die standaard wordt geleverd (anders, zoals mij is overkomen, kunnen ze een aanval krijgen via poort 22 als ze een openbaar IP hebben geadresseerd aan de framboos). Afgezien daarvan is de configuratie om automatisch verbinding te maken met mijn WiFi-netwerk (ervan uitgaande dat mijn netwerk "BlogSoriano" heet en mijn wachtwoord "$ecure123!") We genereren en bewaren de sleutel in het bestand met draadloze verbindingen met de volgende opdracht:

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

het volgende is om het python-installatiesysteem "pip" bij te werken en te installeren, zodat we inloggen als root, de benodigde pakketten bijwerken en installeren:

sudo -i apt-get update apt-get install build-essentiële python-dev python-smbus python-pip

Hiermee hebben we al toegang tot de python-klassebibliotheek, voor het script dat we gaan gebruiken, moeten we het volgende installeren:

pip install RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces draadloze telepot cv2

Zodra de installatie van afhankelijkheden is voltooid, gebruiken we het script dat aan deze stap is gekoppeld, ik sla het op in het pad /opt/petfeeder.py en het bestand kan worden gemaakt met de opdracht nano /opt/petfeeder.py en in dit bestand we plakken de code of, als je meer Linux-ervaring hebt, kun je direct downloaden met wget. In het script is het belangrijk om de variabelen BOTKEY (in regel 36) en SYSPASSWORD (in regel 23) aan te passen.

Ik verduidelijk dat deze code niet door mij is geschreven, omdat ik nooit in Python had geprogrammeerd, ik heb hem alleen aangepast om te werken met de nieuwe bibliotheken en met het 20x4 LCD-scherm en om telegram Bot te gebruiken.

Zodra we het script hebben, moeten we de waarden van de variabelen wijzigen met de sleutel voor de bot; hiervoor is het nodig om een nieuwe Telegram Bot te maken, daarmee zou het alleen het bestand opslaan en afsluiten (met Ctrl + of opslaan en ctrl + x verlaat de editor nano), we hoeven alleen maar het bewijs te zijn van opnieuw opstarten; het script zelf slaat de laatste keer dat het voedingssysteem is geactiveerd, op, dus we hoeven het script alleen maar te laten uitvoeren elke keer dat het besturingssysteem start, hiervoor heb ik een heel specifieke oplossing gevonden met een programma genaamd supervisor, dat is geïnstalleerd vanuit de Debian-repositories:

apt-get install supervisor

en eenmaal geïnstalleerd, hoeven we alleen een configuratiebestand te maken in /etc/supervisor/conf.d/petfeeder.conf, zoals in het vorige geval dat we het kunnen maken en opslaan met nano, dit bestand heeft het volgende:

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

Zodra het bestand is opgeslagen, kunnen we het commando supervisorctl [start | stop | reboot] petfeederd, omdat de service in dit geval niet is gestart, voeren we deze uit met start:

supervisorctl start petfeederd

Stap 4: Klaar om te testen

Image
Image
Klaar om te testen
Klaar om te testen
Klaar om te testen
Klaar om te testen
Klaar om te testen
Klaar om te testen

En hiermee zou het systeem moeten werken, het LCD-scherm moet informatie weergeven over wanneer het de volgende voeding moet zijn of dat het klaar is om te voeren, zou ik zeggen. Je moet ook de naam tonen van het draadloze netwerk waarmee je bent verbonden en het IP-adres dat wordt gebruikt voor het geval we verbinding moeten maken via SSH, ik deel een kleine video die ik heb gemaakt, mijn excuses voor de kwaliteit ervan, ik ben niet erg goed is dit onderwerp van de vlogs.

U zou in staat moeten zijn om uw bot op Telegram te doorzoeken en een van de volgende opdrachten te verzenden nadat u / uw chat hebt geautoriseerd:

/feed: start het voerproces zolang de geparametreerde tijdsperiode is verstreken.

/wanneer: het geeft informatie over wanneer de laatste voeding was en een foto van het voedselbord.

/photo: Retourneer een foto van het bord met eten.

/restart: Start het systeem opnieuw, zet de variabele van de laatste voeding op 0 om direct te kunnen voeren.

/status Geeft informatie over de status van de internetverbinding: SSID van de verbonden Wireless en het IP-adres dat het systeem binnen het netwerk heeft.

Aanbevolen: