WordClock mit WS2812

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Version vom 4. Januar 2016, 00:28 Uhr von Ukw (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Einleitung = Dieser Artikel ist der Nachfolger der beiden Projekte Word_Clock und WordClock24h. Diese Projekte werden hier zusammengefasst und mit d…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Einleitung

Dieser Artikel ist der Nachfolger der beiden Projekte Word_Clock und WordClock24h. Diese Projekte werden hier zusammengefasst und mit derselben Hard- und Software realisiert. Es ist damit der Bau einer 12-Stunden WordClock und einer minutengenauen 24-Stunden WordClock möglich.

Um die beiden Varianten zu unterscheiden, wird die 12-Stunden-Variante im folgenden WordClock12h und die 24-Stunden-Variante WordClock24h genannt.

Zugehöriger Thread im Forum: (TODO)

Bilder:

WordClock

Software

Die Software ist sowohl auf dem STM32F401RE oder STM32F411RE Nucleo Board als auch auf einem STM32F103 Mini-Development Board lauffähig.

Features

Die Software wird ständig weiterentwickelt. Folgende Punkte wurden bereits umgesetzt:

  • Lauffähig auf STM32F401 Nucleo, STM32F411 Nucleo und STM32F103C8T6 Mini-Development Board
  • Anbindung IR-Fernbedienung mittels IRMP
  • Monitoring/Benutzeroberfläche mittels MCURSES
  • Einstellen des Anzeigemodus ("Sprache") und der Farbe per IR-Fernbedienung
  • Anbindung von LED-Stripes des Typs WS2812 und WS2812B
  • Sanftes Überblenden der Uhrzeiten auf den LEDs
  • Wählbare Animationen bei Uhzeitwechsel
  • Automatische Helligkeitsregelung mittels LDR (optional)
  • Anbindung einer externen DS3231-RTC
  • Anbindung eines externen I2C-EEPROM
  • Optionale Anbindung eines DCF77-Moduls
  • Optionale Anbindung eines ESP8266-WLAN-Moduls
  • Holen der Uhrzeit per TIME- oder NTP-Protokoll aus dem Internet
  • Optionale Temperaturmessung und -Anzeige mit DS18xx-Sensor
  • Fernsteuerung per Android App
  • Ambilight

Download

EM::Blocks-Projekt, Version 1.6.0 vom 29.12.2015: Tarball

SVN hier auf mikrocontroller.net: svn://mikrocontroller.net/wordclock24h/

Repo-Browser: WordClock24h im SVN

Hex-Dateien, wenn man - ohne zu compilieren - direkt flashen will:

Version 1.6.0 Nucleo401-Board: Datei:Wclock24-nucleo401.hex

Version 1.6.0 Nucleo411-Board: Datei:Wclock24-nucleo411.hex

Android App 1.5: Datei:WC24h.apk (NEU!)

Eine ältere Android-App kann nur noch die unteren 32 Helligkeitsstufen ansteuern. Setzt man die STM32-Software-Version 1.4. oder höher ein, ist ein Update der App auf 1.4 oder höher sinnvoll.

Wie man diese APK unter Android installiert, kann man hier nachlesen:

http://www.pcwelt.de/ratgeber/Android-Smartphones-Apps-ausserhalb-des-Android-Market-installieren-1929591.html

Am einfachsten erlaubt man die Installation von Apps "aus unbekannten Quellen" und klickt anschließend direkt auf dem Android-Gerät auf den Download-Link. Dann kann man das Programm direkt nach dem Download installieren.

Letzte Änderungen

Version 1.6.0:

  • Neben dem TIME-Protokoll (TCP) wird nun auch NTP (UDP) unterstützt - für ESP-Firmware-Versionen ab 0018000902.

Version 1.5.9:

  • Unterstützung der neueren ESP Versionen 0020000903 und AT 0.21.0.0
  • Vergrößerung der UART-FIFOs
  • Verallgemeinerung der UART-Funktionen zwecks besserer Konfiguration
  • Überarbeitung der MCURSES-Monitor-Oberfläche

Version 1.5.8:

  • Bugfix: Fehler in 1.5.7 (Falsche Behandlung des DMA-Buffers) wurde behoben
  • Neu: Bis zu 100 weitere LEDs hinter der Buchstabenkette werden als Ambilight angesteuert

Version 1.5.7:

  • Bug in uart-Code für STM32F103 beseitigt - irrelevant für Nucleo STM324xx
  • Timing für WS2812B angepasst, es werden nun WS2812 und WS2812B unterstützt
  • Anzahl der möglichen WS2812-LEDs ist nun variabel gehalten. Das ist Voraussetzung für das demnächst verfügbare Ambilight.

Version 1.5.6:

  • Unterstützung von ESP8266 mit neuerer Firmware, welche \r\n statt \r erwartet
  • Unterstützung von verschiedenen Baudraten des ESP8266-Moduls
  • Automatische Umschaltung von 9600Bd auf 115200Bd beim ESP8266

Version 1.5.5:

  • Optimierungen im LED-Display-Code
  • Diverse Anpassungen an STM32F103

Version 1.5.4:

  • Automatische IR-Anlernroutine in den ersten 3 Sekunden ab Programmstart
  • Kleiner Bugfix bei den möglichen Helligkeitsstufen (Dimmer)

Version 1.5.2:

  • Anzeige der Firmware-Version des ESP8266-Moduls im MCURSES-Monitor
  • Korrektur in den Worttabellen für die Wörter ACHT und VIER in der zehnten Reihe

Version 1.5.1:

  • Manuelle Helligkeitsregelung per MCURSES-Monitor / IR-Fernbedienung / Android-App eingebaut
  • Automatische Helligkeitsregelung per LDR nun über MCURSES-Monitor / IR-Fernbedienung / Android-App ein-/ausschaltbar

Version 1.4.2:

  • Die geladenen aus dem EEPROM RGB-Werte wurden nach dem Boot nicht mehr sofort übernommen. Ist korrigiert.

Version 1.4.1:

  • Initialisierung des ADC korrigiert
  • Automatische Helligkeitsregelung dunkelt nicht mehr so stark ab.

Version 1.4.0:

  • Automatische Helligkeitsregelung mittels LDR
  • Helligkeitsstufen von 32 auf 64 erhöht
  • LED-Testprogramm eingebaut (Taste 'T' im MCURSES-Monitor)
  • Anzeige des DS18xx-Typs im MCURSES-Monitor)
  • Unterstützung für Status-LED (beachte geändertes LED-Anschluss-Schema!)
  • Android App an 64 Helligkeitsstufen angepasst

