Skip to main content
Version: ACS CC

Bluetooth Proximity Monitoring System

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.

info

Author: Ioan-Vlad Moise
GitHub Project Link: link_to_github

Description

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.

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.

Motivation

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.

Architecture

Architecture Diagram

The system is divided into two independent embedded devices:

  • 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.
  • Bracelet: transmits a continuous Bluetooth signal via the HM-10 module over UART.

Log

Week 20 - 26 April

Researched project requirements and finalized the hardware component list. Ordered all hardware components (HM-10 modules, buzzers, OLED display, buttons, breadboards, wires).

Week 27 April - 4 May

Week 5 - 11 May

I finished the hardware part of the project.

Week 12 - 18 May

Week 19 - 25 May

Hardware

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.

Hardware

Schematics

Schematic Diagram

Bill of Materials

DeviceUsagePrice
STM32 Nucleo-U545RE-QMain microcontroller (x2)provided by lab
HM-10 BLE 4.0 ModuleBluetooth communication via UART (x2)59.98 RON
OLED Display 0.96" SSD1306Shows live distance on base station30.00 RON
Yellow Button with Round CoverAlarm reset input — 2 per device4 RON
Passive Buzzer 3V/3.3VAudio alarm on device (x1)2 RON
Female-Male Wires 20cmComponent wiring (x2)14.90 RON
BreadboardPrototyping5.35 RON
USB PowerbankPortable power for bracelet~50.00 RON
Total~150.15 RON

Software

LibraryDescriptionUsage
embassy-rsAsync embedded framework for STM32Task scheduling and async execution
embassy-stm32STM32 HALUART, I2C, GPIO, and PWM peripheral access
ssd1306OLED display driver over I2CDisplaying the estimated distance
embedded-graphicsText and graphics rendering on OLEDDrawing text and UI elements on the display
heaplessFixed-size data structures for embedded systemsUART parsing buffers without dynamic allocation
  1. embassy-rs documentation
  2. labs ...