Intro

Der Wetterbimmler ist ein Projekt von hacKNology e.V. - öffentliche Präsentation auf der Maker Faire Bodensee am 14./15.7.2017 in Friedrichshafen im Rahmen des Projekts Neu-trifft-alt.

Liegt keine Wetterwarnung vor, leuchten alle LEDs grün. Wird eine neue Wetterwarnung herausgegeben, leuchtet das entsprechende Symbol in der Farbe der Warnstufe (gelb, orange, rot, violett) und der Wecker klingelt!

Teile

Man nehme:

  • einen Standard-Wecker mit Bimmel
  • ein ESP-8266-Board (z.B. NodeMCU oder D1)
  • einen WS2812 LED-Streifen mit 14 oder 16 LEDs
  • einen kleinen Motortreiber, z.B. Pololu DRV8838
  • ein USB-Netzteil + Mikro-USB-Ladekabel
  • gefräste Acryl-Stücke mit Warnsymbolen oder mit Warnsymbolen lackierte Wecker-Frontscheibe
  • eventuell einen Logik-Level-Shifter

und heraus kommt der Wetterbimmler! Die Gesamtkosten belaufen sich je nach Bezugsquelle auf etwa 25-45€.

Vorbereitung

Schritt 1

Entkernen

Zunächst muss der Wecker bis auf die Bimmel-Mechanik entkernt werden. Also raus mit dem Uhrwerk und der Ziffernblatt-Beleuchtung! Falls der Wecker über einen ein/aus Schalter verfügt: sehr gut, den kann man zum aktivieren/deaktivieren der Bimmel-Funktion verwenden. Falls zusätzlich noch ein Taster eingebaut ist: auch gut, der kann als WLAN-Reset bzw. zur Aktivierung des Demo-Modus dienen.

Anschlussleisten und Kabel

Falls die Elektronik des Wetterbimmlers gesteckt werden soll, sollten jetzt die Anschlussleisten an den ESP-8266, den Motortreiber und eventuell an den Level-Shifter gelötet werden. Außerdem können noch diverse Kabel vorbereitet werden, je nachdem welches ESP-Board verwendet wird, stehen nämlich nur wenige Masse bzw. 5V/3,3V Pins zur Verfügung, d.h. diese Pins müssen dann an mehrere Stellen gesteckt werden. Dazu kann man z.B. die üblichen Jumper-Kabel auftrennen und mehrere Teilstücke wieder zusammenlöten, so entstehen Verteilerkabel.

Verdrahtung

Schritt 2

Verdrahtung

Bei der Verdrahtung gibt es nur wenig zu beachten. Der ESP-8266 wird über den USB-Anschluss mit 5V versorgt, diese 5V müssen an den LED-Streifen weitergereicht werden. Der Motortreiber wiederum kann mit 3,3V betrieben werden. Ansonsten müssen die Pins des ESP an die entsprechenden Pins des Motortreibers und an die Datenleitung des LED-Streifens gesteckt oder gelötet werden (optional kann zwischen die LED-Datenleitung und den ESP noch ein Level-Shifter von 3,3V auf 5V geschaltet werden). Letztendlich sind alle Pins über die Software konfigurierbar, man sollte nur darauf achten, dass GPIO-Pins 0, 2 und 16 (D3, D4 und D0) vom ESP intern verwendet werden und sicherheitshalber nicht beschaltet werden sollten.

ESP-8266 und Motortreiber verdrahtet

Verdrahtung ESP-8266

LEDs

Der LED-Streifen muss nun noch am Rand des ehemaligen Ziffernblattes im Kreis angeklebt werden. Der im Wecker vorhandene Plastikring ist häufig leicht konisch und deswegen eher schlecht zum direkten Bekleben geeignet, für die etwas größere Wecker-Variante kann man z.B. einen etwa 1cm breiten Streifen aus einer normalen 1,5l Getränkeflasche herausschneiden und den LED-Streifen daran befestigen.

Schaltplan

Hier die zugehörige Fritzing-Datei - es ist nicht der gesamt LED-Streifen modelliert, sondern lediglich 2 LEDs. Letztendlich müssen nur die drei Leitungen am LED-Streifen, 5V, Masse und Daten (Din), mit dem ESP verbunden werden.

Software

Schritt 3

Die Software

Bevor der Wecker endgültig zusammengesteckt und wieder verschraubt wird, sollte man testen, dass auch alles funktioniert.