Version 1.3.1:

  • Sporaisches Hangup-Problem nach Auslesen der Temperatur behoben
  • Fehler bei der Erkennung des Family-Codes für DS18xx beseitigt
  • Optimierung des Zeitverhaltens beim Zugriff auf OneWire-Bus
  • Optimierung des WS2812-Codes

Version 1.3.0:

  • Unterstützung von DS18xx-Temperatursensoren
  • Temperatur-Anzeige innerhalb +10°C und 39,5°C
  • Korrektur Sommerzeitumstellung
  • Keine Unterstützung mehr von STM32F4-Discovery

Version 1.2.0:

  • IRMP-Konfigurationsfehler behoben

Version 1.1.0:

  • Animationen hinzugefügt
  • Neue Tabellen für Uhrzeit und Temperatur

Version 1.0.0:

  • Test auf verschiedene Adressen des I2C-EEPROMs
  • EEPROM-Speicherplatzverbrauch minimiert
  • RTC DS3231-Routinen auf DS1307 verallgemeinert
  • Network Listener (UDP) zum Fernsteuern der Uhr über WLAN
  • Android App zum Fernsteuern der Uhr (Ein/Aus, Farben, Anzeigemodus)

Version 0.9.1:

  • EEPROM-Hexdump im MCURSES-Monitor eingebaut
  • Zusätzliche Waitstates beim Beschreiben des EEPROMs

