Projekt:SpaceLED: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
keine Bearbeitungszusammenfassung
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 ===
== Ansprechpartner ==


Hendrik
Hendrik


== SpaceLED ==


''Artikel in Arbeit''
''Artikel in Arbeit''


===ESP8266BASIC===
== 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.  


===Funktionsweise Hardware===
==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.


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. 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 else po 0 0
po 4 1
if Status == "v" then po 5 0 else po 5 1
if Status == "v" then po 0 1
if Status == "v" then wprint "Geschlossen" else wprint "Offen"
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, die WS2812 LED leuchtet dann anhand der letzten Vorgabe weiter. 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.  
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 pcount = 0
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)
pcount=pcount+1
cls
cls
Status="gestoert"
Status = left(wget("status.schaffenburg.org/"),1)
Status = left(wget("status.schaffenburg.org/"),1)
neo(0,0,0,0)
neo(0,0,0,25)
Status="gestört"
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"
print pcount
timer 60000,[disc]
timer 45000,[disc]
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
mitglieder, vorstand
1.688

Bearbeitungen

Navigationsmenü