Control Center (Deutsch)

Aus www.wiki.ardumower.de
Wechseln zu: Navigation, Suche

Ardumower Control Center

Auf den Ardumower lässt sich auf verschiedene Arten zugreifen, etwa per serieller Konsole oder mit der Arduremote App (Bluetooth, WLAN). Mit dem Ardumower Control Center kommt eine weitere Zugriffsmöglichkeit, nämlich der Browser, hinzu.

Das Control Center kann mit einem beliebigen Browser aufgerufen werden und bietet eine grafische Oberfläche, auf der Sensordaten des Mowers sowie ein Live-Kamerabild (sofern eine Kamera eingebaut ist) angezeigt werden. Das Control Center wird auf einem Raspberry PI ausgeführt, der in dem Mower eingebaut wird. Die folgende Seite beschreibt alle notwendigen Schritte, um das Control Center einzurichten.

Voraussetzungen

Hardware

  • Raspberry PI
  • Netzteil für PI
  • microSD Karte (8GB oder mehr)
  • Netzwerkkabel
  • Kartenleser für PC

Software

  • SSH Client (Putty)
  • SFTP Client zum Datenaustausch (WinscP)
  • Win32DiskImager

Raspberry PI einrichten

SD Karte vorbereiten

Raspberry Strech Lite bzw. letzte Lite Version von raspberrypi.org herunterladen

Raspian Image.png


Nach dem herunterladen das Image entpacken und mittels Win32DiskImager auf die Karte schreiben. Dabei werden alle Daten auf der SD Karte überschrieben. Wird die Karte nicht als Datenträger erkannt, muss sie ggf. vorher formatiert werden.

Win32DiskImager.png


Standardmäßig ist SSH an den Raspberry Images deaktiviert. Den Dienst benötigen wir aber um auf den PI zugreifen zu können. Da wir weder Bildschirm noch Tastatus anschließen wollen oder müssen, kann dies über einen simplen Trick erreicht werden.

Auf der SD Karte wurde eine Partition mit dem Name "boot" erstellt. Diese kann in Windows geöffnet werden. Um SSH zu aktivieren genügt es, eine leere Datei mit dem Namen ssh (ohne Dateiendung) hier zu erstellen.

Boot partition.png

Windows wird meist eine Textdatei erstellen. Wir haben also eine Datei mit ssh.txt erstellt. Es muss aber eine Datei mit dem Namen ssh, ohne Dateiendung sein

Ssh.txt.png

Dazu muss man in Windows einstellen, dass bekannte Dateinamen nicht ausgeblendet werden sollen. Dazu im Windows Explorer die Ordner- und Suchoptionen öffnen. Unter Windows 10 befinden sich diese im Reiter "Ansicht" unter "Optionen"

Hier deaktivieren wir den Haken bei "Erweiterungen bekannter Dateitypen ausblenden"

Dateitypen.png

Die Datei wird nun als ssh.txt angezeigt und lässt sich umbenennen.

Ssh.txt 1.png

Beim Umbenennen kann die Dateierweiterung ".txt" gelöscht werden.

Ssh.png


Jetzt die Karte auswerfen und in den Raspberry einsetzen. Diesen nun mit Strom versorgen und das Netzwerkkabel einstecken. Für die weitere Einrichtung wird nun eine SSH Verbindung zum Raspberry benötigt. Dies geschieht mit einem SSH Client, etwa Putty. Damit man sich mit dem PI verbinden kann, muss dieser zunächst ins Netzwerk eingebunden werden. Da noch keine WLAN Verbindung besteh, muss dies zunächst über ein Netzwerkkabel erfolgen.

Der PI sollte nun vom Heimnetz eine IP Adresse erhalten. Meist geschieht dies durch den DHCP-Server, der auf dem DSL Router ausgeführt wird. Die vergebene IP Adresse kann am Router ausgelesen werden.

Es empfiehlt sich, im Router bzw. DHCP Server einzustellen, dass der Raspberry immer die gleiche IP Adresse erhält.

Systemkonfiguration

Für die Verbindung zum PI den SSH Client (Putty) öffnen und die IP Adresse eingeben

Putty1.png

Die Warnung bestätigen wir mit "Ja"

Putty2.png

Der PI erwartet nun von uns eine Anmeldung. Die initiale Anmeldung erfolgt mit dem Benutzer pi und dem Kennwort raspberry

