FPiDroid House Beta : an Advanced Smart House

Introduction: FPiDroid House Beta : an Advanced Smart House

FPiDroid House represents a monitoring and control network for smart houses, using FPGAs, embedded systems and web technologies. The main purpose of this project is to have a possibility to add and connect dinamically a lot of devices (each of them having their own state machine). These state machines are implemented over FPGA as modules , which work in parallel. Before implementing this project, or even develop it further you MUST know the following:

· HDL design (medium);

· Computer Architecture knowledge (medium to high);

· Microcontrollers (medium);

· C, Python, HTML, CSS, Javascript (medium);

There are a lot of steps to implement this project, but i will try to explain as much as I can. Some helpful information can be found at the following links :

NOTE : This project is still in beta mode, still has a few bugs and other minor issues ( such as uncommented code, untranslated variable and function names), but I will update as soon as possible the final version of it. This project is the result of a few months intensive work and more than an year of studying computer architecture, programming languages and other things, so it won't be easy to understand and replicate everything, or make it functionally from the first hit.

Step 2: Install Xilinx ISE 14.2 and Digilent Adept 2.15.3 .

You have to install Xilinx ISE 14.2 in order to modify the FPGA project, and Digilent Adept 2.15.3 to program the FPGA board.

Step 3: Create a Test Program

Create a test program (which will be useful to modify you IR module from Verilog, according to your remote control). Add irreceiver.v and irreceiver.ucf and connect TSOP4838 pins to corresponding constraint ( see irreceiver.ucf and Nexys 3 reference manual).

Load the .bit file to FPGA (with Digilent Adept) and test. NOTE: you will need a NEC format remote control.

Write down the binary values (showed on LEDs) by each button you press. you will need the values to modify the main project ( you have to adjust the code according to your remote control, otherwise local control won't be available).

Step 4: Create the Circuits

Connect circuits to power supplies, to FPGA pins ( they are written on the schemas, see reference manual for more details ).

Step 5: Xilinx Project

Open the following project and modify irreceiver module. Synthetize, translate and generate programming file. NOTE: in order for this project to work , you need to obtain Cortex-M0 DesignStart IP core.

Step 11: Apache and Website

Step 12: Make Some Final Tests and Enjoy!

Load Xilinx and Keil MDK projects to FPGA boards. Connect the FPGA to raspberry pi (through Nexys 3 USB-UART port). Open a terminal on raspberry pi or connect with SSH or Putty. Browse to the script folder and start python script from the command line with the following command : python script.py -c configuration. Make sure that xmpp and apache are running before starting the script. Take a smartphone, tablet or PC and login to the website (http://[raspberryPi IP address]/[folder of web application]). Login and start testing. (controllers ID must be a list of smart houses IDs separated by comas , e.g. rpi1,rpi2,rpi3 or user1 etc).

If you need any help for configurations and additional steps (until i will upload the final version) do not hesitate to contact me! Thanks for watching and enjoy!