Skip to the content
2 layersServo PCB, the printed circuit board in 3D

Low-level firmware for SpotMicroAI quadrupped robot

Copper layers
2
Thickness
1.6 mm
Parts
81
Nets
60
Pads
194
Tracks, vias
397, 20
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
4 Dec 2019
Updated
7 Feb 2020

Overview

Servo PCB is an open-source printed circuit board by PaddyCube, from the PaddyCube/SpotMicroAI repository on GitHub. It is a 2-layer board with 81 parts on 60 nets, routed with 397 tracks and 20 vias.

It is built around the PCA9685PW. Its parts include 36 switches, 7 resistors and 2 connectors. It belongs with the robots and motor control boards of this library.

Main components

1

README

README.md

SpotMicroAI

My Version of SpotMicroAI

Low Level Firmware

This package contains a low-level firmware for SpotMicroAI robot and might be useful for other 4-legged robots as well. The firmware runs on a Wemos D1 mini pro and should also run on any other ESP8266 device like NodeMCU.

Calculating and processing the pose of all 12 servo joints is a complex task and a lot of work to implement in Arduino. But this can be done more easily and fast using ROS (Robot Operating System). So this firmware is designed to receive commands from ROS and just executes the synchronuous servo movement.

To establish communication, rosserial is used as well as a rosserial implementation over wifi. The idea behind is, that you can either ROS on RPI (or others) inside the robot and connect it to ESP8266 using serial connection. Or you can run ROS on any PC inside your local network and send commands to robot using wifi.

Current state

Settings

Menu

The firmware provides some factory defaults for all settings. However, you can change all settings using serial console. If you start serial console, hit 'm' to enter main menu. The main menu provides some functionalities to show and change the settings. All settings can be stored to EEPROM of ESP8266.

-----------MAIN MENU----------
f=delete all USER settings (reset all user settings in EEPROM)
s=save USER settings (save user settings to EEPROM)
x=print current settings
1=communications menu (setup ROS & WIFI)
2=Servo settings
m=move servo manual
0=exit

Please note, if you first upload this firmware to your robot, your EEPROM might be filled with corrupt data. Please clear your EEPROM by deleting all user settings (f)

Servo

The firmware offers some servo-related settings (min, max, initial pose, offset, home position and inversion) for each servo. All these settings can be changed by serial console

Wifi

Currently, the firmware connects to wifi but doesn't read any package here. All wifi-related settings can be configured by serial console

Servo movement

The firmware is able to drive any of the 16 servos attached to a PCA9685 expansion board using ServoEasing library. You can send commands to any servo using serial commands. To do this, connect ESP8266 to your PC, open serial monitor and follow the instructions you see there.

Next steps

  • create a ROS node and ROS message to subscribe to a ROS master

Parts

81
QtyValueFootprintReferences
24TestPointTestPoint:TestPoint_Pad_1.5x1.5mmS1-1, S1+1, S2-1, S2+1, S3-1, S3+1, S4-1, S4+1, S5-1, S5+1, S6-1, S6+1, TP13, TP14, TP15, TP16 +8
12Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalS1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12
90.05OhmResistor_SMD:R_1210_3225MetricRShunt1, RShunt2, RShunt3, RShunt4, RShunt5, RShunt6, RShunt7, RShunt8, RShunt9
710KResistor_SMD:R_0603_1608Metric_Pad1.05x0.95mm_HandSolderR1, R2, R3, R4, R5, R6, R7
30.05Resistor_SMD:R_1210_3225MetricRShunt10, RShunt11, RShunt12
210KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P2.54mm_VerticalR_SCL, R_SDA
2200Resistor_SMD:R_Array_Convex_4x1206RN2, RN3
220AFuse:Fuse_Blade_Mini_directSolderFMain1, FMain2
22200uFCapacitor_THT:C_Radial_D10.0mm_H16.0mm_P5.00mmCMain_ServoVCC1, CMain_ServoVCC2
2MountingHoleMountingHole:MountingHole_3.2mm_M3H2, H3
2Schottky 30V25ADiode_THT:D_P600_R-6_P12.70mm_HorizontalDMain1, DMain2
2Screw_Terminal_01x02TerminalBlock:TerminalBlock_bornier-2_P5.08mmJ1, J2
110uFCapacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolderC_PCA1
1200OhmResistor_SMD:R_Array_Convex_4x1206RN1
1470Resistor_SMD:R_0805_2012MetricR_PWR_LED1
1A0Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmLP_PCA1
1A1Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmLP_PCA2
1A2Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmLP_PCA3
1A3Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmLP_PCA4
1A4Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmLP_PCA5
1A5Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmLP_PCA6
1Conn_01x04Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ_I2C1
1GreenLED_SMD:LED_0805_2012MetricPWR_LED1
1PCA9685PWPackage_SO:TSSOP-28_4.4x9.7mm_P0.65mmPCA1

More from PaddyCube/SpotMicroAI

2
  • 2 layersServo PCB, the printed circuit board in 3D

    Servo PCB

    PaddyCube/SpotMicroAI

    Low-level firmware for SpotMicroAI quadrupped robot

    115 parts7
  • 2 layersServo PCB, the printed circuit board in 3D

    Servo PCB

    PaddyCube/SpotMicroAI

    Low-level firmware for SpotMicroAI quadrupped robot

    112 parts7

Similar boards

  • 2 layers220 × 329.2 mmControl Boards, the printed circuit board in 3D

    Control Boards

    nasa-jpl/open-source-rover

    A build-it-yourself, 6-wheel rover based on the rovers on Mars!

    148 parts9.8kApache-2.0
  • 4 layers100.1 × 60.2 mmHades, the printed circuit board in 3D

    Hades

    pms67/HadesFCS

    Complete flight control system designed from scratch. Hardware designed with KiCad.

    215 parts1kBSD-3-Clause
  • 2 layers94 × 79 mm5 - Lizard Car, the printed circuit board in 3D

    5 - Lizard Car

    TRD-B/Lizard

    3D printed RC race car with custom electronics

    54 parts129CC-BY-4.0
  • 2 layers54.2 × 75.2 mmKiCAD Design, the printed circuit board in 3D

    KiCAD Design

    Brobiwann/ESP-spider

    The ESP-Spider is a quadruped robot inspired by the miniKame (https://github.com/JavierIH/miniKame) . Like the miniKame, it uses sinusoidal functions to control servo positions, but the design and code were developed…

    70 parts44
  • 2 layers130.6 × 112 mmSWN, the printed circuit board in 3D

    SWN

    4ms/SWN

    Spherical Wavetable Navigator source code

    614 parts43
  • 2 layers156.2 × 168.9 mmLPC176x MultiFunction, the printed circuit board in 3D

    LPC176x MultiFunction

    RobertPHeller/RPi-RRCircuits

    A collection of circuit designs for various MCUs, not just Raspberry Pis relating to Model Railroading

    236 parts24
  • 2 layersHB LC Dim6PWM CV, the printed circuit board in 3D

    HB LC Dim6PWM CV

    stan23/myPCBs

    Verschiedene Platinen für HomeMatic, AskSinPP und SmartHome

    57 parts21

Questions

What parts does the Servo PCB use?

81 parts, built around the PCA9685PW. 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 Servo PCB KiCad files?

From the PaddyCube/SpotMicroAI repository on GitHub, at the commit this page was made from: the board is PCB/Servo_PCB_simple/Servo_PCB.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Servo PCB design in my own project?

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