Mini Control Board
Remote control board with 4 motors, 2 servos and RGB lights.
Operate Mini Control Board remotely using Totem App and Arduino Library.
Discontinued
This product was discontinued in 2023-Q2. All new robotic kits includes programmable RoboBoard X3.
User manual
Feature list (click to expand)
Connectivity:
• Bluetooth (BLE)
Board features:
• 2 Servo ports (3.7 Volts)
• 4 DC ports (3.7 Volts)
• 4 RGB lights
• On/off switch
• Battery input, integrated charger
Power:
• USB-C: (only for charging)
• Battery: LiPo, 3.7V, 250 mAh
Dimensions:
• 65 x 25 x 8 mm (L x W x H)
Motors
Connectors on the board allow for the direct plug-in of 4 DC motors and 2 Servos.
Motors are powered straight from the battery (around 3.7V).
Each port is identified by letter A, B, C, D.
4 DC ports has control of: spin direction, PWM duty cycle [0
:100
]%, braking (v2.0 only).
2 Servo ports has control of: arm position [-100
:100
]% ([-
] left, [0
] center, [+
] right).
Servo is predefined to [500
:2500
]us range.
Bluetooth
Once powered on, board will show up in Totem App connection menu and becomes connectable using Arduino Library. Bluetooth is always enabled. Only singe device can be connected at the same time.
Power & charging
RGB light bar
Light bar can be used for robot appearance and indicating certain states.
Note: Boards v1.4, v1.5 has 12 individual red LED, controlled using setLED().
- Running animation - no connection
- Steady color - connected to robot
- Change color - click Settings when connected with Totem App
- Control color - set any with rgbColor()
API Reference
Control Mini Control Board remotely using any ESP32 development board.
Arduino interface is provided by Totem Arduino Library.
#include <TotemMiniControlBoard.h>
TotemMiniControlBoard board;
void setup() {
// Connect to Mini Control Board (over Bluetooth)
board.connect();
// Set RGB to red
board.rgbColor(125,0,0);
// Spin Motor
board.dcSpinA(40);
// Spin Servo
board.servoSpinA(50);
}
void loop() { }
Connection
Functions to establish and control Bluetooth connection.
state
board.connect()
¶
state
board.connectName(name
)
¶
state
board.connectAddress(address
) ¶-
Initiate Bluetooth connection to the board.
Parameter:
name
- connect only if name matches
address
- connect only if BLE address matches
Returns:
state
- [true
] connected, [false
] failed state
board.isConnected() ¶-
Is connection active.
Returns:
state
- [true
] connected, [false
] disconnected board.disconnect() ¶
-
Terminate active connection
address
board.getAddress() ¶-
Get connected board BLE address.
Returns:
address
- String object containing addressXX:XX:XX:XX:XX
board.addOnConnectionChange(
function
) ¶-
Register connection state change event.
Parameter:
function
- function namevoid onConnectionChange()
Information
Functions to receive board information and configuration.
voltage
board.getBattery() ¶-
Read battery voltage.
Returns:
voltage
- [2700
:4200
] voltage in millivolts. version
board.getVersion() ¶-
Get firmware version.
Returns:
version
- String object containing firmware version. version
board.getRevision() ¶-
Get board revision.
Returns:
version
- String object containing board revision. name
board.getName() ¶-
Get configured board name.
Returns:
name
- String object containing model
board.getModel() ¶-
Get type of robot board is installed in (configured with
setModel()
).
Note: not used at the moment.
Returns:
name
- 16-bit identifier hex
board.getColor() ¶-
Get configured board appearance color.
Returns:
hex
- [0
:0xFFFFFF
] 24-bit color code. state
board.getInvertDC() ¶-
Get if all DC motor ports are inverted.
Returns:
state
- [true
] invert, [false
] not inverted state
board.getAutobrakeDC() ¶-
Get if all DC motor autobrake is enabled.
Returns:
state
- [true
] brake, [false
] coast
Motor control
Servo and DC motors control functions.
board.servoSpinA(pos
)
¶
board.servoSpinB(
pos
) ¶-
Spin servo motor to position.
Parameter:
pos
- [-100
:100
]% position. [0
] center board.servoSpinAB(
A
,B
) ¶-
Spin all servo motors to individual position with a single command.
Parameter:
A
,B
- [-100
:100
]% position. [0
] center
board.dcSpinA(power
)
¶
board.dcSpinB(power
)
¶
board.dcSpinC(power
)
¶
board.dcSpinD(
power
) ¶-
Spin DC motor.
Parameter:
power
- [-100
:100
]% power. [0
] stop
board.dcBrakeA(power
)
¶
board.dcBrakeB(power
)
¶
board.dcBrakeC(power
)
¶
board.dcBrakeD(
power
) ¶-
Brake DC motor.
Only supported in v2.0
Parameter:
power
- [0
:100
]% power. Default 100% board.dcSpinABCD(
A
,B
,C
,D
) ¶-
Apply individual spin power to all DC motors with a singe command.
Parameter:
A
,B
,C
,D
- [-100
:100
]% power. [0
] stop board.dcBrakeABCD(
A
,B
,C
,D
) ¶-
Apply individual brake to all DC motors with a singe command.
Only supported in v2.0
Parameter:
A
,B
,C
,D
- [0
:100
]% power. Default 100%
Lights control
RGB lights (or 12 LED) control functions.
board.setLED(
map
) ¶-
Set LED strip state (boards v1.4, v1.5).
Each bit in 12bit value represents individual on-board LED. [0
] off, [1
] on.
Parameter:
map
- [0
:0b111111111111
] LED state map board.rgbBrightMode(
state
) ¶-
Turn full brightness RGB mode (change color to take effect).
Parameter:
state
- [true
] full, [false
] medium state
board.hasRGB() ¶-
Check if board has RGB lights (revision 2.0).
Returns:
state
- [true
] has RGB, [false
] has LED strip
board.rgbColorA(hex
)
¶
board.rgbColorB(hex
)
¶
board.rgbColorC(hex
)
¶
board.rgbColorD(hex
)
¶
board.rgbColorA(red
,green
,blue
)
¶
board.rgbColorB(red
,green
,blue
)
¶
board.rgbColorC(red
,green
,blue
)
¶
board.rgbColorD(
red
,green
,blue
) ¶-
Set color to individual RGB light.
Parameter:
red
- amount of red color [0
:255
]
green
- amount of green color [0
:255
]
blue
- amount of blue color [0
:255
]
hex
- hexadecimal color code [0
:0xFFFFFF
]
board.rgbColor(hex
)
¶
board.rgbColor(
red
,green
,blue
) ¶-
Set color to all RGB lights.
Parameter:
red
- amount of red color [0
:255
]
green
- amount of green color [0
:255
]
blue
- amount of blue color [0
:255
]
hex
- hexadecimal color code [0
:0xFFFFFF
] board.rgbColorTotem() ¶
-
Set all RGB lights to Totem color.
board.rgbColorReset() ¶
-
Set RGB lights to default board color (configured with setColor()).
Configuration
Configure board settings (retained after power off).
board.setName(
name
) ¶-
Change board name.
Parameter:
name
- board discovery name (30 bytes max)
board.setColor(hex
)
¶
board.setColor(
red
,green
,blue
) ¶-
Change board initial color.
It may be displayed inside mobile application or on-board RGB lights.
Parameter:
red
- amount of red color [0
:255
]
green
- amount of green color [0
:255
]
blue
- amount of blue color [0
:255
]
hex
- hexadecimal color code [0
:0xFFFFFF
] board.setModel(
model
) ¶-
Assign type of robot board is installed in.
Note: not used at the moment.
Parameter:
model
- [0:0xFFFF] 16-bit identifier board.setInvertDC(
state
) ¶-
Invert all DC motor ports.
Parameter:
state
- [true
] invert, [false
] not inverted board.setAutobrakeDC(
state
) ¶-
Brake all DC motors when power is set to
0
.
Only supported in v2.0
Parameter:
state
- [true
] brake, [false
] coast board.resetConfig() ¶
-
Reset stored configuration (factory reset).
board.restart() ¶
-
Restart connected board.
Known behavior
Board revision v2.0 will enable DC channel C and D for a short period of time (25ms) during power on. This will result in slight robot wheel spin and doesn't indicate defective product or firmware. Most robotic kits use channels A and B.
Revision changelog
We are always looking to improve our products. Any physical change (components, layout) is indicated with board revision number (printed on top). Each revision may have different features or functionality.
Discontinued in 2023-Q2 and replaced by RoboBoard X3.
v2.0
Manufactured from 2022-Q1.
- Visual, design and layout
- Rename to Mini Control Board
- 12 red LED switched to 4 RGB
- Switched MCU from nRF52 to ESP32
- Improved battery connector
- Integrated battery charger (USB-C)
- Added on/off switch
- Motor braking feature
v1.5
Also known as Totem X3-FBI or MiniTrooper board.
- Layout changes
- Shorter by 1.0 cm
- Removed speaker (not good enough)
v1.4
Also known as Totem X3-FBI or MiniTrooper board.
- First public release