Tag 23: Cheerlights

Der heutige Versuch basiert auf einem Projekt von Hans Scharler, das sich Cheerlights nennt. Die Idee: weltweit vernetzte Lichter,  die sich simultan über Twitter Kommandos steuern lassen. Eine gutes Beispiel, dass die Welt mit dem Internet immer enger zusammenwächst.

Hinter dem heutigen Türchen befindet sich ein viertes Verlängerungskabel mit dem sich nun auch endlich die RGB-Led abseits vom Board platzieren lässt. Das kann besonders praktisch sein, wenn Sie beispielsweise das Board im Weihnachtsbaum verstecken wollen während die RGB-LED die Krone des Baums schmückt.

Die RGB-Led auf dem Steckboard an den Pins D3, D5 und D6

Die RGB-Led auf dem Steckboard an den Pins D3, D5 und D6

Das Programm: Day23_CheerLights

Für das heutige Programm müssen Sie ausnahmsweise keine eigenen ThingSpeak Änderungen vornehmen, denn das Projekt hat einen öffentlichen Kanal, den Sie unter dem Link

https://thingspeak.com/channels/1417

finden. Auf der Seite finden Sie außerdem immer die aktuelle Farbe angezeigt und weitere Informationen über das Projekt.

Die öffentliche ThingSpeak Seite für das Cheerlights-Projekt

Die öffentliche ThingSpeak Seite für das Cheerlights-Projekt

