Winterdepressie? Bouw een Arduino wake-up light!

Winterdepressie? Bouw een Arduino wake-up light!

Gepubliceerd op: 12-10-2014 16:33

Hé, jij houdt niet van advertenties maar wél van kwaliteitscontent? Dat mag, maar misschien wil je dan een donatie doen via PayPal of creditcard?

Of doe je aankopen via één van onze winkelpartner-links in de zijbalk.

UPDATE 8-10-2015! Nu de dagen weer korter worden krijgen veel mensen last van sombere gevoelens en moeite met opstaan. Met behulp van een RGB wake-up light kun je, ondanks de duisternis, toch op een natuurlijke manier wakker worden. We laten namelijk niet alleen de intensiteit van het licht toenemen, we veranderen ook de kleurtemperatuur!

RGB wake-up light met zonsopkomst-simulatie

De gewone Wake-up Light kennen we inmiddels allemaal wel. Gedurende een half uur voor de eigenlijke wektijd begint de lamp langzaam op te gloeien, steeds sterker in intensiteit, totdat hij op volle sterkte brandt. Dit langzaam aansterkende licht imiteert op deze manier een zonsopkomst voor dat natuurlijke wakker-wordt-gevoel.

Kleurverloop van een zonsopkomst op Aarde

Wanneer we een zonsopkomst echter nader bestuderen zien we dat niet alleen de intensiteit van het licht veranderd, maar ook de kleur: van een zachtroze-rode gloed, steeds oranjer wordend, naar geel tot felwit midden overdag. Met behulp van RGB-leds kunnen we deze kleurovergang perfect imiteren, en naast wake-up light kunnen we de lamp ook gewoon gebruiken als sfeerverlichting.

RGB-led's aan de Arduino

In feite is een Arduino Uno zwaar overkill voor het aansturen van een simpele RGB-led, daarom maak ik van de lamp meteen een extra slave van mijn home automation systeem en hang ik er nog wat extra functies aan. Wanneer je de RGB-led's direct aan de Arduino wilt aansluiten houd er dan wel rekening mee dat je maximaal 40 mA uit een pin kunt trekken. Bij gebruik van standaard LED's kun je er dus twee per pin aansluiten. Bij gebruik van meerdere LED's of power-LED's heb je een versterker nodig in de vorm van een transistor of een FET zoals bij het aansturen van een LED-strip.

Arduino met RGB-leds in een Lykta lamp als wake-up light

Qua extra functionaliteit hang ik een DHT11 luchtvochtigheidssensor en een DS18B20 temperatuursensor aan de wake-up light. Zo kan ik deze cruciale informatie over het slaapkamerklimaat opnemen in mijn Arduino home automation system. Meer informatie over deze sensoren vind je in het artikel over het Arduino weerstation.

LED kleuren faden

Hoe fade je nu van de ene kleur naar de andere kleur? De huidige waarde van de RGB-led's sla je op in Red, Green en Blue, en de waardes waar je naar toe wil, de nieuwe kleur dus, noem je toRed, toGreen en toBlue. Per kleur moet je vervolgens de waarde verhogen of verlagen om op de juiste waarde uit te komen, als de waarde bereikt is zet je endRed, endGreen of endBlue op true. Hiermee check je vervolgens of de fade voltooid is en laad je de volgende kleur uit het lijstje.

if (millis() - fadeMillis > fadeSpeed) {
  fadeMillis = millis();
  if (endRed == false || endGreen == false || endBlue == false) {
    if (Red < toRed) { Red++; } else if (Red > toRed) { Red--; } else { endRed = true; }
    if (Green < toGreen) { Green++; } else if (Green > toGreen) { Green--; } else { endGreen = true; }
    if (Blue < toBlue) { Blue++; } else if (Blue > toBlue) { Blue--; } else { endBlue = true; }
    analogWrite(RedLed, Red);
    analogWrite(GreenLed, Green);
    analogWrite(BlueLed, Blue);
  }
  else {
    if(Color < 7) {Color++;} else {Color=1;}
    switch (Color) {
      case 1:
        toRed = 255; // rood
        toGreen = 0;
        toBlue = 0;
      break;
      case 2:
        // etc..
      break;
    }
    endRed = false;
    endGreen = false;
    endBlue = false;
  }
}