Version 0.9:

  • Zusätzlicher Anschluss von RST und CH_PD des ESP8266-Moduls
  • Verbesserung der ESP8266-Konfiguration dank Hardware-Reset
  • Nutzung des Stromsparmodus im ESP8266, wenn die Anzeige abgeschaltet wird
  • Konfiguration der Zeitzone über MCURSES-Monitor
  • Test und Überarbeitung der EEPROM und RTC-Funktionen
  • Synchronisation der RTC-Zeit mit dem µC-Timer
  • Speichern folgender Daten im EEPROM:
    EEPROM-Version
    IRMP-Daten einer angelernten IR-Fernbedienung
    Aktuell eingestellte Farben und Anzeigemodus
    IP-Adresse des Timeservers
    Zeitzone

Version 0.8:

  • Neue IR-Fernbedienungs-Tasten POWER und OK
  • Einbau einer konfigurierbaren "Nachtzeit", in der sich die Uhr selbstständig abschaltet
  • Konfiguration des Timeservers über MCURSES-Monitor
  • Speichern/Laden sämtlicher Konfigurations-Daten in externem EEPROM
  • Initialisierung des ESP8266 verbessert (warten, bis nach PowerOn eine WLAN-Verbindung besteht)
  • Aufteilung der Anzeige-Logik und des MCURSES-Monitors auf dsp.c und monitor.c
  • Aufteilung der ESP8266-Routinen auf esp8266.c (low-level) und timeserver.c (high-level)
  • Diverse Optimierungen - u.a. durch Einsatz von uint_fast8_t
  • Diverse Bugfixes

Version 0.7.1:

  • Portierung der Software auf STM32F411RE Nucleo Board

Version 0.7:

  • Portierung der Software auf STM32F401RE Nucleo Board
  • uart2.c generalisiert auf uart.c (verschiedene UARTs möglich)
  • Bugfix im UART-Ringbuffer-Code (Interrupt-Sperre)
  • Anzeige der Online-Devices (ESP8266, DCF77, EEPROM, RTC) im Terminal
  • Verschiedene Optimierungen

Version 0.6:

  • Konfiguration des WLAN-Moduls (SSID & Key) nun über Terminal statt fest im Code verdrahtet.
  • Einstellung der Zeitzone möglich. Standard ist GMT+1, also mitteleuropäische Zeit.
  • DCF77- und ESP8266-Modul-Aktivierung automatisch - keine Einstellung mehr im Code notwendig.
  • I2C-Lib hinzugefügt (noch ungetestet und daher noch nicht verwendet).
  • I2C-EEPROM-Modul hinzugefügt (noch ungetestet und daher noch nicht verwendet).
  • I2C-RTC-Modul (DS3231) hinzugefügt (noch ungetestet und daher noch nicht verwendet).

Software für Windows

Hardware

  • STM32F401RE Nucleo und STM32F411RE Nucleo
