Tag 17: Wake Up Light

Das Projekt des heutigen Tages orientiert sich an einer bekannten Lampe von Phillips, dem Wake Up Light. Es handelt sich dabei um einen sanften Wecker, denn anstelle laut zu tönen wird langsam die Helligkeit erhöht. So entsteht eine Art Sonnenaufgang und der Körper wird auf  natürliche Weise wach.

Hinter dem heutigen Türchen befindet sich ein weites Poti, welches für den morgigen Versuch wichtig ist. Heute wird folgender Aufbau benötigt:

Die RGB LED mit Vorwiderständen

Die RGB LED mit Vorwiderständen


Nach dem Aufbau können Sie das Programm herunterladen und auf das Board uploaden. Nach dem Aufspielen öffnen Sie den Browser und geben die IP des Boards ein. Auf der nun erscheinenden Seite können Sie einen Zeitpunkt auswählen, zu dem der Wake-Up-Vorgang starten soll. Außerdem können Sie die Dauer angeben. In der Standardeinstellung sind es 30 Minuten. Wenn der Zeitpunkt erreicht wird, beginnt die LED zunächst rot und dunkel zu leuchten. Langsam wird sie immer heller und schließlich mischt sich auch die grüne LED dazu, was einen gelben Ton ergibt. Zuletzt erhellt sich auch die blaue LED, was in einem helles Weiß resultiert mit dem das ganze Schlafzimmer erhellt wird.

Auf dieser Webseite stellen Sie den Timer

Auf dieser Webseite stellen Sie den Timer

