Skip to content

Commit b44197b

Browse files
vladdd170Copilot
andauthored
Project/ioan vlad.moise (#1223)
* 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 --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 1381ae3 commit b44197b

4 files changed

Lines changed: 105 additions & 0 deletions

File tree

website/versioned_docs/version-acs_cc/project/2026/ioan_vlad.moise/diagramacompressedmoisevlad.svg

Lines changed: 4 additions & 0 deletions
Loading
36.8 KB
Loading
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# Bluetooth Proximity Monitoring System
2+
A two-device embedded system that uses Bluetooth to detect when a wearable bracelet moves too far from a base station and triggers alarms on base device.
3+
4+
:::info
5+
6+
**Author**: Ioan-Vlad Moise \
7+
**GitHub Project Link**: [link_to_github](https://github.com/UPB-PMRust-Students/proiect-ioan_vlad.moise)
8+
9+
:::
10+
11+
<!-- do not delete the \ after your name -->
12+
13+
## Description
14+
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+
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.
18+
19+
20+
## Motivation
21+
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.
23+
24+
25+
## Architecture
26+
27+
![Architecture Diagram](diagramacompressedmoisevlad.svg)
28+
29+
The system is divided into two independent embedded devices:
30+
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+
34+
35+
## Log
36+
37+
<!-- write your progress here every week -->
38+
39+
### Week 20 - 26 April
40+
Researched project requirements and finalized the hardware component list. Ordered all hardware components (HM-10 modules, buzzers, OLED display, buttons, breadboards, wires).
41+
42+
### Week 27 April - 4 May
43+
44+
### Week 5 - 11 May
45+
I finished the hardware part of the project.
46+
47+
### Week 12 - 18 May
48+
49+
### Week 19 - 25 May
50+
51+
## Hardware
52+
53+
The project uses two STM32 Nucleo-U545RE-Q boards as the main processing units: one for the base station and one for the bracelet. Each board is connected to one HM-10 BLE 4.0 module via UART for Bluetooth communication. One device includes one passive 3.3V buzzer for audio alerts and two physical button for alarm reset and stopping the alarm to get out of the zone, for a total of 1 buzzers and 2 buttons in the full system. The base station additionally drives one SSD1306 OLED display over I2C to show live distance estimates. The bracelet is powered by a USB powerbank/phone for portability.
54+
55+
![Hardware](hardwareresized.webp)
56+
57+
58+
### Schematics
59+
60+
![Schematic Diagram](schematicresized_moisevlad.webp)
61+
62+
### Bill of Materials
63+
64+
<!-- Fill out this table with all the hardware components that you might need.
65+
66+
The format is
67+
68+
69+
-->
70+
71+
| Device | Usage | Price |
72+
|--------|--------|-------|
73+
| [STM32 Nucleo-U545RE-Q](https://www.st.com/resource/en/user_manual/um3121-stm32-nucleo144-boards-mb1549-stmicroelectronics.pdf) | Main microcontroller (x2) | provided by lab |
74+
| [HM-10 BLE 4.0 Module](https://people.ece.cornell.edu/land/courses/ece4760/PIC32/uart/HM10/DSD%20TECH%20HM-10%20datasheet.pdf) | Bluetooth communication via UART (x2) | [59.98 RON](https://www.optimusdigital.ro/en/wireless-bluetooth/862-modul-bluetooth-40-cu-adaptor-compatibil-33v-si-5v.html) |
75+
| [OLED Display 0.96" SSD1306](https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf) | Shows live distance on base station | [30.00 RON](https://www.emag.ro/display-oled-0-96-inch-128x64-lcd-arduino-ssd1306-cu-interfata-iic-i2c-albastru-bn621/pd/D436WM3BM/) |
76+
| [Yellow Button with Round Cover](https://components101.com/switches/push-button) | Alarm reset input — 2 per device | [4 RON](https://www.optimusdigital.ro/en/buttons-and-switches/13604-yellow-button-with-round-cover.html) |
77+
| [Passive Buzzer 3V/3.3V](https://components101.com/sites/default/files/component_datasheet/Buzzer%20Datasheet.pdf) | Audio alarm on device (x1) | [2 RON](https://www.optimusdigital.ro/ro/audio-buzzere/12247-buzzer-pasiv-de-33v-sau-3v.html) |
78+
| [Female-Male Wires 20cm](https://media.digikey.com/pdf/Data%20Sheets/Digi-Key%20PDFs/Jumper_Wire_Kits.pdf) | Component wiring (x2) | [14.90 RON](https://www.optimusdigital.ro/ro/fire-fire-mufate/12466-fire-colorate-mama-tata-40p-40-cm.html) |
79+
| [Breadboard](https://components101.com/sites/default/files/component_datasheet/Breadboard%20Datasheet.pdf) | Prototyping | [5.35 RON](https://www.optimusdigital.ro) |
80+
| USB Powerbank | Portable power for bracelet | ~50.00 RON |
81+
| **Total** | | **~150.15 RON** |
82+
83+
84+
## Software
85+
86+
| Library | Description | Usage |
87+
|---------|-------------|-------|
88+
| [embassy-rs](https://github.com/embassy-rs/embassy) | Async embedded framework for STM32 | Task scheduling and async execution |
89+
| [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 |
91+
| [embedded-graphics](https://github.com/embedded-graphics/embedded-graphics) | Text and graphics rendering on OLED | Drawing text and UI elements on the display |
92+
| [heapless](https://github.com/rust-embedded/heapless) | Fixed-size data structures for embedded systems | UART parsing buffers without dynamic allocation |
93+
94+
95+
## Links
96+
97+
<!-- Add a few links that inspired you and that you think you will use for your project -->
98+
99+
1. [embassy-rs documentation](https://embassy.dev/)
100+
2. [labs](https://embedded-rust-101.wyliodrin.com/docs/acs_cc/category/lab)
101+
...
47.7 KB
Loading

0 commit comments

Comments
 (0)