Für das Programm ist zudem die Crossfade-Library von Radek Wierzbicki notwendig (Quelle: https://github.com/radekw/Arduino/tree/5f24ce7c8db9dfbb5252b59824c3217d851b3a3c). Aus praktischen Gründen ist eine Kopie der verwendeten Library-Version im Sketchordner enthalten. Diese muss in den libraries-Ordner Ihres Sketchbook-Ordners kopiert werden. Die Library ermöglicht es schnell und einfach Farben zu definieren und sorgt zusätzlich dafür, dass die LEDs langsam in eine andere Farbe überblenden (fade genannt).

Wenn Sie nun das Programm uploaden, wird nach ein paar Sekunden die aktuelle Farbe von der LED angezeigt. Sie können nun eine Twitter-Nachricht verfassen und damit Ihre, und auch die Farbe aller anderen Cheerlights Nutzer verändern. Die Nachricht muss zum einen #Cheerlights, @Cheerlights oder einfach nur das Stichwort Cheerlights enthalten und zum anderen eine der vordefinierten Farben hinter dem Stichwort stehen haben. Zu den vordefinierten Farben gehören:

red, green, blue, cyan, white, warmwhite, purple, magenta, yellow, orange, pink

Ein Möglicher Tweet also:

Testing my #cheerlights project on my #NanoESP with the color blue #ThingSpeak #IoT

oder eine ähnliche Nachricht. Schon haben Sie der ganzen Welt eine neue Farbe gegeben.

28 Kommentare

  1. SJ

    Der Aufbau und Programm funktionieren aber ich schaff es nicht via Tweet die Farben zu wechseln.
    Hab alle möglichen Kombinationen probiert aber Farbwechsel gibts nur von anderen ausgelöst…

    1. singmai

      unter
      https://twitter.com/hashtag/cheerlights?src=hash

      Farbe twittern z.B.
      #cheerlights green

      Farben siehe
      https://thingspeak.com/channels/1417

  2. Marten

    Ich habe ein Problem
    ESP SEND ERROR: AT+RST
    ….
    …..
    ….
    Kann jemand mir hilfen?

    1. Klaus

      Einmal Strom weg und wieder einschalten. Passiert bei mir auch an diesem Tag immer wieder. Warum auch immer. Auch ein Reset hilft nix.

  3. Marge

    Die schönste und interessanteste Lampe die ich je hatte :)
    Danke

  4. Beni

    Coole Idee, vielen Dank für die kurzweiligen Experimente

  5. hugoboss

    Bei Auswahl green erlischt meine RGB-LED.
    Bei Auswahl yellow leuchtet sie rot.
    Die scheint wohl defekt zu sein, oder ist das bei euch auch so?

    1. Schlork

      Grün funktioniert bei mir

    2. Andreas

      Die LED ist ziemlich sicher nur falsch angeschlossen, also verdreht und/oder die Pins sind mit den falschen digitalen Ausgängen des Boards verdrahtet. Bitte nochmal genau den Aufbau mit dem Schema vergleichen.

      1. Klaus

        Ich würde sagen, sie ist ganz sicher nicht falsch angeschlossen, sondern einfach nur ein Kontaktproblem. Wenn sie falsch angeschlossen wäre, würde die Farbe nicht stimmen. Hier fehlt einfach nur grün. Gelb ist nämlich rot+grün.

  6. Kartoffel Barbosa

    Supi :-)

    – Aber das Board zieht Saft wie Zunder. Ich habe schon 2 9V Bloecke leer ziehen lassen :-)

    Fuer Cheerlights haelt der 9V Block 4h. –

    1. Karsten

      Ist ja auch kein Wunder, Du betreibst die RGB LED ohne Vorwiderstaände, da fließen gerne mal 30 mA pro LED. Wenn wie bei weiß alle 3 LEDs an sind verbraten die schon alleine 100 mA, dazu noch das Board, da sind auch noch 3 LEDs an… Die guten Blockbatterien haben so etwa 500mAh.

      1. Kartoffel Barbosa

        Schon klar. Aber so leuchtet es schoener zu Weihnachten :-)

        ’s Board haengt jetzt wieder am Laptop.

  7. Kartoffel Barbosa

    Supi :-)

    Aber das Board zieht Saft wie Zunder. Ich habe schon 2 9V Bloecke leer ziehen lassen :-)

    Fuer Cheerlights haelt der 9V Block 4h.

    1. jz

      Für den Weihnachtsbaum empfiehlt sich eine Powerbar oder ein Batteriehalter mit Akkus.

  8. Leo de Blaauw

    love this project really cool !

  9. Jojo

    Ich hab schon seit dem Twitch Projekt das Problem, dass bei den getHttp-Funktionen nie der innere Teil der abschließenden IF Abfrage ausgeführt wird. Also das

    if (esp8266.find(„\r\n\r\n“)) { … }

    Woran kann das liegen?

    1. Jojo

      es wird noch kuriöser… der Fehler tritt nur bei der Arduino-Umgebung unter Ubuntu auf – bei Windows funktionierts.
      ¯\_(ツ)_/¯

      1. nerd

        Möglicherweise ist das die Strafe für Unix Anwender!

        Unter Windows wird als Zeilenende meist \r\n verwendet.
        Unter Unix ist nur \n üblich.

        Bin aber kein Unix/Linux-Kenner.

  10. Schlork

    Hallo, muss heute noch Arbeiten und habe das Projekt noch nicht gemacht.

    Für morgen: Es gibt neben unserer Familie sicherlich noch andere, die am Heiligabend etwas außer Haus unternimmt, damit das Christkind ungestört die Geschenke unter den Baum platzieren kann. In der Vergangenheit wurden bei uns schon mal (von uns Eltern unbemerkt) Videokameras im Dauerbetrieb installiert, die das Christkind überführen sollten. Da hatte dann zum Glück die Akkulaufzeit etwas dagegen und die Enttarnung der Nachbarin fand nicht statt.

    Ich werde morgen die Wohnung etwas abdunkeln und den Twitteralarm von Tag 21 installieren. Mal schauen, ob uns unterwegs der Tweet dann darüber informiert, dass jemand da war. Zuhause werden wir dann sehen, ob es das Christkind war oder doch ein Einbrecher.

    Ganz ausgefeilt könnte man noch eine Kamera installieren, die das Signal bekommt, den Aufnahmemodus zu starten :-).

  11. hugoboss

    Coole Sache !!! funktioniert :-)

    1. hugoboss

      Übrigens es funktioniert auch mit der Kurzform wie zB:

      #cheerlights white

  12. jz

    Echt cool! Jetzt ist mein Wohnzimmer in der globalen Cheerlights-Farbe beleuchtet.
    Kombination von Tag 23 mit Tag 18, funktioniert.

    Leider geht das für Tag 24 nicht: Tone und IRremote vertragen sich nicht.
    Beim Kompilieren gibts einen Fehler: Mehrfachdefinition von __vector_7.
    Beide wollen den gleichen Timer 2 verwenden.
    Der Atmega328 sollte gemäss Datenblatt 3 Timer enthalten; in Tone.cpp wird aber nur Timer 2 als verfügbar angegeben.
    Weiss jemand, welche Timer im Pretzelboard wozu verwendet werden?

    Frohe Festtage und schöne Cheerlights wünsche ich allen. jz.

    1. Hartmut

      Auf dem Nano (ATmega328) gibt es drei Timer, von denen Timer 0 für interne Zwecke (z.B. millis()) benutzt wird. tone() sollte sich eigentlich den Timer selber aussuchen, benutzt dabei als erstes den Timer 2.
      IRremote (zumindest in der mitgeliferten Version) benutzt einen fest definierten Timer, für den Nano eben den Timer 2.

      Ohne das ich irgend was ausprobiert habe, es sollte reichen, wenn man den Timer bei IRremote fest auf Timer 1 ändert. Ich glaube, dass der in IRremote (genauer in IRremoteInt.h) der verwendete Timer einstellbar ist.

      Wenn Du das getestet hast, lass uns das Ergebnis wissen.

      1. Hartmut

        Das steht in IRrmoteInt.h
        // define which timer to use
        //
        // Uncomment the timer you wish to use on your board. If you
        // are using another library which uses timer2, you have options
        // to switch IRremote to use a different timer.

        // Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
        #else
        //#define IR_USE_TIMER1 // tx = pin 9
        #define IR_USE_TIMER2 // tx = pin 3
        #endif

        Also einfach
        #else
        #define IR_USE_TIMER1 // tx = pin 9
        //#define IR_USE_TIMER2 // tx = pin 3
        #endif
        und es könnte gehen (wenn es nur am verwendeten Timer liegt).

      2. jz

        Danke für die Hinweise! Ich war inzwischen auch so weit.

        Zeilen 205 und 206 in IRemoteInt.h ändern.
        Nicht benötigten Code in Day24_Christmas.ino entfernen oder auskommentieren, sonst bleibt zu wenig dynamischer Speicher.

        Dann funktioniert die IR Ansteuerung meines Aldi-RGB-LED-Strips (NEC Protokoll) auch mit Day24.
        Die Commands muss ich nochmals testen mit dieser Version.
        Im Serial Monitor erscheinen zusätzliche Leerzeilen; beim Commands-Empfang scheint etwas noch nicht ok zu sein.

        Fröhliche Weihnachten!

        1. jz

          Die Commands konnten nicht empfangen werden, wegen immer noch ungenügendem dynamischen Speicher. Der entsprechende Request war unvollständig; ein String wird nicht verlängert bei ungenügendem Speicher.
          Ich musste den Jingle im PROGMEM speichern, und zusätzlich getTalkBackCom() optimieren.

          Der Lerneffekt war da und es hat wieder Spass gemacht.

          Danke für den tollen Kalender!
          (und Geduld für zusätzlichen Kommentar im Code des nächsten).

  13. Janick

    Cooles Projekt :)

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.