Interaktive (Tier-)Überwachung (IoT) Interactive Monitoring
Hardware/Elektronik Komponentenliste - 3D-Modelle zum Drucken - Flussdiagram und Bilder - Firmware Wemos und RPi
Steuerung des Kamera Gliders und Webcam Live Stream von 10:00h-17:00h aktiv:
Kurzbeschreibung und Eigenschaften - Abstract and features
Internet of Things (IoT) Projekt, bei dem ein Respbarry Pi mit Kamera und Wemos D1 mit CNC Shield zur Steuerung und Überwachung von Haustieren (Nager, Fische) genutzt wird.
Aktueller ngrok Tunnel:
Bilder und Videos:
Überblick über die Hardware und Informationsfluß |
Aufbau Wemos D1 und Firmware:
Auf dem Wemos D1 befindet sich die folgende Firmware HTTPSRequestReleased.ino, die mit der Arduino IDE aufgespielt werden kann.
Dazu muss für den ESP8266 auf dem Wemos Board in der IDE unter "Eigenschaften" die folgende Board URL eingebunden werden:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
In der Firmware muss die folgende Code-Zeile mit den WiFi Daten befüllt werden, damit sich das Board mit dem eurem lokalen WiFi-Netzwerk verbinden kann:
#define STASSID "WiFiName" //Hier Wifi Namen Eintragen
#define STAPSK "WifiPasswort" //Hier WiFi Passwort eintragen
Und das ist die Pinbelegung am CNCv3 Shield mit den Mikroschritt Eistellung und die Verbundung zum Endstop auf der X-Achse:
//Pinbelegung am Wemos und Mikroschritte Einstellung DRV8825
#define DirXPin D5 // X-Treiber am CNCv3 -> Kamera Schlitten 1/32 Mikroschritte
#define StepXPin D2 // X-Treiber am CNCv3 -> Kamera Schlitten 1/32 Mikroschritte
#define DirYPin D6 // Y-Treiber am CNCv3 -> Futterautomat 1/16 Mikroschritte
#define StepYPin D3 // Y-Treiber am CNCv3 -> Futterautomat 1/16 Mikroschritte
#define EndstopPin D7 // Z- Endstop am CNCv3, leider kein Pull-Up verbaut, 3.3V und GND ebenfalls verbinden
Webseiten Einbindung und SQL-Datenbank:
Über die folgenden PHP-Dateien und eine SQL-Datenband wird zwischen Respbarry-Pi, WemosD1 und der Webseite Daten über GET-Requests ausgetauscht.
Hier ist der Download aller notwendigen PHP-Dateien.
Für den Zugriff auf die SQL-Datenbank müssen die Zugriffsdaten in den PHP-Dateien angepasst werden:
$servername = "***";
$dBUsername = "***";
$dBPassword = "***";
$dBName = "***";
In der SQL Datenbank befinden sich die Austauschdaten im folgenden Format mit den Spalten "Id", "Data" und "String":
Id: 1 Data: 0: Nicht bewegen, 1: Rechts, 2: Links
Id: 2 Data: aktuell nicht genutzt
Id: 3 Data: Futteranzahl, max 2
Id: 4 Data: 0: nichts, 1: Min-Endstop triggered, 2: Max-Endstop triggered
Id: 5 String: Forward URL ngrok, Web-Kamera
Id: 6 Data: aktueller X-Weg
Software und Skript auf dem Respbarry Pi:
Auf dem Respbarry Pi wurden die Pakete "motion" und "ngrok" installiert. Motion ist eine Software, die mit einer Wabcam einen Stream ins lokale Netzwerk senden kann.
sudo apt-get install motion
Unter /etc/motion/motion.conf kann motion über SSH konfiguriert werden und dann unter der lokalen IP-Adresse des Respbarry Pi im Browser das aktuell gestreamte Bild angeschaut werden, falls motion gestartet wird:
sudo nano /etc/motion/motion.conf
sudo motion start
http://192.168.2.120:8081/ -> Lokaler Stream der Webcam, Beispiel
http://192.168.2.120:8080/ -> Hier kann der Stream ebenfalls konfiguriert werden, wenn webcontrol_parms=3 in motion.conf gesetzt ist
Meine angepasste Config-Datei befindet sich hier.
Es empfiehlt sich die Samplezeit für den Stream anzupassen: stream_maxrate=10.
Will man nur einen Lokalen Stream im Heimnetzwerk erzeugen, dann kann dieser Stream über die lokale Respbarry Pi-Adresse angeschaut werden.
Will man zusätzlich einen Stream ins Internet, dann muss man eine Portweiterleitung mit dynamischer IP-Adresse im Router einrichten oder nutzt Ngrok auf dem Pi.
Ngrok:
Ngrok ist ein Program auf dem Respbarry Pi, der einen Stream Tunnel ins Internet generieren kann. Dieser Tunnel muss alle 2 Stunden neu aufgebaut werden.
Dazu nutze ich ein Shell-Skript, dass ich beim Hochfahren des Respbarry-Pi starte (Autostart-Datei) und im Hintergrund laufen lasse: ngrok_hostname.sh.
Hier der Link und ein Youtube Video als Anleitung zur Insallation von Ngrok auf dem Respbarry Pi:
https://ngrok.com/download
https://youtu.be/wA4X60BsBps
Und so wird die Autostart-Datei angebunden:
cd /etc/init.d
sudo nano MeinAutostart
sudo chmod 755 MeinAutostart
sudo update-rc.d MeinAutostart defaults // Anhängen beim Start
//Falls es Probleme gibt zum Testen:
sudo update-rc.d MeinAutostart remove // wieder rausnehmen
sudo update-rc.d MeinAutostart start // Datei testen
Komponentenliste Hardware und Elektronik:
Beschreibung/Description | Anzahl/Pcs | Hinweis/Hint | Link zum Händler/Dealer |
---|---|---|---|
V-Slot Aluprofile | 1 2 1 1 |
1000mm 2020: als X-Achse 140mm 2040, 5er Loch bei 10mm 150mm 2020: Kamera-Hacken 320mm 2020: Kamera-Hacken, 5er Loch bei 25mm |
Passend zugeschnitten im |
Linsenkopf-Schrauben, Innensechskant (Sicherungs-)muttern |
10 3 1 1 5 |
M5 x 8mm M5 x 25mm M5 x 10mm, Webcam M5 x 70mm, Futterautomat Muttern M5, Futterautomat |
|
Nutsteine | 10 | M5, 6er Nut |
|
Unterlegscheiben | 10 | 5,5/15mm Durchmesser für die Montage Holzplatte und Endstop | |
Umlenkrollen für die X, Y-Achse | 1 | Aus Aluminium, D_innen: 10mm, 5mm Bohrung |
|
GT2 Pulley für Nema17 | 1 | 5mm Bohrung, 20 Zähne |
|
GT-2 Riemen | 1 | 2200mm Länge, 6mm breit |
|
V-Slot Platten, groß und klein | 1 | kleine Platte |
|
Nema 17 Halterplatten | 2 | Aluminium, 3mm Stärke |
|
Koppler für den Futterautomat | 1 | 5mm auf 5mm für den Futterautomat | |
Plexiglas Röhre für Futterautomat | 1 | 90mm D-Außen, 84mm D-Innen, 150mm Lang | |
Wemos D1 Board und CNC Shield V3 | 1 | mit 6 Jumpern zum Einstellen der Mikroschritte |
|
Schrittmotor Treiber DRV8825 | 2 | mit Kühlkörper |
|
Endstop auf Platine | 1 | Einzustellen auf 16 und 32 Mikroschritte |
|
Nema 17 Schrittmotoren | 2 | 1x Pancake für den Futterautomat, 20mm 1x 4200gcm Drehmoment, 39mm |
|
Netzteil 12V, 5A | 1 | Mit 5,5mm x 2,1mm Hochstecker. | Netzteil 12V, 5A |
Respbarry Pi Board | 1 | Board 3 oder 4 (WLAN-Fähig) als Bundle mit Netzteil. |
Respbarry Pi |
Logitech Webcam | 1 | C270 HD bei Amazon. | Logitech C270 |
Analoge/Digitale Zeitschaltuhr | 1 | Um den Stream zeitlich zu beschränken. In der Nacht kann die Webcam nichts aufzeichnen. |
Zeitschaltuhr |
3D gedruckte Teile:
Anzahl/STL/Bauteil | Abbildung | Anzahl/STL/Bauteil | Abbildung |
---|---|---|---|
2 Stk. AbstandshalterM5_10mm | 1 Stk. EndstopHalter für die X-Achse | ||
1 Stk. Futterautomat_Kammerplatten | 1 Stk. Futterautomat_Nema17_Halter, Y-Achse | ||
1 Stk. Futterautomat_Steg | 1 Stk. Futterautomat_Trichter | ||
1 Stk. Nema17_Halter_XAchse | 1 Stk. Umlenkrolle | ||
1 Stk. WemosD1_Holder |