Skip to the content
PCBKitNew board
2 layers100 × 100 mmHexabot, the printed circuit board in 3D

Design files and source code of a mobile robot for the Eurobot competition

Size
100 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
125
Nets
113
Pads
412
Tracks, vias
1,515, 433
Pours
3
Routed
Yes
KiCad
KiCad 4
Created
7 Jun 2015
Updated
7 Nov 2021

Overview

Hexabot is an open-source printed circuit board by Caerbannog, from the Caerbannog/hexabot repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 100 × 100 mm with 125 parts on 113 nets, routed with 1,515 tracks and 433 vias.

It is built around the DSPIC33EP256MU806-E/MR and L6201PS. Its parts include 32 capacitors, 29 resistors, 27 connectors, 14 diodes and 6 ICs. It belongs with the robots and motor control boards and the PIC boards of this library.

Main components

2

README

README.md

Hexabot Sources

Design files and source code of a mobile robot for the Eurobot competition.

The controller board is built in KiCad around a dsPIC33EP256MU806 (QFN, motor control, USB). You can control it from your development machine or an embedded Linux like the Raspberry Pi (raspbian jessie recommended).

Controller PCB

The board handles various functions: motor control, odometry, sensors and servomotors. It has two layers, 10cm*10cm and mostly 0806 SMT components.

You can buy 10 PCBs for 32$ at SeeedStudio. Then we hand-soldered ours.

Layout v1

Embedded Software

The source code for the microcontroller is in hexabot-dsPIC33.X. It is controlled with the tools in linux. Most are Python scripts that use PyUSB to communicate with the board through independant USB endpoints:

  • Bulk commands to set parameters and read back values. The basic idea is to run ./command.py <register> <value> to set a value.
  • Bulk metrics broadcasting, isochronous packets for time-sensitive data. Dump them with ./usb_controller.py.
  • Serial port for debugging. Show the debug console with miniterm.py /dev/ttyACM* 9600 -D.

A higher level scripts like joystick.py uses the command endpoint to let you control the motors with a USB joystick.

User Interface

The ui directory contains a Python webserver with these features:

  • live updates of the position according to odometry,
  • graphs to visualize metrics,
  • maybe someday a way to send commands.

Setup

Download and install the MPLABX IDE and the XC16 compiler. You need xc16 v1.25+ because of bug XC16-781 (snprintf). Sadly the peripheral libraries were last shipped with v1.24 and the new Code Configurator doesn't support dsPIC33E yet. You need to copy the libraries from one installed version to the other.

Install Python 3 and debugging tools like Wireshark. For Ubuntu 15.04 you can run:

bash
git clone https://github.com/Caerbannog/hexabot.git
sudo apt-get install python3-pip wireshark
sudo pip3 install pyusb==1.0.0b1 autobahn==0.10.4 pyinotify==0.9.6 bottle==0.12.8 pyserial
sudo adduser $USER dialout
sudo adduser $USER wireshark
echo usbmon | sudo tee -a /etc/modules
sudo cp 99-hexabot.rules /etc/udev/rules.d/
sudo service udev reload # then you need to replug the device

Contributing

Pull requests are welcome on the project page: https://github.com/Caerbannog/hexabot

Licenses

  • Hardware design files are published under the CERN OHL v.1.2.
  • Source code is published under the GPLv3 or later.
  • Note that Microchip's USB library and the CDC-basic demo have a more restrictive license.

TODO list

  • Documentation for the code. Links to documentation for the motor control and odometry.

Parts

