Skip to the content
PCBKitNew board
2 layers77 × 37.5 mmCompanion pcb, the printed circuit board in 3D

Good Vref calculator: https://wiki.fysetc.com/TMC2208/#motor-current-setting For my steppers (1.7A for phase) Vref should be 1.6970562748477143, but I set it to 1.9, cause my friend told me that active cooling required…

Size
77 × 37.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
12
Nets
10
Pads
88
Tracks, vias
141, 0
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
24 Jun 2023
Updated
7 May 2026

Overview

Companion pcb is an open-source printed circuit board by pronvis, from the pronvis/drawer-robot repository on GitHub. It is a 2-layer board of 77 × 37.5 mm with 12 parts on 10 nets, routed with 141 tracks and 0 vias.

README

README.md

Based on https://github.com/knurling-rs/app-template

Run

To execute binary file: cargo xtask run -p {project_name} -b {bin_file_name}, for example: cargo xtask run -p experiments -b stepper_configurator. Or just cargo xtask run -b stepper_configurator, cause experiments is the default project for run task: XTASK_RUN_DEFAULT = "experiments" To execute main file: cargo xtask run -p {project_name}. To set logging level change env vat DEFMT_LOG at .cargo/config.toml

To stop microcontoller

Erase program: probe-rs erase --chip STM32F103RE

Size

To get info about sections size on microcontoller: cargo xtask size -p {project_name} -b {bin_file_name}, for example: cargo xtask size -p experiments -b stepper_configurator.

ReadObj

To get info about binary object: cargo xtask readobj -p {project_name} -b {bin_file_name}, for example: cargo xtask readobj -p experiments -b stepper_configurator.

Attach

To attach to running microcontroller, example:

  1. probe-rs attach $CARGO_TARGET_DIR/thumbv7m-none-eabi/release/companion --chip STM32F103C8 --probe 0483:3748:C296C294070132124647524B4E --log-format "[{t}][{L}] {s}"
  2. probe-rs attach $CARGO_TARGET_DIR/thumbv7m-none-eabi/release/motherboard --chip STM32F103RE --probe 0483:3748:15 --log-format "[{t}][{L}] {s}"

TMC2209

Good Vref calculator: https://wiki.fysetc.com/TMC2208/#motor-current-setting For my steppers (1.7A for phase) Vref should be 1.6970562748477143, but I set it to 1.9, cause my friend told me that active cooling required above Vref=1.4

PS3 controller bluetooth connection

To connect PS3 controller to HC-05 you need to set master address. To do that:

  • install SixAxisPairTool (for mac get it from here)
  • connect PS3 to PC
  • set master address

Debugging

  1. run openopcd in one terminal
  2. run arm-none-eabi-gdb -x openocd.gdb -q {path_to_bin_file} or change runner at crate/{project}/.cargo/config.toml For example: arm-none-eabi-gdb -x openocd.gdb -q ~/rust/rust_build_artifacts/thumbv7m-none-eabi/release/minimal_x

Manual Flashing

  1. Build ELF file (cargo build)
  2. arm-none-eabi-objcopy -O binary $CARGO_TARGET_DIR/thumbv7m-none-eabi/release/{binary_name} {path_to_output}.bin
  3. st-flash write {path_to_output}.bin 0x08000000

HC-05

Use arduino device to configure HC-05. Scetch and connection image is in folder ./hc05_arduino_configurator/. With pressed button reset connect HC-05 to arduino - diod whould blink once per 2 seconds.

Commands can be found in ./documentation/HC-05_AT_Command_Set.pdf

One device should be Master. Another one slave.

I set speed to 460800: AT+UART=460800,0,0

For slave:

  • AT+NAME=DrawingRobot_slave
  • AT+UART=460800,0,0
  • AT+CMODE=1
  • AT+ROLE=0
  • get addr, we will need it for master: AT+ADDR?

For master:

  • AT+NAME=DrawingRobot_master
  • AT+UART=460800,0,0
  • AT+CMODE=0
  • AT+BIND={slave_addr} // replace : with , in addr string
  • AT+ROLE=1

For AT+BIND={slave_addr} it may require adding zeroes in front each part. For example: AT+ADDR? return 21:13:12622. To bind that address send this command: AT+BIND=0021,13,012622

Images

Motherboard: IMG_5313

Companion: IMG_5312

companion

Parts

12
QtyValueFootprintReferences
1PinHeader_1x04_P2.54mm_VerticalConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalHC-05

The 1 most common of 12 parts.

Questions

How big is the Companion pcb PCB?

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

What parts does the Companion pcb use?

12 parts. 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 Companion pcb KiCad files?

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

Can I use the Companion pcb design in my own project?

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

Similar boards

  • 2 layersNrf bga, the printed circuit board in 3D

    Nrf bga

    github-linguist/linguist

    Language Savant. If your repository's language is being reported incorrectly, send us a pull request!

    12 parts14kMIT
  • 2 layers66.9 × 74.5 mmDeskHop, the printed circuit board in 3D

    DeskHop

    hrvach/deskhop

    Fast Desktop Switching Device

    12 parts7.9kGPL-3.0
  • 2 layers40 × 15 mmSensors, the printed circuit board in 3D

    Sensors

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    12 parts3kApache-2.0
  • 2 layers42.7 × 56.5 mmTle6240 driver, the printed circuit board in 3D

    Tle6240 driver

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    12 parts1.2k
  • 2 layers49 × 25 mm5v boost regulator, the printed circuit board in 3D

    5v boost regulator

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    12 parts915
  • 2 layers28.3 × 10.3 mmTap Photosensor PCB, the printed circuit board in 3D

    Tap Photosensor PCB

    VoronDesign/Voron-Tap

    Tap is a nozzle-based z-probe for the V2 and Trident printer designs. The entire toolhead moves to trigger an optical switch. Tap offers many advantages:

    12 parts716GPL-3.0
  • 2 layers25.4 × 70.4 mmTpmsniffer, the printed circuit board in 3D

    Tpmsniffer

    stacksmashing/pico-tpmsniffer

    A simple, very experimental TPM sniffer for LPC bus

    12 parts696