Skip to the content
PCBKitNew board
2 layers94.7 × 47.8 mmMouse, the printed circuit board in 3D

Small Robot for maze navigation (Micromouse)

Size
94.7 × 47.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
53
Nets
47
Pads
166
Tracks, vias
410, 41
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
2 Jul 2019
Updated
31 Mar 2021

Overview

Mouse is an open-source printed circuit board by lowj, from the lowj/fish-mouse repository on GitHub. It is a 2-layer board of 94.7 × 47.8 mm with 53 parts on 47 nets, routed with 410 tracks and 41 vias.

It is built around the SN754410NE and IRL 81A. Its parts include 20 resistors, 6 diodes, 4 ICs, 4 transistors and 2 capacitors.

Main components

2

README

README.md

fish-mouse

alt text

PCB traces

alt text

Issues to fix

  1. Switche footprint needs bigger drill holes.
  2. Add switch to choose USBC GND or Batt GND.(Currently switch toggles between USB 5V and Regulator 5V, but GND stays the same). It will be safer if GNDs can be disconnected when not in use.
  3. Fix footprint of USBC, add drill holes for excess pins, but do not include metal surrounding. Extend smd pads.
  4. On USBC footprint, one of THT pads is off.
  5. Put i2c pullups on other side of pcb
  6. led to show when there is usb power
  7. probally more issues yet to be found...

Parts and Labels [Labels not fully updated!]

Note: This is not a full parts list

  • SN754410NE (U2) - Motor driver, used to control the speed and direction of the two motors.
  • Teensy 3.2 (U1)- Processor, will run code.
  • IR Emitters [blocked] (D0-D3) - Send an IR signal, which will bounce off walls, allowing for the reciever to read. Each is connected to a digital pin on the Teensy, allowing them to individual turn on and off.
  • IR Reciever [blocked] (Q0-Q3) - Reads how strong the IR signal is, depending on the value it reads it is able to detect if there is a wall, and how may cells away it is.
  • Pololu 3081 (U5, U4) - Motor encoders, used to keep track of wheel rotations.
  • LM1085 (3A) (U3) - Voltage regulator, a LDO regulator that gives a 5V source from the LiPo. 3A version.
  • Switch (SW1) - Any mechanical keyboard switch
  • Buzzer (BZ1) - ~5mm buzzer pin spacing, the small ones in the link fit.
  • LEDs (D4, D5) - Any 3528 sized led rated for at least 3.3v
  • 120Ω (R0, R1, R2, R3) - Current limiting resistors for Emitters.
  • 1.8KΩ (R4, R5, R6, R7) - Current limiting resistor for Recievers.
  • ...Ω (R11) - Pull Up resistor for switch. Value based on the LED bought. Calculate
  • 1-10kΩ (R8, R9) - Current limiting resistors for LEDs.

Building Notes

  1. Use header pins and sockets for the Teensy and Motor driver to make replacing parts easier.
  2. With the ir emitters and receievers short end is positive.
  3. When connecting wires to the motor encoder, make sure none of the wires are rubbing against the magnetic disk.
  4. When connecting the encoder make sure to double check wires are connected correctly.
  5. Early Testing

Software Notes

Interrupts
  • Interrupts are needed to keep track of the wheels revolution. When the wheels position changes, the motor encoder will send a signal to the Teensy. A total of 12 signals will be sent per 1 revolution. Interrupts allow it so the Teensy can update values as soon as the encoder sends the signal (asynchronously). If the encoders were updated in the main loop theres a good chance for some signals to be missed, causing the revolution count to be inaccurate.

  • To add an interrupt run the attatchInterrupt function in setup. Syntax is attatchInterrupt(pin, func, mode). The second parameter specifies the function that gets executed when the interrupt is triggered. In our case we want to put in a function that will add to the count of an encoder variable. The third parameter specifies what will trigger the interrupt. For example "CHANGE" will make the interrupt trigger whenever the pin changes value, however, "FALLING" will make the interrupt trigger only when the pin goes from HIGH to LOW. Read link for more info.

Variables
  • tickCount - Two variables, one for each motor. When interrupt its triggered, increment the tick count by 1.
  • emitterState - One for each emitter. Stores the current state of the emitter
Functions
  • readReciever() - One method for each reciever. Returns the value read by reciever
  • setEmitterState(x) - One method for each emitter. Set the state of the emitter to on or off.
  • getSwitchState() - Return the value of the switch
  • runMotorTime(m, speed, sec) - Set specific motor at speed for given amount of seconds. Uses delay function to count time.
  • runMotorRev(m, speed, rev) - Runs a specific motor at speed for given amount of revolutions. Uses the encoder varible to count revolutions.
  • setLED(l, brightness) - Sets a specific led to a certian brightness.
  • setBuzzer(strength) - Sets the buzzer to a given strength.