Raspberry change password.png

Glückwunsch, die erste Hürde ist damit genommen

Raspberry console.png

Als erstes sollte man das Kennwort ändern. Dies und weitere Einstellungen kann man komfortabel mit dem Programm raspi-config erledigen. In der Konsole rufen wir das Programm mit dem Kommando

sudo raspi-config

auf. Durch den Zusatz sudo teilen wir dem PI mit, dass wir als root (Administrator) aufrufen möchten. Ggf. fragt uns der PI nun nach dem root Kennwort. Dies ist wieder raspberry (solange wir es nicht geändert haben)

Raspi config1.png

Mit dem ersten Menüpunkt ändern wir das Kennwort

Raspi config.png

WLAN einrichten

Wo wir schon mal hier sind, können wir auch gleich das WLAN einrichten. Dies geschieht mit dem zweiten Menüpunkt "Network Options"

Raspi config wlan1.png

und da wählen wir Wi-fi.

Als nächstes fragt der PI nach dem Gebietsschema

Raspi config wlan2.png

anschließend nach der SSID und der Passphrase (Kennwort) des WLANs

Raspi config wlan3.png

Nachdem die Einstellungen vorgenommen wurden, landet man wieder im Hauptmenü.

Dateisystem erweitern

Ein letzter Schritt, bevor wir das Programm verlassen. Die Partition die auf der SD Karte erstellt wurde ist deutlich kleiner als die SD Karte. Somit ist wertvoller Speicherplatz verschenkt und unerreichbar. Dies können wir beheben, indem wir das Dateisystem auf den brachliegenden Teil erweitern. Dazu im Menü "Advanced Options" aufrufen und "A1 Expand filesystem" auswählen

Raspi config expand fs1.png

Nach erfolgreicher Erweiterung kommt diese Meldung, es muss also neugestartet werden

Raspi config xpand fs2.png

Wir landen wieder auf dem Hauptmenü und verlassen raspi-config mit <Finish>. Zeit für einen Reboot, also bestätigen wir mit YES

Nach dem Neustarten sollte auf dem WLAN Router nun eine neue WLAN Verbindung erscheinen. Auch hier empfiehlt es sich, die IP Adresse festzulegen, damit nicht beim nächsten anmelden ggf. eine andere IP Adresse vergeben wird.

Systemupdate

Nachdem der PI wieder gestartet ist und wir neu angemeldet sind, wird es Zeit, einige Updates zu laden. Dazu müssen wir den Paketbaum neu aufbauen mit dem Kommando

sudo apt-get upgrade

Nun warten wir, bis alles durchgelaufen ist

Apt-get upgrade.png

Jetzt kommen die eigentlichen Updates. Dies geschieht mit dem Kommando

sudo apt-get upgrade

Wir haben ein frisches Image, somit sind kaum Updates vorhanden. Wir bestätigen die Installation mit "Y"

Apt-get update.png

und warten wieder bis er durch ist.

Node-RED installieren

Installation

Zum Installieren von Node-RED kann dieses Kommando verwendet werden

bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)

Node red install1.png Node red install2.png

Node-RED als Service einrichten

Damit Node-RED beim booten als Dienst automatisch gestartet wird, muss der Dienst eingerichtet werden

sudo systemctl enable nodered.service

Motion installieren

Motion ist ein Programm, mit dem Bewegungen auf einem Kamerabild beobachtet werden. Eigentlich dient es dazu, bei einer Bewegung auf dem Kamerabild eine Aktion auszuführen, etwa ein Bild aufzunehmen und zu versenden. Motion bietet aber auch eine einfache Möglichkeit, das Kamerabild als Livestream zur Verfügung zu stellen.

Die Installation erfolgt mit

sudo apt-get install motion

Motion konfigurieren

Nun müssen wir einige Einstellungen in Motion durchführen. Diese sind z.B. den Stream im Netzwerk zur Verfügung zu stellen, die Web-Konfiguration im Netzwerk zur Verfügung zu stellen oder die Framerate des Streams einzustellen. Außerdem deaktivieren wir die Bewegungserkennung und das Abspeichern von Bildern Gerade letzteres würde die SD Karte mit der Zeit vollschreiben.

Zur Konfiguration öffnen wir den Editor nano mot diesem Kommando