Nucleo: Zusätzliche Drahtbrücken R35 + R37 + 8MHz Quarz
Nucleo: Zu entfernende Lötbrücken + anzulötende 22pf Kondensatoren
Prototyp-Shield für das Nucleo-Board mit TSOP, ESP8266 und 3,3V Spannungsregler, später noch Anschluss für DCF77EEPROM/RTC
     Es kann sowohl das 401er als auch das 411er Nucleo-Board verwendet werden. Beide werden
     identisch genutzt.
     Damit das Board später für den Einbau nur noch (incl. Shield) 2cm hoch ist, sollte
     man die überstehenden Enden der Steckerleisten auf der Unterseite mit einer
     Kneifzange kürzen. Die beiden Jumper auf der Unterseite (beim ST-Link-Device-Teil)
     können dabei auf die Oberseite gesteckt werden.
     Es gibt zwei verschiedene Revisionen von den Nucleo-Boards:
     - "MB1136 C01": Der STM32F4x1 läuft nur mit dem ungenauen internen Oszillator
     - "MB1136 C02": Der STM32F4x1 erhält seinen 8MHz Takt vom ST-Link-Devices
     Damit auch das Board mit der Revision "MB1136 C01" zuverlässig im HSE-Modus mit
     84MHz läuft, sind folgende Hardware-Änderungen notwendig:
     - Lötbrücken SB54 und SB55 entfernen (mit Lötkolben erhitzen und wegschnippen)
     - Lötbrücken SB16 und SB50 entfernen (dito)
     - R35 und R37 jeweils mit einem Stück Draht oder 0R-Widerstand bestücken
     - Quarz X3 (8 MHz) einlöten
     - C33 und C34 mit jeweils 22pF bestücken. Diese können auch normale THT-Bauteile sein,
       wenn man die Drähte vorher kürzt. Ich habe sie auf der Unterseite direkt an den Quarz-
       Anschlüssen angebracht, siehe Foto rechts. Es geht aber auch auf der Oberseite direkt
       an den dafür vorgesehenen Lötstellen - dann aber vorzugsweise mit 0603 SMD-Kondensatoren.
     Man sollte auf jeden Fall erst die beiden Drahtbrücken R35 & R37 einlöten, bevor
     man den Quarz bestückt. Dann hat man wesentlich mehr Platz für den Lötkolben ;-)
     Es emfiehlt sich jedoch, diese Änderungen auch mit dem Board der Revision "MB1136 C02"
     durchzuführen, da wir später für die endgültige Uhr den ST-Link-Teil der Platine absägen
     werden. Dafür ist extra eine Bruchstelle vorgesehen. Nur so ist das Board dann schmal
     genug, damit es hinter den 7,5cm schmalen Rand der Frontplatte passt.
     Nicht wundern: Je nach Revision des Boards sind einige der oben genannten Lötbrücken erst
     gar nicht bestückt. Dann braucht da auch nichts entfernt zu werden. Das hier beschriebene
     stellt also den gewünschten Endzustand dar.
     Diese Arbeit ist in ca. 10 Minuten erledigt. Besondere SMD-Lötkenntnisse benötigt man dafür nicht.
  • TSOP31238
     Anschlüsse: TSOP-Pin1 an Nucleo-Board GND, TSOP-Pin2 an Nucleo-Board 5V, TSOP-Pin3 an Nucleo PC10
  • WS2812 LED-Streifen mit 288 LEDs, pro Zeile 18 LEDs. Zum Test reicht erstmal ein Streifen mit 18 LEDs
     Anschlüsse: Stripe +5V an externe Stromversorgung +5V
                 Stripe DI über einen Serienwiderstand von 220 Ohm an Nucleo PC6
                 Stripe GND an externe Stromversorgung GND und(!) an Nucleo GND
  • Optional: DS18xx als Temperatur-Sensor
     Es werden unterstützt:
                 - DS1820
                 - DS18S20
                 - DS1822
                 - DS18B20
     Anschlüsse: DS18xx-GND (Pin 1) an Nucleo GND
                 DS18xx-DQ  (Pin 2) an Nucleo PD2 und über Pullup 4,7k an DS18xx-VDD
                 DS18xx-VDD (Pin 3) an Board-interne oder externe 3,3V
  • Optional: LDR zur Messung der Umgebungshelligkeit
     Anschlüsse: 
           AGND -----+
                     |
                     R = 1K
                     |
           PC4 ------+
                     |
                    LDR (Reichelt: "LDR 07")
                     |
           3,3V -----+
     Wird kein LDR benutzt, sollte PC4 per 10k-Pullup auf 3,3V gelegt werden
  • Optional: DCF77 Modul
     Anschlüsse: DCF77 GND an Nucleo GND
                 DCF77 V+  an Nucleo 3,3V
                 DCF77 Out an Nucleo PC11
     Getestet wurde die Software mit dem Reichelt-DCF77-Modul, das aber lediglich ein
     befriedigendes Empfangsverhalten hat.
     Wird ein DCF77-Modul benutzt, welches einen Open-Collector-Ausgang
     verwendet, muss an PC11 noch ein 100k Pullup (zu 3,3V) angeschlossen werden.
     Wird KEIN DCF-Modul verwendet, sollte PC11 per 100k Pullup auf 3,3V gelegt werden!
  • Optional: ESP8266 ESP-01: WLAN Modul
Anschlussbelegung ESP8266 ESP-01 - Bauteilseite!
     Anschlüsse: ESP8266 GND an Nucleo GND
                 ESP8266 VCC   an externe 3,3V (Vorsicht: Modul zieht bis zu 200mA!)
                 ESP8266 CH_PD an Nucleo PA6 (NEU AB VERSION 0.9!)
                 ESP8266 RST   an Nucleo PA7 (NEU AB VERSION 0.9!)
                 ESP8266 TXD   an Nucleo USART6 RX (PA12)
                 ESP8266 RXD   an Nucleo USART6 TX (PA11)
     Wird KEIN ESP8266-Modul verwendet, ist nichts weiter zu beachten, da die Erkennung automatisch erfolgt.
  • I2C-Modul mit DS3231 als RTC und EEPROM
