Day 17: Wake Up Light

Today’s project deals with a well-known lamp from Phillips, the Wake Up Light. This is an alarm clock that, instead of making a loud noise, slowly increases the brightness. This creates a type of sunrise, and one wakes up in a natural manner.

Behind today’s door is another potentiometer, which is important for tomorrow’s test. The following layout is required today:

Die RGB LED mit Vorwiderständen

The RGB LED with series resistors



After the set-up, you can download the programme and upload it to the board. After the installation, open the browser and enter the IP address of the board. On the page that now appears, you can select a time at which the wake-up process should start. You can also set the duration. In the standard setting, it’s 30 minutes. When the time is reached, the LED begins to light up red weakly at first. It slowly becomes brighter, and then the green LED mixes in, which creates a yellow tone. Finally, the blue LED also lights up, which results in a white with which the entire bedroom is brightened.

Auf dieser Webseite stellen Sie den Timer

Set the timer on this website

32 Comments

  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

    Reply
  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?

    Reply
  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….

    Reply
  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.

    Reply
  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?

    Reply
    1. Marco

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

      Gruß,
      Marco

      Reply
      1. Gerd

        Hallo Marco,

        besten Dank! Funktioniert!

        Gruß Gerd

        Reply
  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.

    Reply
  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?

    Reply
    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

      Reply
  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.

    Reply
    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.

      Reply
    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.

      Reply
      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);
        }

        Reply
  9. paulaner

    @bernd

    In der IDE Bearbeiten -> Springe zu Zeile…

    oder

    Datei -> Voreinstellungen -> Zeilennummern anzeigen

    Reply
    1. paulaner

      zu spät

      Reply
  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".

    Reply
    1. paulaner

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

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

      Reply
      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.

        Reply
  11. Klaus

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

    Reply
    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.

      Reply
  12. Detlef Redante

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

    Reply
    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

      Reply
  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

    Reply
    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.

      Reply
  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

    Reply
  15. blaubaer

    Hallo,

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

    Mal sehen, was da los ist…

    Grüße, Michael

    Reply
    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…

      Reply
      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! ;-)

        Reply
        1. htaz

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

          Reply
        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

          Reply
          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)

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.