Graduating UWaterloo Mechatronics — 2026

firmware engineer

Hi, I'm Prateek.

I write firmware — bare-metal drivers in C on STM32, Verilog on FPGAs. Sometimes both in the same project.

Prateek Singh
// 01

Projects

selected work · 9 completed
IR night-vision headset
~/capstone · MTE 481

Vision AI — IR night vision headset

FPGA video pipeline for a head-mounted IR night-vision system. Verilog on Tang Primer 25K — OV5640 capture, I²C bring-up, line buffering, FLCOS display drive.

FPGAVerilogGowin EDAcapstone
8-bit breadboard computer schematic
~/hardware · breadboard

8-bit breadboard computer

A Turing-complete 8-bit CPU built from discrete logic — ALU, register file, RAM, control unit, all wired up on breadboards. Custom assembly language for programming it.

Hardwarediscrete logicTTLassembly
~/hardware · 6502 + VGA

6502 computer + VGA card

A working 6502-based 8-bit computer on breadboards, paired with a TTL-logic VGA video card generating real HSYNC/VSYNC signals to a monitor.

Hardware6502VGAEEPROM
~/MTE 544 · ROS2

Autonomous robot navigation

A* path planning, particle filter localization from LiDAR + odometry, and PID trajectory control on a ROS2 mobile robot.

PythonROS2A*particle filter
Kinova Gen3 arm with Jenga blocks in the UWaterloo Robohub
~/ME 547 · Kinova Gen3

Jenga Mosaic robot

Kinova Gen3 robotic arm pick-and-place system — reserve brick selection from a disordered pile and Cartesian path execution to expand a Jenga mosaic.

PythonKinova Gen3Kortex APIpick & place
github.com/Prateek2174/uart_bootloader

UART bootloader

A custom UART-based bootloader for the STM32F446RE — receives firmware over serial, writes to flash, jumps to the application.

CbootloaderflashUART
github.com/Prateek2174/sai

SAI audio driver

Serial Audio Interface driver for the STM32 NUCLEO-F446RE — I²S/SAI configuration, DMA streaming, audio peripheral bring-up.

CSAI / I²SDMAaudio
github.com/Prateek2174/usb

STM32 USB

USB device firmware on the STM32F446RE — descriptor setup, endpoint configuration, host enumeration over the on-chip USB peripheral.

CUSBSTM32F446RE
github.com/Prateek2174/F446RE_bare_metal

Bare-metal F446RE

No-HAL register-level drivers for the STM32F446RE — GPIO, USART, and ADC written from the reference manual against custom linker scripts.

CAssemblyno-HALlinker
// 02

Background

about

I write firmware because I want to understand how devices actually work. Bare-metal showed me how hardware components communicate and operate as a system — and that just fed the curiosity. There's nothing quite like the moment a device you've been debugging for days finally comes to life and you can see it and interact with it.

Mechatronics Engineering, University of Waterloo — class of 2026.

// 03

Get in touch

contact