mitglieder, vorstand
1.688
Bearbeitungen
Dg3hda (Diskussion | Beiträge) (→Code) |
Dg3hda (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 2: | Zeile 2: | ||
Es wird beschrieben wie man mit einem auf dem ESP8266 "IoT Chip" basierenden NodeMCU-(Clone)-Board, WLAN, und etwas LED-Zauberei den Zustand des Space in sein Wohnzimmer holen kann. Es gibt zwei Varianten des Codes, eine für eine RGB-LED direkt an der GPIO des ESP-Moduls, eine andere verwendet eine LED mit eingebautem adressierbaren Treiber WS2812, welche die zuletzt gewählten Helligkeits- und Farbeinstellungen speichert und das etwas energiehungrigere ESP-Modul zwischen den Abfragen in den Sleepmodus versetzt wird. | Es wird beschrieben wie man mit einem auf dem ESP8266 "IoT Chip" basierenden NodeMCU-(Clone)-Board, WLAN, und etwas LED-Zauberei den Zustand des Space in sein Wohnzimmer holen kann. Es gibt zwei Varianten des Codes, eine für eine RGB-LED direkt an der GPIO des ESP-Moduls, eine andere verwendet eine LED mit eingebautem adressierbaren Treiber WS2812, welche die zuletzt gewählten Helligkeits- und Farbeinstellungen speichert und das etwas energiehungrigere ESP-Modul zwischen den Abfragen in den Sleepmodus versetzt wird. | ||
== Ansprechpartner == | |||
Hendrik | Hendrik | ||
''Artikel in Arbeit'' | ''Artikel in Arbeit'' | ||
== | == Grundlage: ESP8266BASIC== | ||
Mein NodeMCU habe ich der guten alten Zeit willen mit [http://www.esp8266basic.com/ ESP8266BASIC] beladen. Wie es geht, steht auf deren Website. | Mein NodeMCU habe ich der guten alten Zeit willen mit [http://www.esp8266basic.com/ ESP8266BASIC] beladen. Wie es geht, steht auf deren Website. | ||
=== | ==Hardware== | ||
Mit RGB-LED | |||
===Variante V0 Mit RGB-LED=== | |||
Die GPIO Pins sind über 330 Ohm - Widerstände mit einer RGB-LED (common cathode) verbunden, wobei GPIO Port 0 (Nodemcu D3) die Rote versorgt, Port 4 (Nodemcu D2)die Blaue. LED-Kathode ist normal mit GND verbunden. Wer will kann noch die Grüne mit GPIO 5 (nodemcu D1) verbinden. | Die GPIO Pins sind über 330 Ohm - Widerstände mit einer RGB-LED (common cathode) verbunden, wobei GPIO Port 0 (Nodemcu D3) die Rote versorgt, Port 4 (Nodemcu D2)die Blaue. LED-Kathode ist normal mit GND verbunden. Wer will kann noch die Grüne mit GPIO 5 (nodemcu D1) verbinden. | ||
Mit WS2812 "intelligenter LED" | [[:File:SpaceLED V0.PNG]] | ||
===Variante V1 Mit WS2812 "intelligenter LED"=== | |||
Die Versorgungsspannung erhält die (einzelne) WS2812 aus dem 3.3V Regler des ESP-Moduls, Port 15 (nodemcu D8)sendet die Daten zum DI-Eingang der LED. GND ist GND. Achtung, WS2812 nicht mit 5V versorgen, der IO des ESP8266 zuliebe! Selbst wenn es nicht zurückwirkt, bekäme der ESP wohl kaum den logischen HI-Pegel hin. GPIO16 (nodemcu D0) wird mit dem RST-Eingang verbunden, um das wiederaufwachen nach dem Ende des Sleepmode zu ermöglichen. Der Stromverbrauch incl. des integrierten Spannungsregler auf dem AMICA-Board ist ca. 100 mA wenn aktiv, ca. 20 mA im Sleepmode des ESP8266, wenn die LED weiter leuchtet. Das gilt bei Helligkeitseinstellung 25, also weniger als volle Helligkeit. | |||
Das Programm mit Sleepmode hat noch eine "grace period" von ca. 45s, in der das Modul vor dem Sleepmodus ansprechbar bleibt um z.B. Änderungen durchzuführen. | |||
[[:File:SpaceLED V1.PNG]] | |||
===Funktionsweise Software=== | ===Funktionsweise Software=== | ||
Zeile 29: | Zeile 34: | ||
* ROT: Tür verriegelt | * ROT: Tür verriegelt | ||
* GRÜN: Tür offen | * GRÜN: Tür offen | ||
* AUS: Störung, z.B. Server nicht erreichbar | |||
Dazu kommt zeitweise noch Weiß: Das sagt nichts über den Space. Es bedeutet: Abfrage läuft. Bei Sleepmode-Variante gibt es einen Blauschimmer während der grace period WLAN ansprechbar. | Dazu kommt zeitweise noch Weiß: Das sagt nichts über den Space. Es bedeutet: Abfrage läuft. Bei Sleepmode-Variante gibt es einen Blauschimmer während der grace period und bedeutet WLAN ansprechbar. | ||
==Code== | ==Code== | ||
Zeile 37: | Zeile 43: | ||
Dieser Code ist für ein ESP8266 ohne WS2812. | Dieser Code ist für ein ESP8266 ohne WS2812. | ||
<pre> | <pre> | ||
let pcount = 0 | let pcount=0 | ||
let toffen = 300000 | let toffen = 300000 | ||
let tzu = 300000 | let tzu = 300000 | ||
Zeile 49: | Zeile 55: | ||
pcount=pcount+1 | pcount=pcount+1 | ||
cls | cls | ||
Status = "Gestoert" | |||
Status = left(wget("status.schaffenburg.org/"),1) | Status = left(wget("status.schaffenburg.org/"),1) | ||
if Status == "v" then po 0 1 | po 4 1 | ||
if Status == "v" then po 5 0 | if Status == "v" then po 0 1 | ||
if Status == "v" then wprint " | if Status == "v" then po 5 0 | ||
if Status == "o" then po 0 0 | |||
if Status == "o" then po 5 1 | |||
if Status == "v" then wprint "verriegelt" | |||
if Status == "o" then wprint "offen" | |||
if Status == "v" then tdown = tzu else tdown=toffen | if Status == "v" then tdown = tzu else tdown=toffen | ||
print pcount | print pcount | ||
Zeile 60: | Zeile 71: | ||
</pre> | </pre> | ||
Dieser Code verwendet den Sleepmode des ESP8266 | Dieser Code verwendet den Sleepmode des ESP8266 sowie eine WS2812 LED, letztere leuchtet dann anhand der letzten Vorgabe weiter die das ESP8266 vor dem Einschlafen absendet... | ||
<pre> | <pre> | ||
let toffen = 240 | let toffen = 240 | ||
let tzu = 240 | let tzu = 240 | ||
Zeile 71: | Zeile 80: | ||
[service] | [service] | ||
neo(0,25,25,25) | neo(0,25,25,25) | ||
cls | cls | ||
Status="gestoert" | |||
Status = left(wget("status.schaffenburg.org/"),1) | Status = left(wget("status.schaffenburg.org/"),1) | ||
neo(0,0,0, | neo(0,0,0,25) | ||
if Status == "v" then neo(0,25,0,10) | if Status == "v" then neo(0,25,0,10) | ||
if Status == "o" then neo(0,0,25,10) | if Status == "o" then neo(0,0,25,10) | ||
if Status == "v" then wprint "verriegelt" | if Status == "v" then wprint "verriegelt" | ||
if Status == "o" then wprint "offen" | if Status == "o" then wprint "offen" | ||
timer 60000,[disc] | |||
timer | |||
wait | wait | ||
[disc] | [disc] | ||
neo(0,0,0,0) | |||
if Status == "v" then tdown = tzu else tdown=toffen | if Status == "v" then tdown = tzu else tdown=toffen | ||
if Status == "v" then neo(0,25,0,0) | if Status == "v" then neo(0,25,0,0) | ||
Zeile 102: | Zeile 110: | ||
* 02.05.2016: WS2812-Band geordert! | * 02.05.2016: WS2812-Band geordert! | ||
* 04.05.2016: Code aufgeräumt, überflüssige Stromersparnis beseitigt. | * 04.05.2016: Code aufgeräumt, überflüssige Stromersparnis beseitigt. | ||
* 09.05.2016 Buggycode entfernt |