RoboBoard
Totem RoboBoard is a family of ESP32 based Arduino development boards that combines most important robot building components (battery, motor drivers, wireless control) into single package. All complicated circuitry is embedded into board itself and controlled using extended Totem software package. This solution eases robot building with a few key advantages:
- Compact package.
- Extension ports and pins.
- Integrated battery charging.
- Built-in motor drivers, RGB, IMU sensor.
- ESP32 with Wi-Fi and Bluetooth connectivity.
- Arduino programming with extended RoboBoard API.
- Remote control using Totem App.
Connect with smartphone
RoboBoard is designed to run in dual mode - Arduino sketch and/or remote control with smartphone app. This functionality is embedded inside Totem software and does not require any additional code or libraries. Can be useful if your robot or application requires some sort of remote control. In Totem App you can create custom buttons and actions.
This allows to control your robot right away. If you bought one of the kits, you will find it in the list of "Models". In case of making your own robot - select "custom" > "+ add new model" to create custom layout. For more information read Totem App section.
Enable connectivity
This functionality is enabled automatically when TotemApp
is used inside Arduino sketch. If not enabled - RoboBoard won't be visible inside Totem App connection screen.
Check Board settings for available configuration values.
void setup() {
TotemApp.begin(); // Start Totem App service
}
void loop() {
}
Enabling app connectivity also increases binary size by 800KB (slower compile & upload).
Custom functions
Typically, buttons inside Totem App control RoboBoard motors directly (without any logic in between) and are mapped to particular robotic kit. Buttons can be created or modified to send particular values to RoboBoard on press or interaction. This enables making custom actions or override existing ones. Read TotemApp and Custom functions sections for more information.
// Function that receives values sent from Totem App
void appEvent(int evt, int value) {
if (evt == TotemApp.evtFunctionA) {
// Got integer 'value' on topic '/0/functionA' (from Totem App)
}
if (evt == TotemApp.evtConnect) {
// App connected to RoboBoard
}
if (evt == TotemApp.evtDisconnect) {
// App disconnected from RoboBoard
}
}
void setup() {
TotemApp.addEvent(appEvent); // Register TotemApp event function
}
void loop() {
}
View TotemApp.addEvent()
for full list of app events.
Arduino programming
Using Arduino environment you can command RoboBoard to perform specific tasks. It will run each time board is powered on. This provides access to whole Arduino ecosystem, libraries and Internet connectivity.
To start programming, you need to install Arduino environment on your PC. It will help to write a code, compile and upload it to the RoboBoard. Follow Arduino setup tutorial to do so.
// Arduino setup function.
void setup() {
// Empty
}
// Arduino loop function
void loop() {
RGB.color(Color::Red); // Set all RGB to red color
delay(700); // Wait 700 milliseconds
RGB.color(Color::Green); // Set all RGB to green color
delay(700); // Wait 700 milliseconds
RGB.color(Color::Blue); // Set all RGB to blue color
delay(700); // Wait 700 milliseconds
}
Board settings
RoboBoard has a few extra features, available in configuration functions. By default it's disabled to not intervene for using RoboBoard as development board (programming with Arduino).
Recommended to enable when using robotic kits (like MiniTrooper, RoboCar).
- On/Off RoboBoard X3 3V3 power
- Force RoboBoard X3 into charging mode when USB-C cable is plugged in
- Display if board restarted due low battery (blink red LED)
- Display battery state of charge during startup (RGB animation)
- Play sound on board power on (motor tone)
- Play sound on Totem App connect / disconnect (motor tone)
- Animate RGB if Totem App is disconnected
// Initialize program
void setup() {
// Enable RoboBoard X3 3V3 LDO regulator
// Note: always enabled "true" by default.
Board.setEnable3V3(true);// (1)!
// Enable RoboBoard X3 charging mode
// Powers off the board and displays RGB animation while charging
// Note: not recommended if using RoboBoard X3 as development board
Board.setChargingMode(false);// (2)!
// Enable board status indication with RGB lights
// - displays battery state on power on
// - blink red if restarted due low battery
// - displays Totem App connection state
Board.setStatusRGB(true);// (3)!
// Enable board status indication with motor beep sounds
// - beep when board is powered up
// - beep on Totem App connect / disconnect
Board.setStatusSound(true);// (4)!
// Save configuration to memory
// This code may be removed and all configuration
// will be loaded automatically during board startup
Board.settingsSave();// (5)!
}
// Loop program
void loop() {
}
- Docs: Board.setEnable3V3()
- Docs: Board.setChargingMode()
- Docs: Board.setStatusRGB()
- Docs: Board.setStatusSound()
- Docs: Board.settingsSave()
Default firmware shipped with RoboBoard
Arduino code flashed during manufacturing (enables all features):
#include <Arduino.h>
/*
Default firmware for Totem robotic kits. Includes features turned on:
- Totem App connectivity
- Motor beep during power on and app connect
- RGB blink during power on and app connect
- RoboBoard X3 charging mode
*/
// Function called after loading configuration from memory
// and before system is initialized (with loaded configuration)
// Note: if "initRoboBoard()" is used - overrides board parameters
// set in Arduino IDE Tools menu.
void initRoboBoard() {
#if ROBOBOARD_X3
// Set RoboBoard X3 charging mode
// Powers off the board and displays RGB charging animation
// when USB cable is plugged in
Board.setChargingMode(true);
#endif
// Enable board status indication with RGB LED
// - displays battery state on power on
// - blink red if restarted due low battery
// - displays Totem App connection state
Board.setStatusRGB(true);
// Enable board status indication with motor beep sounds
// - beep when board is powered up
// - beep on Totem App connect / disconnect
Board.setStatusSound(true);
}
// Initialize program
void setup() {
// Enable TotemApp connectivity
TotemApp.begin();
}
// Loop program
void loop() {
}
For more information read Board
> Board settings section.
Boards comparison
RoboBoard X3 (v3.1) | RoboBoard X4 (v1.1) | |
---|---|---|
Battery | 3.7V (250mAh) (2Amps) | 11.1V (2200mAh) (6Amps) |
Battery size (mm) | 32 x 16 x 7 | 70 × 55 x 18 (0.12kg) |
Battery wire | 50mm, JST-PH | 210mm, JST-VH |
Battery info | voltage, current, charging | voltage |
IMU | Accelerometer, Gyroscope | Accelerometer, Gyroscope |
RGB | 4 LED | 4 LED |
GPIO | 3 pins + (4 servo SIG) (rev v3.0-2 SIG)IO26 IO32 IO33 SIGA SIGB SIGC SIGD |
4 pinsGPIOA GPIOB GPIOC GPIOD |
Status | charging RGB | status LED (Prog.), charging LED |
Buttons | Reset, Boot (Prog.) | Reset, Button (Prog.) |
Drivers | 4 x DC brushless motors 4 x Servo motors (rev v3.0-2 motors) |
4 x DC brushless motors 3 x Servo motors |
DC port | 3.7V (1 Amp) | 11.1V (1 Amp) |
Servo port | 3.7V (2 Amps) | 5V (6 Amps) |
GPIO/Qwiic port | 3.3V (0.8 Amp) (rev v3.0-0.5A) | 3.3V (2 Amps) |
MCU | ESP32 (240Mhz, dual-core) | ESP32 (240Mhz, dual-core) |
Storage | 320KB SRAM, 8MB Flash | 320KB SRAM, 8MB Flash |
Radio | WiFi, Bluetooth Classic / LE | WiFi, Bluetooth Classic / LE |
Charging | USB-C (5V) | DC input (15V) |
Connectors | USB-C, Qwiic | miniUSB, Qwiic, TBUS |
Size (mm) | 65 x 25 x 8 | 70 x 50 x 14 |
* Peak amperage provided. May be lower if other peripherals are draining current.