Der Quellcode der Software findet sich im Wetterbimmler Git-Repository. Eventuell müssen vor dem Compilieren noch einige Konstanten angepasst werden und auch zusätzliche Bibliotheken installiert werden. Die genaue Beschreibung steht in der README-Datei oder auf der Repository-Seite.

Hier die wichtigsten Schritte in aller Kürze:

  • Arduino IDE von Arduino Homepage herunterladen (“Software” - “Download the Arduino IDE”).
  • In der IDE unter “Datei” - “Voreinstellungen” die zusätzliche Boardverwalter-URL http://arduino.esp8266.com/stable/package_esp8266com_index.json für die ESP-8266-Unterstützung eintragen.
  • Unter “Werkzeuge” - “Board” - “Boardverwalter…” die “esp8266”-Boardtypen installieren.
  • Unter “Werkzeuge” - “Board” das korrekte Board wählen (z.B. NodeMCU oder WeMos D1)
  • Unter “Sketch” - “Bibliothek einbinden” - “Bibliotheken verwalten…” die folgenden Bibliotheken herunterladen:
    • ArduinoJson,
    • FastLED,
    • WifiManager.
  • Den Wetterbimmler-Quellcode via git clone https://git.hacknology.de/tecer/wetterbimmler.git herunterladen.
  • Bei Bedarf die Konstanten (LED-Anzahl / GPIO-Pins) anpassen.
  • Den Sketch kompilieren und hochladen.

Endmontage

Schritt 4

Endmontage

Zum guten Schluss muss der Wecker wieder zusammengesetzt und verschraubt werden. Erfahrungsgemäß kann es passieren, dass insbesondere bei einer gesteckten Wecker-Variante insgesamt zu wenig Platz im Gehäuse ist, und daher das Batteriefach noch herausgesägt werden muss. Es muss ohnehin ein ausreichend großes Loch an der Weckerrückseite vorhanden sein, um das USB-Anschlusskabel hindurch zu führen.

Tipps und Tricks

Der Wetterbimmler ist nicht perfekt. Das liegt vor allem an den verschiedenen Eigenheiten des verwendeten ESP-8266.

Hier eine kurze Auflistung der möglichen Probleme und Lösungsansätze:

  • der LED-Streifen leuchtet nicht richtig / die Darstellung / Farben stimmen überhaupt nicht; das kann 2 Ursachen haben:
    • der LED-Streifen nutzt einen anderen Chip als den WS2812 (oder eine andere Variante), in diesem Fall kann mit der Konfiguration der verwendeten FastLED-Bibiothek experimentiert werden.
    • der LED-Streifen erwartet auf der Datenleitung 5V-Logik-Signale, der ESP-8266 arbeitet allerdings mit 3,3V. Im Aufbau wurde auf einen Level-Shifter von 3,3V auf 5V für die Datenleitung des LED-Streifens verzichtet. Bei allen Test-Aufbauten hat das auch tadellos funktioniert, kann aber je nach LED-Streifen zu Problemen führen. Hier hilft im Zweifelsfall, einen simplen Level-Shifter zwischen ESP und Datenleitung des LED-Streifens zu schalten.
  • beim Einschalten klingelt der Wecker und hört nicht mehr auf. Hier liegt das Problem wahrscheinlich am Anfangszustand des ESP, die GPIO-Pins werden beim Einschalten (fast) allesamt kurz auf HIGH gesetzt, bevor das eigentliche Programm geladen wird.
    • eine Möglichkeit ist, beim Einschalten die Klingel mechanisch (per Schalter) auszuschalten und erst nach erfolgreicher Initialisierung zu aktivieren,
    • oder einen Pull-down Widerstand (~10k an Masse) an den GPIO-Pin für Motor-Sleep hinzuzufügen (ungetestet!).
  • keine WLAN-Verbindung bei nicht-verschlüsseltem WLAN: dieses Problem tauchte im Test immer wieder auf, hier half eigentlich nur, ein WPA2-verschlüsseltes WLAN zu verwenden.

Fazit

Ich wünsche viel Spaß beim Nachbasteln!

Der Wetterbimmler bietet Raum für eigene Verbesserungen und Modifikationen. Vorschläge nehme ich gerne unter tecer@hacknology.de an!

Die Entwicklung des Wetterbimmlers wird unterstützt von wetter.com