Dienstag, 9. Juni 2015

Registrierte Bewegung auf Website anzeigen (Arduino + Processing)

Heute möchte ich euch zeigen, wie man eine Bewegung, die eine Bewegungsmelder, angeschlossen an den Arduino, registriert und dank Processing auf einer Website anzeigen kann.


Der Arduino Sketch

Der Arduino muss eigentlich nur die Bewegung über den Bewegungsmelder wahrnehmen, und wenn dem so ist eine Nachricht über die serielle Konsole an den PC schicken. Eine serielle Verbindung startet man mit Serial.begin(9600) im Setup Teil. Für Genaueres. Insgesamt sieht dieser einfache Sketch so aus:

Die Schaltung

Ein Bewegungsmelder hat drei Pins, bei mir sind diese Beschriftet. VCC, also 5V, GND also Ground und OUT. Der Outputpin wird an einen digitalPin des Arduino angeschlossen. Für genaueres kannst du auch hier vorbeischauen.

Der Processing Sketch

Der Processing Sketch, muss einerseits die Daten der seriellen Konsole empfangen, und andererseits die Meldung der Bewegung zur Website hinzufügen. Außerdem muss er die Website an die Clients ausliefern. Der Teil zum Empfangen über die serielle Verbindung durch Processing ist hier ausführlich beschrieben. Um überhaupt eine Netzwerkverbindung herstellen zu können, muss man die Bibliothek net nachladen. Dazu schreibt man import processing.net.*;. Außerdem muss man im Setup Teil  den Webserver starten. Dort legt man auch den Port fest. Der Standardport ist 80. Ich habe 8080 gewählt, da sonst jeder in meinem WLAN Netzwerk bei Eingabe meiner IP die Ergebnisse sieht. Gleich mehr dazu. Über NamedesServers.available, wird der aktuelle Client gespeichert. Danach überprüft man mit NameClient != null, ob es überhaupt einen Client gibt. Über die anschließende Zeile im Sketch wird die Anfrage des Client gespeichert und in der if Abfrage wird geprüft, ob diese korrekt ist. Über NamedesClient.write(), liefert man dem Client HTML Code aus. Davor muss natürlich ein Header versandt werden, damit die Verbindung bestätigt wird. Über stop() wird die Verbindung zum Client geschlossen. Dadurch spart man Ressourcen. Außerdem erscheint dann nicht die ganze Zeit über beim User der Ladekringel, obwohl die Seite ausgeliefert ist. Wenn man sich den Code anschaut (mit Kommentaren) ist alles leicht zu verstehen:

Die Funktion millis() gibt die Anzahl an Millisekunden seit Programmstart an. Durch sie kann ich bewirken, dass nur eine neue Meldung zur Website hinzugefügt wird, wenn 5 Sekunden vergangen sind. Der Vorteil zu delay() ist, dass während dieser 5 Sekunden trotzdem neue Verbindungen zu Client gestartet werden können, da ja nicht das gesamte Programm angehalten wird.

Netzwerkgrundlagen

Oben habe ich ja schon erwähnt, dass ich Port 8080 anstatt Port 80 verwende. Der Port ist so etwas, wie die Wahl der Leitung im Internet. Wenn du nun diese Website aufrufen willst, musst du die IP Adresse deines PCs, auf dem der Processing Sketch läuft herausfinden. Das kannst du leicht über die CMD machen. Dazu drückt du gleichzeitig die Windows und die R Taste. Dann öffnet sich dieses Fenster:

Nun tippst du "cmd" ein und drückst die Enter Taste:
Nun gibst du den Befehl ipconfig /all ein und drückst wieder Enter. Jetzt erscheint viel Text. Du musst zu dieser Zeile scrollen, wo du deine IP Adresse siehst:

Nun tippst du diese in deinen Browser ein und anschließend einen Doppelpunkt und den gewählten Port. Das Ergebnis sieht dann so aus:
Hinweis: Diese IP Adresse ist nur netzwerkweit. Das bedeutet, jemand der nicht in deinem WLAN oder deinem LAN Netzwerk ist, kann normalerweise nicht diese Website aufrufen. Wer dies will googlt im Internet nach Port Forwarding.

Fazit

Das hier gezeigte ist eine Möglichkeit, wie man mit dem Arduino ohne zusätzliche Hardware ins Internet kommt. Später kann man das natürlich auch, mit Erweiterungen, nur mit dem Arduino machen. Darum ging es jedoch nicht. Ich hoffe bei euch klappt alles und ihr konntet alles verstehen. Fragen einfach in die Kommentare.

Keine Kommentare:

Kommentar veröffentlichen