WLAN-Sensor

Seit einiger Zeit gibt es einen neuen Mitspieler in der Mikrocontroller-Welt. Bisher hab ich mich überwiegen mit ATMEL ATmega und ATtiny Mikrocontrollern beschäftigt. Seit Ende 2015 gibt es den ESP8266. Der Chip ist in verschiedenen, fertig bestücketen Platinen verfügbar. Die Platinen unterscheiden sich vor allem in der Anzahl bzw. in der Art und Weise wie die Anschlüsse des Chips herausgeführt werden. Bezogen werden kann der ESP8266 am günstigsten via eBay (ca. 1,50-2,50€ pro fertige Platine; es wird günstiger wenn man direkt mehrere bestellt).

Ich war natürlich neugierig auf den kleinen Chip und habe mir 5 Stück bestellt. Genauer: 5x die ESP-01 Platine. Das ist die kleinste fertigen Platine bei denen nur 8 Pins rausgeführt werden (inkl. nicht nutzbare Pins wie Versorgungsspannung, Masse und „Enable“). Um damit am etwas meiner Meinung nach sinnvolles anzustellen sind direkt noch 5 Temperatur- und Luftfeuchtigkeitssensoren DHT11 mit in den Warenkorb gelandet. Nach ca. 3-4 Wochen Lieferzeit kam die Hardware an:

2016-05-27 14.22.59

Zusätzlich zur eigentlich ESP8266-Platine wird ein USB-zu-Seriell Wandler benötigt um den Chip zu programmieren. Sehr oft wird dazu ein FTDI „kompatibler“ Wandler benutzt. Diese Chips sind häufig jedoch unlizenzierte Kopien und dieser Umstand hat auch schon zu Problemen geführt (siehe auch diesen Wikipedia-Artikel).

Zum programmieren kann die normale Arduino-Entwicklungsumgebung verwendet werden. Eine Anleitung zum Einrichten ist hier beschrieben (ich habe mich für „Variante 3“ entschieden).

Läuft die Entwicklungsumgebung habe ich für meine ersten Versuche noch folgende Bibliotheken unter „Sketch -> Bibliotheken hinzufügen“ runtergeladen:

  • Adafruit DHT Unified
  • Adafruit Unified Sensor
  • DHT sensor library

Meine erste Test-Version liegt auf Github bereit:
https://github.com/silver-sonic/ESP8266-TempLogger/releases/tag/v0.1

Zum selbst ausprobieren muss nur das obige Release von Github runtergeladen werden, die .ino-Datei in die Entwicklungsumgebung geladen werden und dann übersetzt und hochgeladen werden. Mit dem USB-zu-Seriell-Wandler wird dabei der ESP8266 mit dem PC verbunden. Leider ist die Pin-Belegung der USB-zu-Seriell-Wandler nicht einheitlich. Bei mir waren die Anschlüsse beispielsweise gespiegelt im Vergleich zur üblichen Pinbelegung. Mit Google gibt es dazu aber eine Menge Hinweise und Bilder.

Wenn alles läuft sieht das ganze beim programmieren des Controllers so aus:

2016-06-11 21.52.00

Ab hier läuft der Mikrocontroller und sendet seine Messwerte regelmässig an die im Code angegebene Adresse im Internet.

2016-06-12 11.59.36

Gleichzeitig liefert er über die serielle Schnittstelle Statusinformationen darüber was er gerade tut:

seriell_log

Und im besten Fall sieht man direkt auc die Webzugriffe im Apache Webserver.

webserver_log

Die nächsten Schritte sind relativ klar: Ein PHP-Skript schreiben welches die Daten auch wirklich einsammelt und anschließend visualisieren. Außerdem den Controller beibringen zwischen zwei Messungen in den Tiefschlaf zu wechseln um (Akku-)Strom zu sparen.