The hanging plotter is a cheap way to build a plotter using 3d printing and an arduino
Designed a dual-point string art plotter using 3D-printed parts, stepper motors, timing belts, and an ESP32 microcontroller
Rapidly iterated on 3D printed mechanical assemblies to resolve motor arm fit, shaft clearance, and standoff interference issues
Built reproducible Nix derivations for the ESP-IDF SDK and xtensa-esp32 toolchain on NixOS
Set up a reproducible ESP32 ESP-IDF development environment on NixOS by patching Nix packages and debugging the VSCode Espressif extension from source
Configured a reproducible Flutter and Android development environment on NixOS using shell.nix with custom package overlays
Established BLE GATT server on ESP32 using ESP-IDF, upgrading the SDK to resolve core panic memory allocation issues
Repurposed an ESP32 as a SUMP-compatible logic analyzer by integrating esp32_sigrok with sigrok and Pulseview for capturing stepper motor timing signals
Repurposed an Arduino Uno as a multi-channel logic analyzer to capture and inspect digital signals on ports 8 through 11
Resolved ESP32 RMT looping artifacts by disabling software transmit interrupts before enabling hardware loop mode, achieving precise square wave generation
Packaged a reproducible Rust cross-compilation toolchain for ESP32 microcontrollers using custom Nix derivations
Replaced L298N H-bridge with TMC2208 stepper driver to reduce GPIO overhead, eliminate overheating, and simplify microstepping control
Implemented ESP32 Bluetooth Low Energy heart rate service in Rust using the NimBLE stack by translating and adapting C reference implementations
Packaged esp-idf build system into a standalone Rust library to enable reusable ESP32 Bluetooth development