Skip to the content
PCBKitNew board
2 layers67.6 × 59.8 mmRobot, the printed circuit board in 3D

ENGR 2110 Final Project: Centripetal Electronic Robotic Navigator (CERN)

Size
67.6 × 59.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
79
Nets
75
Pads
230
Tracks, vias
712, 70
Pours
2
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
20 Oct 2023
Updated
15 Dec 2023

Overview

Robot is an open-source printed circuit board by olincollege, from the olincollege/CERN repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 67.6 × 59.8 mm with 79 parts on 75 nets, routed with 712 tracks and 70 vias.

It is built around the ESP32-DEVKITC-VE, DRV8833PW and TM1000Q, with the SD0805S020S1R0, DMG1012UW-7-VB and DMG1013UW-7-VB among its other parts. Its parts include 17 resistors, 15 capacitors, 7 diodes, 5 ICs and 4 connectors. It belongs with the robots and motor control boards and the ESP32 boards of this library.

Main components

9

README

README.md

CERN

ENGR 2110 Final Project: Centripetal Electronic Robotic Navigator (CERN)

Final Project by Ari Bobesh (Electrical), Venkadesh Eswaranandam (Electrical), Angela Huang (Mechancial), Sohum Kothavade (Mechanical), and Kevin Lie-Atjam (Firmware/Software)

Welcome to the Centripetal Electronic Robotic Navigator (CERN) project! In this repository, we embark on our exciting journey to build our own version of a Sphero-like robot—a small, spherical robot capable of dynamic movements and engaging interactions. Our goal was to create a Sphero-like robot with inductive charging, a custom PCB, modular and elegant design, and coherent software to control the robot.

Dependencies and Repository Overview

This software runs on both C++ and Python. Our C++ infrastructure includes firmware for an ESP32 that can run the robot's control algorithms to drive the robot. The Python infrasture include code that is required to connect to the ESP32 over Bluetooth serial to control the robot.

Repository Structure

The repository has a set of 4 folders which each have important information regarding the items inside of the repository

app_interface

app_interface contains the Python script file required to run our control interface for our robots

kicad

kicad contains a set of schematics and PCB board designs utilized in our project. Inside this folder, the kicad.kicad_sch file contains the transmitting circuit for the inductive charging base station. robot.kicad_sch and robot.kicad_pcb contain the circuit and PCB respectively for the receiving end of the charging circuit and the control circuitry placed inside our robot.

motor_communicate

motor_communicate contains the C++ firmware required to run the robot.

SymFoot

SymFoot contains footprints and symbols for our schematic with unique components not readily available in KiCAD.

Library installation and Dependencies

To run the software, you will need the following:

  • A Unix/Linux Operating System
  • A Python Environment (Ex. Anaconda)
  • PySerial
  • Pygame
  • PyBluez

To install the all of the necessary libraries, we recommend doing the following:

  • Ensure that you're running a version of Python that is 3.9 or above
  • Open a bash terminal on your machine
  • Once it loads, I recommend creating a new Anaconda environment. This can be done by doing the following
text
conda create --name <Environment Name> python=3.9

Where you may name your environment whatever you would like

  • Be patient and make sure that you type y to create your environment after a dialog box appears
  • After the environment has been created, run the following command
text
conda activate <Environment Name>

To activate your Anaconda environment

  • You're now ready to install the libraries to use this repository. Ensure that your file directory is at the root of this repository. By typing ls in the repository directory, you should see a file called requirements.txt. Finally, you can run the following
text
pip install -r requirements.txt
  • Be patient and wait for the libraries to finish installing

Robot Information

We built a set of 3 CERN Robots. The connection information and motor pinouts have been provided

NameMAC AddressDrive PinsTurn Pins
Stubby78:21:84:B9:0A:1EA1A: 33
A1B: 32
B1A: 2
B1B: 23
Sleep: 25
A1A: 12
A1B: 14
B1A: 26
B1B: 27
Sleep: 13
GirthyE0:5A:1B:E4:66:56A1A: 26
A1B: 27
B1A: 14
B1B: 12
Sleep: 13
A1A: 2
A1B: 23
B1A: 32
B1B: 33
Sleep: 25
KirbyE0:5A:1B:E4:9D:D6A1A: 32
A1B: 33
B1A: 2
B1B: 23
Sleep: 25
A1A: 12
A1B: 14
B1A: 27
B1B: 26
Sleep: 13

Connecting To The Robot

These steps work best with Linux based systems

Firstly, make sure that the robot you want to connect to is on. Next, you'll want to connect to the robot by Bluetooth using the systems settings to connect to your robot. You will briefly connect to the robot, but you will then disconnect to the robot. This doesn't mean that you've lost connection, but this only means that you've placed the connection to the robot as a familiar device. Next, you're going to want to run friendly_control.py under the app_interface folder which can be executed by using the following command in a bash terminal: python friendly_control.py which will then ask you what device you would like to connect to. You may also open the Python script in a code editor and run the code manually. Once you run the code, it will then ask you to enter your password to because the controls will enter in root. This is because the following code is ran sudo rfcomm bind <PORT NUMBER> <MAC ADDRESS> which is when a radio frequency communication port will be established by your computer and robot to the Bluetooth MAC address of your robot. This is important since data is sent over serial for bluetooth. This then opens up a Pygame experience which should allow you obtain live data of the robot, control the lights of the robot, and control the robot using the WASD keys. Once you've finished driving the robot, you may close the Pygame interface, and the following command is ran: sudo rfcomm release <PORT NUMBER> which is when the communication port established will be dissolved, and the robot can then be reconnected or connected to another client.

