Skip to content

Commit f0d9b41

Browse files
vladdd170Copilot
andauthored
Project/ioan vlad.moise (#1332)
* 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>
1 parent b33d9ea commit f0d9b41

1 file changed

Lines changed: 24 additions & 11 deletions

File tree

  • website/versioned_docs/version-acs_cc/project/2026/ioan_vlad.moise

website/versioned_docs/version-acs_cc/project/2026/ioan_vlad.moise/index.md

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ A two-device embedded system that uses Bluetooth to detect when a wearable brace
1414

1515
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.
1616

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.
1820

1921

2022
## Motivation
2123

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.
2325

2426

2527
## Architecture
@@ -28,25 +30,32 @@ I chose this project because it has a concrete real-world application: preventin
2830

2931
The system is divided into two independent embedded devices:
3032

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.
3337

3438

3539
## Log
3640

3741
<!-- write your progress here every week -->
3842

39-
### Week 20 - 26 April
43+
### Week 16 - 26 April
4044
Researched project requirements and finalized the hardware component list. Ordered all hardware components (HM-10 modules, buzzers, OLED display, buttons, breadboards, wires).
4145

42-
### Week 27 April - 4 May
46+
### Week 17 April - 4 May
4347

44-
### Week 5 - 11 May
48+
### Week 18 - 11 May
4549
I finished the hardware part of the project.
4650

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.
4858

49-
### Week 19 - 25 May
5059

5160
## Hardware
5261

@@ -87,10 +96,14 @@ The format is
8796
|---------|-------------|-------|
8897
| [embassy-rs](https://github.com/embassy-rs/embassy) | Async embedded framework for STM32 | Task scheduling and async execution |
8998
| [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 |
91100
| [embedded-graphics](https://github.com/embedded-graphics/embedded-graphics) | Text and graphics rendering on OLED | Drawing text and UI elements on the display |
92101
| [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 |
105+
| [embedded-io-async](https://github.com/rust-embedded/embedded-hal/tree/master/embedded-io-async) | Async embedded I/O traits | UART read and write operations |
106+
| [defmt](https://github.com/knurling-rs/defmt) | Logging framework for embedded Rust | Debug and status messages during execution |
94107

95108
## Links
96109

0 commit comments

Comments
 (0)