DS3231 RTC + EEPROM
     Dieses Modul (siehe auch Foto rechts) findet man bei eBay oder Amazon ab ca. 2 EUR, wenn man als
     Suchbegriff "DS3231 EEPROM" eingibt.
     Anschlüsse: I2C GND   an Nucleo GND
                 I2C VCC   an Board-interne oder externe 3,3V
                 I2C SCL   an Nucleo PA8
                 I2C SDA   an Nucleo PC9
     NEU: AB Version 1.0 werden auch RTC/EEPROM-Module mit DS1307 korrekt erkannt.
     Da die Module aus China teilweise auch ohne bestückte Batterien gesendet werden, sollte man sich
     genau überlegen, ob man die Batterie CR2032 oder den Akku LiR2032 einbaut.
     
     -----------------------------------
     (Edit jar) LiR hier nachkaufen ist aber viel teurer als gleich welche mit LiR zu bestellen
     LiR Einzelpreis ab 3€ + Versand, da war es billiger neue Module zu kaufen bei einem Händler 
     der LiR bestückt mitliefert 1,74€. Ob nun die CR oder LiR langlebiger ist kann ich nicht abschätzen.
     -----------------------------------
     Sind sowohl die Diode 1N4148 als auch der Widerstand neben dem RTC-IC bestückt, dann kann man
     auch den Akku (relativ teuren) LiR2032 einsetzen. In diesem Fall muss man das Modul aber mit
     +5V statt 3,3V betreiben, damit überhaupt geladen wird.
     Möchte man das Modul mit einer CR2032 betreiben, sollte man sicherheitshalber die Diode
     oder den Widerstand (neben der Diode) auf dem Modul entfernen (falls vorhanden, siehe Bild),
     damit keine Ladung der Batterie passiert. Das ist zwar eigentlich erst ab einer Betriebsspannung
     von ca. 3,7V möglich, aber sicher ist sicher. Im Normalfall reicht auch eine CR2032 für 5-10 Jahre.

Es ist wenig ratsam, ein DCF77- und das ESP8266-Modul gleichzeitig einzusetzen, da das ESP8266-WLAN-Modul den DCF77-Empfänger stören kann. Im Zweifel sollte man sich für eine der beiden Möglichkeiten entscheiden.

Anschlusstabelle

Anschlüsse
Device STM32F4x1 Nucleo
TSOP38238 (IRMP) GPIO: PC10
DS18xx GPIO: PD2
DCF77 GPIO: PC11
LDR GPIO: PC4
MCURSES terminal (USB) USART2: TX=PA2 RX=PA3
ESP8266 USART6: TX=PA11 RX=PA12
ESP8266 GPIO: RST=PA7 CH_PD=PA6
I2C DS3231 & EEPROM I2C3: SCL=PA8 SDA=PC9
WS2812 DMA1: PC6

Start

Dieses Kapitel beschreibt den Download der Software auf das verwendete Board und die erstmalige Prüfung und Konfiguration.

Geflasht wird mit dem ST-Link-Programm, siehe oben.

Zur Überprüfung sämtlicher Funktionen und zur Konfiguration dienst der MCURSES-Monitor. Dazu benötigt man ein Terminal-Emulationsprogramm (wie zum Beispiel PuTTY) und ein Mini-USB-Kabel für das Nucleo-Board.

Laut http://www.mikrocontroller.net/topic/356203#3979181 sollte man dabei die "blauen" USB3.0-Buchsen möglichst meiden.

