EPR Positioning Stage
A USB-controlled stage that positions a spectrometer inside a magnet. In 10 of 10 trials, it landed within ±0.03 mm of its target.
Read project notes →Engineer interested in how people think and move, and how to turn that into hardware robots can learn from.

A USB-controlled stage that positions a spectrometer inside a magnet. In 10 of 10 trials, it landed within ±0.03 mm of its target.
Read project notes
An ESP32 board that lets a computer trigger an electrosurgical generator while retaining foot-pedal control.
Read project notes
A USB-controlled stage that positions a spectrometer inside a magnet. In 10 of 10 trials, it landed within ±0.03 mm of its target.
Read project notes →
A relay board for computer-controlled electrosurgical activation, foot-pedal control, and event logging in ROS2.
Read project notes →
An ankle-worn stimulation prototype. I worked on circuit simulations, Arduino firmware, and electrode testing.
Read project notes →
Our first RPM pickup read cleanly to 15,000 RPM on the bench, then proved unreliable on the car. Now I’m building a mixed-signal DAQ board for the team’s engine/CVT dyno.
Read project notes →
Schematic entry and PCB layout for a compact 1.7 GHz microwave field probe.
Read project notes →I’m building a board that lets a computer trigger an electrosurgical generator while the surgeon can still use the pedal. It also logs pedal events in ROS2.
The generator was a black box. I expected a straightforward contact closure, but the resistance readings didn’t look like a simple switch. I mapped the connections and worked out which commons needed to stay separate.
I started with an ESP32 and relays on a breadboard, then designed and assembled the PCBs shown below.
The six-relay v2 design supports CUT, COAG, and bipolar. The latest design, v3, uses eight relays and adds LigaSure.
The watchdog monitors a firmware heartbeat to catch a hung ESP32. But if the PC application stops sending commands while the ESP32 keeps running, the last ON command can stay active. I’m adding a timeout so the application has to keep renewing that command.
Spyglass Mini was a compact probe for a 1.7 GHz microwave cavity. A PhD researcher designed the circuit and handled the calculations. I entered the schematic and laid out the PCB, working to make the board smaller.
This was my introduction to impedance matching and RF shielding in PCB layout.
The original specification was roughly 1 MSps with SD logging and a six-hour battery target. We later learned the application needed roughly 100 MSps. The lab pursued a different design for that requirement, and this board was never fabricated.
The lab needed to move a miniaturized electron paramagnetic resonance spectrometer into a magnet’s uniform-field region. I built a USB-controlled stage around a ball-screw rail and stepper motor, with a custom controller PCB and PC controls.
The stage needed to start from the same place every time. I used a limit switch to set the home position before each move, then checked where the stage landed.
The controller uses an RP2040-based board and a TMC2209 driver for the NEMA 17 stepper. The PC software handles USB commands for homing and movement.
I ran 10 trials: home the stage, command a move to the target, and check where it landed under the lab’s inspection microscope. All 10 landed within ±0.03 mm, read off the microscope’s scale. The field of view was so narrow that about two extra motor steps would have pushed the target off the screen, so a miss would have been obvious.
PelviStim was our team’s ankle-worn stimulation project. My circuit work focused on the op-amp supply rails and a DC–DC converter for the higher-voltage output.
In LTspice, I worked on the converter and a separate voltage-to-current circuit. The converter rang, and its output wasn’t current-controlled yet. The current pump held about 22 mA from 500 Ω to 1.5 kΩ. At 3 kΩ, that current would require 66 V across the load, beyond the circuit’s ±48 V rails; simulated output reached about 16 mA.
While the custom circuit was still in simulation, we tested hardware with a NeuroStimDuino shield on an Arduino Mega. I set up and characterized its output with an oscilloscope and helped with electrode/contact impedance testing.
I made the Arduino communicate over Bluetooth and handle incoming commands. My teammate handled the phone app. During integration, we found that the two sides were using different command formats.
I documented a seven-person comparison of the prototype electrodes with TENS/gel pads, using NeuroStimDuino and an oscilloscope. We recorded the current and voltage at each participant’s reported sensation threshold.
| Electrode | Mean recorded current at sensation threshold |
|---|---|
| Prototype | 7.43 mA |
| TENS/gel comparison pads | 10.86 mA |
The prototype electrodes reached sensation threshold at lower current but needed higher voltage, making voltage headroom a concern for the custom circuit.
In the team’s five-person usability test, everyone reached the ready-to-start point within 15 minutes. Three were team members; two had never seen the device. The test used the wearable with an off-the-shelf Bluetooth stimulator and ended before a treatment session.
The two new users struggled with placement, getting orientation and contact wrong until observers flagged it. That led to clearer placement instructions in the app.
We’re building a dyno to measure engine power and CVT efficiency across the RPM range so we can tune the drivetrain. I’m working on the data-acquisition board and the calculations for the two transducers.
Our earlier perfboard RPM pickup read cleanly on the bench up to 15,000 RPM. On the car, the spark-plug pickup was too inconsistent to rely on. In separate tests of the two torque transducers, I found that one had failed.
Next, I’ll test the PCB inputs with known signals and check the power calculations against the transducer readings.
I'm studying electrical and biomedical engineering at Johns Hopkins, with a minor in robotics. In the IMERSE Lab, I work on a pedal interface for robotic-surgery research and have collected microrobot motion data for imitation learning. I also develop drivetrain data-acquisition electronics for Blue Jay Racing.
Research instrumentation, robotics, and medical devices.
Email is the best way to reach me about research, internships, or a project.