An object-oriented security system developed for the Maker Uno (ATmega328P) platform using C++ and PlatformIO. The project implements a modular architecture to manage sensor data, user authentication, and multi-axis hardware control.
The system serves as a programmable security node with two primary modes of operation:
- Automated Security Mode: Utilizes an ultrasonic sensor mounted on a servo-driven platform to monitor the environment. Upon detection of an intruder, the system triggers an alarm state that requires RFID-based authorization to disarm.
- Manual Mode: Allows the user to take direct control of the scanning peripherals and servo positioning using an analog joystick.
The project is designed with extensibility in mind, featuring a dedicated communication layer for remote management via Bluetooth.
- Language: C++ (Object-Oriented)
- Framework: Arduino / PlatformIO
- Hardware: Maker Uno, HC-SR04 Ultrasonic Sensor, MFRC522 RFID Reader, Analog Joystick, SG90/MG90S Servo Motors
- Planned Interfaces: Bluetooth (HC-05/06), I2C OLED Display
The codebase follows a modular "Handler" design pattern to ensure separation of concerns and maintainability.
- ServoHandler: Manages PWM signals for precise angular positioning, including angle constraints and movement smoothing.
- JoystickHandler: Processes analog inputs, manages deadzones, and maps coordinates for manual servo and system control.
- SonarHandler: Implements non-blocking distance measurement and basic signal filtering.
- RFIDReader: Manages SPI communication with the RC522 module and handles UID validation logic.
- ScannerHandler: Located in the
/logicdirectory; this class orchestrates the interaction between theServoHandlerandSonarHandlerto perform environment sweeps and manages the global state machine (Idle, Armed, Alarm, Manual).
The project is currently under active development. The following features are planned for future releases:
- Bluetooth Connectivity: Implementation of a serial protocol for telemetry and remote command execution.
- Cross-Platform Control App: A desktop application built with C++ and the Qt framework for real-time monitoring and manual override.
- Visual Feedback: Integration of an I2C OLED or LCD screen for system status and diagnostic data.
- Mobile Support: Exploration of a mobile client for remote alerts.
To build this project locally, ensure you have the PlatformIO Core or VS Code extension installed.
- Clone the repository:
git clone [https://github.com/your-username/repository-name.git](https://github.com/your-username/repository-name.git)