Note: this page refers to a product that is retired.

Arduino Robot

The first Arduino on wheels, the easiest way to get started with robotics.

Note: This page refers to a product that is retired.

The Arduino Robot
The Arduino Robot

The Arduino Robot is the first official Arduino on wheels. The robot has two processors, one on each of its two boards. The Motor Board controls the motors, and the Control Board reads sensors and decides how to operate. Each of the boards is a full Arduino board programmable using the Arduino IDE.

Both Motor and Control boards are microcontroller boards based on the ATmega32u4(datasheet). The Robot has many of its pins mapped to on-board sensors and actuators. Programming the robot is similar to the process with the Arduino Leonardo. Both processors have built-in USB communication, eliminating the need for a secondary processor. This allows the Robot to appear to a connected computer as a virtual (CDC) serial / COM port. As always with Arduino, every element of the platform – hardware, software and documentation – is freely available and open-source. This means you can learn exactly how it's made and use its design as the starting point for your own robots. The Arduino Robot is the result of the collective effort from an international team looking at how science can be made fun to learn. Arduino is now on wheels, come ride with us!

You can find here your board warranty information.

Getting Started

In the Getting Started section, you can find all the information you need to configure your board, use the Arduino Software (IDE), and start to tinker with coding and electronics.

Need Help?

Documentation

OSH: Schematics

Arduino Robot is open-source hardware! You can build your own board using the following files:

EAGLE FILES IN .ZIP

Power

The Arduino Robot can be powered via the USB connection or with 4 AA batteries. The power source is selected automatically. The battery holder holds 4 rechargeable NiMh AA batteries.

NB: Do not use non-rechargeable batteries with the robot

For safety purposes, the motors are disabled when the robot is powered from the USB connection. The robot has an on-board battery charger that requires 9V external power coming from an AC-to-DC adapter (wall-wart). The adapter can be connected by plugging a 2.1mm center-positive plug into the Motor Board's power jack. The charger will not operate if powered by USB. The Control Board is powered by the power supply on the Motor Board.

Memory

The ATmega32u4 has 32 KB (with 4 KB used for the bootloader). It also has 2.5 KB of SRAM and 1 KB of EEPROM (which can be read and written with the EEPROM library). The Control Board has an extra 512 Kbit EEPROM that can be accessed via I2C. There is an external SD card reader attached to the GTFT screen that can be accessed by the Control Board's processor for additional storage.

Input and Output

The Robot comes with a series of pre-soldered connectors. There are a number of additional spots for you to install additional parts if needed. All the connectors are labelled on the boards and mapped to named ports through the Robot library allowing access to standard Arduino functions. Each pin can provide or receive a maximum of 40mA at 5V. Some pins have specialized functions:

  • Control Board TK0 to TK7: these pins are multiplexed to a single analog pin on theControl Board's microprocessor. They can be used as analog inputs for sensors like distance sensors, analog ultrasound sensors, or mechanical switches to detect collisions.
  • Control Board TKD0 to TKD5: these are digital I/O pins directly connected to the processor, addressed using Robot.digitalRead() and Robot.digitalWrite) functions. Pins TKD0 to TKD3 can also be used as analog inputs with Robot.analogRead()

Note: if you have one of the first generation robots, you will see that the TKD* pins are named TDK* on the Robot's silkscreen. TKD* is the proper name for them and is how we address them on the software.

LottieLemon figure ref top

LottieLemon figure ref bottom

  • Serial Communication: The boards communicate with each other using the processors' serial port. A 10-pin connector connects both boards carries the serial communication, as well as power and additional information like the battery's current charge.
  • Control Board SPI: SPI is used to control the GTFT and SD card. If you want to flash the processor using an external programmer, you need to disconnect the screen first.
  • Control Board LEDs: the Control Board has three on-board LEDs. One indicates the board is powered (PWR). The other two indicate communication over the USB port (LED1/RX and TX).LED1 is also accessible via software.
  • Both boards have I2C connectors available: 3 on the Control Board and 1 on the Motor Board.

Control Board Pin Mapping

