Mächtige Dienste sinnvoll nutzen

Blynk Screenshot

Verteilte Dienste bieten viel Mehrwert

Ein weiteres Beispiel verdeutlicht die enormen Möglichkeiten, die uns ein Zusammenspiel verteilter Systeme im Internet bietet. Einfach die Cloud-Dienste nutzen, um vermeindlich komplexe Aufgaben schnell und einfach zu realisieren. Unsere Aufgabe: Wir wollen das IoT-Kit mobil bedienen, Umwelt-Daten visualisieren und per Steuerung die Farbe des Neopixels festlegen. Alles mobil, bequem per App vom Smartphone.

Blynk: IoT-Plattform für App-Entwickler

Wunderschöne Apps mit wenigen Klicks konfigurieren? Kinderleichter Zugriff auf die Octopus-Welt? Skalierbar bis zum Rollout einer kommerziellen Nutzung? Für die Blynk-Plattform kein Problem. Kleine Ideen können kostenfrei realisiert werden, wirtschaftliche Projekte zahlen für die Nutzung. Interessantes Anwendungsbeispiel ist der SeniorenSensor zur Erleichterung des Alltags und des selbstbestimmten Lebens im Alter. Hier können eigene Mikrocontroller-Projekte die Senioren für lebenslanges Lernen begeistern.

Auch zur Visualisierung unserer Umweltdaten bietet sich eine mobile Anzeige an. Wenn das nächste mal der Bagger vor der Haustür arbeitet, können live-Daten am Smartphone vielleicht das Personal davon überzeugen, zukünftig mehr Wasser zur Staubbekämpfung einzusetzen.

 

Bagger und Staub
Staubentwicklung auf der Baustelle ...
Zeitreihe Feinstaub
... jeder Einsatz zeigt sich im Feinstaub (gelb) und VOC (grün). Beide Signale korrelieren. Fotos: G. Burger

Selbst machen Teil 1: Umsetzung Umweltdaten

Die folgenden Schritte erfordern ein Smartphone mit installierter Blynk-App für Android oder iOX. Im ersten Teil möchten wir unsere Umwelt-Daten in Echtzeit auf dem Smartphone visualisieren. Dazu sind folgende Schritte nötig:

1. Registrierung: In der Blynk-App registrieren. Unsere Zugangsberechtigung (Auth-Token) wir an die angegebene Adresse gesendet. Dieses Token benötigen wir, um unser Ardublock-Programm später bei Blynk zu autorisieren.

2. Projekt anlegen: Über +Nwe Projekt erstellen wir eine neue Anwendung (hier IoT-Werkstatt) und wählen den esp8266 als Grundlage. Die von Blynk angebotene ZIP-Datei mit dem Arduino-Code für den ESP8266 benötigen wir nicht - wir wollen unseren Zugang ja grafisch mit Ardublock gestalten. Nach Erstellung (Create) gelangen wir auf eine Arbeitsoberfläche zu Konfiguration unserer Visualisierung. Ein Klick auf den Arbeitsbereich öffnet uns die Widget-Box zur Auswahl der zur Verfügung stehenden grafischen Objekte. Die kostenfreie Version bietet eine limitiere Anzahl gleichzeitig nutzbarer Objekte. Zu Kontrolle dient der Energielevel. Unser kostenfreies Budget beträgt 2000 Einheiten, jedes Grafikobjekt verbraucht eine bestimmte Anzahl Einheiten.

3. SuperChart konfigurieren: Als erstes Element der Widget-Box wählen wir die Echtzeit-Trendgrafik. Hier können wir verschiedene Kanäle konfigurieren. Dazu tippen wir in der Arbeitsoberfläche auf die Trendgrafik und belegen den ersten Kanal (Datastream) mit der Größe "Temperatur" und der Einheit "Grad Celsius". Im Konfigurationsfeld rechts neben dem Kanalnamen gelangen wir zur Konfiguration der Virtuellen Pins. Unser Ardublock kommuniziert später über diese Pins mit der Blynk-App. Hier wählen wir einen virtuellen Pin und die Pin-Nummer V0.

Blynk Konfiguration
Von der Registrierung bis zur Widget-Box.
Blynk Konfiguration II
Von der Widget-Box bis zur Trendgrafik (SuperChart).

4. Link zum Ardublock-Programm: Im IoT-Ardublock wählen wir das Element "virtualWrite" aus dem Modulbaukasten zum Blynk-Protokoll. An dieses Element docken wir unseren BME-Umweltsensor an und konfigurieren auch hier den virtuellen Pin 0. Das Vorgehen wiederholen wir unter Verwendung weiterer virtuellen Pins für alle vier Kanäle im SuperChart und im Ardublock. Damit kann der Octopus Messwerte in die entsprechenden Streams der Trendgrafik einspielen.

5. Autorisierung: Als letztes müssen wir uns im Setup unseres Programms noch beim Blynk-Server autorisieren. Dazu verwenden wir das Auth-Token aus der email (Cut & Paste).

6. Echtzeit Anwendung: Nach upload unseres Programms meldet sich der Octopus bei Blynk an uns sendet zyklisch neue Messwerte, die ab sofort direkt am Smartphone sichtbar sind.

