Fig. 01
Try it
AI-generated voice and avatar
01
Problem & approach
The problem
Measure blood pressure with a small, portable device: read the pressure in a standard cuff and turn it into heart rate, systolic and diastolic values a person can read.
The approach
A 5-stage bare-metal state machine on the ATmega32U4 drives a Honeywell MPRLS sensor over I2C. Custom driver logic checks the sensor’s status bytes and bit-shifts its 24-bit raw readings into real pressure, and a peak detector reads the cardiac cycle.
02
How it works
- FirmwareA 5-stage bare-metal state machine on the ATmega32U4 (Adafruit Circuit Playground) runs the whole measurement.
- Sensor driverCustom I2C driver logic verifies the MPRLS status bytes and bit-shifts 24-bit raw telemetry into real-time pressure.
- Peak detectionA continuous peak detector on a 20-sample circular buffer computes real-time pressure derivatives.
- The readingSystolic, diastolic and heart rate come from the waveform slopes and the largest amplitude differences across the cardiac cycle. The NeoPixel ring guides the user through it.
03
Results & stack
- 5-stage
- bare-metal state machine
- 24-bit
- raw sensor telemetry
- 20-sample
- peak-detection buffer
- ATmega32U4
- Arduino
- C/C++
- I2C
- Honeywell MPRLS