Ablauf für STM32F401RE und STM32F411RE Nucleo:

  • Nucleo-Board und PC mit Mini-USB-Kabel verbinden (zum Flashen, Debuggen und als COM-Schnittstelle)
  • Wenn man die EM::Blocks-IDE einsetzt: Projekt auf "Nucleo401-Release" bzw. "Nucleo411-Release" einstellen, dann compilieren
  • wclock24-nucleo401.hex bzw. wclock24-nucleo411.hex (aus dem Ordner wclock24h\bin\Release oder direkt hier herunterladen) flashen
  • PuTTY starten
  • PuTTY einstellen: Auswahl "Serial", Serial Line: COM11 (kann abweichen, s.u.), Speed: 115200
  • Einen Session-Namen eingeben, z.B. "Nucleo"
  • Auf SAVE klicken, dann kann man die Session später wieder auswählen
  • Open anklicken
  • RESET-Button am Nucleo-Board drücken

Wichtig für Nucleo Board:: Die COM-Schnittstelle ist immer aktiv, egal, ob das Programm gerade läuft oder nicht. Wird PuTTY erst nach dem Programmstart gestartet, sieht man im Terminal nur die Änderungen, also im allgemeinen nur die Uhrzeit. Mit der ENTER-Taste sollte man dann einen kompletten Bildschirm-Refresh erzwingen.

Sollte man Probleme mit dem Finden der richtigen COM-Schnittstelle haben, hilft der Geräte-Manager aus der Systemsteuerung weiter.

MCURSES-Monitor

WordClock24h in PuTTY

Der Monitor dient zur Überprüfung sämtlicher Funktionen und der Konfiguration des WLAN-Moduls.

Dafür ist es sinnvoll, noch den Zeichensatz auf ISO8858-1 umzustellen. das geht folgendermaßen:

 Change Settings -> Window -> Translation -> ISO-8859-1:1998 (Latin-1, West Europe)
 Anschließend zurück über "Session" oben links und: "Save".

Dann klappts auch mit den Sonderzeichen.

Möchte man lieber schwarz auf weiß statt weiß auf schwarz, kann man das folgendermaßen umstellen:

  Change Settings -> Window -> Colours:
     Default Foreground: 2 2 2
     Default Bold Foreground: 0 0 0
     Default Background: 245 245 245
     Default Bold Background: 255 255 255
     Cursor Text: 0 0 0
     Cursor Color: 255 0 0
     (Rest kann man so lassen)

Anschließend zurück über "Session" oben links und: "Save".

Dann sollte das Ergebnis so aussehen wie rechts im Bild.

Tasten im MCURSES-Monitor
Taste Funktion
d/D Anzeigemodus +/-
a/A Animation +/-
h/H Stunden +/-
m/M Minuten +/-
r/R Helligkeit Rot +/-
g/G Helligkeit Grün +/-
b/B Helligkeit Blau +/-
w/W Grundhelligkeit +/- (NEU!)
q Automatische Helligkeitsregelung ein/aus (NEU!)
n Zeit von einem Timeserver holen
t Temperatur-Anzeige für 5 Sekunden (NEU!)
T LED-Testprogramm (NEU!)
i IR-Anlernroutine
c Konfiguration (WLAN, Timeserver und LDR)
o Okay, Save. Damit werden die Einstellungen im EEPROM gespeichert.
e EEPROM-Hexdump zur Kontrolle des Inhalts
p Power On/Off. Hiermit kann man die Anzeige ein- und ausschalten.
l Logout. Die Ausgabe über das Terminal wird eingestellt, bis zur nächsten ENTER-Taste
ENTER Login. Der komplette Bildschirm-Inhalt wird dabei neu geschrieben

Die Uhrzeit wird jede Sekunde in Real Time hochgezählt. Desweiteren erscheinen Infos über empfangene Uhrzeiten per RTC, DCF77 und ESP8266. Ebenso lassen sich die Farben der LEDs und der Anzeigemodus einstellen. Außerdem unterstützt der MCURSES-Monitor beim Anlernen einer IR-Fernbedienung.

Konfiguration des WLAN-Moduls

Access-Point

2 Sekunden nach dem Start wird von der STM32-Software getestet, ob ein ESP8266-WLAN-Modul angeschlossen ist. Wird das Modul gefunden, erscheint im MCURSES-Monitor die Meldung "ESP8266 up".

25 Sekunden nach dem Start wird davon ausgegangen, dass das ESP8266-WLAN-Modul mittlerweile eine Verbindung zu einem Access-Point ("AP") hat. Wenn dies der Fall ist, wird im MCURSES-Monitor die Meldung "ESP8266 online" ausgegeben.

