Thermal Palm Reader

RP2040-powered PCB that reads analog thermal input and drives a PWM-controlled motor, with an SSD1306 display showing live readings.

CCMakeRP2040

Built with my brother. A custom PCB centered on the RP2040 that reads analog thermal input through the ADC, converts it to a decimal value, and drives a PWM-controlled rotating mechanism — the hotter the input, the faster it spins.

A SSD1306 OLED display shows the current reading to two decimal places.

Font Tool

Writing text to the SSD1306 turned out to be the most interesting part. The display’s protocol is column-major: each byte you write maps to a vertical column of 8 pixels, advancing one page (8 rows) at a time. Standard font bitmaps are row-major, so there’s a mismatch that requires transposing the glyph data before it can be sent to the display.

To solve this I built an open-source font tool that takes an arbitrary font as input and outputs a C header file containing the transposed bitmap data, ready to #include and write directly to the display. It made adding new characters straightforward instead of manually working out the bit layout from the datasheet.