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
* Added project documentation page
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Added project documentation page
* Fix typo in documentation
* Added Schematic Scheme, Hardware Photo, Redesign the Software Scheme with all of components I used
* Added Compressed SVG file
* Rename image names in lowercase
* Reupload Schematic
* Reupload Schematic again
* Reupload Description Of the Project bcs I had some modifications
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy file name to clipboardExpand all lines: website/versioned_docs/version-acs_cc/project/2026/ioan_vlad.moise/index.md
+24-11Lines changed: 24 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,12 +14,14 @@ A two-device embedded system that uses Bluetooth to detect when a wearable brace
14
14
15
15
The Bluetooth Proximity Monitoring System is a two-device embedded application built in Rust using the Embassy async framework on two STM32 Nucleo-U545RE-Q microcontrollers. One device acts as a fixed base station and the other as a wearable bracelet.
16
16
17
-
Each device is paired with an HM-10 BLE 4.0 module communicating over UART. The base station continuously monitors the Bluetooth signal strength (RSSI) received from the bracelet to estimate inter-device distance. When the estimated distance exceeds approximately 20 meters, base station device trigger their passive buzzer as an alarm. The base station displays the live estimated distance on an SSD1306 OLED display over I2C. A physical button on station device allows the user to acknowledge and reset the alarm. The bracelet is powered by a portable USB powerbank/phone, making it wearable, while the base station is powered via USB.
17
+
Each device is paired with an HM-10 BLE 4.0 module communicating over UART. The base station monitors the Bluetooth connection with the bracelet to detect when the bracelet moves out of range or when the connection is lost. The system provides two detection modes: sensitive mode and normal mode. In sensitive mode, the alarm is triggered if the bracelet is missing during a single scan. In normal mode, the bracelet must be missing for three consecutive scans before the alarm is triggered, reducing false alarms and improving reliability.
18
+
19
+
When this happens, the base station triggers its passive buzzer as an alarm. The base station displays the current connection status on an SSD1306 OLED display over I2C. A physical button on the base station allows the user to acknowledge and reset the alarm. The bracelet is powered by a portable USB powerbank or phone, making it wearable, while the base station is powered via USB.
18
20
19
21
20
22
## Motivation
21
23
22
-
I chose this project because it has a concrete real-world application: preventing loss of personal items, children, or pets in crowded environments. It covers multiple embedded communication protocols (UART, I2C, GPIO, PWM) and introduces challenges around wireless signal processing and async embedded Rust, making it both technically meaningful and practically useful.
24
+
I chose this project because it has a concrete real-world application: preventing loss of personal items, children, or pets in crowded environments. It covers multiple embedded communication protocols (UART, I2C, GPIO) and introduces challenges around wireless signal processing and async embedded Rust, making it both technically meaningful and practically useful.
23
25
24
26
25
27
## Architecture
@@ -28,25 +30,32 @@ I chose this project because it has a concrete real-world application: preventin
28
30
29
31
The system is divided into two independent embedded devices:
30
32
31
-
-**Base station**: reads RSSI from the HM-10 module via UART, estimates distance, drives the OLED display over I2C, triggers the buzzer via PWM, and handles button input via GPIO.
32
-
-**Bracelet**: transmits a continuous Bluetooth signal via the HM-10 module over UART.
33
+
-**Base station**: scans for the bracelet using BLE through the HM-10 module over UART, drives the OLED display over I2C, triggers the buzzer, and handles button input via GPIO.
34
+
-**Bracelet**: advertises a BLE signal through the HM-10 module, allowing the base station to detect its presence.
35
+
36
+
Due to the hardware limitations of the BT-05 Bluetooth modules, the system works by detecting BLE availability/presence instead of using RSSI-based distance estimation.
33
37
34
38
35
39
## Log
36
40
37
41
<!-- write your progress here every week -->
38
42
39
-
### Week 20 - 26 April
43
+
### Week 16 - 26 April
40
44
Researched project requirements and finalized the hardware component list. Ordered all hardware components (HM-10 modules, buzzers, OLED display, buttons, breadboards, wires).
41
45
42
-
### Week 27 April - 4 May
46
+
### Week 17 April - 4 May
43
47
44
-
### Week 5 - 11 May
48
+
### Week 18 - 11 May
45
49
I finished the hardware part of the project.
46
50
47
-
### Week 12 - 18 May
51
+
### Week 19 - 18 May
52
+
I continued working on the software implementation and tested the Bluetooth modules. Although I ordered HM-10 BLE modules, the modules I received turned out to be BT-05 clones, which did not fully support the expected HM-10 RSSI commands. Because of this hardware limitation, I decided to drop the RSSI-based distance estimation approach.
53
+
54
+
Instead, I adapted the project from an engineering perspective and redesigned the detection logic to rely on BLE presence scanning. The base station now checks whether the bracelet can still be detected during BLE scans. This allowed the system to remain functional even with the limitations of the Bluetooth modules.
55
+
56
+
### Week 20 - 25 May
57
+
I moved from the breadboard prototype to a more stable hardware setup by soldering the wires and components onto a PCB. This improved the reliability of the connections and made the system more robust for testing and demonstration.
48
58
49
-
### Week 19 - 25 May
50
59
51
60
## Hardware
52
61
@@ -87,10 +96,14 @@ The format is
87
96
|---------|-------------|-------|
88
97
|[embassy-rs](https://github.com/embassy-rs/embassy)| Async embedded framework for STM32 | Task scheduling and async execution |
89
98
|[embassy-stm32](https://github.com/embassy-rs/embassy/tree/main/embassy-stm32)| STM32 HAL | UART, I2C, GPIO, and PWM peripheral access |
90
-
|[ssd1306](https://github.com/jamwaffles/ssd1306)| OLED display driver over I2C | Displaying the estimated distance|
99
+
|[ssd1306](https://github.com/jamwaffles/ssd1306)| OLED display driver over I2C | Displaying the connection status and alarm state|
91
100
|[embedded-graphics](https://github.com/embedded-graphics/embedded-graphics)| Text and graphics rendering on OLED | Drawing text and UI elements on the display |
92
101
|[heapless](https://github.com/rust-embedded/heapless)| Fixed-size data structures for embedded systems | UART parsing buffers without dynamic allocation |
93
-
102
+
|[embassy-time](https://github.com/embassy-rs/embassy/tree/main/embassy-time)| Time utilities for Embassy applications | Delays, periodic checks, and task timing |
103
+
|[embassy-sync](https://github.com/embassy-rs/embassy/tree/main/embassy-sync)| Synchronization primitives for async embedded tasks | Signaling state between Bluetooth, display, and alarm tasks |
104
+
|[embedded-hal](https://github.com/rust-embedded/embedded-hal)| Common embedded hardware abstraction traits | PWM control for the passive buzzer |
0 commit comments