sudo nano /etc/motion/motion.conf

Als erstes Richten wir Motion als Dienst ein, dazu zu Beginn der Datei den daemon aktivieren (on)

Motion config1.png

Zudem erhöhen wir die Anzahl der Frames, die pro Sekunde aufgenommen werden.

Motion config2.png

Bild sichern deaktivieren, indem output_pictures auf off gesetzt wird

Motion config3.png

Stream Framerate einstellen. Dazu den Wert stream_maxrate auf z.B:10 erhöhen (10 Bilder pro Sekunde). Bei diesem Wert muss man etwas experimentieren, wie es am besten läuft. Hängt im wesentlichen von der Leistungsfähigkeit des PI und der Netzwerkverbindung ab. Hier aktivieren wir auch gleich den Stream im Netzwerk, indem wir stream_localhost auf off setzen. Bitte beachtet, wenn die framerate niedriger eingestellt ist als die stream_maxrate, läuft das Video nicht flüssig

Motion config5.png

Die Einstellungen von Motion lassen sich auch über ein Webinterface einstellen. Dies ist besonders zum Testen praktisch. Die Weboberfläche ist normalerweise nicht über das Netzwerk aufrufbar. Da unser PI aber ohne Bildschirm läuft, muss die Weboberfläche im Netzwerk freigegeben werden, wenn man diese nutzen möchte. Dazu den Wert webcontrol_localhost auf off setzen

Motion config6.png

Die Einstellungen sichern wir mittels STRG+x und Y

Motion config7.png

Das Kamerabild ist nach dem Start von Motion (entweder über sudo motion start oder nach Neustart) über den Port 8081 erreichbar. Die Weboberfläche zur Konfiguration über Port 8080. Angenommen, der Raspberry PI hat vom Router die IP Adresse 192.168.178.10 erhalten, kann man mit Eingabe der Adresse 192.168.178.10:8081 im Browser das Kamerabild prüfen

Damit Motion auch wirklich beim booten startet, muss eine weitere Datei angepasst werden

sudo nano /etc/default/motion

Motion config8.png

Motion wird als Benutzer "motion" ausgeführt. Das Logfile wird unter /var/log/motion/motion.log abgelegt. Der Benutzer motion hat aber keine Berechtigung, darauf zuzugreifen. Ein Start als Dienst ist damit nicht möglich.

Wir können einfach das Verzeichnis löschen mit

sudo rm -rf /var/log/motion

Beim Starten des Dienstes wird das Verzeichnis mit den korrekten Rechten erstellt. Man kann natürlich auch den Owner des Verzeichnisses anpassen oder die Gruppenrechte setzen. Ich finde es so aber einfacher

Control Center einrichten

Nun ist es fast geschafft. Jetzt ist es Zeit, das Ardumower Control Center einzurichten. Dazu nutzen wir am besten eine SFTP Client wie WinSCP. Zuvor müssen wir aber die Dateien von Github heruntergeladen habe.

Anschließend kopieren wir alle Verzeichnisse und Dateien, mit Ausnahme von dem Verzeichnis node_modules auf unser .node-red Verzeichnis unter /home/pi

WinSCP.png

Dabei überschreiben wir alle alten Dateien

Jetzt starten wir den PI einmal durch mittels sudo reboot oder sudo shutdown -r now.

Nach dem Neustart wird es Zeit, die Node-RED Entwicklungsumgebung zum ersten mal aufzurufen. Dies geschieht mit dem Browser durch den Aufruf der Adresse <ip des PI>:1880, also etwa 192.168.178.10:1880

Wir erhalten direkt eine Fehlermeldung, da einige wichtige Komponenten nicht installiert sind

Nodered1.png

Dies holen wir sogleich nach, indem wir im Menü auf "Manage Pallette" gehen

Nodered2.png

Und unter dem Reiter "Install" die Komponenten installieren

Nodered3.png

Node-red-dashboard

Nodered4.png

Sowie node-red-contrib-config

Nodered5.png


Zum Schluss noch die Erweiterung node-red-contrib-web-worldmap, um GPS Daten anzeigen zu können

Am besten starten wir danach den Raspberry einmal neu

Nun ist das Control Center über die Adresse <ip des PI>:1880/ui erreichbar, also etwa 192.168.178.10:1880/ui

Cc1.png

Glückwunsch, das Control Center ist eingerichtet.

