Sep 142012
 

Elro Home Control Het voordeel van een systeem dat met een bepaald idee gebouwd werd, is dat het toevoegen van functionaliteit vaak heel eenvoudig is. Zo ook met de volgende stap die ik toegevoegd heb aan het bomvolle breadboard. Het toevoegen van een heel klein extra componentje, een 434MHZ RF Transmitter (komt in mijn geval van iPrototype) ter waarde van €3,95 en een klein beetje extra code, is de functionaliteit van het systeem een flink stuk uitgebreid. Ik kan nu via mijn browser op mijn laptop, iPad of iPhone namelijk op een drietal plekken in huis (is uit te breiden) apparaten of lampen aan en weer uit schakelen.

Schakelen op afstand
Daar had ik natuurlijk wel nog een andere component voor nodig: een set die het daadwerkelijke schakelen doet.
Je hebt ze vast wel al eens zien liggen bij de bouwmarkt, van die setjes van 2-3 pluggen die in een stopcontact moeten met een afstandsbediening er bij. De duurdere zijn vaak van merken als KlikAanKlikUit of Elro, bij de Action en de Blokker hebben ze vaak ook merkloze systemen.

Het aardige is dat die systemen, hoewel ze er meestal net iets anders uitzien, gebruik maken van dezelfde manier van communiceren. Want hoewel het wellicht lijkt alsof je een infrarood afstandbediening er bij krijgt, zou dat niet erg praktisch zijn. De stopcontacten zitten meestal immers niet in een direct zichtveld (maar achter kasten, bankstellen etc). Nee, ze maken gebruik van de 433MHz / 434MHz radiofrequentie.

434MHZ RF Transmitter
Een paar slimme mensen hebben dat protocol weten te vertalen naar een Arduino library en als je zo’n 434MHZ RF Transmitter aansluit op je Arduino, kun je zelf vanuit die Arduino het juiste AAN of UIT signaal naar die stopcontacten sturen. Als voorbeeld staat hieronder een Arduino sketch die stopcontact A op kanaal 1 (kun je zelf kiezen/instellen op de stopcontacten) AAN en weer UIT schakelt:

#include <RemoteReceiver.h>
#include <RemoteSwitch.h>

ElroTransmitter elroTransmitter(11);

void setup() {
}

void loop() {
elroTransmitter.sendSignal(1,'A',true);
delay(3000);
elroTransmitter.sendSignal(1,'A',false);
delay(3000);
}

De zender zit in dit geval met 1 pootje aan de digitale poort 11 van de Arduino aangesloten (1 pootje gaat naar 5V en het ander naar Ground, het vierde pootje is voor de optionele extra antenne).

Je kunt de benodigde library van deze website downloaden.

Aansluiten aan het web
Nou is het natuurlijk wel even leuk dat je lamp elke 3 seconden aan en weer uit gaat, maar niet erg praktisch. Ik wilde immers de lamp via de browser/internet aan en uit kunnen zetten.
Je zou hiervoor een ethernet-shield op de Arduino aan kunnen sluiten en daar een website op kunnen maken waarmee dat kan, maar in mijn geval maak ik uiteraard weer gewoon gebruik van de mogelijkheid om dit vanuit de Raspberry Pi te doen.

Hierboven zie je het resultaat. Het was een beetje moeilijk om de iPhone zo te mikken dat je én kon zien wat ik op het beeldscherm deed én de aangesloten lamp, maar het werkt op het moment dus zo:
Als ik achter de URL van het PHP-script waarmee ik eerder ook al de temperatuur en vochtigheid weer gaf en het LCD-scherm kon aansturen zet: ?A=1 dan schakelt stopcontact A aan. Gebruik ik ?A=0, dan schakel ik stopcontact A juist weer uit. ?B=1 doet datzelfde voor stopcontact B etc.
Natuurlijk is het invoeren van die URLs op zich nog niet zo praktisch, maar je kunt je voorstellen dat de volgende (eenvoudige) stap is om een pagina te maken die een overzicht van knoppen laat zien en als je dan op een van die knoppen klikt, dan wordt de juiste URL aangeroepen.

De Arduino code houdt op het moment wél de status van de stopcontacten bij (AAN of UIT), maar ik heb er nog geen code voor geschreven die die status op verzoek ook doorgeeft. Dan kun je de webpagina namelijk nog wat mooier maken met een indicatie van de status (groen of rood lampje) naast de stopcontacten/knoppen.

De code voor het geheel is wat moeilijker “zomaar” te gebruiken omdat het aansluit bij de hele breadboard, maar ik heb de Arduino sketch en de PHP code voor op de Raspberry Pi toch maar even online gezet:

Een andere uitbreiding waar ik nog even naar moet kijken is het toevoegen van de optionele (zelf te maken) antenne. De zender op het breadboard heeft waarschijnlijk wat last van alle storing van de overige componenten en haalt het wel van de zolder tot beneden in de gang, maar niet tot in de woonkamer. Dat is niet heel vreemd, want ook Wifi-signalen hebben moeite om op die plek door de twee verdiepingen naar beneden (of naar boven) te komen.

Deel dit bericht:

  4 reacties aan “Schakel het licht aan/uit via je Rasperry Pi / Arduino”

Reacties (2) Trackbacks (2)
  1. Het probleem is een beetje dat de Arduino bij het starten van het python script opnieuw opstart, waardoor je niet kan bijhouden of iets nou aan of uit is. Alle variabelen gaan verloren daardoor. Erg jammer.

    • Ja. Dat is zo (al gebruik ik geen python script en de Arduino ook niet. Maar het probleem bestaat). Je zou het kunnen opvangen door de waarden in de EEPROM op te slaan, maar je kunt bij een klein aantal schakelaren er ook gewoon voor kiezen om ze allemaal even uit en dan weer aan te zetten. Of anders, om aan de PHP kant een ‘default’ setting te kiezen (#1 AAN, #2 UIT, #3 UIT etc.) die je dan met één druk op de knop in kunt stellen (waarbij dan ook de AAN/UIT waarden aan de Arduino kant weer goed komen te staan).
      Het is natuurlijk ook een beetje de vraag hoe vaak de Arduino uit gaat.

Sorry, het reactieformulier is momenteel gesloten.