March 2020
Home alarm system

Technologies
Description
The Home Alarm System was one of the first larger engineering projects I designed and built. The goal was to create a fully functional home security system with motion detection, cameras, remote notifications, and multiple interconnected nodes.
The system was built around a Raspberry Pi 3, which acted as the central control node, and several Raspberry Pi Zero camera nodes. Each camera node was equipped with either a standard Raspberry Pi camera or a night-vision camera, as well as an HC-SR501 PIR motion sensor. The system also included a dedicated keypad node used for arming and disarming the alarm. This node consisted of an ESP32 development board, a keypad, and an LCD display.
All devices communicated through the same local network, with the Raspberry Pi 3 coordinating the entire system. User input from the keypad was processed by the main node, which then distributed commands to the other devices. When armed, the system continuously monitored PIR motion sensors and performed OpenCV-based human detection. If motion was detected, images were captured and automatically sent to my email for verification. If no response was received within a predefined period of time, a high-powered siren was activated to alert people nearby.
To complete the project, I also designed custom protective enclosures for all system nodes using Onshape. Every enclosure was manufactured using 3D printing with PLA.
Unfortunately, photographs of the fully assembled system were lost. The images shown document individual subsystems and development stages of the project.
My Role
This was a fully self-led project. I was responsible for every aspect of the system, including mechanical design, electronics integration, software development, testing, and deployment.
I designed all enclosures in Onshape, created the electrical wiring diagrams in Fritzing, and wrote the software running on the Raspberry Pi and ESP32 devices. This project was developed before modern AI coding assistants became widely available, so much of the learning and troubleshooting required extensive research, experimentation, and debugging.
Throughout development, I expanded my knowledge of both Python and C++, while also learning how to build distributed systems consisting of multiple interconnected devices. I spent a significant amount of time testing the system under different conditions, including varying lighting environments and sensitivity settings, in order to improve the reliability of the OpenCV human-detection pipeline.
To validate the system, I also conducted realistic tests using mock intruder scenarios to observe how the alarm reacted and identify areas for improvement.
Learnings and Challenges
As one of the first major projects I worked on, the system presented many technical challenges and required a significant amount of experimentation and problem-solving.
One of the biggest challenges was achieving reliable OpenCV-based human detection. Different lighting conditions, camera angles, and environmental factors often affected detection accuracy. It took many rounds of testing, code adjustments, and real-world experiments before the system became reliable enough for practical use.
Another challenge involved the Raspberry Pi Zero camera nodes. Due to their limited processing power, some parts of the software were initially too demanding to run efficiently. To overcome this, I spent a considerable amount of time optimizing the code and reducing unnecessary processing so the devices could operate more smoothly and respond in near real time.
Email communication was also surprisingly difficult to implement. It took a significant amount of testing before I successfully created a system capable of sending properly formatted emails with image attachments while also supporting email-based responses that could trigger actions within the alarm system.
Overall, the project taught me a great deal about networking, computer vision, embedded systems, software optimization, and building reliable multi-device systems. It was one of the projects that sparked my long-term interest in engineering and technical problem-solving.