Project realized by Elian Delmas, Evan Galli and Eliot Menoret
as part of the Embedded OS and Edge Computing course.
This project implements a smart home alarm system designed around an Edge Computing architecture. Instead of centralizing all logic on a single device, the system adopts a distributed heterogeneous approach to optimize cognitive load and resource management.
The architecture separates real-time constraints from high-level supervision:
-
The Microcontroller (Arduino with FreeRTOS): Acts as an intelligent acquisition unit. It encapsulates hardware complexity and signal processing to expose only qualified events rather than raw data.
-
The Gateway (Raspberry Pi 3B+ with Raspbian): Handles system supervision, data persistence, and the user interface. Liberated from low-level polling tasks, it manages the badge database and high-level logic using a robust Rust application.
Functionally, the system detects intrusions using an ultrasonic sensor and triggers audio-visual alerts (Buzzer/LED) when armed. Users can arm the system via a physical button and disarm it using authorized RFID badges. Management operations, such as adding or revoking access badges, are performed locally via an LCD interface or on the Raspberry Pi using a TUI.
![]() |
![]() |
![]() |
![]() |
- Rust for Raspberry Pi code
- Docker for Rust cross-compilation
avrdudefor Arduino flashingavr-binutils,avr-libc,avr-gccandavr-gcc-c++for Arduino compilation
| Arduino | Device | Raspberry Pi 3B |
|---|---|---|
| D2 | Button | |
| D4 | Ultrasonic | |
| D5 | LED | |
| D6 | Buzzer | |
| D7 | RFID | |
| Rotary | A0 | |
| Button | A1 | |
| Screen | I2C-2 | |
| I2C | I2C-1 |
- Connect the Arduino to your computer
- Build and flash the Arduino using
make -C arduino upload
- Flash the Raspberry Pi 3B with Raspbian Server
- Install i2c-tools using
sudo apt install i2c-tools - Configure I²C using
sudo raspi-config(Interface Options -> I2C) - Check for I²C connection with
i2cdetect -y 1 - On your computer, build and deploy the rust code using
make -C raspberry deploy - Launch the program on the Raspberry Pi 3B using
./arduino_i2c --tui(or setup./arduino_i2cas a service)



