Introduction:
The Home Automation Framework project is a web application that can remotely control the electronic devices in one’s home using a web interface on a smartphone, tablet or desktop computer. The project facilitates ease of access and remote control of electronic devices for those who are busy, have a disability, or are not physically in the location of the device. Examples of such electronic devices may include lights, security cameras, electric door latches, TVs and computers.
Our initial prototype utilizes the small and inexpensive Raspberry Pi as a base station that wirelessly communicates with modules located around the home. The RPi is connected to the internet and is running an Apache web server. The web server provides access to an HTML/CSS interface with buttons for the user to press.
Pressing those buttons sends AJAX commands to a Python script on the RPi, which then communicates wirelessly to either turn an outlet on/off or open and close window blinds.
Currently the RPi communicates with the outlet modules using an existing commercial product that we modified for our prototype, but this component will later be replaced with our own custom hardware. The blinds are controlled using an early version of our new wireless hardware, that utilizes an nRF24L01+ wireless module and an ATtiny85. One of the next hurdles for our project is building a circuit to deliver 5V and 3.3V DC power from a 120V AC wall socket. This needs to be very small and will be used in our outlet modules.
Description of Major Components
Server: A Raspberry Pi is connected to the internet and running an Apache web server, which serves HTML and CSS files to build the interface in the user’s browser. The Apache WSGI plugin is installed, allowing the server to run Python code in response to AJAX requests that are created when the user presses buttons in the interface. The python code handles the GPIO port switching to control the Stanley RF remote control and the nRF24L01+ module. The web interface and python code is hosted in a GitHub repository.
Stanley Remote Controlled Outlets: For our initial prototype, we utilized an existing commercial product as a proof of concept. The Stanley product consists of a remote control with 3 on and off buttons, and three outlet switches. Each outlet switch is plugged into the wall, with a lamp or other AC device plugged into it. The buttons on the remote turn the outlets on or off. For our project, we took apart the remote, soldered wires onto the buttons, and are simulating button presses using the GPIO pins on the Raspberry Pi. This component will later be replaced with our own custom hardware, an early version of which is powering our blinds module.
ATtiny Blinds Opener: An ATtiny85-powered board that sits on top of the blinds, controlling a servo to actuate the tilt rod, which causes an open and close movement of the blinds. This is controlled by the base station using nRF24L01+ modules. The code for this module is posted in the GitHub repository.
WebApp: The WebApp consists of icons that the user would click or tap, which will result in the devices being turned on or off. See image on the right.
AT tiny: On our custom hardware adapter, we are using a the high-performance, low-power Atmel 8-bit AVR RISC-based microcontroller, running the Arduino bootloader. The 8-pin package is small enough to be easily enclosed in our modules, while still providing enough pins to communicate wirelessly through the nRF24L01+ modules. These will be used with transistors/relays to power outlets on and off, and can power any other custom modules (such as our blinds) using PWM.
Wireless Connector: The nRF24L01+ is a small, cheap (less than $5), 2.4 GHz wireless communication module. It’s capable of up to 2 Mbps transfer rates, and has a range suitable for indoor operation. These are used in our project to facilitate communication between the base station and other modules.
For more detail: On The Fly – Prototype II Final Report: Home Automation Framework