You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: website/versioned_docs/version-acs_cc/project/2026/gabriel.bolborea/index.md
+25-9Lines changed: 25 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,6 +30,11 @@ Security systems are a critical application for embedded devices, where memory l
30
30
Finalized the hardware Bill of Materials (BOM), designed the system architecture block diagram, wrote the official documentation, and pushed the initial setup to the GitHub repository.
31
31
### Week 5 May - 11 May
32
32
Finalized the physical breadboard prototyping and completed the detailed electrical schematics in KiCad. Updated the project documentation and synchronized all media assets for the repository.
33
+
### Week 12 May - 18 May
34
+
Configured the Embedded Rust environment using the `embassy-rs` framework. Implemented communication protocols for all peripherals, including SPI (RC522 RFID), GPIO (membrane keypad matrix), I2C (MPU6050, SSD1306 OLED), and async UART (ESP8266 HTTP server). All software subsystems were successfully unified under a safely shared `VaultState` Mutex.
35
+
36
+
### Week 19 May - 25 May
37
+
Performed the final physical assembly inside the vault enclosure. Conducted extensive hardware debugging to resolve I2C bus lockups and MCU resets during peak current draws. Resolved the issues by securing physical connections, minimizing wire crosstalk, and optimizing the servo PWM software logic to achieve a stable, continuous runtime.
33
38
34
39
## Hardware
35
40
@@ -61,20 +66,31 @@ The peripherals are organized into four functional subsystems:
61
66
|[ESP8266 (ESP-01)](https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf)| WiFi Connectivity - Remote logging and status reporting |[15 RON](https://www.optimusdigital.ro/ro/wireless-wi-fi/12-modul-wifi-esp8266-esp-01.html)|
|[Active Buzzer](https://www.farnell.com/datasheets/2171110.pdf)| Audio Feedback - Siren for alarms and key press tones |[5 RON](https://www.optimusdigital.ro/ro/audio-buzzere/125-buzzer-activ-5v.html)|
69
+
|[MB102 Breadboard Power Supply](https://www.optimusdigital.ro/en/linear-regulators/61-breadboard-source-power.html)| Dedicated Power - External 5V/3.3V power source for the SG90 servo and ESP8266 | 7 RON |
64
70
|**Auxiliary Components**|**Breadboard, Dupont wires, and decoupling capacitors**|**~30 RON**|
65
71
66
72
## Software
67
73
68
74
| Library | Description | Usage |
69
-
|---------|-------------|-------|
70
-
|[rtic](https://rtic.rs/)| Concurrency Framework | Task scheduling, handling interrupts, and managing priorities (e.g., IMU alarm over display updates). |
71
-
|[stm32u5xx-hal](https://github.com/stm32-rs/stm32u5xx-hal)| Hardware Abstraction Layer | Low-level control for the Nucleo-U5 (configuring I2C, UART for WiFi, and PWM for the Servo). |
72
-
|[embedded-hal](https://crates.io/crates/embedded-hal)| Standard Traits | Standardized embedded interfaces allowing sensor drivers to communicate with the STM32. |
73
-
|[mfrc522](https://crates.io/crates/mfrc522)| RFID Driver | Interface for reading RFID tags via SPI. |
74
-
|[ssd1306](https://crates.io/crates/ssd1306)| Display Driver | Hardware interface for sending pixels to the OLED screen. |
75
-
|[embedded-graphics](https://crates.io/crates/embedded-graphics)| 2D Graphics Library | Rendering fonts, text, and UI elements (like the "Access Granted" message) on the OLED. |
76
-
|[mpu6050](https://crates.io/crates/mpu6050)| IMU Driver | Reading accelerometer and gyroscope data to detect tampering and physical shocks. |
|[mfrc522](https://docs.rs/mfrc522/)| RFID Driver | Interface for authenticating master RFID cards via SPI. |
78
+
|[ssd1306](https://docs.rs/ssd1306/)| OLED Display Driver | Hardware interface for sending pixel data to the system display. |
79
+
|[heapless](https://docs.rs/heapless/)| Static data structures | Manages PIN buffers and HTML packets without dynamic heap memory allocation. |
80
+
|[embedded-graphics](https://docs.rs/embedded-graphics/)| 2D Graphics Library | Renders text, fonts, and UI elements on the OLED interface. |
81
+
|[embedded-hal](https://docs.rs/embedded-hal/)| Hardware Abstraction | Standardized traits for abstracting GPIO, I2C, and SPI peripherals. |
82
+
|[defmt](https://docs.rs/defmt/)| Embedded Logger | Provides efficient debug logging over the RTT interface. |
83
+
|[embassy-sync](https://docs.embassy.dev/embassy-sync/)| Synchronization | Implements Mutexes to safely share the VaultState across asynchronous tasks. |
84
+
85
+
### Detailed Design
86
+
87
+
The software architecture is built upon the `embassy-rs` asynchronous framework, allowing multiple subsystems to run concurrently without blocking the main execution thread. The logic is divided into highly specific, independent tasks:
88
+
***I2C Task:** Continuously polls the MPU6050 accelerometer for physical shocks and updates the SSD1306 OLED UI.
89
+
***PWM Task:** Controls the SG90 servo motor state (locked/unlocked) with optimized actuation to prevent unnecessary current draw.
90
+
***WiFi Task:** Manages the ESP8266 module via UART AT commands, hosting a local HTTP server for remote monitoring and override controls.
91
+
***Main Loop:** Handles the physical authentication layer by scanning for the RFID Master Card via SPI and reading the matrix keypad via GPIO interrupts.
92
+
93
+
Inter-Process Communication (IPC) and synchronization between these concurrent tasks are achieved using a globally shared state (`VaultState` enum). This state is safely protected by a `Mutex` (`CriticalSectionRawMutex`), which eliminates data races at compile time and ensures that high-priority events, such as a tamper detection from the IMU, immediately force the entire system into an `Alarm` state.
0 commit comments