Introduction: Smart Security System

About: i'm a student NMCT at Howest Kortrijk

Do you ever feel unsafe in your own home, or do you need to protect your company? Maybe you could make a security system so all of these problems gets solved. In this instructable i tell you how. I mounted all the parts on a wooden plank for demonstration purposes, you should mount it where you need it (the arduino part at the wall where you can reach it, the main board somewhere out of direct range, the siren and the strobe where you want it and the sensors in the rooms you want to protect.

To follow this instructable you should have knowledge about:

  • raspberry pi
  • arduino
  • git
  • mysql

And if you want to change the code:

  • python
  • arduino
  • html/css

Step 1: BOM (what You Need)

In this list is everything you need to make the security system, most of the things you can buy on aliexpress but some things like the adafruit pn532n and the pi you should buy elsewhere. The key safe you could buy in a local hardware store.


Step 2: Schematic

This is the schematic of the project, there are 2 parts: the part you badge has an rfid reader and a i2c lcd, there's also a buzzer in here. The other part is the mainboard, this has headers to connect the sensors (its capable for a max of 10 sensors), a 2 relay module to switch the strobe and the siren and 2 pins to connect a tamper switch, if you have one: connect it, I had one laying around but i dont know where you could buy it. On the mainboard there are also pins for a pan tilt module but i havent implemented it yet. I designed PCB's, i ordered them by JLCPCB, they are cheap and they work like expected.

Step 3: Solder the Pcb's

Its time to solder the pcb's, note that your arduino pcb may look diffirent cause i have an old version of it. In no case solder the buttons in, cause you would short your pi if you press them, these buttons were only for testing purposes and aren't essential for the system

Step 4: Lasercutting

I had my case lasercuted at school (Howest kortrijk Belgium), you could order it at ponoko, the file includes the arduino case, the baseplate for the main board(you should redesign this cause you probably gonna have another key safe) and some housings for the pir sensors.

Step 5: Assembling the Case (arduino)

Now were gonna asseble the arduino case, its like a puzzle, you have to put all pieces together, you cant do anything realy wrong, just note the orientation of the pieces, i used a bit of tec7 in all corners to hold it together, while the glue was drying i put a rubber band around it.

in the same way assemble the sensor housings (if you want them)

Step 6: Mount Everything in the Key Safe

i lasercutted a piece where i mounted everything on top by drilling 3mm holes and using nylon spacers, i drilled also much holes in the key safe and used cable grommets to protect the cables from the sharp edges.

Step 7: Mounting the Arduino, Rfid Reader and the Lcd

Mount the rfid reader like shown in the picture, use m3 nuts as a spacer between the lid and the reader, do the same for the lcd(make sure its the right way up).

Mount the arduino on a location you prefer, use jumper cables or make a cable with shrink terminals to connect everything.

Step 8: Setting Up the Pi

Write a fresh raspbian image to the sd card, boot up the pi, connect over ssh (username=pi, password=raspberry, change it asap)


sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3

now we gonna activate a Virtual environment

python3 -m pip install --upgrade pip setuptools wheel virtualenv 

mkdir project1 && cd project1

python3 -m venv --system-site-packages env

source env/bin/activate python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib

Step 9: Building the Database

create 3 database-users: project1-web, project1-sensor and project1-admin with unique passwords

create a database called project1

grant all privileges to the admin and SELECT, INSERT, UPDATE and DELETE to the other 2 users

import the sql file onto the pi

Step 10: Uploading the Code


git clone

fill in your database credentials in the code (in at line 47 and 64, and in at line 41)

to add a website user that can't be removed: at the bottom of the code there's a line commented out: adduser(root, your password). Fill in your password of choice and run the code afterwards comment out the line and remove the password


upload the code to your arduino