Sobald die Up-Meldung ausgegeben wurde, kann man die Access-Point-Einstellungen für das (optionale) WLAN-Modul folgendermaßen konfigurieren:

  • Taste 'c' (klein!) drücken

Nach Eingabe von "1" für "Configure Network Module ESP8266" erscheint dann folgenes Menü:

 1. Configure access to AP
 2. Configure time server
 3. Configure time zone
 0. Exit
  • Taste 1 drücken
  • SSID eingeben (oder durch leere Eingabe per ENTER abbrechen)
  • Key eingeben (oder durch leere Eingabe per ENTER abbrechen)

Es wird jetzt für eine gewisse Zeit versucht, eine Verbindung mit dem AP aufzunehmen. fehlerhaft. Hat das Modul nach ca. 30 Sekunden immer noch keine stabile Verbindung, sollte man das Modul einmal komplett vom Strom trennen. Die Einstellungen sind aber im ESP8266-Modul gespeichert und sollten nach dem Wiedereinschalten der Spannung automatisch funktionieren. Eine erneute Konfiguration ist also in der Regel nicht mehr erforderlich.

Timeserver

Den Timeserver kann man nun auch konfigurieren:

  • Taste 'c' (klein!), danach '1' drücken

Es erscheint dann folgendes Menü:

 1. Configure access to AP
 2. Configure time server
 3. Configure time zone
 0. Exit
  • Taste 2 drücken
  • IP-Adress des neuen Timeservers eingeben oder ausgegebene IP-Adresse wiederholen (leere Eingabe bricht ab)

Der Timeserver muss ein RFC 868 konformer Timeserver oder NTP-Server sein. Voreingestellt ist ntp3.ptb.de (192.53.103.103). Dieser kann sowohl über TIME (RFC 868) oder NTP angesprochen werden. Da dieser Server oft ausgelastet ist, kann man auch auf time.nist.gov (216.229.0.179) ausweichen. Als Zeitzone ist standardmäßig GMT+1 gesetzt.

Eine Liste von Timeservern, welche RFC 868 genügen, findet man u.a. hier: http://tf.nist.gov/tf-cgi/servers.cgi

Nach der Eingabe der IP-Adresse des Timeservers wird zunächst geprüft, ob der Timeserver das NTP-Protokoll beherrscht und ob die Firmware des ESP8266 eine dafür nötige UDP-Verbindung aufnehmen kann. Wenn nicht, wird von NTP auf TIME (TCP) gewechselt.

Die aktuelle Uhrzeit wird einmal pro Stunde vom Timeserver geholt, nämlich immer um xx:10:17 Uhr. Im MCURSES-Monitor kann man aber auch jederzeit die Taste 'n' drücken, um ad hoc die Zeit zu holen. Das funktioniert auch mit einer angelernten IR-Fernbedienung.

Zeitzone

Die Einstellung der Zeitzone geht folgendermaßen:

  • Taste 'c' (klein!) gefolgt von '1' drücken

Es erscheint dann wieder das bekannte Menü:

 1. Configure access to AP
 2. Configure time server
 3. Configure time zone
 0. Exit
  • Taste 3 drücken
  • Zeitzone eingeben, z.B. GMT+1 für mitteleuropäische Zeit.

Konfiguration des LDR (Umgebungslicht-Messer)

Die automatische Helligkeitsregelung muss explizit konfiguriert werden.

  • Im MCURSES-Monitor Taste 'c' (klein!) drücken

Es erscheint dann ein Menü:

 1. Configure Network Module ESP8266
 2. Configure LDR
 0. Exit
  • Taste 2 drücken

Dann kann man den LDR ein- oder ausschalten:

 Current configuration: LDR connected
 1. LDR connected
 2. LDR not connected
 0. Exit

Mit '1' wird der LDR aktiviert, mit 2 wird er deaktiviert. Die Einstellung wird im EEPROM gespeichert.

Geplant ist hier später noch eine Kalibrierung, d.h. Anpassung an die Gegebenheiten der Umgebung.

IR-Fernbedienung