125
QtyValueFootprintReferences
8100nResistors_SMD:R_0805C3, C11, C12, C13, C14, C15, C16, C21
810kResistors_SMD:R_0805R5, R6, R7, R22, R26, R27, R30, R33
7NCResistors_SMD:R_0805C26, R9, R10, R11, R13, R14, R15
415nResistors_SMD:R_0805C17, C19, C22, C24
41kResistors_SMD:R_0805R16, R24, R28, R35
4470RResistors_SMD:R_0805R19, R20, R21, R25
4DDiodes_SMD:SOD-123D11, D12, D13, D14
4HOLE_M3hexabot:M3-hole-platedMH1, MH2, MH3, MH4
4LEDBResistors_SMD:R_0805D7, D8, D9, D10
4Q_NMOS_GSDHousings_SOT-23_SOT-143_TSOT-6:SOT-23Q1, Q2, Q3, Q4
3JUMPERPin_Headers:Pin_Header_Straight_1x02JP1, JP2, JP3
3NCPin_Headers:Pin_Header_Straight_1x01P25, P26, P27
20RResistors_SMD:R_0805R17, R18
20R1 3WResistors_SMD:R_1206R31, R34
210RResistors_SMD:R_0805R29, R32
218pResistors_SMD:R_0805C7, C8
2220nResistors_SMD:R_0805C20, C25
222nResistors_SMD:R_0805C18, C23
22u2Resistors_SMD:R_0805C1, C2
24u7Resistors_SMD:R_0805C6, C9
2L6201PShexabot:powerso-20U5, U6
2ZENERDiodes_SMD:SOD-323D2, D3
110uResistors_SMD:R_0805C10
11MResistors_SMD:R_0805R8
121kResistors_SMD:R_0805R2
12kResistors_SMD:R_0805R23
1330RResistors_SMD:R_0805R4
1330uhexabot:c_elec_8x10.5C4
1330uhexabot:c_elec_10x10.5C5
14K7Resistors_SMD:R_0805R1
17k52Resistors_SMD:R_0805R3
18Mhexabot:XTAL_5x3.2Y1
19kResistors_SMD:R_0805R12
1BATTERYSockets_MOLEX_KK-System:Socket_MOLEX-KK-RM3-96mm_Lock_2pin_straightP1
1BUMP1Sockets_MOLEX_KK-System:Socket_MOLEX-KK-RM2-54mm_Lock_2pin_straightP9
1BUMP2Sockets_MOLEX_KK-System:Socket_MOLEX-KK-RM2-54mm_Lock_2pin_straightP10
1Dhexabot:SOD-128D1
1DEBUGSockets_MOLEX_KK-System:Socket_MOLEX-KK-RM2-54mm_Lock_5pin_straightP12
1DSPIC33EP256MU806hexabot:QFN-64-1EP_9x9mm_Pitch0.5mmU4
1DYNAMIXEL1hexabot:molex-22-03-5035P5
1DYNAMIXEL2hexabot:molex-22-03-5035P24
1ENC1Sockets_MOLEX_KK-System:Socket_MOLEX-KK-RM2-54mm_Lock_4pin_straightP17
1ENC2Sockets_MOLEX_KK-System:Socket_MOLEX-KK-RM2-54mm_Lock_4pin_straightP18
1ENC3Sockets_MOLEX_KK-System:Socket_MOLEX-KK-RM2-54mm_Lock_4pin_straightP19
1ENC4Sockets_MOLEX_KK-System:Socket_MOLEX-KK-RM2-54mm_Lock_4pin_straightP20
1EXT_POWERSockets_MOLEX_KK-System:Socket_MOLEX-KK-RM3-96mm_Lock_2pin_straightP2
1FUSEResistors_SMD:R_1206_HandSolderingF1
1LEDGResistors_SMD:R_0805D6
1LEDRResistors_SMD:R_0805D4
1LEDYResistors_SMD:R_0805D5
1LOGOhexabot:hexabotG***
1MCP1727hexabot:SOIC-8_3.9x4.9mm_Pitch1.27mmU3
1MOTOR_LSockets_MOLEX_KK-System:Socket_MOLEX-KK-RM3-96mm_Lock_2pin_straightP15
1MOTOR_RSockets_MOLEX_KK-System:Socket_MOLEX-KK-RM3-96mm_Lock_2pin_straightP14
1NCSockets_MOLEX_KK-System:Socket_MOLEX-KK-RM2-54mm_Lock_6pin_straightP22
1NCPin_Headers:Pin_Header_Straight_1x06P8
1NCSockets_MOLEX_KK-System:Socket_MOLEX-KK-RM2-54mm_Lock_5pin_straightP13
1OPEN_HARDWARE_1Symbols:Symbol_OSHW-Logo_SilkScreenLOGO1
1PANIC BUTTONSockets_MOLEX_KK-System:Socket_MOLEX-KK-RM3-96mm_Lock_2pin_straightP7
1PICKITPin_Headers:Pin_Header_Straight_1x05P6
1PTN78020 +5Vhexabot:PTN78020HU1
1PTN78020 SERVOhexabot:PTN78020HU2
1PUSH1hexabot:SW_PUSH-SMDSW1
1PUSH2hexabot:SW_PUSH-SMDSW2
1SERVO1Pin_Headers:Pin_Header_Straight_1x03P3
1SERVO2Pin_Headers:Pin_Header_Straight_1x03P4
1STARTSockets_MOLEX_KK-System:Socket_MOLEX-KK-RM2-54mm_Lock_2pin_straightP23
1UART1_5VSockets_MOLEX_KK-System:Socket_MOLEX-KK-RM2-54mm_Lock_4pin_straightP16
1UART2_FTDI3V3Pin_Headers:Pin_Header_Straight_1x06P21
1USB_Bhexabot:MICRO-B_USBP11

Questions

How big is the Hexabot PCB?

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

What parts does the Hexabot use?

125 parts, built around the DSPIC33EP256MU806-E/MR and L6201PS. 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 Hexabot KiCad files?

From the Caerbannog/hexabot repository on GitHub, at the commit this page was made from: the board is kicad/hexabot.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Hexabot design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers72.4 × 45.7 mmProjekt, the printed circuit board in 3D

    Projekt

    media3-0/EkoPuszka

    64 parts
  • 2 layers108.1 × 67 mmDvirka, the printed circuit board in 3D

    Dvirka

    pavelkejik/chicken-door

    Automatic chicken coop door with Wi-Fi and ESP-NOW communication.

    89 parts
  • 2 layers42.5 × 55.5 mmFirst test, the printed circuit board in 3D

    First test

    iner-dev/projet-eurobot-2025

    3 parts
  • 2 layers133.9 × 76.2 mmSIM CONTROL PANEL, the printed circuit board in 3D

    SIM CONTROL PANEL

    jrsteensen/OpenHornet

    OpenHornet 1:1 F/A-18C Simulator Repository

    125 parts431
  • 2 layers139.1 × 107.7 mmLotus58 Glow 130, the printed circuit board in 3D

    Lotus58 Glow 130

    TweetyDaBird/Lotus-58-Classic

    A split ergo linear keyboard derived from the Lily58 family

    125 parts390
  • 2 layers98 × 128 mmENGAGE, the printed circuit board in 3D

    ENGAGE

    TUDSSL/ENGAGE

    Source code repository for ENGAGE: Battery-Free Game Boy

    125 parts286MIT
  • 2 layers281 × 76.2 mmTreadstone48, the printed circuit board in 3D

    Treadstone48

    marksard/Keyboards

    This repository is warehouse of my keyboard architecture.

    125 parts193MIT
  • 2 layers20 × 110 mmDual ears, the printed circuit board in 3D

    Dual ears

    Cs4System/Eurorack

    Blattwerk Eurorack modules. Designed by Lorenz Neumann

    125 parts83