BLE Specification for OmniRing Firmware#
Device Overview#
Device Name:
OmniRing_XXXXXX(last 3 bytes of MAC address)Platform: Adafruit Bluefruit nRF52
Firmware Function: Streams PPG (Red, IR, Green), IMU (accel, gyro, mag), and temperature data
Update Rate: Controlled by loop frequency (~5–10ms interval)
GATT Services & Characteristics#
GATT Services#
Service |
UUID |
Description |
|---|---|---|
Device Information Service |
|
Provides manufacturer and model info |
DFU Service |
|
Allows OTA firmware update |
UART Service (Adafruit BLE) |
|
Custom service for serial over BLE |
Characteristics#
Characteristic |
UUID |
Properties |
Direction |
|---|---|---|---|
TX |
|
Notify |
Device → Client |
RX |
|
Write Without Response |
Client → Device |
Payload Format#
Each notification packet consists of 56 bytes representing 14 float values (4 bytes each):
[PPG_Red, PPG_IR, PPG_Green, AccX, AccY, AccZ, GyrX, GyrY, GyrZ, MagX, MagY, MagZ, Temp, Timestamp]
Data Format Details#
floatvalues are encoded in IEEE 754 format, little-endianUnits:
Red/IR/Green: Raw ADC readings
Accel: m/s²
Gyro: rad/s
Magnetometer: μT
Temp: °C
Timestamp:
millis()at send time in milliseconds
Performance Parameters#
Parameter |
Value |
|---|---|
MTU Size |
247 bytes |
PHY Mode |
2 Mbps |
Connection Interval |
7.5 - 15 ms |
Max Packet Size |
244 bytes |
Max Payload per Message |
56 bytes |
Expected Throughput |
~1 notification/loop (~30-50 Hz practical) |
Advertisement Parameters#
Parameter |
Value |
|---|---|
Advertising Interval |
20 ms (fast), 152.5 ms (slow) |
Timeout |
30 sec fast mode |
Advertisement Packet |
Flags, Tx Power, UUIDs |
Scan Response |
Device name ( |