In den ersten 3 Sekunden leuchtet die Status-LED mit der Farbe weiß, um zu signalisieren, dass nun eine IR-Fernbedienung angelernt werden kann. Wird währenddessen irgendein gültiger IR-Code empfangen, wechselt die Status-LED für eine Sekunde auf rot (FB-Knopf loslassen!) und es wird in die Anlernroutine gesprungen. Wird kein IR-Signal empfangen, startet das Programm wie gewohnt.

Die Anlernroutine kann man auch mit dem blauen User-Button auf dem Nucleo-Board aktivieren. Desweiteren ist dies auch mit der Taste 'i' möglich, wenn man den MCURSES-Monitor nutzt. Dort wird man dann aufgefordert, folgende FB-Tasten zu drücken:

Tasten für IR-Fernbedienung
Taste Funktion LED Buchstabe
Power Anzeige ein/aus LED1 E
OK Speichern der Einstellungen LED2 S
MODE- Anzeigemodus erniedrigen LED3 A
MODE+ Anzeigemodus erhöhen LED4 I
ANIM- Animation erniedrigen LED5 S
ANIM+ Animation erhöhen LED6 T
HOUR- Stunde erniedrigen LED7 O
HOUR+ Stunde erhöhen LED8 V
MIN- Minute erniedrigen LED9 I
MIN+ Minute erhöhen LED10 E
RED- Helligkeit der Farbe Rot erniedrigen LED11 R
RED+ Helligkeit der Farbe Rot erhöhen LED12 T
GREEN- Helligkeit der Farbe Grün erniedrigen LED13 E
GREEN+ Helligkeit der Farbe Grün erhöhen LED14 L
BLUE- Helligkeit der Farbe Blau erniedrigen LED15 E
BLUE+ Helligkeit der Farbe Blau erhöhen LED16 I
BRIGHT- Grundhelligkeit erniedrigen LED17 N
BRIGHT+ Grundhelligkeit erhöhen LED18 S
AUTO+ Automatische Helligkeitsregelung ein/aus LED19 D (2. Zeile)
TEMP Anzeige der Temperatur für 5 Sekunden LED20 R (2. Zeile)

Dabei leuchtet die oben angegebene LED hinter dem jeweiligen Buchstaben auf dem Display in der obersten Zeile (ES#IST#VIERTELEINS), damit der Anlernvorgang auch ohne MCURSES-Monitor vorgenommen werden kann. Sind die FB-Tasten angelernt, kann man die Uhrzeit, den Anzeigemodus und auch die Farben mittels IR-Fernbedienung einstellen.

Es sind nur die gebräuchlichsten IR-Protokolle aktiviert, nämlich:

  • SIRCS (Sony)
  • NEC (Viele Hersteller, sehr verbreitet)
  • SAMSUNG
  • MATSUSHITA
  • KASEIKYO

IRMP "versteht" jedoch bis zu 40 Protokolle. Braucht man weitere - wie RC5 oder RC6 - kann man sie in irmp/irmp-config.h freischalten. Bei Problemen empfiehlt sich die Lektüre des IRMP-Artikels.

Android App

WC24h Android App

Für die STM32-Software-Version 1.5.0 muss die Android-App mindestens die Version 1.4 oder höher haben!

Ist ein ESP8266-Modul angeschlossen und korrekt konfiguriert, kann die Uhr ab Software-Version 1.0 per Android App ferngesteuert werden.

Momentan können folgende Einstellungen vorgenommen werden:

  • Ein-/Ausschalten der Uhr
  • Einstellen der Farben
  • Manuelle Einstellung einer Grundhelligkeit (Neu)
  • Automatische Helligkeitsregelung per LDR ein/aus (Neu)
  • Einstellung des Anzeigemodus
  • Einstellung der Animation (Überblenden, Rollen, Explosion etc.)

Weitere Features werden folgen.

Bevor man mit der App Daten senden kann, muss man die IP-Adresse, die das ESP8266-Modul bekommen hat, in der App einstellen. Dies geht über den Menü-Eintrag "Server".

Geplante Features

Die nächsten geplanten Punkte sind:

  • Konfiguration der Nachtzeit(en)
  • Farbprogramme (Wählen der Farbe, optional automatisches Wechseln)