Tutorial: ESP8266/ESP32 Addon (Wifi LED Controller UDP)

  • Kurz und knackig,
    ein kurzes Tutorial mit Beispielcode um einen NodeMCU (ESP8266) oder LOLIN32 (ESP32) an Hyperion anzubinden.
    Ein ESP8266 ist einfach gesagt ein Microcontroller wie ein Arduino mit Wlan. Damit könnt ihr überall im Raum LEDs verteilen und dort anschließen.
    Dann mit Hyperion ansprechen und freuen!


    Ich habe schon den Code für das Devkit vorbereitet.
    Der enthält folgendes:
    1) WS2801 LED-Coding 50LEDs (mit Rainbow Farbverlauf im Ruhemodus)
    2) JSON-Server für die Hyperion Android App (Farbe fest wählen, Resetknopf) auf Port 19444
    3) UDP-Receiver für UDP Protocol 0 von Hyperion auf Port 19446
    4) WLAN-Verbindung
    5) Over-the-Air Updateinterface (WLAN Firmwareupdate über die Arduino IDE)
    6) Logging auf 115200 Baud auf COM



    Folgendes benötigt ihr an


    Hardware:


    NodeMCU Devkit Modul:
    Amazon:
    ELEGIANT NodeMcu Lua ESP8266 ESP-12E WIFI Development Board - 10,99€ - Versand aus dem Ausland
    Diymall NodeMCU Devkit 1.0 CP2102 IIC SPI für Apple's MAC OS - 16,90€ - Prime Langstrecke


    Ebay:
    NodeMcu Lua WIFI Netzwerk entwicklungs-board basiert ESP8266 CH340 Board TE391 - 8,88€ - Versand aus Deutschland


    4-adrige LEDs:
    WS2801
    Stripes:
    -5M 32LEDs/m - 30,98€-122,99€ (je nach Helligkeit) - Amazon (Prime) - DE
    12mm Dots:
    -50 LED Pixel IP65 - 35,98€ - Amazon - DE


    LPD8806
    Stripes
    -5M 32LEDs/m - 131,98€ - Amazon - DE
    -5M 48LEDs/m - 132,99€ - Amazon Prime - DE
    -5M 60LEDs/m - 159,99€ - Amazon Prime - DE


    3-adrige LEDs:
    WS2812B
    Stripes:
    -5M 30LEDs/m - 36,99€ - Amazon Prime - DE
    -5M 60LEDs/m - 62,99€ - Amazon - CN


    Netzteil
    Plug'n'Play mit 5,5/2,1mm Stecker
    -5V 10A - 25,98€ - Amazon - DE


    Es laufen alle LEDs die von FastLED unterstützt werden.


    Und natürlich den üblichen Kleinkram.


    Software:


    Arduino IDE - Boardinstallation:
    Download: https://www.arduino.cc/en/Main/Software


    Das Board wird von Hause aus nicht unterstützt.
    Zuerst eine neue Boardverwalter URL hinzufügen:
    1. Datei -> Voreinstellungen dann die URL "http://arduino.esp8266.com/stable/package_esp8266com_index.json" unter "Zusätzliche Boardverwalter-URLs" hinzufügen.
    2. Werkzeuge -> Board -> Boardverwalter - esp8266 oder esp32 hinzufügen.
    3. Werkzeuge -> Board -> NodeMCU 0.9/1.0 je nach Modul auswählen, bei mir NodeMCU 0.9 (steht auf dem Board selbst)


    Englisches Tutorial zur Installation des NodeMCU Boards in der Arduino IDE: http://www.seeedstudio.com/rec…evkit-in-arduino-ide.html


    Arduino IDE - Libraries
    Es werden noch ein paar Softwarebibliotheken benötigt um die von mir bereitgestellte ESP8266 Software nutzen zu können.
    1. Sketch -> Bibliothek einbinden -> Bibliotheken verwalten
    a) ArduinoThread
    b) ArduinoJson
    c) LinkedList
    d) FastLED (min. 3.1.3)
    e) Logging (manuell in den Ordner libraries kopieren) - https://github.com/SciLor/Ardu…ibrary/archive/master.zip

    f) ESP32 Webserver https://github.com/nhatuan84/esp32-webserver - esp32 only


    Hyperion mit Forwarder
    Modifizierte Hyperionversion, die es erlaubt den Bild/Json Datenstrom an eine zweite Hyperioninstanz weiterzuleiten (ohne v4l2loopback).
    Siehe: http://www.forum-raspberrypi.d…unktion-update-27-02-2016
    Mittlerweile ist diese Funktion im Hauptstrang von Hyperion integriert.


    Wichtige Punkte in der Konfiguration:
    Hyperion Grundinstanz:

    Code
    1. "forwarder" :
    2. {
    3. "proto" : [ "localhost:19447" ],
    4. "json" : [ "localhost:19446" ]
    5. },


    Hyperion Instanz 2, bitte Grabber auskommentieren,
    LED-Konfiguration wie ansonsten auch eintragen (Bei mir für 50 WS2801):
    IP-Adresse des ESP8266 ggbfs anpassen (DNS Name hostname siehe Quellcode)


    Arduino IDE - Quellcode ESP8266


    Im Anhang mein C/C++ Code für den NodeMCU/ESP8266. Einfach in den Arduino Sketchordner entpacken und anpassen.


    Bitte die ConfigStatic.h.example nach ConfigStatic.h kopieren und anpassen.
    LEDs mit nur einer Data-Leitung (z.B. WS2811) sind als clockless zu betrachten. Dort bitte den
    #CONFIG_LED_CLOCKLESS_CHIPSET einkommentieren und den Namen dementsprechend setzen.
    ConfigStatic.h (bitte die aktuelle Version aus dem GitHub verwenden)


    Arduino IDE - Hochladen
    Einfach den ESP8266/NodeMCU per USB an den Rechner, ggbfs unter Werkzeuge den Port anpassen.
    Jetzt am Besten noch den Serial Monitor (Werkzeuge) starten und die Baudrate auf 115200 ändern, dann solltet ihr das Logging sehen, wenn der Sketch auf dem NodeMCU läuft.
    Auf den Pfeil oben Rechts klicken (hochladen).
    Schon ist das Werk vollbracht.


    Serial Monitor Output sieht wie folgt aus:


    Jetzt im Git
    https://github.com/SciLor/ESP8266_Hyperion_LED-Controller


    Nachwort
    Vielen Dank für Eure Unterstützung, besonders an:
    -tpmodding
    -raspbastler
    -Kollektiv02
    Vielleicht hab ich noch jemanden vergessen, nicht traurig sein!


    PS
    Falls mir jemand ein Dankeschön schicken möchte: http://www.scilor.com/donate.html

  • sehr nice.
    gleich mal ne node bestellt.
    leds liegen eh noch rum.
    ich blicks zwar noch nicht so richtig aber ich freu mich schon durchzufrimeln :)

  • Servus,


    erstmal vielen Dank für das Tutorial. :thumbs1:


    Ich habe da aber noch Fragen. Evtl. kann man die Antworten später mit in das Tutorial bringen.


    1.



    Bei den von dir genannten NodeMCU Devkit Modul brauche ich kein USB zu Serial Wandler, der ist schon mit auf der Platine oder ?


    Ich habe mir hier ein Video zu ESP 8266 angeschaut. Dort wird so ein Teil benötigt.




    2.


    Läuft das NodeMCU Devkit Modul mit 5V Versorgungsspannung? Im oben genannten Video sind es 3,3V. (aber auch ein anderes Modul)


    Vorteil: Ich brauche nur 1 Netzteil bzw. brauche ich keine Schaltung um von 5V auf 3,3V zu kommen. Ich kann mich mit an das Netztteil für die Leds hängen.

    Einmal editiert, zuletzt von Kollektiv02 ()

  • 1.
    Bei den von dir genannten NodeMCU Devkit Modul brauche ich kein USB zu Serial Wandler, der ist schon mit auf der Platine oder ?
    2.
    Läuft das NodeMCU Devkit Modul mit 5V Versorgungsspannung? Im oben genannten Video sind es 3,3V. (aber auch ein anderes Modul)


    Zu 1:
    Das Devkit hat einen USB/Serial Wandler integriert (Einfach per USB anschließen). Nur beim einzelnen ESP8266 wird das benötigt.
    Zu 2:
    Ich speise das Modul über USB (5V). Ich denke aber (sollte keine Diode verbaut sein) lässt sich das
    Modul auch über den 5V Pin speisen.


    Läuft alles auf 5V

  • Ich weiss leider nicht wie leicht/schwer es ist mit dem esp zu programmieren und/oder wie weitreichend deine skills sind. wäre es mödlich das du die meist genutzten leds in die firmware einbindest? (ws2801/ws2812b/lpd8806/apa102) und dann auf der "startseite" des esp abfragen machst : wlan name, wlan password, dhcp/manuell, LED typ:


    ich hab leider sogut wie kein wissen was die esp programmierung angeht...ob der überhaupt genug speicher für all das hat? aber nur mal so brainstorm-mässig vielleicht bringts ja was :) vielen lieben dank!

  • Hallo zusammen,


    FastLED unterstützt den ESP8266 seit einigen Wochen nativ. Und da diese Library nahezu alle gängigen LED Controller befeuern kann, ist es vielleicht sinnvoll, darauf bei der weiteren Entwicklung hier aufzubauen.


    Ich möchte den Usern hier meinen herzlichsten Dank für ihr Engagement und ihre Kreativität aussprechen! Was ihr in der letzten Zeit angepackt und erfolgreich umgesetzt habt, ist der Wahnsinn!


    Ich selbst habe einige NodeMCU 1.0 und auch ESP-01 hier herumliegen, die gespannt auf ihren Einsatz zusammen mit WS2812b Strips warten, um mein Hyperion Ambilight vom RPi auch auf die Seitenwände des Wohnzimmers zu bringen.


    Gruß,


    El Mare

  • Hallo zusammen,


    scilor:
    Vielen dank dafür.. ich hatte mal schnell versucht deinen Sketch für einen ESP-01 zu übersetzten klappte aber nicht auf Anhieb, da habe ich erst mal einen anderen Weg verfolgt....
    Der nodeMuc ist aber bestellt... dann kann ichs testen, wenn ich's denn schaffe den Support für WS2812B einzubauen ;-)



    Zitat

    esp abfragen machst : wlan name, wlan password, dhcp/manuell, LED typ:


    Anzahl der Leds nicht vergessen ...


    Zitat

    An einen ap hatte ich noch nicht gedacht. Ich schau mal wann ich das umsetzen kann


    Da musst du das Rad nicht neu erfinden, das hat schon mal jemand für den ESP gemacht, aber ich finde den Link grade nicht, vllt kann tpmodding hier kurzfristig aushelfen...
    Das Problem mit diesem "sketch" ist, das er sich mit meinem WLAN verbinden konnte, ich hatte zuletzt die Verschlüsselung im verdacht, konnte dann aber nicht weiter testen,
    vllt möchte das jemand anders probieren


    //edit: Link doch gefunden: https://github.com/sticilface/ESP8266-wifi
    //edit2: hoch lebe opensource


    Gruß
    booStar

  • Für alle, die mit FastLED testen möchten: es gibt aktuell ein paar Probleme mit neuen Versionen der Arduino IDE und des ESP8266 core. Infos und Lösungen z.B. hier in den Kommentaren
    https://plus.google.com/+simonemarin/posts/hwqRR7Nqen4


    Ansonsten funktionieren m.W. auch die Adafruit Neopixel Library und Neopixelbus auf dem ESP8266.


    Ich bevorzuge stets FastLED, da die lib extrem schnell und mächtig sowie von einer hervorragenden Community umgeben ist. Ich kann mir vorstellen, dass diese Vorzüge auch für Hyperions neuerliches "Expansionsbestreben" sehr hilfreich sein werden.


    Gruß,


    El Mare

  • Als Anregung für die Config per WLAN/Webseite, so in etwa wäre es nicht schlecht, oder?



    Kann man u.a. Modus "AP/Client", WLAN Parameter, LED Typ, ... jederzeit ändern. Ich setze die derzeit bei zwei meiner ESP-Clients ein und finde das derzeit als sehr angenehm die Parameter zum testen mal ebend ändern zu können.


    Quelle (Source git) ist die EspLightNode Firmware


  • Hallo,


    also ich hab mir das nochmal genau angesehen, bekomme es aber trotzdem nicht gebaut...
    da gibts irgendwie probleme beim logging...



    Jemand eine Idee?

  • Code
    1. uments\Arduino\libraries\Logging/Logging.h:12:22: fatal error: avr/io.h: No such file or directory
    2.    #include <avr/io.h>
    3.                       ^
    4. compilation terminated.
    5. exit status 1


    Jemand eine Idee?



    Hey BooStar,
    es sollte reichen in der Logging.h folgendes auszukommentieren:

    Code
    1. extern "C" {
    2.  #include <avr/io.h>
    3. }
  • Cool, danke...
    der Fehler ist damit behoben...
    Leider kommt nun ein anderer:


    C
    1. In file included from C:\Users\turbo\Desktop\sketch\HyperionRGB\HyperionRGB.ino:13:0:
    2. sketch\WrapperJsonServer.h:5:25: fatal error: ArduinoJson.h: No such file or directory
    3. #include <ArduinoJson.h>
    4.                       ^
    5. compilation terminated.
    6. exit status 1
    7. Fehler beim Kompilieren.

  • Cool, danke...
    der Fehler ist damit behoben...
    Leider kommt nun ein anderer:


    C
    1. In file included from C:\Users\turbo\Desktop\sketch\HyperionRGB\HyperionRGB.ino:13:0:
    2. sketch\WrapperJsonServer.h:5:25: fatal error: ArduinoJson.h: No such file or directory
    3. #include <ArduinoJson.h>
    4.                       ^
    5. compilation terminated.
    6. exit status 1
    7. Fehler beim Kompilieren.


    Lade dir bitte noch die ArduinoJSON Bibliothek herunter.

  • Also entweder da stimmt was nicht, oder ich stelle mich zu doof an...



    ne Idee?