Raspberry mit Arduino verbinden

Den Raspberry PI verbinden wir mit einem einfachen USB Kabel mit dem Arduino. Wenn ein Arduino DUE zum Einsatz kommt, verbinden wir den PI mit dem Programming Port. Die Firmware des Ardumower kann auch über den Native USB Port geflasht werden, so dass man keine USB Kabel umstecken muss.

Control Center konfigurieren

Kamera URL

Die Adresse der Kamera stellen wir im Konfiguration-Node camera_url ein. Diesen finden wir auf dem Reiter Configuration

Cameraurl1.png

Auf camera_url einen Doppelklick machen. Hier kann die Adresse hinterlegt werden.

Als Adresse muss hier die IP Adresse des PI mit dem Port 8081 eingetragen werden. Also http://<ip adresse>:8081 oder wie in Beispiel http://192.168.178.24:8081

Cameraurl2.png

Anschließend auf Done klicken. Damit die Änderung wirksam wird, müssen wir einmal auf den Button "Deploy" klicken

Nrdeploy.png

Das wars. Das Control Center ist jetzt einsatzbereit.

Anmerkungen zum Control Center

Abschließend noch ein paar Kommentare zum Control Center. Dieses besteht aus mehreren Seiten (Home, Serial Monitor, Manual etc.) welche im Menü oben linsk ausgewählt werden können.

Controlcenter menu.png


Auf Touch Geräten wie Smartphones geht es auch mit wischen. Die Verbindung zum Mower kann im Serial Monitor eingesehen werden. Hier müssten ständig neue Daten einlaufen. Bitte beachtet, dass das Control Center ein eigenes Nachrichtenformat verwendet (RMCS). Dieses muss in der Ardumower Firmware aktiviert werden. Implementiert ist das Protokoll in dem Ardumower Fork von mir (PaddyCube), ist aber hoffentlich bald auch im Master verfügbar.

Einstellen der Steuerelemente

Im Control Center werden diverse Steuerelemente, etwa Zeiger oder Charts angezeigt. Diese haben fest hinterlegte Grenzwerte, die bei eurem Mower vermutlich nicht passen. Am Beispiel der Motorleistung zeige ich noch schnell, wie diese angepasst werden können.

Control center motor1.png

Meine Mähmotoren benötigen kaum mehr als 10W. Das liegt daran, da der Mower zwei Stück hat und jeder Motor eine kleine Messerscheibe. Manchmal steigt die Leistungsaufnahme aber auf 12W, so dass die Anzeige schon am Anschlag ist, bevor das Maximum erreicht wird. Man sieht dann die Anzeige ganz rechts stehen auf 10W, der Wert in der Mitte der Anzeige zeigt aber 12W an.

Um das zu ändern rufen wir wieder die Entwicklungsumgebung von Node-RED auf (Port 1880) und wechseln in den Reiter "Ardumower Control Center". Hier werden alle eingehenden Nachrichten verarbeitet. Wir suchen nun den Abschnitt, bei dem die Nachricht RMMOT verarbeitet wird.

Control center main flow.png

Folgt man den Linien an der rechten Seite von RMMOT (das ist der Ausgang des Nodes), finden wir die drei Grafiken (left, right, mow). Durch Doppelklick auf mow können wir die Anzeige verändern. Unter Range tragen wir den gewünschten neuen Maximalwert ein

Control center motor gauge settings.png

Und klicken dann auf Done. Damit die Änderung wirksam wird, müssen wir einmal auf "Deploy" klicken. Das wars, die Anzeige geht jetzt von 0 bis 15.

Control center motor2.png

Warnung manueller Modus

Das Control Center bietet auch die Möglichkeit, den Mower manuell zu steuern. Dazu gibt es eine Art Software Joystick (das graue Feld auf der Seite "Manual"). Damit der Mower manuell bewegt werden kann, muss zuerst der Ring MANUAL auf Grün gesetzt werden (anklicken).

Der Manuelle Modus ist experimentell. Benutzt ihn nur, wenn ihr direkt beim Mower steht. Die Steuerung ist sehr ungenau, verzögert und reagiert oftmals nicht. Bitte verletzt euch nicht und sonst niemanden. Passt auf, dass der Mower nicht abhaut, auf die Straße läuft, in den Teich fällt oder was auch immer. Besonders, verwendet den Modus niemals über das Internet.