More Functions
  • turnRight() - Use encoders and tickCounts of both motors to make a percise right turn
  • turnLeft() - similar to turnRight()
  • goForward() - Use encoders to go straight.
  • turnAround() - turnRight * 2

Parts

53
QtyValueFootprintReferences
8RResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P15.24mm_HorizontalR1, R2, R3, R4, R17, R18, R19, R20
41kResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P15.24mm_HorizontalR9, R10, R11, R12
433Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P15.24mm_HorizontalR5, R6, R7, R8
447kResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P15.24mm_HorizontalR13, R14, R15, R16
4IRL81ALED_THT:LED_D3.0mm_Horizontal_O3.81mm_Z2.0mmD0, D1, D2, D3
4MountingHole_PadConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalBT, GND, MH_SCL1, MH_SDA1
4Q_NMOS_DGSmisc:TN0104(TO-92)T0, T1, T2, T3
4Q_Photo_NPNLED_THT:LED_D3.0mm_Horizontal_O3.81mm_Z2.0mmQ0, Q1, Q2, Q3
2Encoder_3081Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalU4, U5
2Motor_DCmisc:Motor_mouseM1, M2
10.1uFCapacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC2
11.0uFCapacitor_SMD:C_0603_1608Metric_Pad1.05x0.95mm_HandSolderC3
110uF (Tantalum)Capacitor_SMD:C_1206_3216Metric_Pad1.42x1.75mm_HandSolderCP1
1Battery_CellConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalBT1
1Buzzermisc:9x5.5mm BuzzerBZ1
1CASTER_BALLmisc:Mouse_casterM3
1LM1084-5.0Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalU3
1LOGOpika:pika3G***
1SN754410NESN754410NE.kicad_mod:DIP254P762X508-16U2
1STATUS_0misc:3528_SMD_LEDD4
1STATUS_1misc:3528_SMD_LEDD5
1SW_Pushkeyswitches:MXSW1

The 52 most common of 53 parts.

Questions

How big is the Mouse PCB?

It measures 94.7 × 47.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Mouse use?

53 parts, built around the SN754410NE and IRL 81A. 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 Mouse KiCad files?

From the lowj/fish-mouse repository on GitHub, at the commit this page was made from: the board is pcb_files/mouse_esp/mouse.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Mouse design in my own project?

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

More from lowj/fish-mouse

2
  • 2 layers94.8 × 47.8 mmMouse v2, the printed circuit board in 3D

    Mouse v2

    lowj/fish-mouse

    Small Robot for maze navigation (Micromouse)

    77 parts5
  • 2 layers94.7 × 74.3 mmMouse, the printed circuit board in 3D

    Mouse

    lowj/fish-mouse

    Small Robot for maze navigation (Micromouse)

    37 parts5

Similar boards

  • 2 layers176.4 × 21.4 mmLedClock, the printed circuit board in 3D

    LedClock

    qb-creates/pov-led-clock

    POV Clock using an ATmega32 microcontroller.

    47 parts2MIT
  • 2 layers54 × 55 mmHa plattform, the printed circuit board in 3D

    Ha plattform

    alexmohr/home_automation_plattform

    PCB and schematic for my personal home automation plattform

    15 parts1
  • 4 layers76.2 × 25.4 mmCurio, the printed circuit board in 3D

    Curio

    dotcypress/curio

    Glorified Infrared Remote Control.

    31 parts1
  • 2 layers78.8 × 63 mmLynx-30-Camera Trap, the printed circuit board in 3D

    Lynx-30-Camera Trap

    Engr-umer-mohammed/Lynx-30-Camera-Trap

    Low-power long-range wireless camera trap designed using KiCad and Simulink.

    37 parts1MIT
  • 2 layers229.9 × 125.7 mmPanelized, the printed circuit board in 3D

    Panelized

    icicl/led-scoreboard-pcb

    A custom modular LED scoreboard featuring snap-apart PCB architecture, hot-swappable 7-segment/bar-graph display faces, and multiplexed hardware logic powered by a Raspberry Pi Pico W.

    81 parts
  • 2 layers110 × 171 mmEsp32pcbbot, the printed circuit board in 3D

    Esp32pcbbot

    Storby42/ESP32bot

    44 parts
  • 2 layers122.9 × 99.6 mmCpu6502, the printed circuit board in 3D

    Cpu6502

    nandgate/Homebrew-HW

    Hardware designs for 8-bit homebrew computer

    37 parts1MIT