Wekken met of zonder geluid?

Aangezien een wekker zonder geluid toch een klein risico vormt voeg ik ook nog een speaker toe aan de wekker. Met behulp van de tone()-library van Arduino kan ik op deze manier een eenvoudig weksignaal ten gehore brengen op het moment dat er toch écht opgestaan moet worden. De speaker is in mijn geval een klein plastic speakertje van 1/4 Watt bij 16 Ohm uit een oud antwoordapparaat (kent u deze nog nog nog?). Met een weerstandje van ongeveer 100 Ohm in serie kan deze op een Arduino pin worden aangesloten.

De klok die altijd goed loopt

Een wekker die een half uur verkeerd loopt heeft natuurlijk weinig nut. Het is van belang dat de wekker over een accurate ingebouwde klok beschikt. Omdat mijn wekker als home automation node toch aan het netwerk gekoppeld is kan hij eenvoudig met een atoomklok synchroniseren via het NTP-protocol. Elke nacht rond 12 uur synchroniseer ik de klok met een timeserver op internet, en gedurende de dag gebruik ik de time-libary om de klok op gang te houden. Hoe dit precies in zijn werk gaat lees je in het artikel over het syncen van je Arduino via NTP.

Wekker met web-interface

Omdat de wake-up light als node in mijn home automation system fungeert kan ik voor het instellen van de wektijd en bedienen van de lamp eenvoudig gebruik maken van de al aanwezige web-interface. Via mijn smartphone kan ik nu de wake-uplight instellen en bedienen, maar ook uitgebreidere scènes kunnen aangestuurd worden door de wake-up light. Als de wektijd is verstreken gaat bijvoorbeeld de verlichting in de huiskamer aan, de spaarlampen zijn dan mooi opgewarmd als ik aangekleed beneden kom!

IKEA Lykta Wake-up light

Arduino Wake-up Light met RGB-leds in een IKEA Lykta lamp

Onder 'makers' wereldwijd zijn IKEA producten altijd geliefde objecten geweest om te modificeren. In de eerste plaats omdat ze goedkoop zijn, maar ook omdat ze eenvoudig uit elkaar gehaald kunnen worden, en dus aangepast kunnen worden door doe-het-zelvers. In het geval van onze wake-up light wekker kies ik voor de Lykta van IKEA. Een eenvoudige matglazen lamp die het waarschijnlijk prachtig gaat doen met RGB-led's er in. Met behulp van een tang en een platte schroevendraaier draai je de fitting met snoer en al eenvoudig uit de lamp.

Matte LED's vs. Heldere LED's

Eigenlijk zonder er bij stil te staan kocht ik eens een partij heldere 5mm RGB-led's. Helaas bleken deze niet heel goed in staat tot het mixen van egale kleuren. Na installatie in de Lykta zag je duidelijk drie gekleurde lichtvlekken ontstaan (rood, groen en blauw) en alleen daar waar ze elkaar kruisten de gewenste kleur. Gelukkig bleek dit eenvoudig opgelost door met een fijn schuurpapiertje de heldere LED's om te toveren in matte LED's met als resultaat een mooie egaal gekleurde gloed uit de Lykta lamp.

Andere ideeën voor de wake-up light

Een zonsondergang kan heel rustgevend zijn om bij in slaap te vallen en is in feite een omgekeerde zonsopkomst. Misschien voeg ik binnenkort dus een "sleep-down light"-functie toe :-D Hebben jullie nog ideeën om de Arduino Wake-up Light te verbeteren? Laat het me weten in de reacties!

2 reacties op dit artikel »

Meer van dit soort artikelen lezen?