Skip to the content
4 layers60 × 60 mmPino rs, the printed circuit board in 3D

Bare-metal BLDC controller for Pino the robot, written in Rust.

Size
60 × 60 mm
Copper layers
4
Thickness
1.58 mm
Parts
20
Nets
221
Pads
334
Tracks, vias
0, 0
Routed
Not yet
KiCad
KiCad 6 (file 20211232)
Created
26 Mar 2021
Updated
6 Feb 2022

Overview

Pino rs is an open-source printed circuit board by timblakely, from the timblakely/pino-rs repository on GitHub, published under the MIT licence. It is a 4-layer board of 60 × 60 mm with 20 parts on 221 nets.

It is built around the STM32H725VGT6, CSD88599Q5DC and DRV8323RSRGZ, with the MA702GQ-Z among its other parts. Its parts include 8 capacitors, 4 connectors, 3 ICs, 3 transistors and 1 diode. It belongs with the robots and motor control boards and the STM32 boards of this library.

Main components

4

README

Readme.md

Pino controller

Bare-metal BLDC controller for Pino the robot, written in Rust!


Disclaimer: I'm quite new at Rust, so please bear with me

This repository is currently a continuously changing, seething mess as I flail around learning Rust. You're welcome to browse around the code, but please don't expect proper, idiomatic Rust code just yet. For that I'd suggest the following resources:

  • The Rust Book - Seriously, read it "cover to cover" as it were. Coming from >15 years of C++ I debated whether it was worth reading the absolute basics, but I ended up going through it all and don't regret it one bit.
  • Embedded Rust Book - I know, I know, another book. But it's quite a bit shorter and more of a getting-started guide to getting Rust up and running in an embedded context.
  • m4vga-rs - Not only is it a downright amazing implementation - 800x600@60FPS VGA on an STM32F4 (!) - the code is entirely in Rust and spectacularly well commented to boot! Definitely the place where I'm learning the most about Rust.

Why rust?

I originally started the controller in C++, but found myself spending more and more time thinking about the language implementation, template metaprogramming, and wrestling with the inability to constexpr a raw address (can't reinterpret_cast<Foo> an address in a constexpr, but don't take my word for it...), and less time on the actual controller itself. That's when I stumbled on Cliff Biffle's post with the contentious title "Prefer Rust to C/++ for new code". He posits that Rust was ready to replace C++ in most-if-not-all situations, and that was back in 2019. That post single-handedly convinced me to try out Rust, and I haven't looked back since.

Building it

Don't bother trying right now; it doesn't really do anything :stuck_out_tongue_winking_eye:

But if you really want to:

  1. cargo build
  2. Connect your NUCLEO-G474RE, and follow the Embedded Rust steps for adding the proper udev rules
  3. In VSCode, select cortex-debug launch configuraiton
  4. Hit F5

Parts

20
QtyValueFootprintReferences
610 uFCapacitor_SMD:C_1206_3216MetricC3, C4, C5, C6, C7, C8
3CSD88599Q5DCPackage_VSON-CLIP_T:DMM0022AQ1, Q2, Q3
3PTHHole_PTH_T:PTH_1.28mm_ID_2.25mm_ODJ2, J3, J4
222uFCapacitor_SMD:CP_Elec_6.3x5.4C1, C2
1Conn_01x08TConnector_Molex:Molex_Micro-Fit_3.0_43650-0800_1x08_P3.00mm_HorizontalJ1
1DRV8323RSPackage_QFN_T:DRV8323RHRGZRU3
1D_TVSDiode_SMD:D_SOD-123D1
1LTInductor_SMD:PCC-M0754ML1
1MA702GQ-ZTPackage_QFN:MA702GQ-ZU2
1STM32H725VGT6Package_QFP:LQFP-100_14x14mm_P0.5mmU1

Similar boards

  • 4 layers127 × 101.6 mmBaja ECVT Controller, the printed circuit board in 3D

    Baja ECVT Controller

    jfulreader64/Baja_ECVT_Controller

    ECVT Controller for brushed motor, 15a Sustained Current

    105 parts1
  • 2 layers52.5 × 55 mmActuator, the printed circuit board in 3D

    Actuator

    koson/OpenCauchy

    34 parts
  • 4 layers48 × 44.5 mmStm32-nema17-servo, the printed circuit board in 3D

    Stm32-nema17-servo

    dognotdog/smol_servo

    circuitry and software for controlling NEMA17 size brushless motors and stepper motors as servos.

    98 parts5
  • 4 layers85 × 100 mmSigmadrive duo, the printed circuit board in 3D

    Sigmadrive duo

    mstoilov/sigmadrone-esc

    Sigmadrone Electronic Speed Controller (ESC)

    214 parts5
  • 4 layers46 × 48 mmMini qdd, the printed circuit board in 3D

    Mini qdd

    duwogus7650-ctrl/board-design

    OpenRobot SPN-MC(=VESCular6, VESC6 파생) 동등 기능의 QDD용 원형 모터 컨트롤러를 오픈소스 VESC6를 베이스로 신규 설계하는 프로젝트.

    31 parts
  • 8 layers50 × 50 mmOmodri laas, the printed circuit board in 3D

    Omodri laas

    open-dynamic-robot-initiative/open-motor-driver-initiative

    Open-source drive for brushless motors, following the open dynamic robot initiative

    265 parts122BSD-3-Clause
  • 6 layers60 × 48 mmQuadesc, the printed circuit board in 3D

    Quadesc

    embedconsult/quadesc

    BeagleConnect QuadESC is a four-motor power board with BeagleConnect Torque installed as its system-on-module. This repository contains the editable mainboard and module designs, schematics, firmware sources and…

    247 parts9
  • 4 layers47 × 47 mmMotor Gen2, the printed circuit board in 3D

    Motor Gen2

    RoMeLaUCLA/romela-motor-driver

    Motor driver PCB and firmware designed for RoMeLa actuators.

    151 parts6MIT

Questions

How big is the Pino rs PCB?

It measures 60 × 60 mm and has 4 copper layers, 1.58 mm thick.

What parts does the Pino rs use?

20 parts, built around the STM32H725VGT6, CSD88599Q5DC, DRV8323RSRGZ and MA702GQ-Z. 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 Pino rs KiCad files?

From the timblakely/pino-rs repository on GitHub, at the commit this page was made from: the board is v2/v2.kicad_pcb and its schematic v2/v2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pino rs design in my own project?

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