Target repository
This example should be created in micropython-steami-sample, not in micropython-steami-lib. BLE examples are not tied to a specific driver and belong in the sample repo.
What
Create an example using two STeaMi boards: one broadcasts a BLE beacon, the other scans and displays a proximity gauge on the OLED based on the received RSSI signal strength.
Why
Second step in the BLE + indoor localization path. Introduces the concept of RSSI as a proxy for distance, which is the foundation of BLE indoor positioning.
Suggested approach
- Beacon board: advertise with a recognizable name (e.g.
STeaMi-BEACON)
- Scanner board: scan for the beacon, read the RSSI value
- Map RSSI to a proximity level (e.g. -30 dBm = very close, -90 dBm = far)
- Display a
steami_screen.gauge() that fills up as the beacon gets closer
- Optional: add color coding (GRAY=far, LIGHT=medium, RED=close)
Learning goals
- BLE scanning with
aioble
- Understanding RSSI and its relationship to distance
- Signal filtering (RSSI is noisy — consider averaging over N samples)
Hardware
- 2 STeaMi boards (one beacon, one scanner)
- SSD1327 OLED on the scanner board
Depends on
Target repository
This example should be created in micropython-steami-sample, not in micropython-steami-lib. BLE examples are not tied to a specific driver and belong in the sample repo.
What
Create an example using two STeaMi boards: one broadcasts a BLE beacon, the other scans and displays a proximity gauge on the OLED based on the received RSSI signal strength.
Why
Second step in the BLE + indoor localization path. Introduces the concept of RSSI as a proxy for distance, which is the foundation of BLE indoor positioning.
Suggested approach
STeaMi-BEACON)steami_screen.gauge()that fills up as the beacon gets closerLearning goals
aiobleHardware
Depends on