Meemo

Overview

I worked as a firmware intern on WristBuddy, MEEMO's parent-and-child safety device. The system uses custom ESP32-WROOM-32E and DWM1000 hardware to exchange ultra-wideband ranging data between an anchor and a tag, estimate separation, and provide LED, haptic, and sound alerts. The robotics and firmware lead owned the main architecture and most of the core code. I supported that work by developing and validating peripheral behavior, exercising edge cases on the physical units, and helping diagnose problems revealed by testing.

My contribution

As the firmware intern, I supported the robotics and firmware lead rather than owning the full firmware architecture. I wrote and tested code for the haptic motor, LED, and sound peripherals, ran extensive edge-case tests, diagnosed failures from logs and physical behavior, and collaborated with the lead on fixes and retesting.

Skills: ESP32 C++ · Peripheral Integration · Edge-Case Testing

Goals

I needed to support the firmware lead by making the user-feedback peripherals dependable and by finding edge cases that were difficult to reproduce during normal development.

  • The haptic motor, LED, and sound feedback to behave consistently on the physical hardware.
  • Test failure conditions such as stale UWB ranging, close-range behavior, interrupted measurements, and power cycles.
  • Capture enough serial and stored-log evidence to separate peripheral, application-state, and UWB-ranging problems.
  • Communicate reproducible failures and verify fixes with the robotics and firmware lead.

Design

  1. Reviewed the existing firmware with the lead to understand the main states, expected device behavior, and useful test points.

  2. Implemented and validated haptic, LED, and sound behavior on the physical anchor and tag hardware.

  3. Exercised edge cases involving power cycles, stale UWB data, close-range behavior, and interrupted measurements.

  4. Used serial output and stored logs to determine whether a failure originated in a peripheral, application-state handling, or the UWB ranging path.

  5. Shared reproducible test cases with the firmware lead, worked through code changes together, and retested the affected behavior.

  6. Ran controlled walk-away tests to document real threshold transitions and the conditions under which ranging became stale.

Early Meemo prototype with an illuminated LED ring and breadboard electronics
Early interface prototype
Meemo prototype electronics with an ESP32 board, speaker, and LED ring
LED and audio integration
Hand-wired Meemo prototype assembly on perfboard
Hand-wired assembly
Meemo anchor and tag hardware with ESP32 and UWB modules
Anchor and tag hardware

Outcomes

My contributions improved the reliability and diagnosability of the field-testable firmware. I implemented and tested code for the haptic motor, LED, and sound feedback, then used repeatable edge-case and walk-away tests to expose problems in real hardware. One test produced two correct alert transitions and a correct return to the safe state. A longer-distance UWB test exposed stale range measurements at about 5.16 m raw and 4.90 m filtered. I documented the failure conditions and worked with the firmware lead on code changes and retesting.

  • Observed two correct alert transitions during a live walk test and verified that the device returned to the safe state when separation decreased.
  • Confirmed and documented the conditions under which UWB range measurements became stale, giving the firmware lead a specific failure mode to address.

I learned that effective firmware support is as much about producing a clear, repeatable failure case as it is about writing code. UWB measurements could become stale while the device continued operating, so careful testing and logging were necessary to isolate the ranging failure from peripheral behavior. Working through those observations with the firmware lead taught me how to turn bench and field behavior into focused code changes. My next step would be a larger test matrix covering open-area range, power cycles, peripheral timing, and repeated recovery attempts.