I was planning to build a cheap home automation system. I want this to be a modular system so that I can keep adding sensors and devices to it without much changes. WARAN (Windows IoT, Azure, Raspberry Pi, Arduino, NRF24L01+) is a modular home automation system with consists of a single Hub and multiple modules. The module will combination of micro-controller and sensors collecting data from different locations of the house and transmitting the data to Hub via RF. All the communication between Hub and modules happens via RF. There will be a companion windows phone app for the Hub as well. Here is a simple flow diagram explaining the setup.
Why Windows IoT ?
I am a software developer currently venturing into IoT. With my previous experience with XAML/C# and Visual Studio (which I consider to be the best IDE ever) it was very helpful for me to implement these very quickly.
Why NRF24L01+ ?
When I was looking into wireless options NRF24L01+ came up as a cheap and low power consuming solution. With some really powerful libraries available it came us a best solution for me.
Why Windows Azure
Windows Azure very easy to learn and adapt. With little configuration required to bring up the service we can focus more on development rather than configuration and deployment. My previous experience with Azure helped me in quick integration.
The Hub is a center controlling center of WARAN. It is made up of RPI2, Arduino Uno and nRF24L01+. The RPI2 runs Windows IoT core. It runs a Universal App which acts as the control center. The Hub would be connected to a large display (typically a TV or monitor) via which we can see the data from the modules and also control the modules. A keyboard and mouse connected to the RPI2 will help in adding, removing modules from the control center. Here is the circuit diagram of it (Refer WARAN.Hub.fzz. file in project)
How it functions ?
Every module will have a unique address using which the hub communicates with it. We will add a module to the control center using this address and giving a name to the module. Once added the control center (Universal App) will send data to Arduino Uno via I2C. Arduino Uno will send data to the module via nRF24L01+ and the module reads data from the sensors or start/stop a device based on the data it received and sends data back to Arduino Uno. The Arduino Uno will send the data to the control center via I2C. This data which will be displayed in the TV/Monitor and also sent to cloud. The Arduino Uno will just act as an interface for RPI2 to get the sensor data from other modules. The above process will happen in three scenarios
For more detail: WARAN – Home Automation