Back to projects

University

Micromouse

An autonomous Micromouse robot integrating custom PCB design, sensor feedback, motor control, maze mapping, and PID-based movement.

Date2025
RoleEmbedded software and hardware integration
SkillsMicroPython, PID Control, PCB Design, Debugging
Micromouse project cover

01

Challenge

The challenge was to design and build an autonomous Micromouse robot capable of navigating an unknown maze and reaching its target as quickly and reliably as possible. The project required the integration of mechanical design, custom electronics, sensors and embedded control into a compact platform. The robot needed to accurately detect walls, control two motors independently and maintain its position while navigating the maze, requiring the development and tuning of closed-loop PID control and autonomous navigation software.

02

Build

For the build, I designed a custom PCB in KiCad that served as both the electrical platform and structural chassis of the robot. The board outline was first developed in Fusion 360, before the circuitry was prototyped on a breadboard to validate the design. The final PCB integrated the Raspberry Pi Pico W, motor driver, encoder connections, sensing circuitry and power electronics, with 3D-printed motor mounts and a battery housing completing the mechanical assembly.

Software was developed in MicroPython, with separate modules for motor control, encoders, sensors and the main navigation logic. Quadrature encoder feedback was used for closed-loop movement, while multiple PD control loops maintained alignment. I also developed maze-mapping software using a 2D matrix, depth-first search and Dijkstra's shortest-path algorithm.

Debugging involved continuous iteration between the hardware and software. I used a multimeter and oscilloscope to diagnose electrical and sensor issues, while practical testing in the maze was used to identify instability in the PD control loops. This led to recalculating the control gains and implementing accurate loop timing for the derivative term, significantly improving the stability and repeatability of the robot.

Underside of the Micromouse PCB
The underside of the Micromouse PCB
Testing and debugging the Micromouse with an oscilloscope
Testing and debugging with an oscilloscope

03

Learning

This project developed my understanding of how hardware, software and control systems must work together to produce a reliable system. The biggest learning came through testing and debugging, where problems only became clear once the complete robot was operating. Developing and tuning the PID control, diagnosing electronics with an oscilloscope, and adapting the design improved my ability to approach problems systematically. The project reinforced the importance of prototyping, validation and iterative development rather than expecting a design to work correctly first time.