Wer mit dem Arduino-Erfinder Massimo Banzi näheren Kontakt pflegt, beschreibt ihn unter der Hand als unkommunikativen Zeitgenossen. Seine neueste Kreation zeigt sich von einer besseren Seite: Dank eines eingebauten WiFi-Moduls nimmt der Mikrocontroller Arduino Yún bereitwillig Kontakt mit Smartphones, Tablets und Workstations auf.
Die in Arduinos für die Steuerung eingesetzten AVR-Mikrocontroller sind mit dem Handling von WLAN völlig überfordert. Zwecks Gewährleistung der Abwärtskompatibilität ist der Yún als „Zweichip-Planare“ aufgebaut: Ein unter Linux laufender ARM-Prozessor handhabt das WLAN-Modul, während ein dedizierter AVR für das Messen, Steuern und Regeln zuständig ist.
Ein frisch gekaufter Arduino Yún spannt ein WLAN-Netzwerk auf. Wer seine Workstation mit dem Netz verbindet, kann den Einplatinencomputer über einen Browser seiner Wahl konfigurieren. Die dazu notwendige Webseite lässt sich durch Eingeben des URL 192.168.240.1 aufrufen. Falls Ihr Yún einen Vorbesitzer hatte und Ihr WLAN nicht erkennt, so drücken Sie rund zehn Sekunden lang einen Button am Yún, der dafür sorgt, dass alle am Gerät befindlichen Netzwerkkonfigurationen verworfen werden.
Die Programmierung kann sowohl über ein Micro-USB-Kabel als auch per WLAN erfolgen. In der Praxis erweist sich die Arbeit mit einem Kabel als „friedfertiger“ – manche aus dem Internet übernommene Sketches haben bei Installation per WLAN Probleme.
Für die Kommunikation zwischen den beiden Systemen ist eine als Bridge bezeichnete Software zuständig. HTTP hat sich im Laufe der Jahre als Quasistandard in Sachen Kommunikation zwischen Geräten etabliert. Der Yún trägt diesem Aspekt durch in der Bridge implementierte Hilfsfunktionen Rechnung, die die Kommunikation zwischen AVR und Rechner über HTTP realisieren. Clients können Werte in den Yún schreiben, dieser kann andere Werte über ein Webinterface zum Abruf bereitstellen.
Wir wollen dies zur Erstellung eines kleinen Beleuchtungstrackers nutzen. Als Erfassungselement dient ein als LDR bezeichneter Widerstand: Er reduziert seinen Widerstand mit steigender Helligkeit. Das preiswerte Bauteil arbeitet langsam (Reaktionszeit im Sekundenbereich), ist für unser vorliegendes Beispiel aber dank seiner Einfachkeit gut geeignet. Schnellere Fototransistoren erfordern eine komplexere externe Schaltung.
In unserem Fall genügt es, den LDR wie in Abbildung 1 gezeigt zur Realisierung eines Spannungsteilers zu nutzen. Der genaue Wert des Vorwiderstands ist von Ihrem LDR abhängig: Sie sollten einen möglichst hohen „Spannungshub“ ermöglichen, um die Genauigkeit des AD-Wandlers besser auszunutzen.
Auf Softwareseite beginnen wir mit der Initialisierung der notwendigen Komponenten wie in Listing 1.
Listing 1
#include <Bridge.h>
#include <YúnServer.h>
#include <YúnClient.h>
YúnServer server;
void setup()
{
pinMode(13,OUTPUT);
digitalWrite(13, LOW);
Bridge.begin();
digitalWrite(13, HIGH);
server.listenOnLocalhost();
server.begin();
}
Als „braver“ Arduino bringt der Yún eine LED mit, die am Port 13 hängt. Da das durch Aufrufen von Bridge.begin() eingeleitete Aufbauen einer Verbindung zwischen den beiden Prozessoren rund drei Sekunden in Anspruch nimmt, nutzen wir die LED zur Anzeige des Verbindungszustands. Die im nächsten Schritt folgenden Befehle weisen das Serverobjekt dazu an, einen HTTP-Server am Yún bereitzustellen.
In der regelmäßig ausgeführten Funktion loop fragen wir den Server, ob sich ein Client mit ihm verbunden hat. Wenn dies der Fall ist, so wird im nächsten Schritt die Methode process() ausgeführt. Sie bekommt als Parameter das Clientobjekt übergeben, das für die weitere Interaktion mit dem verbundenen Gerät zuständig ist (Listing 2).
Listing 2
void loop() {
curVal=analogRead(A0);
YúnClient client = server.accept();
if (client) {
process...