Inhaltsverzeichnis:

Tierfutterautomat mit RasPi und Telegram Bot - Gunook
Tierfutterautomat mit RasPi und Telegram Bot - Gunook

Video: Tierfutterautomat mit RasPi und Telegram Bot - Gunook

Video: Tierfutterautomat mit RasPi und Telegram Bot - Gunook
Video: Neuer Wildfutterautomat für Tierparks, Wildparks und Streichelzoos - WiFu 2.0 V135 und V75 2024, Juli
Anonim
Futterautomat für Haustiere mit RasPi und Telegram Bot
Futterautomat für Haustiere mit RasPi und Telegram Bot
Futterautomat für Haustiere mit RasPi und Telegram Bot
Futterautomat für Haustiere mit RasPi und Telegram Bot

Zuallererst muss ich klarstellen, dass dies keine ursprüngliche Idea Mine ist, sondern nur die Programmierskripte aktualisieren und anpassen, um mit Telegrammen zu arbeiten. Ich habe es in einem früheren Instructable gefunden, damit die Credits wirklich der Autor davon sind.

Sie können die spanische Version davon in meinem persönlichen Blog sehen:

Sie müssen eine kleine Schaltung bauen, die einen Motor mit hohem Drehmoment aktiviert, und da mein Wissen über Elektronik sehr, sehr knapp ist, musste ich ein paar Tage damit verbringen, die Grundlagen zu lernen, indem ich Videos auf YouTube anschaute.

Das ursprüngliche Automatisierungsskript ist in Python geschrieben und verwendet eine GMail-Verbindung, um die Befehle abzufragen. Ich hatte diese Programmiersprache noch nie verwendet, aber die Wahrheit unterscheidet sich nicht so stark von den anderen, ich habe es ein wenig modifiziert, damit es sich besser an die neue anpasst one Python-Bibliotheken und dem Automatisierungsprozess zusammen mit den Betriebssystemkonfigurationen können Sie Folgendes parametrieren:

  • Interaktion durch Befehle, die an Chat gesendet werden, die über ChatBots gesteuert werden.
  • Es ermöglicht, den Status der ausgegebenen Lebensmittel zu verfolgen.
  • Steuert, wie viel Essen ausgegeben wird.
  • Es verfügt über Tasten, mit denen Sie manuell füttern können.
  • Es erlaubt keine Überfütterung, indem es die Fütterung in 8-Stunden-Intervallen deaktiviert.
  • Es verfügt über ein Status-LCD, das die Daten als Datum und Uhrzeit der nächsten Zeit für die nächste Stromversorgung, die SSID, mit der es mit dem WLAN verbunden ist, und die IP-Adresse des Geräts anzeigt.
  • Optional: Zeigt einige zufällige Witze von Chuck Norris und / oder Trivia of Numbers mit einem Paar öffentlicher APIS (Ingenious vom ursprünglichen Autor).
  • Das System ist immun gegen Neustarts aufgrund von Stromausfällen, da es eine Statusdatei speichert.
  • Das System erkennt einen Verbindungsverlust und versucht, die Verbindung erneut herzustellen, bis dies erfolgreich ist.

Schritt 1: Verwendete Materialien

  • 1 Raperry Pi, vorzugsweise die Version 3, die bereits in der Wireless-Karte integriert ist, Sie können auch die Version Pi 3 Zero verwenden, es dauert etwas mehr Arbeit, da Sie die Pins verlöten müssen, aber ich habe sehr spät herausgefunden, dass es möglich ist Verwenden Sie eines davon, das kostengünstiger ist.
  • 1 Elektromotor mit hohem Drehmoment, 37 mm, 3,5 U/min und 12 V.
  • 1 Bremse für 37mm Motor.
  • 1-stelliger LCD-Bildschirm mit 20x4 Zeilen mit HD44780-Steuerung.
  • 1 Getreidespender Zevro Modell WM1001 Schaft-D 5 Zoll lang, 0,63 cm Durchmesser (D-Schnitt ist erforderlich, um ihn am Spender zu befestigen)
  • 1 Wellenkupplung von 1/4" bis 6mm zum Verbinden mit dem Motor.

