Home Automation using Raspberry Pi 2 and Windows 10 IoT

Hardware components:
A000066 iso both
Arduino UNO & Genuino UNO
For each room you want to automate, take separate Arduino UNO.
R8326274 01
Raspberry Pi 2 Model B
11026 02
Jumper wires (generic)
12002 04
Breadboard (generic)
LDR (Light Dependent Resistor)
LDR provides different voltage reading for different light intensity.
13285 01
PIR Motion Sensor (generic)
Passive IR detects human presence.
Relay (generic)
You can use any kind of relay module. No of relay will depend upon how many devices you want to control. [NoOfDevices = NoOfRelay]
Siemens Contactor (3TF32 00-0AP0)
Contactor is going to be used to control water-pump of maximum rating of AC3: 16A 415VAC. Before purchasing contactor, please check ratings of your water-pump and your contry dependencies if there. “3TF32 00-AP0” is capable to drive up-to 16A and 415VAC water-pump. This contactor operates usinf in-built coil. Coil ratings are (specific to 3TF32 00-0AP0 only) 250VAC.
Miniature Circuit Breaker (1P C16A)
MCB is attached before contactor to protect water-pump from electrical faults and overload. Here MCB also have specific ratings. Our contactor is of 16A and thus I have used 16A MCB. You can modify according to your convenience.
Software apps and online services:
Ide web
Arduino IDE
To write Arduino firmware. Have explain in the article.
Microsoft Visual Studio 2015
Community edition is commanded and its free for up-to five users. But you can use higher than it if you have purchased licensed copy of Visual Studio 2015.
Microsoft Windows 10 IoT Core
As a primary OS, which controls the devices via Arduino and provides management console.

Home Automation using Raspberry Pi 2 and Windows 10 IoT


In today’s era, technology can enhance human life. Technology is evolving decade by decade. Automation was a science fiction earlier but not today. By combining latest technology with home, we can build an awesome home. With the Raspberry Pi and Windows 10, we can build a home automation system that is capable of operating home devices automatically.

Getting Started

Before starting the project, lets understand basics first. Consider the following image (Overall Configuration)

A Raspberry Pi 2 will serve as a master device. For each room, want to automate, an Arduino UNO is needed. Arduino UNO will act as a secondary controller, which takes command from the Raspberry Pi 2 and operates specific device. Here, Raspberry Pi 2 and all Arduino UNOs are connected together on a I2C bus. All Arduino UNOs act as slaves. Each Arduino UNO have unique I2C slave address on the bus. You can add /remove Arduino UNOs(rooms) that is explained later in this project.
overall configuration

Configuration for Room

Now considering room scenario, an Arduino UNO will control devices and reads sensor data. Periodically, Raspberry Pi requests for the sensor data collected by Arduino UNO. The figure “Room Architecture” depicts how the Arduino UNO will connects with the devices and sensors. Each room have multiple controllable devices(i.e. Light(s), Fan, Wall Socket(s), etc.), one PassiveIR (to detect human presence in the room), one temperature sensor (LM35 to collect room temperature) and LDR (to detect light intensity near room window).

Device Address Mapping

The most important part is how we will identify devices? Its simple. We will make device address by combining room number with device number.

For example:

Room Number 1 having three devices.
Device address will be:

  • R1\Dev0
  • R1\Dev1
  • R1\Dev2

So up till now we know the overall configuration. In short, a Raspberry Pi will act as primary controller. Each room have its own one Arduino UNO which act as slave of Raspberry Pi. Communication between Raspberry Pi and Arduino UNO will be done using I2C.


To make it more easy, lets start implementing for first room. Refer schematic to connect components in proper way.

Note: I2C address for Room 1’s Arduino is 0x40. You can change address but make sure to change it back in Aruino’s sketch and room’s slave address in the app provided below, too. Note that each Arduino resides on the bus must have unique slave address.

I2C Bus Stripe: To attach more than one Arduino you can use I2C Bus Stripe as show below.

Read More: Home Automation using Raspberry Pi 2 and Windows 10 IoT

© 2015 Powered By Engineering Projects Team, Raspberry Pi Projects

Scroll to top