Skip to the content
PCBKitNew board
2 layers100 × 80 mmMm3.0, the printed circuit board in 3D

A fully autonomous micro mouse built from scratch

Size
100 × 80 mm
Copper layers
2
Thickness
1.6 mm
Parts
57
Nets
85
Pads
259
Tracks, vias
429, 84
Pours
26
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
19 Aug 2026
Updated
19 Aug 2026

Overview

Mm3.0 is an open-source printed circuit board by USI-27, from the USI-27/microMouse repository on GitHub. It is a 2-layer board of 100 × 80 mm with 57 parts on 85 nets, routed with 429 tracks and 84 vias.

It is built around the AMS1117-5.0, MPU-6050 and TEFT4300, with the B6B-ZR and 1N4148WS among its other parts. Its parts include 18 capacitors, 13 resistors, 8 transistors, 6 diodes and 4 ICs. It belongs with the RP2040 boards of this library.

Main components

5

README

README.md

MicroMouse Project

This project implements a micromouse robot using a Raspberry Pi Pico W microcontroller. The robot is designed to solve a maze using the flood fill algorithm, with advanced motion control, wall detection, and a custom-designed PCB.

Repository Structure

text
MicroMouse/
├── MicroMouse Software/       # Firmware source code
│   ├── Headers/                # Header files (.h)
│   ├── images/                 # README images
│   ├── Cell.cpp
│   ├── IR_Sensors.cpp
│   ├── Int_Vector.cpp
│   ├── Maze_Algorithm.cpp
│   ├── Motion_Planner.cpp
│   ├── Profile.cpp
│   ├── Queue.cpp
│   └── Simple_Run_Micromouse_V1.ino
└── MicroMouse Design Files/   # Hardware design files
    ├── mm3.0/                  # KiCad project (schematic + PCB)
    ├── manufacturing/          # Gerbers, drill files, BOM, pick-and-place
    ├── images/                 # PCB and assembly renders
    ├── schematic.pdf
    └── HARDWARE.md             # Detailed hardware documentation

Hardware Implementation

MicroMouse Hardware

The image above shows the actual hardware implementation of the micromouse robot, featuring:

  • Raspberry Pi Pico W at the center
  • Dual motor setup with encoders
  • IR sensors for wall detection
  • Custom PCB design for component integration
  • Compact and efficient layout

Full PCB schematics, KiCad source files, manufacturing (Gerber/BOM) files, and design writeups are available in MicroMouse Design Files/ — see HARDWARE.md for a detailed breakdown of the sensor placement and board layout.

Achievements 🏆

  • 🥇 1st Place at IIT Roorkee's Annual Tech Fest - Cognizance '25, Micromouse Competition (Prize: ₹1,00,000)
  • 🥇 1st Place at Delhi Technological University's Annual Tech Fest - Invictus '25, Micromouse Competition
  • 🥇 1st Place at BITS Pilani's Annual Tech Fest - Apogee '25, Micromouse Competition
  • 🥉 3rd Place at IIT Jodhpur's Annual Tech Fest - Prometeo '25, Micromouse Competition
  • 🥉 3rd Place at RGIPT's Annual Tech Fest - Urjotsav '24

Video Demonstration

Check out the micromouse robot in action: Watch on YouTube

Hardware Components

  • Microcontroller: Raspberry Pi Pico W
  • Motors: 2 DC motors with encoders
  • Sensors:
    • IR sensors for wall detection (Left, Right, Front)
    • MPU6050 gyroscope for orientation
    • Encoders for distance measurement
  • Motor Driver: TB6612FNG dual motor driver

Project Structure (Software)

The firmware is organized into several key components:

  1. Cell.h/cpp — Defines the maze cell structure and properties
  2. Int_Vector.h/cpp — Custom vector implementation for sensor data
  3. IR_Sensors.h/cpp — Wall detection and sensor reading functionality
  4. Maze_Algorithm.h/cpp — Flood fill algorithm and maze solving logic
  5. Motion_Planner.h/cpp — Movement control and motor functions
  6. Profile.h/cpp — Global configuration and pin definitions
  7. Queue.h/cpp — Queue implementation for flood fill algorithm

How It Works

1. Initialization (setup())

  • Configures serial communication
  • Initializes MPU6050 gyroscope
  • Sets up encoder pins and interrupts
  • Configures motor driver pins
  • Sets initial maze walls for the starting position

2. Maze Exploration Flow

The robot explores the maze in multiple rounds:

cpp
for (int round = 1; round <= Exploration_Rounds; round++) {
    searchMode = FIND_CENTRE;  // First find the center
    findGoal();
    searchMode = FIND_START;   // Then return to start
    findGoal();
}

3. Flood Fill Algorithm

The flood fill algorithm works as follows:

  1. Initializes all cells with -1 cost
  2. Sets goal cells (center or start) with cost 0
  3. Propagates costs to neighboring cells
  4. Robot moves to the neighboring cell with lowest cost

4. Wall Detection

  • Uses IR sensors to detect walls
  • Updates maze wall information in real-time
  • Maintains wall consistency between adjacent cells

5. Movement Control

The robot uses several movement functions:

  • moveForward(): Move one cell forward
  • turnLeft(): Turn 90 degrees left
  • turnRight(): Turn 90 degrees right
  • Uses PD (Proportional-Derivative) control for smooth motion
  • Gyroscope feedback for accurate turns
  • Encoder feedback for distance measurement

6. Navigation Logic

