TinyML Handwriting Recognition System
C++ · Arduino · TinyML · CNN · Merced College, Spring 2026
A system where you draw letters in the air with a TinyML microcontroller and a neural network guesses what you wrote. Building on HarvardX's magic_wand application, I tracked the board's motion to draw characters on a computer canvas, used an Arduino Uno with buttons to save or clear drawings, and sent each saved image to a pre-trained convolutional neural network for a prediction.
- Wrote the C++ application that connects everything: hardware input, canvas state, image export, and model predictions.
- Exported drawings as PNG files and organized them into datasets for prediction and future training.
- Used LED patterns to show when a drawing was saved and how confident the model was in its prediction.
View on GitHub
Character Annotator
Java · Data Structures & Algorithms · PyTorch-compatible · Merced College, Spring 2025
Handwriting recognition models need a lot of labeled samples to train on, and I couldn't find a good public dataset, so I built a tool to make my own. The Character Annotator lets you draw characters, label them, and save them as a dataset that plugs straight into PyTorch.
- Saves each drawing as a uniquely named image and records its label in a JSON file that PyTorch's Dataset can read directly.
- Uses a HashMap to count samples per label, so you can see how balanced your dataset is.
- Uses a stack for undo, removing the most recent image and updating the dataset file in one step.
- Tracked down a bug where a shadowed variable was silently keeping new entries out of the saved dataset.
View on GitHub