Alle vorherigen Materialien außer den letzten beiden konnte ich in meinem Land nicht bekommen (oder wusste zumindest nicht wo ich sie bekommen sollte), aber die Stange und die Kupplung sind wahrscheinlich in einer Schweißwerkstatt, aber da mache ich zum ersten Mal etwas So hatte ich keine Ahnung, wie es sein sollte, den Motor zu montieren, also fragte ich die Seite der oben beschriebenen Links; Nachfolgend die Materialien, die ich in lokalen Geschäften kaufen konnte:

  • 1 Holzkiste, ich verwende eine 20,3 cm breite × 26,7 cm hoch x 13 cm tief. Die Box hat eine nach rechts öffnende Tür mit einem Loch von 10 x 4 cm, um den LCD-Bildschirm zu platzieren (lokale Tischlerei)
  • 3 Drucktasten
  • 1 kleines Protoboard
  • 1 LED von 3,3 Volt (Die Farbe spielt keine Rolle, aber für die Spannung sind sie normalerweise Rot)
  • 1 NPN PN2222-Transistor
  • 1 Widerstand von 270 Ω
  • 1 Widerstand von 10 KΩ
  • 1 Potentiometer von 10 KΩ
  • 1 Diode IN4003 (IN4001 oder IN4004 können arbeiten)
  • 1 12V 3A-Adapter
  • 1 5V 2A-Adapter
  • 4 Schrauben mit Flügelmutter von 1,5 Zoll bis 2 Zoll (abhängig von der Dicke des verwendeten Holzes, dienen zur Befestigung der Motorhalterung an der Holzkiste)
  • Kabel Jumper-Stränge in verschiedenen Farben
  • 1 Faltrohr oder ein Satz PVC mit 4 Zoll Durchmesser, dies hängt von der Höhe ab, in der die Holzkiste platziert wird.
  • 1 PVC-Ellbogen, der am vorherigen Gipsverband befestigt wird.
  • 3 Schellen für Autorohre (The World)
  • 4 Fuß UTP-Kabel (wir benötigen die verdrillten Paare, um die Verbindungen herzustellen)
  • 1 USB-WebCam, eine hohe Auflösung ist nicht erforderlich.

Einige verschiedene Materialien, die in Baumärkten erhältlich sind oder möglicherweise bereits bei uns vorhanden sind: Industrieklebeband

  • Zinnschweißer
  • Zinn
  • Bohren
  • Bohren Sie 5/16
  • S8 Schrauben mit Expandern

Schritt 2: Platzieren der Struktur

Platzieren der Struktur
Platzieren der Struktur
Platzieren der Struktur
Platzieren der Struktur
Platzieren der Struktur
Platzieren der Struktur

Die Hauptidee besteht darin, den im ZEVRO enthaltenen Ausgabegriff durch die Stange D zu ersetzen, die dann über den Koppler mit dem Motor verbunden wird. Der Spender wird an der Holzkiste und die Holzkiste an der Wand befestigt. Da ich nicht viel Elektronik kenne, habe ich keine Bakelitplatte verwendet, um die Schaltung zu montieren, also habe ich das Steckbrett verwendet, um alle Komponenten zu platzieren auf der Rückseite, also habe ich es einfach eingefügt. Die Box muss über drei Tasten verfügen, die die Funktion haben, den Timer neu zu starten, den Feeder zu aktivieren und die letzte ist ein direkter Schritt zum Aktivieren des Motors, ohne den Stromkreis zu durchlaufen. Der Motor wird mit Hilfe der Halterung in der Box gehalten, so dass nur die Stange D, die mit dem Spender verbunden ist, aus der Box herausragt, im Boden der Box befestigen und die Webcam so einstellen, dass bei jeder Mail-Rückfrage und -Bestätigung I schickte ein Foto, wie der Teller ist, um nicht zu viel zu füttern, falls sie die letzte Runde des Essens nicht beendet haben.