Wall Update:

cpp
updateWalls();  // Detect and update wall information

Path Planning:

cpp
floodOpenNeighbours();     // Update cell costs
getMinDistanceDirection();  // Choose best direction

Movement:

cpp
moveInDirection();  // Execute movement

Key Features

Adaptive Movement:

  • PD control for straight line motion
  • Gyroscope-based rotation control
  • Wall following capability

Intelligent Maze Solving:

  • Flood fill algorithm for path planning
  • Multiple exploration rounds
  • Efficient center finding and return to start

Robust Sensor Integration:

  • IR sensor filtering
  • Encoder-based distance measurement
  • Gyroscope-based orientation tracking

Configuration

Key parameters can be adjusted in Profile.h:

  • MAZE_SIZE: Size of the maze (default: 8x8)
  • Exploration_Rounds: Number of exploration rounds
  • Sensor thresholds
  • Motor control parameters

Usage

  1. Upload the code (Simple_Run_Micromouse_V1.ino) to the Raspberry Pi Pico W
  2. Place the robot at the start position (0,0)
  3. The robot will automatically:
    • Find the path to the center
    • Return to start
    • Repeat for the specified number of rounds
    • Make a final run to the center

Debugging

  • LED indicators for status
  • Serial output for debugging
  • Button to clear maze walls

Authors

Built by USI-27 and paramveer5404 .

Parts

57
QtyValueFootprintReferences
5100nFCapacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolderC2, C4, C10, C12, C14
42KResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR2, R3, R4, R5
451kResistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolderR7, R8, R9, R13
45MM EmitterLED_THT:LED_D5.0mm_IRBlackD2, D3, D4, D5
4DMN1019USN-7SPX3819M5-L-5-0:SOT95P285X140-3NQ2, Q4, Q5, Q8
4TEFT4300LED_THT:LED_D3.0mm_ClearQ1, Q3, Q6, Q7
34u7Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC9, C11, C13
210 ohmResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR6, R12
2100nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC6, C7
210uFCapacitor_Tantalum_SMD:CP_EIA-3216-10_Kemet-I_Pad1.58x1.35mm_HandSolderC1, C3
210uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC5, C8
25.6ohmResistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR10, R11
2B6B-ZRB6B-ZR:B6B-ZRX1, X2
2N20 myTools:N20MotorWithMountN20, N20
1100nCapacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolderC15
1100nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC16
110nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC17
11KResistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR1
11N4148WSDiode_SMD:D_SOD-323_HandSolderingD1
12n2Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC18
1AMS1117-5.0Package_TO_SOT_SMD:SOT-223-3_TabPin2U4
1B2BConnector_JST:JST_XH_B2B-XH-AM_1x02_P2.50mm_VerticalJ1
1BuzzerBuzzer_Beeper:Buzzer_12x9.5RM7.6BZ1
1LED_GREENLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD6
1LOGOLOGOlogo
1MPU-6050Sensor_Motion:InvenSense_QFN-24_4x4mm_P0.5mmU3
1PicoMCU_RaspberryPi_and_Boards:RPi_Pico_SMD_THU1
1TB6612FNGPackage_SO:SSOP-24_5.3x8.2mm_P0.65mmU2
1~TL2230EEF140:SW_TL2230EEF140S1

Questions

How big is the Mm3.0 PCB?

It measures 100 × 80 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Mm3.0 use?

57 parts, built around the AMS1117-5.0, MPU-6050, TEFT4300 and B6B-ZR. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Mm3.0 KiCad files?

From the USI-27/microMouse repository on GitHub, at the commit this page was made from: the board is MicroMouse Design Files/mm3.0/mm3.0.kicad_pcb and its schematic MicroMouse Design Files/mm3.0/mm3.0.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Mm3.0 design in my own project?

Its repository states no licence, so its author keeps all rights: ask USI-27 before reusing the design.

Similar boards

  • 2 layers39 × 31 mmArm board, the printed circuit board in 3D

    Arm board

    elkel53930/robosweep_twilight

    A robosweeper "Twilight"

    42 parts2MIT
  • 2 layers46 × 84 mmMicromouse, the printed circuit board in 3D

    Micromouse

    johnnyou1873/Mouse-Potato

    Micromouse design for AAMC 2024

    64 parts2
  • 4 layersElec, the printed circuit board in 3D

    Elec

    elkel53930/twilight2

    A robosweep agent Twilight-2

    164 parts
  • 2 layers100 × 74 mmMicromouse, the printed circuit board in 3D

    Micromouse

    kbumsik/WolfieMouse

    IEEE Reion 1 Micromouse competition.

    214 parts79
  • 4 layers70 × 99.9 mmMicromouse, the printed circuit board in 3D

    Micromouse

    UBIEEE/FrankenMouse

    FrankenMouse is a MicroMouse robot that was designed, built, and programmed from scratch by members of the University at Buffalo's IEEE Student Branch.

    100 parts6MIT
  • 4 layers80 × 87.6 mmAratMicro, the printed circuit board in 3D

    AratMicro

    vorlaxen-labs/AratMicro

    High-performance, open-source micromouse robot platform built for Robosam and MEB Robot (Ministry of National Education Robotics Competition, Turkey).

    110 parts1MIT
  • 4 layers82 × 100 mmPCB Kicad, the printed circuit board in 3D

    PCB Kicad

    ChristopherAwomolo/Nova-Micromouse

    Newer version based off the Futura Micromouse

    121 partsMIT