All of our boards were drawn using KiCad and are released under the CC-BY 4.0 license.
Our software is released under MIT license, additionally we have ChibiOS RTOS/HAL (GPLv3 license) and UAVCAN (MIT license) as core dependencies.
The CAN bootloader is released under BSD 2-clause license.
Motor board
The motor board is a small board (31x16mm) with a dedicated STM32F3 microcontroller that is at the core of all our robots since 2015.
We have been using it to control DC motors, motor pumps, and RC servos.
Here are its main features:
- CAN interface with communication over UAVCAN for parameter/gain setting, setpoint sending, and feedback streaming.
- CAN bootloader for easy firmware update over the bus.
- Control a single DC motor with current sensing, allowing cascaded PID control (torque, velocity, and position).
- H-bridge to drive the motor bidirectionally that supports driving a motor with up to 16.8V @ 6.6A continuously.
- Quadrature encoder interface for motor (5V tolerant).
- Secondary quadrature encoder interface (5V tolerant) (eg. for separate odometry wheels).
- Analog input for RC-servo control.
- Digital input for indexing, allows us to determine a reference location on a given axis that can be used for absolute positioning.
- Runs on 3 or 4 cell LiPo/LiFe batteries.
- SWD connector for flashing and debugging, with UART exposed on the same connector.
- Costs < 35 USD in components.
Links
- Hardware including KiCad files, the schematics in PDF, and gerber files.
- Software using ChibiOS RTOS/HAL, and UAVCAN for communication.
IO board
The IO board is a 23x15mm board with a dedicated STM32F3 microcontroller and the following features:
- CAN interface with communication over UAVCAN for IO control (read / write).
- CAN bootloader for easy firmware update over the bus.
- 11 GPIOs exposing:
- Digital outputs, including timer channels for PWM,
- Digital inputs, including timer channels for pulse counting,
- Analog inputs (ADC).
- Communication busses such as I²C and SPI.
- Molex Picoblade connectors for wiring CAN in daisy chain.- SWD connector for flashing and debugging, with UART exposed on the same connector.
- Costs < 10 USD in components.
Current application software allows a general purpose usage exposing basic I/O control over UAVCAN: PWM output and digital inputs.
Links
- Hardware including KiCad files, the schematics in PDF, and gerber files.
- Software using ChibiOS RTOS/HAL, and UAVCAN for communication.
Sensor board
The sensor board is a 23x17mm with a dedicated STM32F3 microcontroller and the following features:
- CAN interface over which sensor data are streamed over UAVCAN.
- CAN bootloader for easy firmware update over the bus.
- Distance time-of-flight sensor (VL6180X) can measure distances from 10mm to 100mm with 1mm resolution.
- RGB Color sensor (TCS34725) with external illumination using a white LED
- Molex Picoblade connection for wiring CAN in daisy chain.
- SWD connector for flashing and debugging, with UART exposed on the same connector.
- 2x M2 holes for mounting
- Costs < 25 USD in components.
Current application software only supports the distance sensor.
Color sensor support is work in progress.
Links
- Hardware including KiCad files, the schematics in PDF, and gerber files.
- Software using ChibiOS RTOS/HAL, and UAVCAN for communication.
Beacon board
The Beacon board is a 42x30mm with a dedicated STM32F4 microcontroller and the following features:
- CAN interface with communication over UAVCAN.
- CAN bootloader for easy firmware update over the bus.
- An Ultra-Wide Band (UWB) module from Decawave for communication and beacon to beacon distance measurement
- Molex Picoblade connectors for wiring CAN in daisy chain.
- Micro USB connector for debugging and flashing via DFU.
- SWD connector for flashing and debugging, with UART exposed on the same connector.
- 4x M2 holes for mounting.
- Costs < 60 USD in components.
Still a work in progress.
Currently basic communication is implemented and distance measurement at low update rate.
Links
- Hardware including KiCad files, the schematics in PDF, and gerber files.
- Software using ChibiOS RTOS/HAL, and UAVCAN for communication.
CAN USB adapter
The CAN USB adapter allows us to inspect the CAN bus of our robots from our laptops, very convenient. It acts as a read / write translator over the CAN bus, relaying all the traffic over USB, through serial line CAN (SLCAN).
UAVCAN supports SLCAN interfaces, and provides a Python library. This means we can easily interact with the boards on the bus through Python scripts. In fact, this is how we build most of our introspection tools.
We also use this adapter to flash our boards over CAN using our bootloader.
Summary of features:
- CAN interface with communication over UAVCAN.
- Molex Picoblade connectors for wiring CAN in daisy chain.
- Micro USB connector that exposes a serial interface and a CAN interface (over SLCAN). It can also be used for flashing the adapter using DFU.
- Costs < 20 USD in components.
Links
- Hardware including KiCad files, the schematics in PDF, and gerber files.
- Software using ChibiOS RTOS/HAL, and UAVCAN for communication.
CAN bootloader
This a general purpose bootloader that we use on all our CAN boards. It allows us to flash them with application firmwares over CAN, thus removing the need to intervene directly on the boards (via debugger). And it stores a small config in the microcontroller's flash that makes it easily traceable (ID, board type).
Its main features are:
- Firmware flashing over CAN, without intervention on the board directly.
- Firmware flashing is fast, a typical firmware (few hundred kilobytes) is written in a few seconds over a 1Mbps CAN interface.
- Parallel firmware flashing (using multicast) when several boards are flashed with the same firmware.
- Board tracking through small config containing ID, name, board type, and number of times the flash was erased.
- On power up, it waits for a few seconds for the user to input commands before jumping to the application.
- Application code is checked by CRC at boot, invalid applications are not loaded.
Currently supported platforms are:
- All our boards at CVRA: motor, IO, sensor, and beacon boards.
- ST Nucleo STM32F103RB board
- ST Nucleo STM32F334R8 board
- Olimex E407 board (with STM32F407 onboard)