Von der Unterseite des Spenders wurde das Rohr, das bis zum Teller hinuntergeht, platziert und der PVC-Winkel wurde auf den Boden gelegt, ich legte ein wenig Industrieklebeband in den Auslass, um die Geschwindigkeit des Essensflusses zu minimieren und machte einen Spenderboden für Verhindern Sie, dass Lebensmittel überall sprühen. Um das Rohr an der Wand zu befestigen, verwenden Sie Metallhalterungen, die Sie mit den S8-Stehschrauben an der Wand befestigen.

An der Tür der Box halten Sie die Platte des LCD-Bildschirms und verwenden Sie die verdrillten Paare des UTP-Kabels, um sie direkt zum Raspberry zu führen die GPIO-Ports des Raspberry. Das wäre der Schaltplan. Ich werde versuchen, es mit dem Wenigen zu erklären, was ich von Electronics bekommen kann.

Der Motor ist direkt mit dem Pluspol des 12-Volt-Transformators verbunden, aber damit der Strom fließen kann, muss er durch den Stromkreis im Neutralpol des Motors fließen, dafür wird der Transistor N2222 verwendet. Die Transistoren haben normalerweise 3 Beine, die einem Kollektor, einer Basis und einem Emitter entsprechen, je nach Modell des Transistors kann die Position dieser Beine variieren; Dieser Transistor macht die Schalterfunktion. Hier verbinden wir den Neutralpol des Motors mit dem Kollektor des Transistors, Pin # 19 der Rapberry ist über einen Widerstand von 270Ω mit der Basis verbunden und der Emitter ist mit dem Neutralanschluss des Transistors verbunden. 12V Transformator zusammen mit einem der Erdungspole der Himbeere; der Transistor lässt den Strom zwischen Kollektor und Emitter fließen, solange die Basis mit ausreichender Spannung stimuliert wird; Später werden wir den Rapberry so programmieren, dass Port 19 gemäß bestimmten Befehlen 3,3 Volt aussendet, genug für die Schaltung, um fortzufahren und den Motor zu aktivieren.

Für den LCD-Bildschirm wird ein anderer Teil der Protobarde in einer anderen Schaltung verwendet, in der Sie das 10KΩ-Potentiometer anschließen, das den Kontrast des auf dem LCD angezeigten Textes unterdrückt. Wenn also nichts auf dem Bildschirm erscheint, liegt es wahrscheinlich daran, dass das Potentiometer vollständig ist abgeschlossen; in meinem Fall lasse ich es komplett offen, damit der Text besser visualisiert wird. Am Ende wären die Verbindungen im Steckbrett wie folgt.

Schritt 3: Raspberry Pi-Konfiguration

Zunächst ist es wichtig, den Telegram Bot zu erstellen, mit dem das System verwaltet wird. Sie benötigen einen Schlüssel, um das angehängte Python-Skript zu ändern. Bitte lesen Sie die Schritte in der Telegrammdokumentation:

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

Um den Rapberry zu konfigurieren, verwenden Sie die Lite-Version von Rapbian (wir benötigen die grafische Oberfläche nicht) und wenden Sie die Grundkonfiguration an, die das Raspbian nach der Installation anzeigt, oder verwenden Sie den Befehl raspi-config: Erweitern Sie den Speicherplatz auf 100% und aktivieren Sie das SSH, aber vor allem das Wichtigste ist, das Passwort und den Benutzernamen auf den standardmäßigen Benutzer pi zu ändern (sonst können sie, wie bei mir passiert, einen Angriff über Port 22 erleiden, wenn sie eine öffentliche IP haben, die an die Himbeere gerichtet ist). Abgesehen davon die Konfiguration, um sich automatisch mit meinem WiFi-Netzwerk zu verbinden (vorausgesetzt mein Netzwerk heißt "BlogSoriano" und mein Passwort ist "$ecure123!") Wir generieren und speichern den Schlüssel in der Drahtlosverbindungsdatei mit dem folgenden Befehl:

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