If you have trouble connecting to the robot, typically running sudo rfcomm release <PORT NUMBER> to ensure that there doesn't exist a port that already exists that the robot tries to talk to on your computer to is typically recommended.

If you have any questions about any aspect about our project, please feel free to reach out to any of us: Ari Bobesh (abobesh@olin.edu), Kevin Lie-Atjam (klieatjam@olin.edu), Venkadesh Eswaranandam (veswaranandam@olin.edu), Sohum Kothavade (skothavade@olin.edu), and Angela Huang (ahuang3@olin.edu)

Parts

79
QtyValueFootprintReferences
12TestPointTestPoint:TestPoint_Pad_D2.0mmTP1, TP2, TP3, TP4, TP5, TP6, TP7, TP8, TP9, TP10, TP11, TP12
810kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R10, R11, R12, R13, R14, R15, R16
45Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR4, R5, R7, R8
4Adafruit Coil JumperConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalJ1, J2, J3, J4
4Motor_DCConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalM5, M6, M7, M8
4MountingHole_2.2mm_M2_DIN965_PadMountingHole:MountingHole_2.2mm_M2_DIN965_PadREF1, REF2, REF3, REF4
310uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC13, C16, C19
3SD0805S020S1R0 Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolderD9, D11, D12
20.01uF,16VCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC8, C14
21mFCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC6, C7
21uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC11, C12
22.2uF,6.3VCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC4, C15
24.7uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC9, C10
265Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR6, R9
2DMG1012UW-7Package_TO_SOT_SMD:SOT-323_SC-70_HandsolderingQ1, Q2
2DRV8833PWPackage_SO:TSSOP-16_4.4x5mm_P0.65mmU6, U13
2TM1000QTM1000Q:SW_TM1000QS1, S2
10.47uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC20
1150Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR2
11S 3000mAhConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalBT2
12kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR3
1AP7366EA-33W5-7Package_TO_SOT_SMD:SOT-23-5_HandSolderingAP7366EA-33W5-7
1CCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC5
1DMG1013UW-7Package_TO_SOT_SMD:SOT-323_SC-70_HandsolderingQ3
1ESP32-DEVKITCESP32-DEVKIT:MODULE_ESP32-DEVKITCU8
1GY-521GY-521:GY-521U10
1LConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalL2
1LTST-C171GKT LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD13
1MCP73831-2-OTPackage_TO_SOT_SMD:SOT-23-5_HandSolderingU9
1MFU0805FF01000P100 Fuse:Fuse_0805_2012Metric_Pad1.15x1.40mm_HandSolderF1
1MFU0805FF03000P100Fuse:Fuse_0805_2012Metric_Pad1.15x1.40mm_HandSolderF2
1QBL8RGB60D0-2897Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalD14
1QBL8RGB60D0-2897 Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalD8
1R1500H050B1Package_TO_SOT_SMD:SOT-89-5R1500H050B1
1SD0805S020S1R0Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolderD10
1SolderJumper_2_OpenDiode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolderJP1

Questions

How big is the Robot PCB?

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

What parts does the Robot use?

79 parts, built around the ESP32-DEVKITC-VE, DRV8833PW, TM1000Q and SD0805S020S1R0. 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 Robot KiCad files?

From the olincollege/CERN repository on GitHub, at the commit this page was made from: the board is kicad/robot.kicad_pcb and its schematic kicad/birdsarentreal.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Robot 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

  • 4 layers67.3 × 36.8 mmBadge kicad, the printed circuit board in 3D

    Badge kicad

    netik/dc25_spqr_badge

    KiCad files and all component files to manufacture the IDES OF DEF CON Badge, an Unofficial Electronic Badge.

    100 parts11Apache-2.0
  • 2 layersBomboniera Tesi, the printed circuit board in 3D

    Bomboniera Tesi

    Borval99/BombonieraElettronica

    Bomboniera Elettronica realizzata con PCB

    27 parts
  • 2 layers100 × 100 mmRobot-5A, the printed circuit board in 3D

    Robot-5A

    jgraulle/robot-pcb

    193 parts
  • 4 layers160 × 73.2 mmMainPCB, the printed circuit board in 3D

    MainPCB

    doppelgrau/esp32-f9p-io-board

    An IO-PCB (two motor-driver/H-bridge, CAN, RS232, ADS1115, relay, ethernet, ardusimple f9p compatible connector) with an ESP32 for 12V power, three 15V tolerant analog inputs, three 5V tolerant inputs.

    162 parts39
  • 4 layers536.5 × 385.7 mmDC27-badge, the printed circuit board in 3D

    DC27-badge

    netik/dc27_badge

    Defcon 27 "DaBomb!" badge.

    141 parts30Apache-2.0
  • 2 layers39.1 × 39.9 mmNebula, the printed circuit board in 3D

    Nebula

    Thecactusman0/Nebula-openwatch

    Nebula is a ESP32 based smartwatch that features a rotating bezel encoder

    85 parts4
  • 4 layers110 × 120 mmDUT Interface board v0.2, the printed circuit board in 3D

    DUT Interface board v0.2

    krishchan007/DUT_Interface_board_v0.2

    v0.2 of DUT interface board with significant changes in layout, architecture etc.

    271 parts1
  • 4 layers30 × 37 mmDistortion pedal, the printed circuit board in 3D

    Distortion pedal

    lufixSch/effect-pedals

    Circuits and PCB designs for audio effect pedals

    75 partsGPL-3.0