chromapi_motherboard

Public

@mowibox

Download board files

Files for version 1. Pick what you came for.

Share chromapi_motherboard

Check access before sharing the link.

Who can open this board

Anyone can open this board. No sign-in is required.

This link opens the latest version. Copying it does not grant additional access.

Loading…

README

chromapi_motherboard

This repo contains a dedicated control HAT designed to manage the high-speed motion, power distribution, and sensor integration required for the quadruped robot Chromapi.

License: Apache 2.0

Designed with KiCAD 10.

Table of contents

SectionDescription
Project overviewGeneral description of the quadruped control board
AuthorsMain contributors information
Sponsors & AcknowledgementsInformation about project sponsors and hardware support
Resources & DocumentationLinks to datasheets, BOM, and design architectures
ContributionsHow to contribute to the repository
LicenseLicensing information

Project overview

ResourceDescriptionLocationStatus
💻 FirmwareSTM32 low-level drivers and communication protocol./firmwareAvailable
📐 SchematicsPDF for hardware architecture/hardware/schematic_pdfAvailable
📦 ManufacturingGerbers, Drill files, BOM, and CPL for assembly./hardware/productionAvailable

Chromapi's Anatomy

  • 🧠 The Brain: The STM32G431KBT6 MCU handles real-time tasks: servo control, IMU fusion, and power monitoring. The Raspberry Pi runs high-level control, vision, and the Python SDK. They communicate through a custom UART bridge at 1 Mbps.

  • 💪 The Muscles: The SN74LVC1G126 and SN74LVC1G125 buffer the half-duplex RS485 bus for 12 Feetech STS3215 servos. The STM32 polls servo positions at 200 Hz.

  • ❤️ The Heart: The TPS51388 converts the 18650 2S battery voltage to 5V. The LD39050 generates the 3.3V rail. The INA226 monitors voltage, current, and power via I2C.

  • 🛡️ The Immune System: The CN3302 charges the two 18650 Li-ion cells through USB-C. The HY2120 provides protection against over-discharge, over-current, and short circuits.

  • 👁️ The Senses & Balance: The BMI088 IMU gives acceleration and angular velocity data with SPI. A Mahony filter runs at 100 Hz and outputs orientation as a quaternion. Four foot switches detect ground contact for gait timing.

  • 🗣️ The Voice & Expression: The MAX98357A drives the speaker via I2S communication. The ICS-43434 microphone captures audio through I2S. And the SN74AHCT1G125 level-shifts the 3.3V signal to 5V for the WS2812B RGB LEDs.

Authors

Ousmane THIONGANE

Sponsors & Acknowledgements

The hardware development of this board relies on the resources provided by the sponsors below.

PCBWay

PCBWay is a global manufacturer specializing in rapid prototyping and low-volume hardware production, offering advanced PCB fabrication, turnkey assembly, CNC machining, and 3D printing.

PCBWay

For this project, I utilized their sponsored PCB manufacturing and assembly (PCBA) services. Beyond fast production, their engineering team excels at detailed file reviews by cross-checking design options, BOMs, and footprints to prevent errors early. Their reliable component sourcing and rigorous verification were of great help in building a high-quality prototype for the Chromapi's motherbard.


Huge thanks to all the hardware folks who reviewed my schematics, or gave me layout tips. I really appreciate your time and support!

Resources & Documentation

⚡ Electrical Specs📄 Bill of Materials📡 Protocol Reference🧠 Software Architecture
Operating voltages, current limits, and thermal ratings.Detailed BOM with part numbers and unit costs.Custom UART protocol between RPi and STM32.Firmware logic, DMA streams, and interrupt priorities.
👉 View Specs👉 View BOM👉 View Protocol👉 View Architecture

Power Architecture