Als nächstes müssen wir das Python-Installationssystem "pip" aktualisieren und installieren, damit wir uns als Root anmelden, die erforderlichen Pakete aktualisieren und installieren:

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

Damit haben wir bereits Zugriff auf die Python-Klassenbibliothek, für das Skript, das wir verwenden werden, müssen wir Folgendes installieren:

pip install RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces drahtloser Telepot cv2

Sobald die Installation der Abhängigkeiten abgeschlossen ist, verwenden wir das an diesen Schritt angehängte Skript, ich speichere es im Pfad /opt/petfeeder.py und die Datei kann mit dem Befehl nano /opt/petfeeder.py und in dieser Datei erstellt werden Wir fügen den Code ein oder, wenn Sie mehr Linux-Erfahrung haben, können Sie ihn direkt mit wget herunterladen. Im Skript ist es wichtig, die Variablen BOTKEY (in Zeile 36) und SYSPASSWORD (in Zeile 23) zu ändern.

Ich stelle klar, dass dieser Code nicht von mir geschrieben wurde, da ich nie in Python programmiert hatte, ich habe ihn nur modifiziert, um mit den neuen Bibliotheken und mit dem 20x4-LCD-Bildschirm zu arbeiten und den Telegramm-Bot zu verwenden.

Sobald wir das Skript haben, müssen wir die Werte der Variablen mit dem Schlüssel für den Bot ändern; dazu ist es notwendig, einen neuen Telegram Bot zu erstellen, mit dem nur die Datei gespeichert und beendet werden muss (mit Strg + oder Speichern und Strg + x verlässt der Editor Nano), wir müssen nur den Neustart beweisen; das Skript selbst speichert die letzte Aktivierung des Energiesystems, also müssen wir das Skript nur bei jedem Start des Betriebssystems ausführen, dafür habe ich eine ganz besondere Lösung mit einem Programm namens Supervisor gefunden, das aus den Debian-Repositories installiert wird:

apt-get install Supervisor

und nach der Installation müssen wir nur eine Konfigurationsdatei in /etc/supervisor/conf.d/petfeeder.conf erstellen, da wir sie im vorherigen Fall mit nano erstellen und speichern können. Diese Datei enthält Folgendes:

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

Sobald die Datei gespeichert ist, können wir den Befehl Supervisorctl [start | halt | restart] petfeederd, da in diesem Fall der Dienst nicht gestartet wurde, führen wir ihn mit start aus:

Supervisorctl start petfeederd

Schritt 4: Bereit zum Testen

Image
Image
Bereit zum Testen
Bereit zum Testen
Bereit zum Testen
Bereit zum Testen
Bereit zum Testen
Bereit zum Testen

Und damit sollte das System funktionieren, der LCD-Bildschirm sollte Informationen darüber anzeigen, wann es die nächste Fütterung sein sollte oder ob sie fütterungsbereit ist, sollte ich dies sagen. Sie müssen auch den Namen des drahtlosen Netzwerks, mit dem Sie verbunden sind, und die verwendete IP-Adresse angeben, falls wir eine Verbindung über SSH herstellen müssen. Ich teile ein kleines Video, das ich gemacht habe. Ich entschuldige mich für die Qualität bin nicht sehr gut zu diesem thema der vlogs.

Sie sollten in der Lage sein, Ihren Bot in Telegram zu durchsuchen und einen der nächsten Befehle zu senden, nachdem Sie Ihren Chat /autorisieren:

/feed: Startet den Fütterungsvorgang, solange die parametrierte Zeitspanne abgelaufen ist.

/wann: Gibt Informationen darüber, wann die letzte Fütterung stattgefunden hat, und ein Bild des Futtertellers zurück.

/photo: Geben Sie ein Bild des Essenstellers zurück.

/restart: Starten Sie das System neu, setzen Sie die Variable des letzten Feeds auf 0, um sofort füttern zu können.

/status Zeigt den Status der Internetverbindung an: SSID des verbundenen Wireless und die IP-Adresse, die das System innerhalb des Netzwerks hat.

Empfohlen: