Thuis stroomcontacten automatiseren met Windows 10 IoT Core, Raspberry Pi en Arduino
Onderdelen en benodigdheden
| Raspberry Pi 2 Model B | 1 |
| Xbee modules | 2 |
| Arduino UNO | 1 |
| FTDI Kabel | 2 |
| 4-kanaals Relay Shield voor Arduino | 1 |
| SparkFun XBee Shield | 1 |
Apps en online diensten
- XCTU - voor Xbee configuratie
- Visual Studio 2015+ - voor UWP app ontwikkeling
- Arduino IDE - voor Arduino programmeren
- Microsoft Azure - cloud hosting en services
- Microsoft Windows 10 IoT Core - besturingssysteem voor Raspberry Pi
Over dit project
Inleiding
In dit project laten we zien hoe je de stroomcontacten in je huis kunt bedienen, zowel lokaal (in je netwerk) als via de cloud, met behulp van een Raspberry Pi met Windows 10 IoT, Xbee en Arduino. Alle codevoorbeelden zijn beschikbaar op GitHub.
Waarom stroomcontacten automatiseren?
In plaats van apparaten direct vanuit de cloud te besturen, automatiseren we de stroomcontacten zelf. Op die manier kun je elk apparaat in het contact stekken en besturen. In dit project gebruik ik als voorbeeld een ventilator en een lamp.
Aan de slag met de Bijen (Xbees)
Ik gebruik Xbee-modules voor draadloze communicatie. Een Xbee (de Coordinator) is verbonden met de Raspberry Pi, de andere (de Router) met het stroomcontact. De Coordinator stuurt signalen op basis van onze invoer naar de Router om de stroomcontacten te schakelen.
Xbees configureren in AT-modus
Download en installeer XCTU.
Om de Zigbee (Xbee) firmware bij te werken, gebruikte ik een Adafruit FTDI-adapter.
Bekijk deze tutorial over het configureren van Xbees in AT-modus:
[Video: Configuring Bees]
Je moet ervoor zorgen dat deze twee Xbees met elkaar kunnen communiceren voordat we doorgaan naar de volgende stap.
De Ontvanger (Receiver) opzetten
We hebben nodig: Zigbee Router, Arduino UNO R3, Xbee Shield voor Arduino en Arduino Relay Shield.
Arduino Sketch
Als de data van de Coordinator Zigbee "ON1" is, schakelen we relay1 in. Bij "ON2" schakelen we relay2 in. Op dezelfde manier schakelen we de relay uit voor "OFF1" en "OFF2".
Compileer dit in de Arduino IDE en upload naar de Arduino Uno:
#define RELAY1 7
#define RELAY2 5
String state = "OFF";
void setup() {
Serial.begin(9600);
pinMode(RELAY1, OUTPUT);
}
void loop() {
// Controleren of seriële data beschikbaar is
if(Serial.available() > 0){
state = Serial.readString();
Serial.println(state);
}
// Als tekst ON1 is: relay1 aan
if(state == "ON1\r\n") digitalWrite(RELAY1, 1);
// Als tekst ON2 is: relay2 aan
else if(state == "ON2\r\n") digitalWrite(RELAY2, 1);
// Als tekst OFF1 is: relay1 uit
else if(state == "OFF1\r\n") digitalWrite(RELAY1, 0);
// Als tekst OFF2 is: relay2 uit
else if(state == "OFF2\r\n") digitalWrite(RELAY2, 0);
// Anders: alles uit
else {
digitalWrite(RELAY1, 0);
digitalWrite(RELAY2, 0);
}
}
Stroomcontact configureren (Let op: hoge spanning!)
Relays zijn een oude technologie in de elektronica. Ze fungeren als een schakelaar. De ingang van de relay kan wisselspanning zijn (110 tot 240V). Met een microcontroller zoals de Arduino kunnen we de relay aan/uit zetten.
We gaan hoge spanning op de relay aansluiten. Wees extreem voorzichtig bij het aansluiten van de draden op de relay. Dit is gevaarlijk, doe dit op eigen risico.
In plaats van de relay direct op het stroomcontact te monteren, gebruikte ik een verlengsnoer. Het principe is hetzelfde.
In de verlengsnoer laat je één draad intact en knip je de andere door. Verbind het ene uiteinde met Common (C) en het andere met NO (Normally Open).
Sluit het Relay Shield aan op de Arduino, stapel de Xbee Shield erbovenop. Plaats de als Router geconfigureerde Zigbee op de Xbee Shield.
Ik gebruikte de Xbee Shield om de Xbee met de Arduino te verbinden. Zorg ervoor dat de instellingen op de shield op "Xbee" staan. Deze shield kan samen met de Arduino ook worden gebruikt om de firmware-instellingen te schrijven wanneer we de schakelaar op "USB" zetten. Het gebruikt de ingebouwde FTDI-chip van de Arduino om data naar de Xbee te schrijven.
Steek de snoeren in en voed de Arduino met een externe bron. De ontvanger is klaar.
De Server (Raspberry Pi) configureren
Voor de server hebben we de Raspberry Pi 2 met Windows 10 IoT en de Zigbee als Coordinator nodig.
Verbind de Zigbee met de FTDI-adapter, en de 6-pins FTDI RS232 USB-kabel met de USB-poort van de Raspberry Pi. We zetten een webserver op de Raspberry Pi met UWP. De server wacht op gebruikersinvoer en schrijft op basis van de selectie seriële data naar de USB-poort waar de FTDI RS232-kabel is aangesloten. De Zigbee zendt dit bericht als radiogolven. We hebben al de DH en DL van de Router in de Coordinator Zigbee ingesteld, dus het bericht wordt naar de juiste Zigbee Router gestuurd.
Meer over FTDI-drivers voor Raspberry Pi: https://github.com/jark/ftdisample
Volg deze video om de server op de Raspberry Pi in te stellen:
[Video: Web Server]
Alle codevoorbeelden zijn beschikbaar op GitHub.
Azure inschakelen
Om ons huis van overal ter wereld te besturen, schakelen we cloudservices in voor onze applicatie.
Je moet een website aanmaken en hosten in Azure. Maak een Azure SQL DB aan voor authenticatie/autorisatie van gebruikers. Maak een Azure Cloud Storage Service om onze opdrachten op te vangen. Verwerk deze opdrachten vanuit de Raspberry Pi Blinky App en bestuur je huis.
Raadpleeg dit artikel voor het aanmaken van storage-tabellen:
Azure Table Storage handleiding
Voor het aanmaken van SQL-tabellen, raadpleeg:
Azure SQL Database handleiding
Bekijk de videotutorial over het gebruik van Azure voor ons project:
[Video: Enable Azure]
Demo
Ik heb geprobeerd te laten zien hoe je de stroomcontacten op twee manieren kunt besturen:
- Via de lokale Raspberry Pi webserver-URL
- Via de ASP.NET 5 webapplicatie gehost in Azure
[Video: Demo]
Conclusie
- Deze automatisering lost veel real-world problemen op. Door extra sensoren zoals licht- en bewegingsdetectors toe te voegen, kunnen we lichten aan/uit zetten of ten minste data aan de gebruiker geven om energie te besparen.
- Oudere mensen kunnen een afstandsbediening gebruiken voor hun stroomcontacten. Hiervoor heb je een extra RFID-apparaat nodig.
- We kunnen schema's maken om lichten aan/uit te zetten om stroom te besparen.
- Bij inbraak kunnen alle lichten aangezet worden.
- Op vakantie: geen zorgen meer, we sluiten ons huis met één klik.
- Kamertemperatuur hoeft niet constant gehandhaafd te worden, doe het wanneer passend. Bespaart energie.
Productieproces
- Een Betaalbaar Draadloos Sensornetwerk Bouwen voor Uw Huis
- Bouw een Veilige Gezichtsherkenning-deur met Windows IoT en Raspberry Pi
- Nauwkeurige Temperatuur- & Vochtigheidsmonitoring met SHT15 op Windows 10 IoT Core
- Windows 10 IoT Core Installeren op Raspberry Pi 3 Model B+: Stap-voor-stap Handleiding
- Bouw een Spraak-gecontroleerde Robot met Windows 10 IoT Core op Raspberry Pi 2
- GoPiGo v2 Uitbreiden op Windows 10 IoT Core voor Raspberry Pi 3
- Real-time IoT hartslagmonitor met Arduino en MAX30100
- Geoptimaliseerde Voedingsoplossingen voor Arduino Projecten
- Azure IoT Zwembadbeheersysteem: Slimme Sensoren & Remote Monitoring
- Power BI-dashboards maken vanuit PLCnext-clouddata
- IoT benutten: Digitale transformatie vandaag versnellen