USB Audio Interface
For a long time I’d wanted to make an audio interface for recording music and voice calls on my computer. It seemed like the ideal next step from making analog guitar effects pedals and some small microcontroller projects. I finally had the perfect opportunity in my last semester during the course CSE 145: Embedded Systems Design Project. The course is long over by the time I’ve gotten around to writing this post, but I’m happy to report that I still use this interface daily.
Iterative BVP Solvers on FPGAs
For the course MATH179: Projects in Computational and Applied Mathematics at UCSD, I spent some time looking into accelerating ODE boundary value problem solvers on an FPGA. Unfortunately, this took place before I had learned of HLS, so it was written entirely in Verilog. I have slightly adapted my report for that course below to hopefully show some general practices about how FPGAs can be applied to HPC tasks. It is definitely worth noting that due to time constraints, this problem is very contrived, as linear ODE BVPs can be solved directly.
USB Controller with STM32
This project originally started nearly six years ago, when my friend and I patched together a prototype in my garage over the course of a week. It was constructed out of breadboard pushbuttons, birch plywood, an Arduino, and lots of glue. There were many issues with that version, including a patchwork driver, analog/digital interference, and unworkable wire management.
In 2020 we decided to revive the project, with the goal of fixing all the aforementioned issues, as well as providing a clean and ergonomic exterior.
Raspberry Pi LCD Kernel Driver
Just to preface, this was done as an educational exercise. There are great existing user space libraries for interfacing with the well-loved st7036 chipset. However, I thought it would be an interesting challenge to write a kernel module for raspberry pi that implemented a character device driver at the register level. Previously, I wrote a driver for this display for stm32, so my goal was to focus on the kernel aspects rather than the interface, which I copied with few changes.
Remote Control Car
The goal of this project was to create a small and simple RC car using only materials that were on hand. While most RC devices are operated off a radio transmitter and receiver running directly into a motor controller, I opted for a more standard robotics approach of using an on-board computer (specifically a Raspberry Pi 2). This would then have a Wi-Fi dongle where it can communicate with a controlling computer with a gamepad for driving controls.