Beispielprojekt – NanoESP & Pretzelboard
In dem hier vorgestellten Beispielprojekt soll eine einfache Ansteuerung einer bunten RGB-LED realisiert werden. Die Steuerung soll über eine Webseite oder auch über eine Smartphone-App möglich sein. Die Verbindung kann sowohl über einen Router, und damit auch aus der Ferne über das Internet, als auch über den AccesPoint des Moduls hergestellt werden. Es ändert sich jeweils nur die zu adressierende IP.
Sie können das vorgestellte Programm hier herunterladen
Die Programmierung erfolgt über die Arduino-Oberfläche, die sich jeder kostenlos auf der Seite www.arduino.cc herunterladen kann. Als Board kann einfach das Arduino Nano Board ausgewählt werden (ATmega328p Version). Bevor das Programm hochgeladen wird, müssen die WLAN Daten am Anfang des Programes eingetragen werden.
Nach dem Upload verbindet sich das Board dann automatisch mit dem Router und die LED D3 leuchtet zur Bestätigung. Über den Seriellen Monitor der Arduino-Umgebung wird nun die vom Router an das Modul vergebene IP ausgegeben. Wenn sich der PC im gleichen Netzwerk befindet, kann man einfach über die IP des Moduls auf die im Quelltext hinterlegte Webseite zugreifen.
Auf der Webseite wird man aufgefordert, eine Farbe zu wählen. Als Eingabeelement kommt hier das HTML5-Element ColorPicker zum Einsatz. Nach dem Auswählen wird die Farbe in der URL verschlüsselt übermittelt und kann einfach vom Board ausgewertet werden.
Gleichzeitig zu der Verbindung zum Router hat das Modul aber auch sein eigenes Netzwerk mit den Namen NanoESP erstellt, mit dem man sich nun z.B. mit einem Smartphone verbinden kann. Das Passwort und der Name des Netzwerks wurden vorher im Arduino-Programm festgelegt. Die Vergabe einer IP an ein neues Gerät funktioniert vollautomatisch. Die IP des Moduls in seinem selbst erstellen Netzwerk lautet 192.168.4.1. Nach dem Verbinden mit einem Smartphones kann man über diese IP die auch für Smartphones optimierte Webseite des Moduls aufrufen und über das ColorPicker-Element die Farbe auswählen.
Das Projekt lässt sich gut zu einer bunten Lampe erweitern, die auch aus der Ferne bedient werden kann. Mithilfe einiger weniger zusätzlicher Bauteile kann man so eine Designerlampe für das Wohnzimmer bauen. Die Steuerung kann über die verschiedensten Geräte bedient werden, z.B. auch mit einer Smartphone-App.
Doch der NanoESP kann noch mehr. Zu den bis jetzt mit dem Board realisierten Projekten gehören unter anderem eine Uhr die sich über das Internet automatisch stellt, eine Universalfernbedienung mit Webinterface, eine Messstation mit Cloud-Anbindung, Ansteuerung über Twitter und vieles mehr. Die Arduino-Oberfläche sorgt dafür, dass alle Programme leicht verständlich und einsteigerfreundlich bleiben. Somit ist das NanoESP-Board ein Allrounder für das Thema Internet of Things.
#define SSID "WLAN NAME"
#define PASSWORD „XXX“
#define LED_WLAN 13
#define RED 3
#define GREEN 5
#define BLUE 6
#define GND 4
#define DEBUG true
const char site[] PROGMEM = {
„<HTML><HEAD>\n<link rel=\“icon\“ href=\“data:;base64,iVBORw0KGgo=\“>\n<meta name=\“viewport\“ content=\“width=device-width, initial-scale=2.0, user-scalable=yes\“>\n<title>\nRGB LED\n</title>\n</HEAD>\n\n<BODY bgcolor=\“#FFFF99\“ text=\“#000000\“>\n<FONT size=\“6\“ FACE=\“Verdana\“>\nSelect Color\n</FONT>\n\n<HR>\n<BR>\n<FONT size=\“3\“ FACE=\“Verdana\“>\nChange the Color<BR>\nof the RGB-LED\n<BR>\n<BR>\n<form method=\“GET\“>\n\t<input type=\“color\“ name=\“rgb\“ onchange=\“this.form.submit()\“><BR>\n</form>\n<BR>\n<HR>\n\n</font>\n</HTML>\0″
};
#include <SoftwareSerial.h>
SoftwareSerial esp8266(11, 12); // RX, TX
void setup() {
Serial.begin(19200);
esp8266.begin(19200);
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
pinMode(GND, OUTPUT);
digitalWrite(GND, LOW);
if (!espConfig()) serialDebug();
else digitalWrite(LED_WLAN, HIGH);
if (configTCPServer()) debug(„Server Aktiv“); else debug(„Server Error“);
}
void loop() {
String xBuffer;
if (esp8266.available()) // check if the esp is sending a message
{
if (esp8266.find(„+IPD,“))
{
debug(„Incomming Request“);
int connectionId = esp8266.parseInt();
if (esp8266.findUntil(„?rgb=“, „\n“))
{
String hexstring = esp8266.readStringUntil(‚ ‚);
long number = (long) strtol( &hexstring[3], NULL, 16);
// Split them up into r, g, b values
int r = number >> 16;
int g = number >> 8 & 0xFF;
int b = number & 0xFF;
analogWrite(RED, r);
analogWrite(GREEN, g);
analogWrite(BLUE, b);
}
if (sendWebsite(connectionId, createWebsite())) debug(„Website send OK“);
else debug(„Website send Error“);
}
}
}
Am Ende wird ein Projekt mit Uhr, Universalfernbedienung und Messstation, sowie eine App von NetIO beschrieben. Könnten sie mir dazu ein paar Infos zukommen lassen?
Ich würde gern selbst ein solches Projekt genau in der Form umsetzen (mit einem SamsungTV).
Gibt es eine Möglichkeit gleichzeitig im Internet zu surfen und Befehle (über NetIO) an den Microcontroller zu senden?
Hi,
ja die beschriebenen Projekte sind Teil des Adventskalenders. Sie werden Tag für Tag veröffentlicht oder können hier: http://iot.fkainka.de/tag-0-alle-projekte-fuer-ungeduldige-spoiler-alert
heruntergeladen werden.
Wenn das Bord in Ihrem WLAN angemeldet ist, können Sie surfen und das Board dennoch über die IP erreichen und Kommandos senden. Kein Problem also.
Dazu müssen die Codes der einzelnen Programme aber kombiniert werden oder?
Habe wenig Erfahrung, daher auch der Adventskalender. ;)
Das Universalfernbedienungsprogramm gibt es schon, für ein größere Projekte kannst du z.B. auch einen Treat im Forum erstellen (unter User Projekte), dann können dir andere Nutzer bei der Entwicklung helfen oder am Ende von deinem Projekt profitieren.
In dem Beispielprojekt wird eine neue SoftwareSerial mit einigen sehr sinnvollen Erweiterungen )z.B. esp8266.findUntil) verwendet. Wo kann man eine Dokumentation zu dieser Version von SoftwareSerial finden? Ich finde auf der Arduino Seite nur die Beschreibung der alten SoftwareSerial.
Ich habe mit dem Sketch ein wenig rumgespielt, funktioniert problemlos mit PC und Android Tablet
findUntil gehört zur Stream class:
https://www.arduino.cc/en/Reference/Stream
https://www.arduino.cc/en/Reference/StreamFindUntil
Vielen Dank für den Hinweis.
Ich habe mir die Doku zu Serial angesehen, da sind die im Projekt verwenden Aufrufe dokumentiert.
Hallo fk,
ok, das gefällt mir sehr. Habe gerade versucht den Franzis Pretzelboard Adventskalender zu kaufen für meinen Sohn und mich, würde eine schöne Zeit werden.
Den gibt es aber anscheinend nicht, noch nicht, nicht mehr. Wissen Sie evtl. mehr? Wenn es davon eine Liste gibt, kaufe ich auch die Einzelteile und verpacke es halt allein ein.
Viele Grüße
Kay
Hallo Kay,
schau doch mal bei Conrad nach, dort wird er angeboten als
IoT-Adventskalender 2015.
Gruß, Rainer
Hallo Kay,
der Kalender ist schon auf dem Markt und sollte eigentlich in einer Conrad-Filiale noch erhältlich sein. Wenn er lokal ausverkauft können Sie vllt versuchen, den Kalender online bei Conrad zu bestellen. Ansonsten gibt es das Board ende November auch im Einzelverkauf. Dann könnten Sie sich das Board und die Bauteile einzeln besorgen.