ESP32 Electronic Load
Electronic Load is useful when you are trying to measure power supply current capabilities.
I wrote the firmware to control how much current the resistor load gets by adjusting MOSFET Vgs voltage via DAC.
This project is capable of sinking 3A current @30V max (90 Watt), although proper heat dissipation is needed.
ESP32 Auto Ranging Current Monitor
When working with low-power devices, it means we working in the microampere to milliampere current range. If the device uses deep sleep-wakeup cycles then an ordinary multimeter is not really the right tool to measure the current.
I built a current sensor that has auto-ranging capability (from tens uA to hundreds of mA). The firmware is responsible for dynamically switching the range and calculating the current flowing.
USB Smartcard Reader
A side project when I was employed by Xirka, a semiconductor chip design house. I built this USB Smartcard Reader as an exercise in USB low-level programming, and of course, USB protocol reverse engineering exercise.
I was able to program an ATMega32U4 as a CCID Smartcard USB device using LUFA USB Stack. This project is actually the beginning of my protocol reverse engineering, later I have reverse engineered more protocols including CXPI for Automotive.
HDSP-2112 Display Driver (mid-2016)
I found a decade-old broken Motorola wireless telephone with a nice display in it. I took apart the display and write a display driver for it. This is one of my earliest works on device driver design back when I know nothing about embedded.
Ancient Keyboard Piano to USB Adapter
I have this ultra old electric keyboard piano (photo will be uploaded later) that is actually older than me. It’s still working to this day, but the sound is terrible for today’s standard.
I wanted to use this old keyboard as a controller for my virtual piano on my PC. It turned out pretty usable though. I wrote the firmware to convert the piano keys to MIDI messages which were then interpreted by the virtual piano.
If you are a programming language nerd, you might know an esoteric programming language called Brainfuck. It is a simple language that is Turing-complete (a term to indicate something is capable to do any computational tasks given enough time and memory).
I wrote an interpreter for Brainfuck just for fun.
The code on the left side is the Brainfuck program for printing “Hello World!”
This is an ESP32 Port for Handheld Game Console Gamebuino META which is originally based on ATSAMD21. Ported to ESP32 TTGO T4 v1.3 with ILI9341 LCD Display.
My attempt in cryptography. I implemented a Hash-based Message Authentication Code constructed from MD5 hash function.