ARDUINO LEONARDOARDUINO ROBOT CONTROLATMEGA 32U4FUNCTIONREGISTER
D0RXPD2RXRXD1/INT2
D1TXPD3TXTXD1/INT3
D2SDAPD1SDASDA/INT1
D3#SCLPD0PWM8/SCLOC0B/SCL/INT0
D4MUX_IN A6PD4ADC8
D5#BUZZPC6???OC3A/#OC4A
D6#MUXA/TKD4A7PD7FastPWM#OC4D/ADC10
D7RST_LCDPE6INT6/AIN0
D8CARD_CS A8PB4ADC11/PCINT4
D9#LCD_CS A9PB5PWM16OC1A/#OC4B/ADC12/PCINT5
D10#DC_LCD A10PB6PWM16OC1B/0c4B/ADC13/PCINT6
D11#MUXBPB7PWM8/160C0A/OC1C/#RTS/PCINT7
D12MUXC/TKD5A11PD6T1/#OC4D/ADC9
D13#MUXDPC7PWM10CLK0/OC4A
A0KEY D18PF7ADC7
A1TKD0 D19PF6ADC6
A2TKD1 D20PF5ADC5
A3TKD2 D21PF4ADC4
A4TKD3 D22PF1ADC1
A5POT D23PF0ADC0
MISOMISO D14PB3MISO,PCINT3
SCKSCK D15PB1SCK,PCINT1
MOSIMOSI D16PB2MOSI,PCINT2
SSRX_LED D17PB0RXLED,SS/PCINT0
TXLEDTX_LEDPD5
HWBPE2HWB

Motor Board Pin Mapping

ARDUINO LEONARDOARDUINO ROBOT CONTROLATMEGA 32U4FUNCTIONREGISTER
D0RXPD2RXRXD1/INT2
D1TXPD3TXTXD1/INT3
D2SDAPD1SDASDA/INT1
D3#SCLPD0PWM8/SCLOC0B/SCL/INT0
D4TK3 A6PD4ADC8
D5#INA2PC6???OC3A/#OC4A
D6#INA1 A7PD7FastPWM#OC4D/ADC10
D7MUXAPE6INT6/AIN0
D8MUXB A8PB4ADC11/PCINT4
D9#INB2 A9PB5PWM16OC1A/#OC4B/ADC12/PCINT5
D10#INB1 A10PB6PWM16OC1B/0c4B/ADC13/PCINT6
D11#MUXCPB7PWM8/160C0A/OC1C/#RTS/PCINT7
D12TK4 A11PD6T1/#OC4D/ADC9
D13#MUXIPC7PWM10CLK0/OC4A
A0TK1 D18PF7ADC7
A1TK2 D19PF6ADC6
A2MUX_IN D20PF5ADC5
A3TRIM D21PF4ADC4
A4SENSE_A D22PF1ADC1
A5SENSE_B D23PF0ADC0
MISOMISO D14PB3MISO,PCINT3
SCKSCK D15PB1SCK,PCINT1
MOSIMOSI D16PB2MOSI,PCINT2
SSRX_LED D17PB0RXLED,SS/PCINT0
TXLEDTX_LEDPD5
HWBPE2HWB

Communication

The Robot has a number of facilities for communicating with a computer, another Arduino, or other microcontrollers. The ATmega32U4 provides UART TTL (5V) serial communication, which is available on digital the 10-pin board-to-board connector. The 32U4 also allows for serial (CDC) communication over USB and appears as a virtual com port to software on the computer. The chip also acts as a full speed USB 2.0 device, using standard USB COM drivers. On Windows, a .inf file is required. The Arduino software includes a serial monitor which allows simple textual data to be sent to and from the Robot board. The RX (LED1) and TX LEDs on the board will flash when data is being transmitted via the USB connection to the computer (but not for serial communication between boards). Each one of the boards has a separate USB product identifier and will show up as different ports on you IDE. Make sure you choose the right one when programming. The ATmega32U4 also supports I2C (TWI) and SPI communication. The Arduino software includes a Wire library to simplify use of the I2C bus; see the documentation for details. For SPI communication, use the SPI library.

