Home automation - #1 De ontdekkingsreis

Posted by Sander van Kasteel on April 14, 2015 · 721 words, 5 mins read

Categories:

Al een flinke tijd ben ik aan na het nadenken over domotica (ook wel home automation genoemd, wikipedia) en hoe ik het precies wil gaan indelen en gaan aanpakken.

Nu woon ik zelf gelukkig niet zo heel erg groot (ongeveer 26m2 exclusief badkamer en keuken) dus valt het allemaal wel weer mee hoeveel sensoren ik precies nodig ga hebben.

Maar ik loop vooruit op de zaken. Zoals ik ook al zei, woon ik niet zo heel erg groot. Ik woon in een studio appartement met een aparte badkamer en een "aparte" keuken. Hier onder vind zie je de indeling van mijn 1 kamer appartement.

indeling

 

Maar ik heb inmiddels mijn eerste concept eisenpakket al opgesteld:
Woonkamer/slaapkamer

  • Licht aan en uit schakelen op basis van de hoeveelheid licht in de kamer
  • Temperatuur beheersing
  • Gordijnen open en dicht kunnen doen

Badkamer en gang

  • Licht aan en uit schakelen op basis van beweging

Keuken

  • Licht aan en uit schakelen op basis van beweging

Dit is op dit moment het basis lijstje maar daarnaast wil ik eigenlijk ook nog alles kunnen aansturen via een webinterface. Dus alles moet ook nog eens een connectie hebben met mijn WiFi netwerk.

Maar voor dat ik zoiets echt kan gaan bouwen, zal ik eerst maar eens even een prototype gaan moeten maken. Als eerste proof of concept wil ik een LED aan en uit schakelen op basis van de hoeveelheid licht in de kamer.

Voor deze proof of concept heb ik een aantal standaard componenten gebruikt.

  • 1x Licht gevoeligeweerstand (ook wel een LDR genoemd, wikipedia)
  • 1x Rode LED
  • 1x 220 Ohm weerstand
  • 1x 10k Ohm weerstand

Hier onder vind je de aansluitschema's hoe alles aangesloten zit op de Arduino.

breadboard

schematic

Dit schema werkt op basis van een spanningsdeler (Wikipedia Engels / Nederlands), dus zodra er meer licht op de LDR komt zal er minder weerstand optreden waardoor een lagere waarde uit te lezen valt op AnalogPin 0. De Arduino zal vervolgens de rest van automatisering van zijn rekening nemen. Dit wordt gedaan met de onderstaande code;

[code language="cpp"]
int LDR_Pin = A0; //analog pin 0
int led = 12;

void setup()
{
Serial.begin(9600);
pinMode(led, OUTPUT);
}

void loop()
{
int LDRReading = analogRead(LDR_Pin);

Serial.println(LDRReading);
delay(250); //just here to slow down the output for easier reading

if (LDRReading >= 600)
{
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
[/code]

Zodra de uitleeswaarde van AnalogPin 0 meer of gelijk is aan 600 (dan is het donker) dan zal de Arduino de LED aanschakelen (door hem te voorzien van 5 volt). Daarnaast heb ik voor het uitvinden van de waarde waarop ik wil schakelen een Serial.println() toegevoegd zodat ik in de Arduino IDE via de seriële monitor de waarde op dat moment kan bekijken. Zo ziet het er dan als volgt uit.

LDR-3

En dan is het nu tijd voor het moment suprême. Werkt het ?

Ja het werkt! Nu is dit wel een proof of concept en is dit alles behalve realistisch en betrouwbaar. Een LDR is goedkoop (20 stuks voor $1,- via eBay) maar de resultaten die je hier uit krijgt is niet heel erg betrouwbaar want als er al een schaduw op de LDR valt dan zal deze al meer weerstand geven terwijl er eigenlijk vrij weinig echt veranderd is aan de hoeveelheid aan licht in de kamer.
Mocht je het betrouwbaarder willen hebben (dus het aantal lumen willen meten), dan zijn er een aantal andere mogelijkheden. Je zou een TSL230R, TSL2561 of een TEMT6000 kunnen gebruiken hiervoor en die zijn al een stuk accurater.

Maar het is op dit moment nog maar een proof of concept. Mijn eerst volgende stap is het toevoegen van WiFi aan deze proof of concept zodat ik via een webinterface de LED kan gaan schakelen. De WiFi ga ik toevoegen door middel van een ESP8266 module. Maar daar ga ik het binnenkort eens over hebben zodra ik hem binnen heb en dan gaan wij hier mee verder!