Devices & Prototyping

VVIR Cardiac Pacemaker

A closed-loop pacemaker built across six modules and demonstrated on live (pithed) frog-heart tissue — from microvolt sensing to rate-adaptive pacing.

The VVI pacemaker running on the bench, driven from a cardiac simulator. No sound.

Sensing and VVI pacing

A bandpass sensing front-end feeding VVI pacing firmware on an Arduino Nano Every.

  • Bandpass sensing (~1–48 Hz) to detect intrinsic cardiac activity.
  • VVI pacing firmware with refractory and escape-interval logic.
  • Strength-duration characterization of the stimulus.

Stimulation and rate adaptation

MOSFET-driven stimulation validated against real stimulator output, with an accelerometer closing the loop for rate-adaptive pacing.

  • MOSFET-driven stimulation circuit, validated against real stimulator output.
  • ADXL335 accelerometer drives activity-based rate adaptation (VVIR).
  • Demonstrated end-to-end on live (pithed) frog heart tissue.
The pacemaker on a lab bench: a breadboard carrying the analog front end and an Arduino Nano Every, a small OLED, and a cardiac patient simulator wired in beside it.
Bench setup — front end and Nano Every on the breadboard.

Raw signal straight off the electrode — buried in noise, drift, and 60 Hz hum.

ToolsArduino Nano Every · Analog front-end · Embedded C · MOSFET driver · ADXL335

mHealth Tympanometer

Working on a layperson-operable handheld tympanometer for pediatric middle-ear screening in underserved communities — funded by PCORI and Duke Global Health, with clinical and industry partners. My part: adding an on-device display, standing up the tympanogram-labeling web stack, and building the labeling pipeline for its planned on-device ML classifier.

The display state machine running on the device. No sound.

Firmware and display

Added an OLED display subsystem to a BLE medical device on Zephyr RTOS / nRF52833.

  • Designed a 10-state display state machine that mirrors the measurement flow.
  • Ran a display-hardware tradeoff study (mono OLED vs Memory LCD vs e-paper vs TFT) against power, BOM cost, and measurement-noise constraints.
  • Ported the display driver from I²C to SPI.
  • Diagnosed a blank-screen failure down to a pin conflict with the debugger's internal UART and resolved it on validated hardware.

Full-stack and infrastructure

Stood up a Flask web app for audiologists to label ~5,000 tympanograms — the ground-truth dataset for the device’s planned on-device ML classifier.

  • Python · Jinja · HTMX · SQLite with server-side matplotlib rendering, running on a Linux VM.
  • Built the labeling pipeline that will feed a planned on-device ML classifier — the classifier is in development; my role is the data pipeline, not training the model.
  • Deployment: nginx reverse proxy, HTTPS/SSL, systemd service, cron backups.
S0 · INSERT PROBE
ear type
type TPP ECV peak Y
Press start to run the probe through a middle-ear measurement.

ToolsEmbedded C · Zephyr RTOS · nRF52833 · Python · Flask · SQLite · nginx