VirtualWrite konfigurieren
Die Korrespondenz wischen Datastream im SuperChart und Ardublock erfolgt über einen virtuellen Pin (Hier V0)-
AuthToken
Unseren Octopus autorisieren wir mittels Auth-Token.
Live-Modus
Im Live-Modus können wir jetzt unsere Daten beobachten. Über die Auswahlfelder an der X-Achse können wir verschiedene zeitliche Auflösungen realisieren und so Trends einfach ablesen.

7. Noch ein Grafikobjekt zur Anzeige: Weil es so einfach funktioniert, wählen wir gleich noch ein weiteres Anzeigeobjekt für die Temperatur aus. Ein Messgerät (Gauge) lässt sich analog zum SuperChart konfiguieren. Wichtig ist hier, bei der Auswahl des virtuellen Pinsd V0 auch die physikalisch sinnvollen Grenzen (z.B. 10-50 Grad) einzugeben.

Gauge
Ein weiteres Grafikobjekt ist schnell erstellt.
Gauge III
Die Skalierung der Anzeige ist wichtig. Im Live-Modus sehen wir dann den Zeigerstand auf den ersten Blick.

Selbst machen Teil 2: Neopixel schalten

Im zweiten Teil der Praxisübung möchten wir zuerst unser Neopixel per virtuellen Schalter an- und ausschalten.

1. Blynk-Schalter konfigurieren: Widget-Box öffnen und einen Schalter (Button) auswählen. Auf dem Arbeitsfeld lässt sich die Größe des erzeugten Grafikobjekts noch anpassen. Ein Klick auf den zukünftigem Schalter führt uns in die Konfiguration. Hier entscheiden wir uns für die Schalterfunktion (Switch) auf dem virtuellen Pin V11. Je nach Schalterstellung sendet Blynk fortan eine  0 oder eine 1 über diesen Datenstream.

2. Korrespondierender IoT-Superblock: Im Setup platzieren wir ein virtualRead-Element aus dem Modulbaukasten des Blynk-Protokolls. Dieses Programmelement überwacht fortan den virtuellen Pin V11. Bei jeder Zustandsänderung sendet Blynk eine Nachricht (Payload) an die  Callbackfunktion dieses Elements. Im vorliegenden Fall ist das eine Ganzzahlgrößen (Payload Integer), die wir mittels Fallunterscheidung auswerten und das Neopixel entsprechend schalten. 

3. Echtzeitbetrieb: Nach upload des Programmes sind wir in der Lage, das Neopixels mittels Smartphone komfortabel fernzusteuern.

 

Blynk-Konfiguration Button
Ein virtueller Schalter ist schnell erzeugt ...
IoT-Superblock
... und steuert per Superblock das Neopixel am Octopus.

Selbst machen Teil 3: Farbinformation wählen

Auch die Farbe des Neopixels lässt sich bequem per Finger auf dem Touchscreen einstellen:

1. Blynk - zeRGBa konfigurieren: Ein Grafikobjekt mit der Silhouette eines Zebras ermöglicht die Positionierung unserer Neopixel LED im RGB Farbraum. Dazu konfigurieren wir drei virtuelle Kanäle (V13,V14,V15), je einen für die Grundfarben rot, grün, blau.

2. IoT-Superblock konfigurieren: Auch hier verwenden wir wieder den virtualRead für jeden Kanal. Um die drei Farbwerte gleichzeitig zu verwalten nutzen wir drei Variablen, für jede Grundfarbe eine. Im Falle einer Änderung wird im Callback die Farbintensität des entsprechenden virtuellen Pins in der Variable vermerkt und ein kleines Unterprogramm zur Ausgabe der kompletten Farbinformation an das Neopixel aufgerufen. Der Vorteil des Unterprogramms: Hier können wir gleich mehrere Neopixel oder Anzeigen gleichzeitig verwalten, ohne das Programm unübersichtlich werden zu lassen.

3. Echtzeitbetrieb: Nach upload des Programms können wir die Farbe des Neopixels verändern.

 

Blynk-Konfiguration Zebra
In der Widget-Box finden wir auch ein grafisches Element zur Auswahl von Farben. Dieses nutzt drei virtuelle Pins für die Übertragung der Farbinformation.
IoT-Superblock virtualRead
Die Farbinformation wird im Callback unseres IoT-Superblocks ausgewertet. Dazu verwenden wir die gleichen virtuellen Pins (hier V13, V14, V15).

Natürlich können wir auch alle vier verwendeten Blynk-Grafikobjekte gleichzeitig betreiben. Auf der Octopus-Seite kombinieren wir dazu alle Superblöcke zu einem umfangreichen Programm. Ein entsprechendes Ardublock-Programm findet sich hier.

Andere Zykluszeiten

Wollen wir der langsamen Dynamik unserer Umweltdaten Rechnung tragen und die Zykluszeit vergrößern, so stellen wir gleichzeitig eine Verlängerung der Reaktionszeit bei der Neopixelsteuerung fest. Schauen wir unter die Motorhaube in den den C-Code unseres Programms, so sehen wir, dass die Callback-Funktionen durch Aufruf eines Aufrufs von Blynk.run() erfolgt. Dieser Aufruf in der Loop wird durch unsere delay-Funktion ggf. unzulässig verlangsamt, mit der Folge, dass unser Neopixel dann eine längere Reaktionszeit besitzt. Abhilfe schafft eine Fallunterscheidung, die das Update der Umweltmessdaten nicht in jedem Durchlauf der Loop durchführt. Ein Beispiel findet sich hier.

 

 

back-to-top nach oben