Neuigkeiten Das Projekt Technik RoboSpatium Unterstützung Stichwortverzeichnis Download Reaktionen Spiele Gadgets Kontakt <<< Physical computing Einführung >>> Internet der Dinge (Internet Of Things, IOT)Das VideoFernbedienungIn dem vorherigen Kapitel zu Physical computing haben wir gelernt, wie Peripheriegeräte über GPIOs angesteuert werden können. Dieses Kapitel ist eine Schritt für Schritt Anleitung, wie diese Peripheriegeräte über einen Browser angesteuert werden können. dazu wird lediglich ein zweites Gerät mit Internetanbindung benötigt.Die verwendeten Programmiersprachen sind Perl, C und HTML (HyperText Markup Language). PeripherieVier unterschiedliche "Peripheriegeräte" werden in diesem Kapitel verwendet: LEDs, Servos, eine H-Brücke und zwei Schalter als einfachste Form eines Sensors.![]() GPIO Nummern bei Verwendung der WiringPi Software, erhältlich auf drogon.net. GPIO 7, 8, 9, 10, 11 und 16 werden beim Bootvorgang auf HIGH-Pegel gesetzt! Der interne Pullup-Widerstand an GPIO 8 und 9 kann nicht per Software deaktiviert werden. ![]() Die LEDs sind über 2kΩ Reihenwiderstände zwischen GPIO und Masse angeschlossen. R1 - R 4 = 2kΩ ![]() Die Steuerleitungen der Servos (üblicherweise Orange oder Weiß) sind direkt mit den GPIOs verbunden. Masse der Servos (üblicherweise Braun oder Schwarz) und des Raspberry Pi sind ebenfalls direkt verbunden. Plus der Servos (üblicherweise Rot) sind mit einer 6V Batterie verbunden. Minus dieser Batterie ist ebenfalls mit Masse der Servos und des Raspberry Pi verbunden. ![]() Eine H-Brücke wird verwendet, um einen Elektromotor mit wechselnder Polung ansteuern zu können. T1, T3 = IRF9Z34N T2, T4 = IRLZ24N T5, T6 = 2N7000 R1, R2 = 100kΩ R3, R4 = 1kΩ R5, R6 = 16kΩ Beachtet, dass diese einfache H-Brücke nur für kleine Lasten geeignet ist (<200mA)! Im Kapitel zu H-Brücken findet ihr Schaltkreise für höhere Lasten. ![]() Die Schalter sind über 16kΩ-Widerstände mit den GPIOs verbunden (R2 und R4). Ist ein Pin irrtümlich auf Ausgang geschaltet während der Schalter geschlossen ist, so wird euer Raspberry Pi nicht gleich zerstört. Fehlerfreie Software gibt es nicht! Bei dem zweiten 16kΩ-Widerstand (R1 und R3) handelt es sich um Pullup-Widerstände, deren zweites Ende mit dem +3.3V-Pin des Raspberry Pi verbunden ist. Beachtet, dass die internen Pullup-Widerstände an GPIO 8 und 9 nicht per Software deaktiviert werden können, womit diese Schaltung an P1-3 und P1-5 nicht funktioniert! Der interne Pullup-Widerstand an diesen Pins beträgt etwa 1.5kΩ, weshalb auch dann ein HIGH-Signal an diesen beiden Pins erkannt wird, wenn der Schalter geschlossen ist! ![]() Ein Kameramodul kann hilfreich sein, um aus der Ferne nachzusehen, ob alles wie gewünscht von eurem ITO-Computer umgesetzt wurde. Ihr könnt auch eine USB-KAmera verwenden. Um diese zu aktivieren müsst ihr im Scri "IOT-Raspberry.pl" das # am Anfang der folgenden Zeile entfernen: #system("avconv -f video4linux2... Das Raspberry Kameramodule muss deaktiviert werden, Fügt dazu ein # am Anfang der folgenden Zeile ein: system("raspistill -w 320... Warnung!Die in diesem Kapitel vorgestellte Software ermöglicht euch, eigene Experimente zum "Internet der Dinge" mit einem Raspberry Pi zu starten. Die Software ist nicht für produktiven Einsatz konzipiert, da sämtliche Befehle über meinen Internetserver laufen! Lest dieses Kapitel sorgfältig, um zu lernen, wie ihr euren eigenen IOT-Server einrichten könnt.Raspberry Pi vorbereitenWie Raspbian auf einer SD-Karte installiert werden kann, ist auf der Homepage der Foundation ausführlich beschrieben.Anschließend gibt es zwei Arten, die "Internet der Dinge" (Engl. Internet Of Things, kurz IOT) Software zu installieren: Nur 3 Befehle: Der einfache Weg...Starte den Raspberry Pi in den Kommandozeilen-Modus und tippe:
wget -N http://www.homofaciens.de/download/IOT/InternetOfThings.sh cd DirectoryToSript; sudo ./IOT-Raspberry.pl Hast du dich entschieden, das Script mit dem Namen "IOT-Raspberry.pl" automatisch zu starten, must du deinen Raspberry Pi lediglich neu starten, einen Browser auf einem zweiten Computer öffnen und zur folgenden Adresse leiten:http://robospatium.de/IOT/IOT-Status.pl Mit dem automatischen Start beim Bootvorgang können Tastatur, Maus und Bildschirm vom Raspberry Pi getrennt werden, womit ihr einen sehr kompakten Internet Of Things-Computer erhaltet. Den Raspberry Pi könnt ihr über den Browser herunterfahren bevor ihr das Netzteil entfernt. ...und was dabei passiertZusätzliche Softwarepakete werden für den Beispielcode aus diesem Kapitel benötigt. Stellt sicher, dass euer Raspberry Pi mit dem Internet verbunden ist, öffnet ein Terminalfenster (
cd /home/pi GPIOs mit C schaltenDer Kompiler "gcc" übersetzt den Quellcode in eine ausführbare Datei im Binärformat. Die beiden Beispiele in diesem Kapitel können als Ausgangspunkt für eure eigenen Experimente zur GPIO-Programmierung dienen. Zeilen die mit einem doppelten Querstrich"//" beginnen, sind Kommentarzeilen und gehören nicht zum ausführbaren Code. Kopiert den Quellcode des ersten Beispiels in den Texteditor "Leafpad" (Öffnet ein Terminalfenster (
cd /home/pi sudo ./GPIO-pwm& Jetzt läuft das Programm im Hintergrund und ihr könnt die GPIOs mit Pulsweitensignalen ansteuern. Der dazu nötige Befehl startet mit einem ">" gefolgt von einem Leerzeichen und dem Ordnernamen "/dev/GPIO-pwm/" und erzeugt eine Datei mit dem Muster "GPIO_Nummer-PWM_Wert". Der erste Teil des Dateinamens gibt die GPIO-Nummer an (zwischen 0 und 17) und der zweite Teil repräsentiert den Wert des Pulsweitensignals (von 0 bis 200), beide getrennt durch ein "-". Dieses Beispiel schaltet die Grüne LED voll an:> /dev/GPIO-pwm/12-200 Das zweite Beispiel schaltet die Gelbe LED auf halbe Intensität:> /dev/GPIO-pwm/13-100 Versucht die Rote (GPIO 14) und Weiße (GPIO 0) LED auf die selbe Art anzusteuern.Ähnlich wie die LEDs werden auch Servos über ein Pulsweitensignal angesteuert. Beachtet, dass der Tastgrad dabei zwischen 5 und 10% liegen muss, womit der Wert für PWM zwischen 10 und 20 (einschließlich) liegt! Dieses Beispiel bringt Servo 1 in Mittelstellung: > /dev/GPIO-pwm/4-15 Mit Hilfe der H-Brücke kann die Polung an einem Elektromotor verändert werden. Zusätzlich kann die abgegebene Leistung über ein Pulsweitensignal geregelt werden. Beachtet, dass das Signal für die Polung entweder voll an (PWM=200) oder voll aus (PWM=0) sein muss! Das Beispiel schaltet den Motor mit Drehrichtung "200" auf ein Pulsweitensignal von 70:> /dev/GPIO-pwm/3-200;> /dev/GPIO-pwm/2-70 Um den Zustand der beiden Schalter abfragen zu können, wird ein zweites Programm benötigt:Kopiert den Quellcode in "Leafpad" und speichert die Datei als "/home/pi/GPIO-status.c". Startet die Kompillierung mit:
cd /home/pi
sudo ./GPIO-status 15
sudo ./GPIO-status 16 Schalten der GPIOs mit Pi-blasterWenn ihr das obige C-Programm verwendet, um die GPIOs mit Pulsweitensignalen anzusteuern, dürfte euch auffallen, dass die Pulse nicht allzu stabil ausfallen, weshalb die Servos immer leicht um den Sollwert zittern oder die LEDs etwas flackern. Ein gutes Programm, das diese Probleme beseitigt, ist Pi-Blaster, das ebenfalls in C geschrieben wurde und dessen Quellcode frei erhältlich ist. Pi-blaster verwendet DMA-Kanäle, um stabile Pulsweitensignale zu erzeugen, wodurch der grafische Modus (Desktop) des Raspberry Pi gestört wird, weswegen Anfänger gut überlegen sollten, ob sie diese Software installieren! Ich verwende für die weiteren Schritte in diesem Tutorial daher pi-blaster nicht, womit ihr diesen Abschnitt auch überspringen könnt. Die Installation erfolgt im Terminal wie folgt:
cd /home/pi #define CYCLE_TIME_US 10000 durch #define CYCLE_TIME_US 20000 um ein Pulsweitensignal mit einer Grundfrequenz von 50Hz zu erhalten, womit Servos angesteuert werden können. Mit pi-blaster können die GPIOs über die Kommandozeile (Terminalfenster) angesteuert werden. Der Tastgrad kann zwischen 0 und 1 variiert werden. Servo 1 wird mit folgendem Befehl in Mittelstellung gebracht:
echo "23=0.075" > /dev/pi-blaster
echo "24=0.05" > /dev/pi-blaster
echo "17=0.15" > /dev/pi-blaster
echo "17=0" > /dev/pi-blaster
cd /home/pi/pi-blaster Schalten der GPIOs mit einem Browser unter der Verwendung von PerlPerl ist eine interpretierte Programmiersprache, womit der Quellcode vor Ausführung nicht kompiliert werden muss. Viele Internetserver verwenden Perl, um dynamische Inhalte zu erzeugen. Für die hier verwendeten Scripts wird ein zusätzliches Softwarepaket benötigt. Gebt in einem Terminalfenster die folgenden Befehle ein:
sudo apt-get update Kopiert den Quellcode in "leafpad" und ändert das Standard-Passwort in der folgenden Zeile: my $password = "TypeYourPassWordHere"; Tippt euer neues Password zwischen den Anführungszeichen z. B.: my $password = "ThisIsMyPersonalPassword"; Beachtet, dass nur alphanumerische Zeichen ohne Leerzeichen für euer Passwort gestattet sind. Das Passwort muss geändert werden, um Konflikte mit anderen Raspberry Pis zu verhindern, die ebenfalls über meinen Server verbunden sind, da das Passwort gleichzeitig zur Identifikation eures Raspberry Pis verwendet wird! Speichert die Datei dann unter dem Namen "/home/pi/IOT-Rasperry.pl". Um die Datei ausführbar zu machen, müsst ihr in einem Terminal die folgenden Befehle eingeben:
cd /home/pi
sudo ./IOT-Raspberry.pl Ist euer Raspberry Pi mit dem Internet verbunden, so gibt das Script die von dem auf dem Internetserver laufenden Script "IOT-Command.pl" empfangenen Befehle mit einem abschließenden "_OK" aus:
sudo ./IOT-Raspberry.pl ![]() Jetzt könnt ihr die Peripherie an eurem Raspberry Pi über einen Browser unter der folgenden Adresse ansteuern: http://robospatium.de/IOT/IOT-Status.pl Gebt das Passwort ein, das ihr in dem Script "IOT-Raspberry.pl" vergeben habt und klickt auf "Send PW". War das Passwort richtig, so könnt ihr die GPIOs durch anklicken der Schaltflächen steuern. Beachtet, dass eine Pause von bis zu 30 Sekunden besteht! Der Status der beiden Schalter wird alle 15 Sekunden automatisch aktualisiert oder wann immer ihr einen neuen Befehl übermittelt oder die Schaltfläche "Resend instruction set" anklickt. Bedenkt, dass ihr über meinen Internetserver mit eurem Raspberry Pi verbunden seid! Euer Passwort ist nur mit schwacher Verschlüsselung auf meinem Server gespeichert und ich kenne den Schlüssel, weshalb ich euren Raspberry Pi ebenfalls über einen Browser steuern könnte, so ich es denn wollte (aber ich verspreche es nicht zu machen). Alle anderen Nutzer werden durch das Passwort ausgesperrt. Verwendet also ein Passwort das nicht leicht zu erraten ist, da andernfalls ein anderer Nutzer die Kontrolle über euren IOT-Raspberry Pi übernehmen kann! Die Bilder von eurem Raspberry Pi werden ebenfalls auf meinem Server gespeichert (zumindest für einige Minuten)! Selbstverständlich könnte ich mir diese ebenfalls ansehen (aber ich verspreche auch das nicht zu machen). Die Schnappschüsse werden von einem "cron job" nach einigen Minuten gelöscht. Behaltet im Auge, dass es sich hier um einen experimentellen Weg zur Erschaffung eines IOT-Computers handelt. Die verwendete Software soll euch Einblicke geben, was unter einer bunten Benutzeroberfläche so gemacht werden könnte. Wollt ihr auch mich von eurem "Internet der Dinge" aussperren, so müst ihr zwei Scripts auf eurem eigenen Internetserver speichern. Das Erste ist IOT-Command.pl: und das Zweite IOT-Status.pl Speichert diese beiden Scripts in einem Verzeichnis eures Servers und ersetzt "http://robospatium.de/IOT/IOT-Status.pl" mit eurer Internetadresse in der Datei "IOT-Status.pl" (4 Zeilen). Macht die beiden Scripts zu ausführbaren Dateien mit Hilfe des Befehls Das Script "IOT-Raspberry.pl" muss ebenfalls modifiziert werden, damit dieses auf euren Server zugreift (ersetzt "http://robospatium.de/IOT/IOT-Status.pl" auch hier mit euerer Adresse)! DeinstallationHabt ihr während der Installation über das Script den automatischen Start der IOT-Software ausgewählt, so wird "IOT-Raspberry.pl" im Hintergrund ausgeführt. Dieses Script wiederum startet das Programm "GPIO-pwm" ebenfalls im Hintergrund. Beide Prozesse können mit den folgenden Befehlen beendet werden:
sudo killall IOT-Raspberry.pl @reboot root cd /home/pi/InternetOfThings;./IOT-Raspberry.pl entfernt werden. Das könnt ihr manuell mit den Editor eurer Wahl machen oder durch folgenden Befehl:
sudo sed -i '/IOT-Raspberry.pl/d' /etc/crontab Habt Spaß am Programmieren!Die in diesem Kapitel verwendeten Programme geben euch Fernzugriff auf einige Grundfunktionen der GPIOs. Lernt mehr zum Thema Programmierung in C, Perl oder HTML, um Computerexperten zu werden, anstatt auf der Stufe "Rumklicker auf bunten Schaltflächen" zu bleiben. Solltet ihr Probleme mit der Installation oder Erweiterung der hier gezeigten Programme haben, hinterlasst einen Kommentar oder schreibt mir eine Mail. Da auch mein Tag nur 24 Stunden hat, kann ich nicht die Probleme lösen, die bei anderen Projekten die ihr gestartet habt, auftreten - sorry!<<< Physical computing Einführung >>> Neuigkeiten Das Projekt Technik RoboSpatium Unterstützung Stichwortverzeichnis Archiv Download Reaktionen Spiele Verweise Gadgets Kontakt Impressum |
![]() ![]() ![]() ![]() ![]() |