Ixchel
A handheld cave-survey device I designed, with custom hardware, dual-core RP2350 firmware, a live stick map, and post-dive 3D visualization.
I designed Ixchel to record cave-survey measurements during a dive and turn them into a live stick map. It measures reel distance, orientation, and depth, then logs the data for post-dive review.
The RP2350-based hardware combines a magnetic rotary encoder, a BNO085 IMU, a pressure sensor, and an AMOLED touchscreen in an enclosure I designed and 3D-printed. One Cortex-M33 core runs a 100 Hz navigation loop; the other handles display rendering and logging. A Three.js visualizer reconstructs the recorded route in 3D, with timeline scrubbing, sensor-health colors, and exportable survey maps.
The difficult part was handling sensor failures without treating every measurement as equally trustworthy. The firmware detects conflicting encoder and IMU readings, including a stuck wheel, and flags affected data. IMU recovery progresses through quaternion extrapolation, orientation hold, and hardware reset. Spinlocks protect cross-core state, and navigation calculations run from SRAM to avoid flash-cache latency.