%%{init: {'themeVariables': {'edgeLabelBackground':'transparent'}}}%%
flowchart TD
    CHG[["USB-C charge<br/>CN3302"]] -.->|"charge → B+ ≈ 7.2–8.4V"| CELLS[("Battery<br/>18650 x2")]
    CELLS -->|"B+/BM/B-"| HY["HY2120<br/>BMS protection"]
    HY -->|"B+"| SW[["Power switch"]]

    SW -->|"V_BATT ≈ 7.2–8.4V"| SHUNT[["INA226 shunt sense<br/>2mΩ"]]
    SHUNT -->|"V_SYS ≈ 7.2–8.4V"| REG5{{"Voltage regulation<br/>TPS51388 · Fsw=600kHz"}}
    SHUNT -->|"V_SYS"| SERVOS(["Servomotors x12<br/>Feetech STS3215-C001"])

    REG5 -->|"+5V"| RPI["Raspberry Pi"]
    REG5 -->|"+5V"| FANPWR(["Fan<br/>Noctua NF-A4x10"])
    REG5 -->|"+5V"| LEDPWR(["RGB LEDs<br/>WS2812B"])
    REG5 -->|"+5V"| REG33{{"Voltage regulation<br/>LD39050 LDO"}}

    REG33 -->|"+3.3V"| MCU["MCU<br/>STM32G431KBT6"]
    REG33 -->|"+3.3V"| IMU["IMU<br/>BMI088"]
    REG33 -->|"+3.3V"| INA["Power monitor<br/>INA226"]
    REG33 -->|"+3.3V"| AUDIO["Speaker + Microphone<br/>MAX98357A / ICS-43434"]

    classDef power fill:#dd2757,color:#ffffff,stroke:none
    classDef voltreg fill:#ea684c,color:#ffffff,stroke:none
    classDef ic fill:#25b3ae,color:#ffffff,stroke:none
    classDef actuator fill:#c027e7,color:#ffffff,stroke:none
    classDef sensor fill:#5c5aed,color:#ffffff,stroke:none

    class CHG,CELLS,HY,SW power
    class REG5,REG33 voltreg
    class MCU,RPI,AUDIO ic
    class SERVOS,FANPWR,LEDPWR actuator
    class SHUNT,IMU,INA sensor

Communication Architecture

%%{init: {'themeVariables': {'edgeLabelBackground':'transparent'}}}%%
flowchart LR
    RPI["Raspberry Pi"]
    MCU["STM32G431KBT6<br/>SYSCLK · 160 MHz"]
    SERVOS(["Servomotors x12<br/>STS3215-C001"])
    IMU["IMU<br/>BMI088"]
    PWR["Power Monitor<br/>INA226"]
    LED(["RGB LEDs<br/>WS2812B"])
    CAM["Wide Angle Camera<br/>IMX219-D160"]
    AUDIO["Speaker + Microphone<br/>MAX98357A / ICS-43434"]
    FAN(["Fan<br/>Noctua NF-A4x10"])

    RPI <-->|"Custom bridge protocol<br/>UART1 · 1 Mbps · 100 Hz control loop"| MCU
    MCU <-->|"RS485 half-duplex<br/>USART2 · 1 Mbps · 200 Hz poll"| SERVOS
    MCU <-->|"SPI1 · 5 MHz · 400 Hz ODR"| IMU
    MCU <-->|"I2C1 · 400 kHz · 10 Hz poll"| PWR
    MCU -->|"PWM+DMA · 800 kHz"| LED

    RPI -->|"CSI-2"| CAM
    RPI <-->|"I2S"| AUDIO
    RPI <-->|"PWM + Tacho"| FAN

    classDef ic fill:#25b3ae,color:#ffffff,stroke:none
    classDef actuator fill:#c027e7,color:#ffffff,stroke:none
    classDef sensor fill:#5c5aed,color:#ffffff,stroke:none

    class RPI,MCU,AUDIO ic
    class SERVOS,LED,FAN actuator
    class IMU,PWR,CAM sensor

Contributions

Contributions are always welcome!

  • Report Issues: Found an error or have a feature request? Create a new issue here.
  • Fix Bugs & Add Features: Find out where you can lend a hand by checking out existing issues.

License

This project is licensed under the Apache 2.0 License. See the LICENSE file for more details.

Comments

No comments yet. Be the first to ask about this board.

Ask about this board

Sign in to BoardRepo

New here? Signing in creates your account; there is no separate sign-up.