Programming

The Robot can be programmed with the Arduino software (download). Select "Arduino Robot Control Board" or "Arduino Robot Motor Board" from the Tools > Board menu. For details, see thegetting started page and tutorials.

The ATmega32U4 processors on the Arduino Robot come preburned with a bootloader that allows you to upload new code to it without the use of an external hardware programmer. It communicates using the AVR109 protocol. You can bypass the bootloader and program the microcontroller through the ICSP (In-Circuit Serial Programming) header; see these instructionsfor details.

Automatic (Software) Reset and Bootloader initiation

Rather than requiring a physical press of the reset button before an upload, the Robot is designed in a way that allows it to be reset by software running on a connected computer. The reset is triggered when the Robot's virtual (CDC) serial / COM port is opened at 1200 baud and then closed. When this happens, the processor will reset, breaking the USB connection to the computer (meaning that the virtual serial / COM port will disappear). After the processor resets, the bootloader starts, remaining active for about 8 seconds. The bootloader can also be initiated by double-pressing the reset button on the Robot. Note that when the board first powers up, it will jump straight to the user sketch, if present, rather than initiating the bootloader.

Because of the way the Robot handles reset it's best to let the Arduino software try to initiate the reset before uploading, especially if you are in the habit of pressing the reset button before uploading on other boards. If the software can't reset the board you can always start the bootloader by double-pressing the reset button on the board. A single press on the reset will restart the user sketch, a double press will initiate the bootloader.

USB Overcurrent Protection

Both of the Robot boards have a resettable polyfuse that protects your computer's USB ports from shorts and overcurrent. Although most computers provide their own internal protection, the fuse provides an extra layer of protection. If more than 500 mA is applied to the USB port, the fuse will automatically break the connection until the short or overload is removed.

Physical Characteristics

The Robot is 19cm in diameter. Including wheels, GTFT screen and other connectors it can be up to 10cm tall.

To Learn More

To calibrate the compass module, if you're using an old model of the robot (which uses Honeywell HMC 6352), refer to this tutorial: Calibrate Compass See also: getting started with the Arduino Robot and the Robot's library pages.

Tech Specs

Control Board Summary

MicrocontrollerATmega32u4
Operating Voltage5V
Input Voltage5V through flat cable
Digital I/O Pins5
PWM Channels6
Analog Input Channels4 (of the Digital I/O pins)
Analog Input Channels (multiplexed)8
DC Current per I/O Pin40 mA
Flash Memory32 KB (ATmega32u4) of which 4 KB used by bootloader
SRAM2.5 KB (ATmega32u4)
EEPROM (internal)1 KB (ATmega32u4)
EEPROM (external)512 Kbit (I2C)
Clock Speed16 MHz
Keypad5 keys
Knobpotentiometer attached to analog pin
Full color LCDover SPI communication
SD card readerfor FAT16 formatted cards
Speaker8 Ohm
Digital Compassprovides deviation from the geographical north in degrees
I2C soldering ports3
Prototyping areas4
Radius185 mm
Height85 mm

LottieLemon figure hardware top

Motor Board Summary

MicrocontrollerATmega32u4
Operating Voltage5V
Input Voltage9V to battery charger
AA battery slot4 alkaline or NiMh rechargeable batteries
Digital I/O Pins4
PWM Channels1
Analog Input Channels4 (same as the Digital I/O pins)
DC Current per I/O Pin40 mA
DC-DC convertergenerates 5V to power up the whole robot
Flash Memory32 KB (ATmega32u4) of which 4 KB used by bootloader
SRAM2.5 KB (ATmega32u4)
EEPROM1 KB (ATmega32u4)
Clock Speed16 MHz
Trimmerfor movement calibration
IR line following sensors5
I2C soldering ports1
Prototyping areas2

LottieLemon figure hardware bottom

LottieLemon figure hardware bottom back

Suggest changes

The content on docs.arduino.cc is facilitated through a public GitHub repository. If you see anything wrong, you can edit this page here.

License

The Arduino documentation is licensed under the Creative Commons Attribution-Share Alike 4.0 license.