32 Kommentare

  1. Mario Fritzer

    Hallo,

    ich kann den Code nicht mehr ansehen.
    Es steht immer dort „This sketch is no longer here“.
    Hat den noch jemand?

    LG

  2. sv

    Auch nach mehreren Anläufen und Rumprobieren mit den Tipps aus dem Kommentaren leuchtet das Lämpchen immer noch nicht. Die Hardware habe ich mit dem Programm vom Tag 10 schon getestet, damit sollte also alles in Ordnung sein.
    Das ist der Text aus dem seriellen Monitor. M.E. fehlt die Info, wann die Lampe angehen soll, oder? Hat jemand eine Idee?

  3. Enno Klatt

    Raspberry Pi Nutzer

    „rien ne va plus“

    Lieber Fabian Kainka,

    bitte machen Sie die Community darauf aufmerksam, das mit der aktuellen Arduino-IDE z.B. auch Tag 17 wegen diverser Compiler-Fehlermeldungen nicht machbar ist…

    Die Arduino-IDE ist einfach veraltet….

  4. Markus

    Kennt jemand eine Möglichkeit die anderen 3 LEDS (2 blaue, 1 rote) auf dem NanoESP auszuschalten? Nachts sind sie mir zu hell.

  5. Gerd

    ich hab ein ganz anderes Problem
    Beim Hochladen kommt folgende Fehlermeldung:

    exit status 1
    ’setSyncProvider‘ was not declared in this scope

    hat jemand eine Idee wie ich damit umgehen soll?

    1. Marco

      Wird TimeLib.h am Anfang der Datei korrekt eingebunden? Das sollte die Funktion beim Compiler bekannt machen.

      Gruß,
      Marco

      1. Gerd

        Hallo Marco,

        besten Dank! Funktioniert!

        Gruß Gerd

  6. DS2072

    Also ich habe W-Lan. Ich habe TCP aktiv. Und es hat bei mir bis jetzt kein einziges Mal hingehauen. Mal brennt die RGB-LED ganz oder sie gar nicht. Aber niemals zum korrekten Zeitpunkt.

    Wenn ich in den seriellen Monitor reinschaue wird mir immer wieder angezeigt no time received. Die Verbindung zum Zeitserver besteht aber, denn beim Verbinden wird mir das richtige Datum und die korrekte Uhrzeit angezeigt.

  7. Nico

    Aus mir nicht erklärlichen Gründen verbindet sich mein NanoESP bei diesem Projekt nicht mit dem WLAN, ich bekomme immer ein „ERROR WLAN Connect“ ausgeworfen, SSID und Passwort habe ich von den anderen Projekten kopiert… Bis jetzt hat es jeden Tag geklappt :/ Hat jemand eine Idee?

    1. kub0185

      Ist bei mir genau so…
      Error WLAN Connect
      TCP Server Error

      no connection ntp server
      No time request send
      Date: 1.1.1970
      Time: 00:01:27
      Date: 1.1.1970
      Time: 00:02:0

  8. A.H.

    Die behandlung der Variablen „interval“ und „iDuration“ stimmt nicht: „interval“ wird nur einmal am Anfang gesetzt und dann bei jedem „Senden“ auf der Webseite durch

    interval *= iDuration;

    faktisch nur noch erhöht.

    1. Hansi

      Stimmt.
      Habe das bei mir wie folgt gelöst:
      Eine Konstante mit der Basiszahl definiert:
      #define INTERVAL_BASE 78

      unsigned long interval = 78; //
      in
      unsigned long interval = INTERVAL_BASE; //vermutlich unnötig aber schadet nicht

      und
      interval *= iDuration;
      in
      interval = iDuration * INTERVAL_BASE;
      geändert.

    2. Simon

      Man kann die Zeile durch:

      interval = (int) iDuration*60000./256./3.;

      ersetzen.
      60000 Millisekunden in einer Minute
      256 Schritte in denen das Licht heller gemacht wird
      3 mal (rot -> grün -> blau)
      entspricht auch den 78 ms in fkainka’s Code.

      1. Simon

        Zusätzlich sollten die ganzen globalen Variablen nach jedem neuen „Daten absenden“ gesetzt werden.

        Also in void loop()
        bei

        if (ressource == „/settimer“) {
        if (parameter != „“) {
        //timer=02%3A03&
        cRed = 0;
        cBlue = 0;
        cGreen = 0;
        previousMillis = 0;
        // […] weiterer Code hier
        }
        nanoesp.closeConnection(id);
        }

  9. paulaner

    @bernd

    In der IDE Bearbeiten -> Springe zu Zeile…

    oder

    Datei -> Voreinstellungen -> Zeilennummern anzeigen

    1. paulaner

      zu spät

  10. Bernd

    leuchtet schön nachdem man die Zeit richtig hinkriegt. Kann man im arduino monitor sehen ob Zeit gesendet (letzte Reihe) und timer zeit wie gewollt sind.)

    Wenn man die duration time zu kurz setzt z.B. 2 min, bleibt die LED auf rot und geht nicht durch das ganze „programm“.

    1. paulaner

      Oder man ändert die Zeile 40
      unsigned long interval = 78; //

      und gibt z.B. 25 vor, für 2 Minuten Dimmung

      1. Bernd

        Danke,
        wenn man das noch nie gemacht hat ist es ein wenig wie blind fliegen, denn man (ich) hat keine Ahnung was das programm eigentlich macht.(Ohne Einführung in die Syntax).Ich hab z.B. erwartet dass das program mit der gesetzten Dauer alles entsprechend ändert (s. Simons Kommentar). Bis jetzt hab ich mich noch nicht in die programmsprache / struktur gekniet und das ist wohl nötig um solche Änderungen durchzuführen.
        naja
        Ich sehe es zur Zeit als Demo der Möglichkeiten.

  11. Klaus

    Du kannst in der Arduino-IDE unter Datei->Voreinstellungen ein Häkchen bei „Zeilennummern anzeigen“ setzen.

    1. bernd

      Danke,
      jezt brauch ich nicht mehr zu zählen.
      Für alle die kein Deutsches System haben: first menue column (file – preferences) Man kann auch im Arduino die Sprache von „system default“ auf „Deutsch“ setzen oder was man sonst gern hätte.

  12. Detlef Redante

    ich schätze, solange ich noch an meinem TCP Server Error hänge kann ich den Spaß vergessen :(

    1. Detlef Redante

      kann es sein, dass der ntpServerName falsch ist?
      ich habe ihn auf 192.43.244.18 geändert und mein TCP Server ist aktiv

  13. Heiko

    Hallo lieber Fabian Kainka,

    kannst du uns noch Infos geben oder sagen wo man sich informieren kann, über die HTML Seiten Erstellung und Implementierung unserer Versuche.

    Gruß Heiko

    1. Hansi

      Wie man eine Webseite in HTML erstellt erfährst Du z.B. auf selfhtml.de oder w3schools.com
      Wie das dann hier konkret umzusetzen ist, kannst Du auf den Seiten des letztjährigen Adventskalender ab Tag 13 (http://iot.fkainka.de/day-13) nachlesen (oder besser erforschen). Die Beschreibung ist es zwar nicht besonders gut, auch die Tools gibt es so nicht mehr aber mit Geduld und Spucke…
      Im Unterschied zum letzten Jahr werden die Webseiten übrigens heuer in der „Websites.h“ gespeichert und nicht mehr in der A16_Tag…ino. Ansonsten ist das recht ähnlich.

  14. blaubaer

    Hallo,

    das ist aber ein sehr sanftes Wecken und es dauert lange, bis das ganze Schlafzimmer in helles Licht getaucht wird….

    Mit (noch) schläfrigen Grüßen, Michael

  15. blaubaer

    Hallo,

    ….hm… – meine RGB-Led schaltet nicht ein…

    Mal sehen, was da los ist…

    Grüße, Michael

    1. blaubaer

      ….der Hardwareaufbau passt – er funktioniert mit dem Tag10-Programm. Die Webseite erscheint, ich kann Schaltzeitpunkt und Schaltdauer eingeben und der serielle Monitor quittiert die Eingabe. Aber die RGB-Led schaltet nicht ein…

      Das muss also am Programm liegen – ich tauche mal ab…

      1. blaubaer

        …Tag17-Programm neu eingespielt und geht – RGB-LED schaltet.

        Die aktuelle Zeit im Programm steht wohl noch auf Sommerzeit – eine Stunde später wird angezeigt! ;-)

        1. htaz

          Super das war der entscheidende Tipp – Danke jetzt funktioniert es auch

        2. Klaus

          „Die aktuelle Zeit im Programm steht wohl noch auf Sommerzeit – eine Stunde später wird angezeigt!“

          Die Zeitzone wird in Zeile 75 auf 2 gesetzt.
          Wenn du den Wert auf 1 änderst, hast du die richtige Zeit

          1. bernd

            guter tip aber bis 75 zu zählen ist etwas mühsam, denn bei mir sind keine Reihennummern vorhanden (im Arduino Fenster) Sah zu spät dass im obigen Bild Reihennummern sind..
            die Zeile nach der Änderung:
            „return (time_t)getNTPpacket(4, ntpServerName, 1);“

            die Zeit wurde dann richtig. (sieht man im arduino monitor)

Schreiben Sie einen Kommentar

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