Software-Entwicklung

Arduino-Setup

Folgend wollen wir auf unseren Arduino-Code eingehen.

Vorerst wurden die Komponente für Blynk und den Pins, welche einen konstanten Wert haben, einem Namen zugewiesen, bevor das Programm kompiliert wurde (siehe Abbildung 1, loc 1-7). Ebenso musste der Blynk Authentifikationstoken generiert und vorher in den konstanten Komponenten definiert werden (siehe Abbildung 1, loc 4). Weiter wurdendie nötigen Bibliotheken der benutzten Komponenten eingebunden, ebenfalls wird ein Servobjekt namens myservo erstellt, der zur Ansteuerung des Servos dient (siehe Abbildung 1, loc 11-16).

Abbildung 1

Im zweiten Teil ist die Eingabe der WIFI-Daten nötig, um eine Verbindung mit Blynk und dem Internet zu erstellen (siehe Abbildung 2, loc 20-21). Auch wurde hier der vorher zugewiesene Authentifikationstoken eingesetzt (siehe Abbildung 2, loc 19). Fortlaufend folgen die weiteren Variablen, welche für die Servo- und die Buttonbedienung nötig sind. Hier wurden Zustand des Buttons, Startgrad des Servos, Schrittgeschwindigkeit des Servos und die konstanten nicht änderbaren Werte vom minimalen und maximalen Winkel festgelegt (siehe Abbildung 2, loc 23-30).

Abbildung 2

Im dritten Teil folgen die, für Blynk benötigten, eingesetzten virtuellen Pins um die Aktualisierung und Konfiguration des WIFI´ s zu ermöglichen (siehe Abbildung 3, loc 33-43).

Abbildung 3

Im darauffolgenden vierten Teil, erfolgt das Setup für Blynk und dem Servo. Zuerst wurde mit Serial.beginn eine Konsolenausgabe per Serial Monitor ermöglicht, somit konnte nachvollzogen werden, ob getätigte Eingaben und das Verbinden mit dem Internet erfolgreich durchgeführt wurde. Weiter wurde die vorher angelegte Authentifikation, die SSID und das Passwort bezogen und mit Blynk gestartet. Darauf wird unser Servoobjekt dem Pin zugeteilt, an dem er eingelötet wurde, auch wurde der Pinmodus und der vorher festgelegte Winkel in den Servo eingeschrieben (siehe Abbildung 4, loc 45-54).

Abbildung 4

Im fünften Teil wurde der Code für den Servo per physischen Knopfdruck erstellt. Beginnend wurde die variable COUNT erstellt, welche sich im Laufe der darauffolgenden loop-Funktion pro Knopfdruck erhöht wird. Am Anfang der loop wird vorerst Blynk und die Funktion Timer gestartet, hiernach folgt die erste if-Funktion, welche angelegt wurde, um den COUNT bei der Uhrzeit 0:00 Uhr, zurückzusetzen, auch wurde der Counter in Blynk hier per Blynk.virtualWrite aktualisiert auf der App (siehe Abbildung 5, loc 57-64).

In der nächsten if-Funktion wird getestet, ob ein Knopfdruck betätigt wurde. Ist dies der Fall, so wird die Variable buttonpushed auf 1 gesetzt und der Counter COUNT um 1 erhöht, sollte dies nicht der Fall sein, so wird die loop einfach solange wiederholt bis ein Knopfdruck getätigt wurde. Wurde nun ein Knopfdruck betätigt und buttonPushed auf 1 gesetzt, so gelangt man zur nächsten if-Abfrage, die nur gestartet wird solange COUNT kleiner oder gleich 5 ist, so wird die Ausgabe auf 5 Knopfdrücke limitiert und es wird erst nach dem Reset um 0:00 Uhr die nächste Betätigung möglich sein (Siehe Abbildung 5, loc 74-76).

Ist der COUNT noch geringer oder gleich 5, so setzt sich der Servo in Bewegung, es wird der Winkel in 10er Schritten begangen bis die 180 Grad erreicht wurden, darauf wird in 10er Schritten von 180 Grad bis auf die 0 Grad zurückgesetzt und der buttopushed ist wieder auf 0 gesetzt, um eine erneute Betätigung zu ermöglichen (siehe Abbildung 5, loc 77-100).

Abbildung 5

Im sechsten und damit letzten Teil, wurde die Methode zur Anwendung des Servos per Blynk-App geschrieben. Zuerst wurde die Methode Sweep erstellt, welche wie auch bei der physischen Methode den Servo von 0 auf 180 Grad und zurück schwenken lässt (siehe Abbildung 6, loc 103-114). Diese Methode wurde nun in den vorher auf der App festgelegten Virtuellen Pin (V4) eingesetzt. Zuerst wurde der virtuelle Pin als Integer in der Methode param.asInt umgewandelt, so lässt sich die Bedienung bei 0 (Knopf aus) und 1 (Knopf an) ansteuern (siehe Abbildung 6, loc 117-119). Dadurch konnten wir nun per if-Abfrage den Zustand bei 1 laufen lassen. Dieser ruft die vorher angelegte sweep-Methode auf, welche den Servo aktiviert, hiernach wird der Pin wieder auf 0 gesetzt um eine erneute Tätigung zu ermöglichen und das ganze wird auf die Blynk-App synchronisiert.

Abbildung 6

Blynk-Einrichtung

Die Blynk-App lässt sich ganz einfach per Computer (auf der Webseite https://blynk.io) oder per App (erhältlich in den verschieden Stores) bedienen. Da wir eine Steuerung per Handy wollen, haben wir uns auf die Einrichtung der App fokussieren.

Nach dem runterladen der App, hat man mehrere Möglichkeiten die Einrichtung zu beginnen, wir nutzten den Schnellstartgerät (siehe Abbildung 1).

Abbildung 1

Darauffolgend wurde das Board ESP8266 und der Verbindungstyp WIFI gewählt (siehe Abbildung 2).

Abbildung 2

Nun hatten wir ein leeres Template auf dem wir mit dem Plus-Symbol verschiedene Widgets hinzufügen konnten. Wir wählen die Taste, welche als Button funktioniert und die Wertanzeige, welche als Counter eingesetzt werden (siehe Abbildung 3).

Abbildung 3

Die ausgewählten Funktionen erschienen auf dem Template. Diese haben wir durch Klick ausgewählt,um ihnen einen Datenstrom zuzuweisen. Dies ist zum einen ein Integer, für den Button, welcher den Wert 0 (Knopf aus) und 1 (Knopf ein) ausgibt und ein double für die Wertanzeige, welche sich bei jedem physischen Knopfdruck an der Box erhöhen soll (siehe Abbildung 4). Diese Werteströme werden als virtuelle Pins angelegt (V1,V2…) und können dadurch im Code, in Arduino angesteuert werden.

Abbildung 4

Schlussendlich hier noch unsere fertiges Blynk-Template:

Abbildung 5

(Die Zeit wurde als Widget hinzugefügt, lediglich als Kenntnisnahme, dass dieser Counter um 0:00 Uhr zurückgesetzt wird. Dieser wurde nicht im Code genutzt und hat keine weitern Funktionen.)