Der Mower hält nicht an, wenn der Bumper auslöst oder der Perimeter verlassen wird. Bricht die Verbindung zwischen PC uns Raspberry ab, fährt er weiter bis der Akku leer ist. Ich möchte in den Verkehrsnachrichten keine Warnung vor Mährobotern auf der Fahrbahn hören.

Ich meine das wirklich ernst, passt auf damit. Ich werde hier nachlegen und es etwas sicherer gestalten müssen Aber auch danach bleibt es gefährlich und sollte niemals über das Internet von z.B.: dem Arbeitsplatz aus genutzt werden.

Raspberry PI Kommandos

Den Raspberry PI bitte nicht einfach vom Strom trennen. Er möchte heruntergefahren werden. Dies geschieht ebenfalls über die SSH Konsole mit dem Befehl

sudo shutdown -h now

-h steht für "halt" also ausschalten, now für sofort. Ohne now plant der PI einen Job, der nach einiger Verzögerung herunterfährt.

Neustarten geht mittels

sudo shutdown -r now

Wobei -r für reboot steht.

Das Control Center verfügt auch über Buttons um den Raspberry herunterzufahren und um den Node-RED Dienst neuzustarten. Alles bedindet sich unter der Seite "System". Hier kann auch eingestellt werden, welche Events der Mower senden soll und in welchen Intervallen aktuelle Daten gesendet werden sollen (Sonar, Motor, Perimeter usw.)

Cc system menu.png

Raspberry mit PCB 1.3 verbinden

Der Raspberry PI muss natürlich noch mit Spannung versorgt werden. Das aktuelle PCB 1.3 sieht dafür zwei mögliche Anschlüsse vor, einmal RPI Main Power (P17) und RPI Backup.

Grundsätzlich ist der Anschluss an beiden möglich. Allerdings ist der RPI Backup direkt mit der Batterie verbunden. Wenn also das PCB ausschaltet, da z.B. die Idle Time überschritten wurde oder die Batteriespannung zu niedrig ist, liegt an RPI Backup trotzdem Spannung an. An RPI Main Power liegt in diesem Fall keine Spannung an. Ich empfehle den Anschluss an RPI Main, da so der PI die Batterie nicht tiefentladen kann. Auch ein heruntergefahrener Raspberry PI verbraucht weiterhin Energie.

RPI Power Main.jpg

Der Raspberry PI wird mittels Micro-USB Buchse mit 5V Spannung versorgt. An den Anschlüssen RPI Power Main und RPI Backup liegen 24V an. Daher muss zwingend ein Step-Down Wandler dazwischen eingebaut werden. Achtung, der Step-Down Wandler LM2596, der bei dem PCB 1.3 zum Einsatz kommt kann den PI nicht versorgen. Hier bricht die Spannung am Ausgang ein, sobald der PI startet. Der Step Down Wandler XL4015 verrichtet hier gute Arbeit. Ihr könnt ihn hier im Shop bestellen Shop Shopping.png


Zudem benötigt ihr ein USB Kabel mit Micro USB Stecker. Das Kabel wird aufgetrennt und die beiden Kabel der Spannungsversorgung (rot und schwarz) an den Ausgang des DC/DC Konverters angeschlossen. Ich habe dazu eine kleine Platine auf Lochraster gelötet. Zusätzlich habe ich eine 2A Sicherung verbaut. Diese ist aber nicht erforderlich, da schon eine SMD Sicherung auf dem PCB 1.3 für den PI vorgesehen ist.

RaspberryPI.jpg

Der PI schaltet sich ein, sobald das PCB 1.3 eingeschaltet wird. Nach wenigen Sekunden ist der Bootvorgang abgeschlossen. Heruntergefahren wird der PI entweder über das Control Center oder wenn das PCB 1.3 ausschaltet

Nochmal der Hinweis: Wenn ihr den Arduino mit einer neuen Firmware flasht, startet er nach dem Hochladen einmal neu. Die Spannung für den Raspberry PI geht dabei kurz verloren, so dass er abstürzt. Er startet zwar direkt neu, es kann aber die SD Karte beschädigt werden, wenn der PI gerade Dateien schreiben will. Daher gilt: immer vor dem Hochladen den PI über das Control Center herunterfahren. Dann seid ihr auf der sicheren Seite