Introduction: Priority One
I am a student 'Multimedia and creative technologies' and for school i had to make a project.
The project is a Home security system, that ensures to keep your home safe;
To do that we use sensors to check if someone is inside the house.
We can check movement inside the building by using an Infrared movementsensor, Hall sensor and a ultrasonic sound sensor. They all work their own way and detect specific types of movement. The Hall sensor is dedicated to checking doors/windows, the infrared movement sensor can detect changes in position and the distance sensor checks if someone walked through the line.
Supplies
For this Project you need:
- Raspberry pi
I chose the raspberry pi for this project because it was necessary for our school project and it's also a perfect device for the project.
- RC-522 RFID tag
I chose an RFID tag to turn the alarm on and off, it's a lot easier to use than to type a code
- mini oled display
As a display i used a mini oled, it might be a small screen, but it's still really visible and does everything you need for this project
- DS18B20 one wire sensor
I used the one wire temperature sensor, because it's easy to use and you you can plug it into the raspberry pi directly
- breadboard 3.3V power supply
To power the RFID, one wire and oled display i used a external 3.3V power supply, you can also use the 3.3V from the Raspberry pi, but it's safer to do it this way
- (optional T-cobbler)
A T-cobbler is optional, it can make building a project like this a lot more fun for beginners
- Arduino
To read in all the other sensors i have, i use a Arduino, the sensors require 5V, so the arduino was the perfect fit for that, you can choose from different types of arduino's, but i used a UNO
- HC-SR04 ultrasonic sound sensor
I used the distance calculation from the sensor to create a trip wire effect. When something passes the distance changes and the alarm will be triggered
- MQ4 gas sensor
The gas sensor is meant to read CO- values, I find it important, especially in homes were you still you open gas heating and where the CO-values can rapidly change.
- Hall sensor
To look if a door is opened i use a hall sensor, this sensor mesures magnetic field between a magnet and the sensor, when the magnetic field is too weak, the door has been opened
- PIR sensor
I use a PIR to mesure movement in more open rooms, when someone walks into the room the signal goes high and you know someone is there
- relais
- 12V siren
- 12V power supply
The relais, 12V siren, 12V power supply are for the sound effects, to alart potential neighbours, and the criminals that an alarm has been triggered
Step 1: Fritzing
Here you can see how everything is put together, you can see a Breadboard view as well as a electronic view.
You can connect the Arduino and Raspberry pi using USB ( or optional a level shifter ). We'll need to have these connected to make sure we can have Serial communciation between the 2 devices.
Step 2: Raspberry Pi Configuration
We got a Rasbian image from school that already had a couple things set-up, but you'll have to create an image yourself.
1) Download Rasbian
link: https://www.raspberrypi.org/software/operating-sys...
You will have different option, the best to use if you are starting off is the Raspberry Pi OS with desktop and recommended software. This version will have a lot of things already pre-installed that will make working with the Rpi a lot more fun and easy.
2) Setting up the image
For this step you will need a SD-card minimum 8gb, maximum 32gb, preferred 16gb.
You can use and existing SD-card and format it in disk-part or other applications
For disk part, just type in disk-part in the windows search bar and open it.
list all the disks
list disk
than you will see the disks available on your device
you will see a disk with 16gb and to the left of it it will have it's name, example: disk 1
you can select this disk by:
select disk 1
It should say it has selected disk 1
To clean the disk just type:
clean
3) Writing the image
To write the image onto the SD-card i used win32 disk imager
link: https://sourceforge.net/projects/win32diskimager/
in this program, you can select your sd-card and the image file and write it onto the SD-card
4) Connecting via SSH
once everything is written onto the sd-card you can go to it's directory and there should be a file named 'cmdline.txt', you can open it with notepad and add on the end of the line 'ip=192.168.168.168' and save the file
You also have to create a file named 'ssh' without any extension.
You can now eject the SD-card, but do it with the safe eject feature from windows.
Once this is done, you can insert the SD-card into the Raspberry pi and connect a LAN cable from the computer to the Raspberry pi
5) Connect to Computer
To connect to the Raspberry via SSH we need another program, called putty
link: https://www.putty.org/
you can open this and insert ip:' 192.168.168.168' and connect to port '22' and connection type SSH
now you can see a command line appear that's asking you for a login, the default user is 'pi' and it's password is 'raspberry', but you can change this.
6) settings
to get into root:
sudo -i
and to acces the raspberry pi's configuration:
raspi-config
Inside the interfacing section, you can enable one-wire, SPI, I2C and Serial communication.
7) internet connection
To add wifi to the project you have to use a command: ( SSID is network name )
wpa_passphrase "ssid" "password" >> /etc/wpa_supplicant/wpa_supplicant.conf
than you have to reconfigure the network settings.
getting into WPA_command line:
wpa_cli
select wireless lan interface:
interface wlan0
reconfigure wlan:
reconfigure
Wifi should be set up now
8) software
first of you'll have to update the existing software on the Raspberry pi:
sudo apt update sudo apt upgrade
install apache2:
apt install apache2 -y
install mariaDB:
apt install mariadb-server mariadb-client -y
getting the python packages ready:
pip3 install flask-cors pip3 install flask-socketio pip3 install mysql-conector-python pip3 install gevent pip3 install gevent-websocket
Step 3: Database
For the database I made 3 tables. The first one is for the location, e.g. kitchen, hall, garden, ...
The second one is for the device, I use different kinds of devices, like RFID tag, temp sensor, IR, ... so I labeled them there.
And the last table is for the history, everything that happend you can see there. For example, the front door has opened, so now we see a row appear that the front door has opened.
Step 4: Back-end
To create a link between the database and the front end, we'll need a backend.
For this project i used Python ( and Flask ) to do this.
I made multiples threads so multiple things could be done. We made the backend listen to the arduino, register temperature, check on front-end messages via socketio and made the backend send socketio messages with the new sensor values to the front-end.
There are also multiple threads running on the back-end, there is a RFID loop, temperature loop and a main loop, where all the other things are inside.
We also have a DataRepository, you can find the SQL-statements inside there.
You can find a link to the code in step 6.
Step 5: Front-end Website
For the web interface i went with a simple and clear interface, where colors and icons help you to navigate. You can see a picture of the wireframes i made to design to web-interface.
I recreated these wireframes using HTML & CSS.
To show backend information i used Javascript, so everything could update in real-time with socketio.
All the code is available on step 6
Step 6: Code
All the code is available on github:
Step 7: Case
For the case i used model cardboard, it's a good material to use, because it's easy to cut and it's decently strong and really light.
I also made a couple of attributes to give the model a nicer look and to create the home environment.
It also has a compartment for all of the electronics so you can easily get to them.