0% found this document useful (0 votes)
527 views54 pages

Zumo 32u4 Robot

sumo robot

Uploaded by

Adha Arffain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
527 views54 pages

Zumo 32u4 Robot

sumo robot

Uploaded by

Adha Arffain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Pololu Zumo 32U4 Robot Users


Guide

View document on multiple pages. [https://www.pololu.com/docs/0J63]


1. Overview . . . . . . . . . . . . . . . . . . . . . . . .
1.1. Included components . . . . . . . . . . . . . .
1.2. What you will need . . . . . . . . . . . . . . .
1.3. Supported operating systems . . . . . . . . . .
2. Contacting Pololu . . . . . . . . . . . . . . . . . . .
3. The Zumo 32U4 in detail . . . . . . . . . . . . . . .
3.1. Microcontroller . . . . . . . . . . . . . . . . .
3.2. User interface . . . . . . . . . . . . . . . . . .
3.3. Motors . . . . . . . . . . . . . . . . . . . . .
3.4. Quadrature encoders . . . . . . . . . . . . . .
3.5. Front sensor array (line and proximity sensors)
3.6. Proximity sensing . . . . . . . . . . . . . . .
3.7. Inertial sensors . . . . . . . . . . . . . . . . .
3.8. Power . . . . . . . . . . . . . . . . . . . . . .
3.9. Expansion areas . . . . . . . . . . . . . . . .
3.10. Pin assignments . . . . . . . . . . . . . . . .
3.11. Adding electronics . . . . . . . . . . . . . .
3.12. AVR Timers . . . . . . . . . . . . . . . . . .
3.13. Schematics and dimensions . . . . . . . . . .
4. Assembling the Zumo 32U4 . . . . . . . . . . . . . .
5. Programming the Zumo 32U4 . . . . . . . . . . . . .
6. Zumo 32U4 Arduino library . . . . . . . . . . . . . .
7. Related resources . . . . . . . . . . . . . . . . . . .

https://www.pololu.com/docs/0J63/all

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

2
4
8
9
10
11
11
11
13
14
16
17
20
21
23
24
27
29
29
31
52
53
54

Page 1 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

1. Overview

The Zumo 32U4 robot is a complete, versatile robot controlled by an Arduino-compatible ATmega32U4
microcontroller. When assembled, the low-profile tracked robot measures less than 10 cm on each side, making
it suitable for Mini-Sumo competitions.
At the heart of the Zumo 32U4 is an integrated ATmega32U4 AVR microcontroller from Atmel, along with dual
H-bridge drivers that power the robots motors. The robot also features a variety of sensors, including quadrature
encoders and inertial sensors (accelerometer and gyro) on the main board, along with reflectance and proximity
sensors on the front sensor array. On-board pushbuttons offer a convenient interface for user input, and an LCD,
buzzer, and indicator LEDs allow the robot to provide feedback.
Like our A-Star 32U4 programmable controllers [https://www.pololu.com/category/149/a-star-programmablecontrollers], the Zumo 32U4 features a USB interface and ships preloaded with an Arduino-compatible bootloader.
We provide a software add-on that makes it easy to program the Zumo 32U4 from the Arduino environment, as
well as a set of Arduino libraries to help interface with its on-board hardware.

1. Overview

Page 2 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Comparison with the Zumo robot kit for Arduino (with Zumo Shield)
Our older Zumo robot for Arduino [https://www.pololu.com/product/2510], built with a Zumo Shield
[https://www.pololu.com/product/2508], is another Arduino-compatible robotic platform based on the Zumo chassis.
The Zumo Shield is designed for a board with a standard Arduino form factor, like an Arduino Uno
[https://www.pololu.com/product/2191], Arduino Leonardo [https://www.pololu.com/product/2192], or A-Star 32U4
Prime [https://www.pololu.com/category/165/a-star-32u4-prime], to plug into it and act as its controller.

Assembled Zumo 32U4 robot.

Assembled Zumo robot for Arduino


with an Arduino Uno.

By contrast, the Zumo 32U4 includes an on-board ATmega32U4 microcontroller (the same one used in the
Leonardo and A-Star 32U4 boards), combining the functions of the Zumo Shield and the separate Arduino
controller into a single board and enabling the resulting robot to be even more compact. However, it remains
just as easy to program as a standard Arduino, thanks to its USB interface and preloaded Arduino-compatible
bootloader. The Zumo 32U4 also adds many features that are not found on the Zumo Shield, including encoders,
an LCD, and proximity detection.
Some of the pin mappings and software libraries differ between the Zumo 32U4 and Zumo robot for Arduino,
so programs written for one robot generally need to be modified to work on the other.

1. Overview

Page 3 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

1.1. Included components

The Zumo 32U4 robot ships as a kit that includes the following items:
Zumo 32U4 main board and associated hardware:
two wide-angle and two narrow-angle through-hole infrared LEDs
two 12 machine pin sockets for IR LEDs
heat shrink tubing shrouds for IR LEDs
buzzer
82 character LCD [https://www.pololu.com/product/356]
27 low-profile male header for LCD
jumper wires (for soldering motors to the main board)
two magnetic encoder discs [https://www.pololu.com/product/2599] (12 CPR)
Zumo 32U4 front sensor array and associated hardware:
212 female header and 212 extended male header for sensor array
two 13 right-angle male headers and two shorting blocks jumpers for sensor array
Zumo chassis kit [https://www.pololu.com/product/1418], which includes:
Zumo chassis main body
two drive sprockets
two idler sprockets

1. Overview

Page 4 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

two 22-tooth silicone tracks


two shoulder bolts with washers and M3 nuts
four 1/4 #2-56 screws and nuts
battery terminals
Zumo 32U4 blade
four 3/16 #2-56 screws
four additional #2-56 machine nuts (for a total of eight)

1. Overview

Page 5 of 54

Pololu Zumo 32U4 Robot Users Guide

1. Overview

20012015 Pololu Corporation

Page 6 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

The robot and chassis kit might include extra parts like jumper wires, screws, nuts, washers, and
an acrylic spacer plate (which is not used in the Zumo 32U4), so do not be concerned if you have
some leftover hardware after assembling your Zumo.

1. Overview

Page 7 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

1.2. What you will need


This section documents items that do not come with the Zumo 32U4 Robot Kit that are needed for assembling
and using the robot.

Additional required components


These additional items are needed for using the Zumo 32U4 robot:
Two micro metal gearmotors with extended motor shafts are
required for the kit version (see below).
Four AA batteries. The robot works with both alkaline and NiMH
batteries, though we recommend using rechargeable AA NiMH cells
[https://www.pololu.com/product/1003].
USB A to Micro-B cable [https://www.pololu.com/product/2072] to
connect the robot to your computer for programming and debugging.
Small 2 mm slotted screwdriver for adjusting the LCD contrast.

Micro metal gearmotor with


extended motor shaft.

Motor options
The kit version of the Zumo 32U4 Robot requires two (2) micro metal
gearmotors with extended motor shafts, one for each tread. We
generally recommend getting two of the 75:1 Micro Metal Gearmotor
HP with Extended Motor Shaft [https://www.pololu.com/product/2215],
and most of our example code was developed and tested with these
motors. However, these motors are not included with the kit because
other motor options are possible.
The ideal motors for your robot depend on your desired torque, speed,
and current draw. We generally recommend using HP versions of our
micro metal gearmotors since the tracks require a decent amount of
torque to move effectively; higher gear ratios of the non-HP motors
might work if you want lower current draw, but they will be slower and
offer less control. Specifically, we recommend the 50:1, 75:1, or 100:1
HP motors for use with this chassis. The following table summarizes
the key specifications of these three gearmotors. The first four columns
are specifications of the motors themselves, while the last column is the
measured top speed of a Zumo chassis loaded to a weight of 500 g and
driven with these motors. Note that the specifications are for 6V
operation, which is approximately the voltage you would get with four
fresh alkaline batteries; four NiMH AA cells will typically provide less
than 5V.
Micro Metal Free-Run Speed Stall Torque Stall Current
Gearmotor
@ 6V
@ 6V
@ 6V

Top Zumo Speed


@ 6V and 500g

100:1 HP

320 RPM

30 ozin

1600 mA 20 in/s

(50 cm/s)

75:1 HP

400 RPM

22 ozin

1600 mA 25 in/s

(65 cm/s)

50:1 HP

625 RPM

15 ozin

1600 mA 40 in/s (100 cm/s)

1. Overview

Page 8 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

For more options, you can see our other micro metal gearmotors with extended motor shafts
[https://www.pololu.com/category/141/micro-metal-gearmotors-with-extended-motor-shafts]. Be sure to pick a motor that has
an extended shaft, or else you will not be able to use the encoders on the Zumo 32U4.

Assembly tools
These additional items are needed for assembling the Zumo 32U4 robot:
Soldering iron and solder (we recommend one with adjustable temperature control)
Wire cutter
Small #1 Phillips screwdriver
3 mm Allen wrench (hex key)
long-nose pliers (for bending the IR LED leads and Zumo 32U4 blade mounting tabs)
tape or small clamps (for holding parts together when soldering)

Additional optional components


You might also consider getting these for your Zumo 32U4 robot:
Sensors

[https://www.pololu.com/category/7/sensors],

such as optical [https://www.pololu.com/category/79/opticalor sonar range finders [https://www.pololu.com/category/78/sonar-range-finders] (the Zumo 32U4
already has built-in IR proximity sensors, but additional sensors can be incorporated for increased range or
detection area)
range-finders]

Connectors and jumper wires


sensors and components

[https://www.pololu.com/category/19/connectors],

for connecting additional

Battery charger, if you are using rechargeable batteries; since the Zumo just uses ordinary AA batteries,
we recommend basic AA chargers (into which you stick the individual cells) available at most general
electronics stores, though we carry a much fancier iMAX-B6AC V2 balance charger/discharger
[https://www.pololu.com/product/2588] that can be also used for this

1.3. Supported operating systems


The Zumo 32U4 robot can be programmed from a computer using any operating system that supports the
Arduino environment. This includes Microsoft Windows 8.1, 8, 7, Vista, XP (with Service Pack 3), Linux, and
Mac OS X.

1. Overview

Page 9 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

2. Contacting Pololu
We would be delighted to hear from you about your experiences with the Zumo 32U4 robot. If you need technical
support or have any feedback you would like to share, you can contact us [https://www.pololu.com/contact] directly
or post on our forum [http://forum.pololu.com/viewforum.php?f=29]. Tell us what we did well, what we could improve,
what you would like to see in the future, or anything else you would like to say!

2. Contacting Pololu

Page 10 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

3. The Zumo 32U4 in detail


3.1. Microcontroller
The Zumo 32U4 main board features an integrated, USB-enabled ATmega32U4 AVR microcontroller from
Atmel, clocked by a precision 16 MHz crystal oscillator. This is the same microcontroller and clock frequency
used in our family of A-Star 32U4 programmable controllers [https://www.pololu.com/category/149/a-starprogrammable-controllers], as well as the Arduino Leonardo [https://www.pololu.com/product/2192] and Micro
[https://www.pololu.com/product/2188].
The main board includes a USB Micro-B connector that can be used to connect to a computers USB port via
a USB A to Micro-B cable [https://www.pololu.com/product/2072] (not included). The USB connection can be used
to transmit and receive data from the computer and program the board over USB. The USB connection also
provides power for the microcontroller and most of the other hardware on the Zumo (but not motor power); see
Section 3.8 for more details.
The Zumos ATmega32U4 comes preloaded with the same Arduino-compatible USB bootloader as the AStar 32U4, which allows it to be easily programmed using the Arduino IDE. For more information about
programming the Zumo 32U4, see Section 5.

3.2. User interface

LEDs
The Zumo 32U4 has eight indicator LEDs.
A yellow user LED is connected to Arduino digital pin 13, or PC7. You can drive this pin high in a user
program to turn this LED on. The Zumos A-Star 32U4 Bootloader [https://www.pololu.com/docs/0J61/9] fades
this LED on and off while it is waiting for a sketch to be loaded.
A green user LED is connected to PD5 and lights when the pin is driven low. While the board is running
the A-Star 32U4 Bootloader or a program compiled in the Arduino environment, it will flash this LED
when it is transmitting data via the USB connection.
A red user LED is connected to Arduino pin 17, or PB0, and lights when the pin is driven low. While
the board is running the A-Star 32U4 Bootloader or a program compiled in the Arduino environment, it will
flash this LED when it is receiving data via the USB connection.

3. The Zumo 32U4 in detail

Page 11 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

The Zumo32U4 library [https://www.pololu.com/docs/0J63/6] contains functions that make it easier to control the
three user LEDs. All three user LED control lines are also LCD data lines, so you will see them flicker when you
update the LCD. The green and red user LEDs also share I/O lines with pushbuttons (see below).
Two red LEDs on the left and right edges of the board indicate when the robots infrared emitters are
active on the corresponding side.
Two blue power LEDs under the rear corners of the main board indicate when the robot is receiving
power from batteries (the power switch must be turned on). The left LED is connected to the reverseprotected and switched battery voltage (VBAT), while the right LED is connected to the output of the main
boards 5 V regulator.
The left blue LED will become noticeably dimmer as the total battery voltage drops below about
3 V, and this can serve as an indication that a set of alkaline batteries has reached the end of
its useful life. However, rechargeable batteries can be damaged by overdischarge, so we do not
recommend allowing a set of four NiMH cells to discharge to this point. (A voltage divider is
connected to analog pin 1 and can be used to monitor the battery voltage; see Section 3.8 for
details.)
A green power LED under the center rear edge of the main board indicates when the USB bus voltage
(VBUS) is present.

Pushbuttons
The Zumo 32U4 has four pushbuttons: a reset button on the right edge and three user pushbuttons located
along the rear edge of the main board. The user pushbuttons, labeled A, B, and C, are on Arduino pin 14 (PB3),
PD5, and Arduino pin 17 (PB0), respectively. Pressing one of these buttons pulls the associated I/O pin to ground
through a resistor.
The three buttons I/O lines are also used for other purposes: pin 14 is MISO on the SPI interface, PD5 and pin
17 control the green and red user LEDs, and all three pins are LCD data lines. Although these uses require the
pins to be driven by the AVR (or SPI slave devices in the case of MISO), resistors in the button circuits ensure
that the Zumo will not be damaged even if the corresponding buttons are pressed at the same time, nor will SPI
or LCD communications be disrupted. The functions in the Zumo32U4 library [https://www.pololu.com/docs/0J63/6]
take care of configuring the pins, reading and debouncing the buttons, and restoring the pins to their original
states.

LCD
The Zumo 32U4 has a 27 header where you can connect the included 82 character LCD
[https://www.pololu.com/product/356] (or any other LCD with the common HD44780 parallel interface
[https://www.pololu.com/file/download/DMC50448N-AAE-AD.pdf?file_id=0J71] (109k pdf)). You can adjust the LCD
contrast with the potentiometer to the left of the LCD connector. We recommend using a 2 mm slotted
screwdriver to adjust the contrast.
The Zumo32U4 library [https://www.pololu.com/docs/0J63/6] provides functions to display data on a connected
LCD. It is designed to gracefully handle alternate use of the LCD data lines by only changing pin states when
needed for an LCD command, after which it will restore them to their previous states. This allows the LCD data
lines to be used for other functions (such as pushbutton inputs and LED drivers).

3. The Zumo 32U4 in detail

Page 12 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Buzzer
The buzzer on the Zumo 32U4 can be used to generate simple sounds and music. By default, it is connected
to digital pin 6 (which also serves as OC4D, a hardware PWM output from the AVRs 10-bit Timer4). If you
alternate between driving the buzzer pin high and low at a given frequency, the buzzer will produce sound at that
frequency. You can play notes and music with the buzzer using functions in the Zumo32U4Buzzer library. If you
want to use pin 6 for an alternate purpose, you can disconnect the buzzer circuit by cutting the surface-mount
jumper next to the buzzer.

3.3. Motors
Two on-board Texas Instruments DRV8838 motor drivers power the Zumo 32U4s two micro metal gearmotors.
Four Arduino pins are used to control the drivers:
Digital pin 15, or PB1, controls the right motor direction (LOW drives the motor forward, HIGH
drives it in reverse).
Digital pin 16, or PB2, controls the left motor direction.
Digital pin 9, or PB5, controls the right motor speed with PWM (pulse width modulation) generated
by the ATmega32U4s Timer1.
Digital pin 10, or PB6, controls the left motor speed with PWM.
For more information about the drivers, see the DRV8838 datasheet [https://www.pololu.com/file/download/
drv8838.pdf?file_id=0J806] (1MB pdf). We also sell a carrier board [https://www.pololu.com/product/2990] for this
driver.
The Zumo32U4 library [https://www.pololu.com/docs/0J63/6] provides functions that allow you to easily control the
motors, and it can optionally take care of flipping a direction signal for you if you accidentally soldered in a
motor backwards.
As your batteries run out, the voltage supplied to the motor drivers (VBAT) will decrease, which
will make the motors slower. It is possible to account for this in your code by monitoring the
battery voltage (see Section 3.8) or using the encoders and other sensors to monitor the movement
of the robot.

3. The Zumo 32U4 in detail

Page 13 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

3.4. Quadrature encoders


Each drive motor on the Zumo 32U4 has a
corresponding quadrature encoder system consisting
of a magnetic disc attached to the extended motor
shaft and a pair of Hall effect sensors mounted to the
underside of the main board. Other than the sensor
orientation, these encoders work similarly to our
magnetic encoder kits for micro metal
gearmotors
[https://www.pololu.com/product/2598].
They can be used to track the rotational speed and
direction of the robots drive sprockets.
The encoders provide a resolution of 12 counts per
revolution of the motor shaft when counting both
edges of both channels. To compute the counts per
revolution of the drive sprockets, multiply the
gearboxes gear ratio by 12. For example, if 75:1
motors [https://www.pololu.com/product/2215] (which
have gear ratios more accurately specified as
75.81:1) are used, the encoders provide 75.81 12 909.7 CPR.
Quadrature encoder transitions are often detected by monitoring both encoder channels directly. However, since
transitions on the Zumos encoders can occur at high frequencies (several thousand per second) when its motors
are running, it is necessary to use the AVRs pin change interrupts or external interrupts to read the encoders. To
reduce the required number of interrupt pins, the Zumo 32U4 main board XORs together both channels of each
encoder and connects the resulting signal to an interrupt pin, while channel B of each encoder is connected to a
non-interrupt pin:
Digital pin 7, or PE6, reads the right encoder XORed signal using external interrupt INT6.
Digital pin 8, or PB4, reads the left encoder XORed signal using pin change interrupt PCINT4.
Digital pin 23 (analog pin 5), or PF0, reads the right encoder channel B.
Pin PE2 reads the left encoder channel B.

3. The Zumo 32U4 in detail

Page 14 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

The XORed signal and the channel B signal can be used to reconstruct the channel A signal by simply XORing
them again: (A XOR B) XOR B = A. For both encoders, channel A leads channel B when the motor is rotating
in the forward direction; that is, A rises before B rises and A falls before B falls. (The waveforms in the diagram
above would be produced by forward rotation.)
The Zumo 32U4 library [https://www.pololu.com/docs/0J63/6] provides appropriate interrupt service routines and
functions for reading the encoders and keeping track of their counts.

3. The Zumo 32U4 in detail

Page 15 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

3.5. Front sensor array (line and proximity sensors)


The Zumo 32U4 Front Sensor Array is a separate
board that attaches to the main board. The board
features five line sensors and three proximity
sensors.
The five line sensors face downwards, and can help
the Zumo distinguish between light and dark
surfaces. They can also be used to detect sources of
infrared light, like the sun. Each reflectance sensor
consists of a down-facing infrared (IR) emitter LED
paired with a phototransistor that can detect
reflected infrared light from the LED. The
reflectance sensors operate on the same principles as
our QTR-1RC [https://www.pololu.com/product/2459]
sensor: the AVR uses an I/O line to drive the sensor
output high, and then measures the time for the
output voltage to decay. The IR emitters for the
reflectance sensors are on by default, but they can be
turned off by driving digital pin 11 low. The five line
sensors are numbered 1 through 5, with line sensor 1
being the robots left-most sensor. In schematics and diagrams, they are referred to as DOWN1, DOWN2,
DOWN3, DOWN4, and DOWN5. On the front sensor array, their signals are labeled DN1, DN2, DN3, DN4, and
DN5. The part used for the line sensors is the Sharp GP2S60 compact reflective photointerrupter
[https://www.pololu.com/file/download/GP2S60_DS.pdf?file_id=0J683] (164k pdf).
The three proximity sensors face in different directions away from the Zumo and can help detect nearby objects.
They can also be used to detect commands from typical IR remote controls. The proximity sensors, like the line
sensors, detect reflected IR light, but they are designed to only detect light that is turned on and off quickly at a
frequency of 38 kHz. To read a proximity sensor, the AVR can enable the internal pull-up on the corresponding
I/O line. When the sensor is active, it will drive the line low. The proximity sensors do not have IR emitters
paired with them; instead they detect reflected 38 kHz IR light that comes from LEDs on the Zumo 32U4 Main
Board, which are described in Section 3.6. The proximity sensors are named after the directions they face: left,
right, or front. In schematics and diagrams, they are referred to as LEFT, RIGHT, and FRONT. On the front
sensor array, their signals are labeled LFT, FRONT, and RGT. The part used for the proximity sensors is the
Vishay TSSP77038 IR receiver module [https://www.pololu.com/file/download/tssp77038.pdf?file_id=0J615] (268k pdf).
The TSSP77038 has a fixed gain (sensitivity) that makes the sensor more predictable.
Each sensor output on the front sensor array is protected by a 220 Ohm resistor to help prevent short circuits
when the AVR is driving the corresponding I/O line.
The infrared emitted by the line sensors can interfere with the proximity sensors and cause false readings,
so it is recommended to turn off the line sensor emitters before using the proximity sensors. The
Zumo32U4ProximitySensors class from the Zumo 32U4 Arduino library takes care of turning off the line sensor
emitters.

Pin assignments
By default, the front sensor array supports these pin assignments:

3. The Zumo 32U4 in detail

Page 16 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Pin A0 (18) is connected to line sensor 1 (DN1),


Pin A3 (21) is connected to line sensor 3 (DN3).
Pin 12 is connected to line sensor 5 (DN5).
Pin A4 (22) is connected to the front proximity sensor.
Pin A2 (20) is connected to either the left proximity sensor (LFT), or line sensor 2 (DN2), depending on
the position of a jumper.
Pin 4 is connected to either the right proximity sensor (RGT), or line sensor 4 (DN4), depending on the
position of a jumper.
Pin 11 is connected to the line sensor emitter control pin (LEDON).
The signals from the sensors can be remapped by soldering in a wire from the signal output to the desired I/O
pin. You would also want to disconnect the sensor output from the standard I/O pin so that pin can be used for
other purposes. For line sensor 1, line sensor 3, line sensor 5, and the front proximity sensor, disconnecting the
sensor involves cutting a trace between the signal output and the standard I/O pin, which is labeled on the board.
For the line sensor 2, line sensor 4, the left proximity sensor, and the right proximity sensor, you can simply
move or remove the corresponding jumper.

Example remapping: using all the sensors


If you want to use all five line sensors and all three proximity sensors in one application, you can accomplish
that by freeing up two I/O lines and remapping two of the pins. One way to accomplish this is by removing the
Zumos LCD to free up pins 0 and 1. Next, configure the jumpers on the front sensor array to connect pin 4
to line sensor 4, and pin 20 to line sensor 2. Solder a wire from the right proximity sensor signal to pin 0, and
solder a wire from the left proximity sensor to pin 1. You will need to modify your code to include the new pin
assignments, and you should remove all LCD-related code.

3.6. Proximity sensing


The Zumo 32U4 can detect nearby objects using the three proximity sensors on the front sensor array. The
proximity sensors do not emit their own light; instead they are designed to detect 38 kHz infrared (IR) signals
from emitters on the Zumo 32U4 Main Board.
The main board has four IR emitters:
The middle-left and middle-right IR LEDs are surface-mounted on either side of the Zumo, inside the
tracks and between the wheels. They emit light to the left and to the right.
The front-left and front-right IR LEDs are meant to face towards the front, though you can play with the
exact angle to see if it yields better results for your particular application. These LEDs are included, but
they must be installed by the user, as described in Section 4.
The middle-left LED and the front-left LED are in series, so you must install the front-left LED
in order to use the middle-left LED, and you cannot turn on one without turning on the other.
Similarly, the middle-right and front-right IR emitters are in series.
Two AVR pins are used to control the LEDs: pin 5 (OC3A) is the proximity LED PWM pin, and must be driven
high to turn on any of the LEDs. Pin A1 (19) is the proximity LED selection pin, and must be driven high or
low to select which set of LEDs to turn on. If A1 is high, the right-side LEDs are selected. If A1 is low, the

3. The Zumo 32U4 in detail

Page 17 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

left-side LEDs are selected. (When A1 is an input, it can be used to read the battery voltage.) The brightness of
the emitters can be controlled by adjusting the duty cycle of the PWM signal on pin 5.
Our example code operates the proximity sensors by transmitting pulses on both the left and right LEDs at six
different brightness levels. For each sensor, it generates two numbers: the number of brightness levels for the
left LEDs that activated the sensor, and the number of brightness levels for the right LEDs that activated the
sensor. A higher reading corresponds to more IR light getting reflected to the sensor, which is influenced by the
size, reflectivity, proximity, and location of nearby objects. However, the presence of other sources of 38 kHz IR
pulses (e.g. from another robot) can also affect the readings.
You can also just read the proximity sensors without turning on any LEDs. This could allow the Zumo to detect
the IR proximity sensors of other robots, or to detect commands from a typical IR remote.

Forward LED selection

The Zumo 32U4 comes with two types of through-hole IR LEDs that can be installed to serve as the forward
emitters. Both types of LEDs use the T-1 3/4 package, meaning they have a diameter of approximately 5 mm.
Also, they both emit 940 nm light. The main difference between these LEDs is their viewing angle. The bluecolored LEDs have a relatively narrow viewing angle of 20, which makes them better at illuminating objects far
away. The clear LEDs have a much wider 50 viewing angle, which makes them better at illuminating objects
that are not directly in front of the Zumo. The choice of IR LEDs to use is one way for you to customize your
Zumo.

Shielding
Proper shielding for the forward LEDs is important; without shielding, light from the LEDs can activate the
proximity sensors directly and cause false readings. You can test to see if your shielding is good by putting your
Zumo on a black surface with no objects nearby, and making sure that you get a reading of 0 for all the proximity
sensors.
The Zumo 32U4 comes with black heat shrink that can be used for shielding as shown in the picture below:

3. The Zumo 32U4 in detail

Page 18 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

IR LEDs with heat shrink shielding.

IR LED holder
We

designed

3D-printable IR LED holder [https://www.pololu.com/file/download/zumo-32u4-ir-led(65k stl) that mounts to the Zumo 32U4 blade. The LED holder can be screwed to the
blade, and serves to shield the LEDs while also holding them in place and helping to protect them from collisions
with other robots. If you use the holder, then you do not need to worry about using heat shrink. We recommend
printing the holder with a material that does not reflect 940 nm infrared light. If you have access to a 3D printer,
you might be able to print it yourself. Alternatively, you can use a 3D-printing service such as Shapeways
[https://www.shapeways.com/].
holder.stl?file_id=0J861]

3D-printable IR LED holder for the


Zumo 32U4 robot, front view.

3D-printable IR LED holder for the


Zumo 32U4 robot, back view.

The Zumo 32U4 robot kit comes with two extra 3/16 #2-56 screws and matching nuts that can be used to mount
the LED holder to the blade. Depending on how you printed the holder, you might notice that tightening the
screws affects how the angle of the LEDs. A tight screw can make the left LED point a little to the left and make
the right LED point a little to the right, instead of pointing straight forward.

IR LEDs with 3D-printed LED holder.

3. The Zumo 32U4 in detail

Page 19 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Bending the LED leads and inserting them into the machine pin sockets can be difficult. In the picture above,
we oriented the LED so that the cathode was directly above the anode. The cathode lead was cut to a length of
1.4 cm, and the anode lead was cut to a length of 1.1 cm. However, it might be easier to have longer leads and
make them travel upwards above the LED before coming down to the LED socket. (The cathode is the shorter
lead on an uncut LED, and it connects to the front-most hole of LED socket on the main board.)

Proximity sensor performance


The proximity sensors have no particular minimum sensing distance; they can sense an object that is close to the
Zumo as long as the shape of that object allows some light from the LEDs to be reflected into the sensor.
The maximum sensing distance depends on the size and reflectivity of the object you are sensing. We did several
tests of the front proximity sensors to see how well they could see the stainless steel blade of another Zumo
while both robots were on the black surface of a sumo ring. In these tests, we found that the maximum sensing
distance was around 30 cm to 40 cm.
There is a significant dead spot between the sensing regions of the front sensor and each side sensor. Therefore,
if the Zumo senses an object with the left or right sensors and then turns to face it, there will probably be a period
of time where none of the sensors can see the object.

Facing towards an object


The FaceTowardsOpponent demo found in the Zumo 32U4 Arduino library (Section 6) uses the motors and the
front proximity sensor to scan for nearby objects, face directly towards them, and track them if they move. To
directly face an object, it compares the two readings from the front sensor: the number of brightness levels for
the left LEDs that resulted in the sensor activating, and the number of brightness levels for the right LEDs that
resulted in the sensor activating. If the left reading is greater than the right reading, it means the object is closer
to the left LEDs, so the robot should turn left (counter-clockwise) to face it more directly. Similarly, if the right
reading is greater than the left reading, the robot should turn right (clockwise). If both of the readings are below
a certain threshold, then it just turns the motors in order to scan for nearby objects.
This could be a good starting point for a sumo robot that uses the front sensors to locate its opponent.

3.7. Inertial sensors


The Zumo 32U4 includes on-board inertial sensors that can be used in advanced applications, such as helping
your Zumo detect collisions and determine its own orientation by implementing an inertial measurement
unit (IMU). The first chip, an ST LSM303D [https://www.pololu.com/product/2127] compass module, combines a
3-axis accelerometer and 3-axis magnetometer into a single package. The second chip is an ST L3GD20H
[https://www.pololu.com/product/2129] 3-axis gyroscope. Both sensor chips share an IC bus connected to the
ATmega32U4s IC interface.
Level shifters built into the main board allow the inertial sensors, which operate at 3.3 V, to be connected to the
ATmega32U4 (operating at 5 V). The sensors, level shifters, and IC pull-up resistors are connected to the SDA
(digital pin 2, or PD1) and SCL (digital pin 3, or PD0) pins on the AVR by default, but they can be disconnected
by cutting the surface-mount jumpers labeled 2 = SDA and 3 = SCL on the board to allow those pins to be
used for other purposes.
We

recommend

carefully reading the LSM303D datasheet [https://www.pololu.com/file/download/


(1MB pdf) and L3GD20H datasheet [https://www.pololu.com/file/download/
L3GD20H.pdf?file_id=0J731] (3MB pdf) to understand how these sensors work and how to use them.
LSM303D.pdf?file_id=0J703]

3. The Zumo 32U4 in detail

Page 20 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Using the sensors


The Zumo32U4 library [https://www.pololu.com/docs/0J63/6] includes functions that make it easier to work with
the sensors, as well as some example programs that demonstrate how to use them. (The software interface is
identical to those of our LSM303 Arduino library [https://github.com/pololu/lsm303-arduino] and L3G Arduino
library [https://github.com/pololu/l3g-arduino].)
In addition, the sensor ICs on the Zumo 32U4 are the same as those on our MinIMU-9 v3
[https://www.pololu.com/product/2468], so Arduino software written for the MinIMU-9 (such as our AHRS example
[https://github.com/pololu/minimu-9-ahrs-arduino]) can also be adapted to work on a Zumo 32U4 robot.

Notes on the magnetometer


Please note that the magnetometer in the LSM303 is affected by currents in the motors and buzzer when they
are operating, as well as metal in the batteries, and the readings are easily influenced by magnetic distortions in
the environment around the Zumo (such as rebar in a concrete floor). As a result, it is very hard to accurately
determine the Zumos absolute heading based on the magnetometer data. However, in our tests, we found that the
magnetometer could still be useful for rough measurements of relative orientation changes; for example, once
the magnetic readings are compensated for a particular environment, they can be used to help the Zumo turn left
or right by a specific angle instead of just timing how long to run the motors to make such a turn (although the
gyro or encoders might be better suited for this particular purpose).
In our tests, we found that the batteries, motors, and motor current affect the z axis of the
magnetometer much more strongly than the x and y axes, so you probably will want to ignore
the z readings. We were generally able to get decent results using only the x and y magnetometer
readings to determine heading. Additionally, you might need to decrease the magnetometer
sensitivity; if the magnetometer returns a value of -4096, that is a sign that the sensitivity range is
set too narrow for your particular environment.

3.8. Power
The Zumo chassis has an internal compartment for four AA batteries. We recommend using rechargeable AA
NiMH cells [https://www.pololu.com/product/1003], which results in a nominal voltage of 4.8 V (1.2 V per cell). You
can also use alkaline cells, which would nominally give you 6 V.
The negative battery voltage is connected to GND. The positive battery voltage is designated VB. VB feeds into
a circuit that provides reverse protection and power switching controlled by the on-board power switch. The
output of this circuit is designated VBAT.
VBAT provides power to the motors through the DRV8838 motor drivers, so the motors can only operate if the
batteries are installed and the power switch is in the On position.
The battery voltage on VBAT can be monitored through a voltage divider that is connected to analog pin 1
(PF6) by default. The divider outputs a voltage that is equal to one half of the battery voltage, which will be
safely below the ATmega32U4s maximum analog input voltage of 5 V as long as the battery voltage is less than
10 V. The readBatteryMillivolts() function in the Zumo32U4 library [https://www.pololu.com/docs/0J63/6] can
be used to determine the battery voltage from this reading. The surface-mount jumper labeled A1 = VBAT/2
can be cut to disconnect the voltage divider and free the pin for other uses.

3. The Zumo 32U4 in detail

Page 21 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

5V regulator
VBAT supplies power to a 5V regulator based on the TPS63061 switching step-up/step-down (buck-boost)
converter from Texas Instruments. The regulator works with a 2.7 V to 11.8 V input voltage and has a typical
efficiency of 80% to 90% for most combinations of input voltage and load. (We also make a standalone
regulator [https://www.pololu.com/product/2119] based on this integrated circuit.) The 5V output of this regulator is
designated VREG.
The regulator can be disabled by driving the regulator shutdown pin, SHDN, high.

Power selection
The Zumo 32U4 main boards power selection circuit uses the TPS2113A power multiplexer
[https://www.pololu.com/product/2596] from Texas Instruments to choose whether its 5 V logic supply (designated
5V) is sourced from USB or the batteries via the regulator, enabling the robot to safely and seamlessly transition
between the two sources. The TPS2113A is configured to select regulated battery power (VREG) unless the
regulator output falls below about 4.5 V. If this happens, it will select the higher of the two sources, which will
typically be the USB 5 V bus voltage if the Zumo is connected to USB.
Consequently, when the Zumo 32U4 is connected to a computer via USB, it will receive 5 V logic power even
when the power switch is off. This can be useful if you want to upload or test a program without drawing power
from the batteries and without operating the motors. It is safe to have USB connected and battery power switched
on at the same time.
The currently selected source is indicated by the STAT pin; this pin is an open-drain output that is low
if the batteries are selected and high-impedance if the USB supply is selected. The current limit of the
TPS2113A is set to about 1.9 A. For more information about the power multiplexer, see the TPS2113A
datasheet [https://www.pololu.com/file/download/tps2113a.pdf?file_id=0J771] (1MB pdf).

3.3V regulator
The main board also has 3.3 V linear regulator. The inertial sensors draw power from the 3.3 V line; the
remainder (up to a few hundred milliamps) is available for powering external circuits or devices.

Alternative power sources


For users who want to experiment with alternative power sources like lithium batteries, the Zumo 32U4 can
accept a battery input voltage from 2.7 V to 10 V. You can raise the maximum allowable voltage to the
regulators limit of 11.8 V by disconnecting or modifying the battery voltage divider.
We do not recommend using a 3-cell lithium battery to power the Zumo 32U4. Even though such
a battery is usually specified with a nominal voltage of 11.1 V, it can measure well over 12 V
when fully charged.

Adding a power switch


You can add your own power switch to the Zumo 32U4 using the PSW pin. When it is in the on position, your
switch should connect PSW to GND. In that case, VBAT will receive power when either your switch or the main
board switch are on.

3. The Zumo 32U4 in detail

Page 22 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

3.9. Expansion areas


The top expansion areas on the Zumo 32U4 main board (in two 213 groups of pins near the left and right edges)
break out all of the ATmega32U4 microcontrollers general-purpose I/O lines and provide access to various
power inputs and outputs. Some of these pins are also broken out in the front expansion area, where the front
sensor array connects. The following diagrams identify the locations of these pins and the hardware associated
with them.

Zumo 32U4 top expansion pinout.

3. The Zumo 32U4 in detail

Page 23 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Zumo 32U4 front expansion and LCD connector pinout.

These

diagrams

are

also

available as a printable PDF [https://www.pololu.com/file/download/


zumo-32u4-pinout.pdf?file_id=0J864] (536k pdf). For more information about the ATmega32U4 microcontroller and
its peripherals, see Atmels ATmega32U4 documentation.

3.10. Pin assignments


The table below lists the most important pin assignments for the ATmega32U4 on the Zumo 32U4. This table is
helpful if you want to add your own electronics to the Zumo 32U4, write your own low-level code for interfacing
with the hardware, or just want to understand better how the Zumo 32U4 works. Each row represents a physical
pin on the ATmega32U4.
The ATmega32U4 pin name column shows the official name of the pin according to the ATmega32U4
datasheet [http://www.atmel.com/devices/atmega32u4.aspx].
The Arduino pin names column lists the names provided by the Arduino environment for the pin. These names
can generally be used as arguments to any function that takes a pin number. However, there are some exceptions.
For example, passing the number 4 to analogRead actually reads pin A4, not pin 4. Also, due to hardware
limitations, some functions only work on a limited set of pins.
The Zumo 32U4 functions column documents what the pin is used for on the Zumo 32U4. Many pins can
serve multiple purposes concurrently by switching modes. For example, PB0 can read the state of button C when
it is an input, and it can control the red LED and serve as an LCD data line when it is an output.

3. The Zumo 32U4 in detail

Page 24 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

The Note/alternate functions column documents other features of the pin, although some of those features
might be impractical to use.

3. The Zumo 32U4 in detail

Page 25 of 54

Pololu Zumo 32U4 Robot Users Guide

ATmega32U4 Arduino
pin name
pin names

Zumo 32U4 functions

20012015 Pololu Corporation

Notes/alternate functions

PB7

11

Line sensor IR LED control

Timer0 PWM output A (OC0A)


Timer1 PWM output C (OC1C)
UART flow control (RTS)
Pin-change interrupt (PCINT7)

PF7

A0, 18

Line sensor 1 (leftmost)

Analog input (ADC7)


JTAG test data in (TDI)

PF5

A2, 20

Line sensor 2
Analog input (ADC5)
Left proximity sensor
JTAG test mode select (TMS)
(function selected by jumper)

PF4

A3, 21

Line sensor 3 (center)

PD4

4, A6, 24

Line sensor 4
Analog input (ADC8)
Right proximity sensor output
Timer1 input capture pin (ICP1)
(function selected by jumper)

PD6

12, A11, 29 Line sensor 5 (rightmost)

Analog input (ADC9)


Timer4 PWM output D (OC4D)
Timer1 counter source (T1)

PF1

A4, 22

Front proximity sensor

Analog input (ADC1)

PC6

Proximity LED PWM

Timer3 PWM output A (OC3A)


Timer4 PWM output A (OC4A)

PF6

A1, 19

Proximity LED selection


Analog input (ADC6)
Battery level input (VBAT/2) JTAG test data out (TDO)

PD2

LCD control line (RS)

UART receive pin (RXD1)


External interrupt source (INT2)

PD3

LCD control line (E)

UART transmit pin (TXD1)


External interrupt source (INT3)

PB3

14, MISO

User pushbutton A
LCD data line DB4

SPI Master Input/Slave Output (MISO)


Pin-change interrupt (PCINT3)

PB0

17, SS

Red LED (RX)


User pushbutton C
LCD data line DB5

SPI slave select (SS)


Pin-change interrupt (PCINT0)

PC7

13

Yellow LED
LCD data line DB6

Timer4 PWM output A (OC4A)


Timer3 input capture pin (ICP3)
Divided system clock output (CLKO)

PD5

Green LED (TX)


User pushbutton B
LCD data line DB7

UART external clock (XCK1)


UART flow control (CTS)

PD7

6, A7, 25

Buzzer PWM

Analog input (ADC10)


Timer4 PWM output D (OC4D)
Timer0 counter source (T0)

3. The Zumo 32U4 in detail

Analog input (ADC4)


JTAG test clock (TCK)

Page 26 of 54

Pololu Zumo 32U4 Robot Users Guide

ATmega32U4 Arduino
pin name
pin names

Zumo 32U4 functions

20012015 Pololu Corporation

Notes/alternate functions

PB6

10, A10, 28 Left motor PWM

Analog input (ADC13)


Timer1 PWM output B (OC1B)
Timer4 PWM output B (OC4B)
Pin-change interrupt (PCINT6)

PB2

16, MOSI

Left motor direction

SPI Master Output/Slave Input (MOSI)


Pin-change interrupt (PCINT2)

PB5

9, A9, 27

Right motor PWM

Analog input (ADC12)


Timer1 PWM output A (OC1A)
Timer4 PWM output B (OC4B)
Pin-change interrupt (PCINT5)

PB1

15, SCK

Right motor direction

SPI Clock (SCK)


Pin-change interrupt (PCINT1)

PB4

8, A8, 26

Left encoder XORed input

Analog input (ADC11)


Pin-change interrupt (PCINT4)

PE2

Left encoder input

Hardware bootloader select (HWB)

PE6

Right encoder XORed input

Analog comparator negative input (AIN0)


External interrupt source (INT6)

PF0

A5, 23

Right encoder input

Analog input (ADC0)

PD0

3, SCL

IC clock for inertial sensors

Timer0 PWM output B (OC0B)


External interrupt source (INT0)

PD1

2, SDA

IC data for inertial sensors

External interrupt source (INT1)

RESET

Reset pushbutton

internally pulled high, active low

AREF

Analog reference

3.11. Adding electronics


This section gives tips for how the Zumo 32U4 can be expanded with additional electronics.

Freeing up I/O pins


If you want your additional electronics to send or receive information from the AVR, you will need to connect it
to one or more of the AVRs I/O pins. Each I/O pin is already being used for some other purpose, as documented
in Section 3.10, so you might need to disable or disconnect one of the other features of the Zumo 32U4.
If are not using the proximity sensors and you do not care about turning off the infrared emitters for the line
sensors, you can cut the surface-mount jumper on the front sensor array labeled LED. This frees pin 11 (PB7)
for other uses. Pin 11 can be used for digital I/O and analog input. We do not recommend making this change if
you are using the proximity sensors, because then the line sensor infrared emitters would always be on, which
would interfere with the proximity sensors.

3. The Zumo 32U4 in detail

Page 27 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

If you are not using line sensor 2 or the left proximity sensor, then you can remove the sensor-selection jumper
for pin 20 on the front sensor array. This frees up pin 20 (PF5) for other purposes. This pin can be used for digital
input and output, as well as analog input.
If you are not using line sensor 4 or the right proximity sensor, then you can remove the sensor-selection jumper
for pin 4 on the front sensor array. This frees up pin 4 (PD4) for other purposes. This pin can be used for digital
input and output, as well as analog input.
If you are not using any of the sensors on the front sensor array, you can remove the front sensor array. This
frees up 7 pins: pin 11 (PB7), pin 18 (PF7), pin 20 (PF5), pin 21 (PF4), pin 4 (PD4), pin 12 (PD6), and pin 22
(PF1). Each pin can be used for digital input and output, while 6 of them (all except pin 11) can be used as analog
inputs.
If you are not using the proximity sensors, you probably will not want to use the IR LEDs on the main board, so
that frees up pin 5 (PC6), which can be used for digital I/O or PWM output. That also frees up Timer3.
If you are not using the proximity sensors and you also do not need the AVR to be able to measure the battery
voltage, you can use pin 19 (A1, PF6) for other purposes. This pin can be used for digital input and output, as
well as analog input. If you want to use this pin as a digital or analog input, you might need to cut the surfacemount jumper labeled A1 = VBAT / 2 in order to disconnect it from the VBAT voltage divider. If you only
want to use A1 as an output, you might not need to cut that jumper.
If you do not need the LCD, you can remove it. This frees up pin 0 (PD2) and pin 1 (PD3). These pins are
the transmit (TX) and receive (RX) pins of the UART, so you can use them to establish serial communication
with another microcontroller. These pins are also capable of digital I/O. These pins are the recommended pins
for connecting two output channels from an RC receiver, or for controlling two RC servos, because they are
arranged in a convenient way with respect to power and ground on the right-side expansion header.
If you have removed the LCD and do not need to use button A, this frees up pin 14 (PB3). Pin 14 is is capable
of digital input and output.
Removing the LCD frees up the LCD contrast potentiometer for other purposes. The output of the potentiometer
is a 0 V to 5 V signal which is accessible on the LCD connector. It can be connected to any free analog input if
you want to read it from the AVR, or it might be useful to connect it to the other electronics that you are adding.
If you do not need to use the buzzer, you can cut the surface-mount jumper labeled 6 = Buzzer. This
disconnects pin 6 (PD7) from the buzzer, so it can be used for other things. Pin 6 (PD7) can be used as a PWM
output, digital I/O line, or analog input. Disabling the buzzer also frees up Timer4, which has several PWM
output pins. These pins can be used as PWM outputs if they are not needed for their normal tasks.
Be careful about connecting electronics to pin 13 (PC7), pin 17 (PB0), and PD5. These pins are used to control
the LEDs on the Zumo 32U4. All three of these pins are controlled as outputs by the bootloader. Pin 17 (PB0)
and PD5 are used as RX and TX indicators, so if you are sending or receiving data over USB then the Arduino
USB code will drive those pins in its interrupt service routines while your sketch is running.
It should be possible to attach additional IC slave devices to the Zumo 32U4s IC bus without giving up any
features as long as the additional devices slave addresses do not conflict with those of the inertial sensors. The
LSM303D uses 7-bit address 0011101, while the L3GD20H uses 7-bit address 1101011. The IC pins (pins 2 and
3) operate at 5 V, so level shifters might be necessary to interface with other devices that use different voltages.
(The level-shifted 3.3 V signals used by the inertial sensors are not available to the user.)

3. The Zumo 32U4 in detail

Page 28 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

If you do not want to use the inertial sensors on the Zumo 32U4s IC bus, you can cut the surface-mount jumpers
labeled 2 = SDA and 3 = SCL. This frees up pin 2 (PD1) and pin 3 (PD0). These pins can be used as digital
inputs and outputs.

Power
All of the Zumos power nodes are accessible from the left expansion area. If you power additional devices from
VBAT, then they will be powered whenever the Zumos power switch is in the ON position, and they will receive
whatever voltage the batteries are outputting. If you power them from VREG, they will get 5 V power whenever
the batteries are installed and the power switch is on (but they cannot be powered from USB). If you power them
from the 5V pin, then they will receive 5V power whenever the Zumo 32U4 logic components are powered.
If you power them from 3V3, they will receive 3.3V power whenever the Zumo 32U4 logic components are
powered. For more information about these power nodes and how much current they can provide, see Section
3.8.
It is also possible to add your own power switch to control power to the Zumo, as described in Section 3.8.

Ground
You should make sure that all the grounds in your system are connected. The Zumo 32U4s ground node is
labeled GND and can be accessed from any of the expansion areas. It should be connected to the ground node
of every other circuit board or device you add to the robot.

Making the physical connections


You should refer to Section 3.9 to locate the access points in the Zumo 32U4 expansion areas for the pins
you have chosen. One option to make the connections to those pins is two get two 213-pin female headers
[https://www.pololu.com/product/2745] and solder them in to the left and right expansion areas. Another option would
be to break off pieces of a 240-pin male header [https://www.pololu.com/product/966] and solder them in. Our
premium jumper wires [https://www.pololu.com/category/65/premium-jumper-wires] can then be plugged into the male
or female headers.

3.12. AVR Timers


The ATmega32U4 has 4 timers: Timer0, Timer1, Timer3, and Timer4. Each timer has a different set of features,
as documented in the datasheet.
Timer0 is used by the Arduino environment for timing-related functions like millis().
Timer1 is used by the Zumo 32U4 Arduino library for driving motors.
Timer3 is used by the Zumo 32U4 Arduino library for emitting 38 kHz IR pulses for the proximity
sensors, but it can be used for other purposes between readings of the sensors.
Timer4 is used by the Zumo 32U4 Arduino library for controlling the buzzer. The buzzer pin (digital pin
6, or PD7; Timer4 output OC4D) can be freed for other uses by cutting the surface-mount jumper labeled
6 = Buzzer.

3.13. Schematics and dimensions


Schematic diagram
The schematic diagram for the Zumo 32U4 robot is available as a PDF: Zumo 32U4 schematic diagram
[https://www.pololu.com/file/download/zumo-32u4-schematic-diagram.pdf?file_id=0J862] (1MB pdf).

3. The Zumo 32U4 in detail

Page 29 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Dimension diagram
A dimension diagram will be added shortly.

3. The Zumo 32U4 in detail

Page 30 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

4. Assembling the Zumo 32U4


See Section 1.1 for a diagram to help you identify the contents of the Zumo 32U4 robot kit.
Please follow these instructions carefully to assemble your Zumo 32U4 robot properly.

Main board additions


Most of the hardware on the Zumo 32U4 main board consists of surface-mount components that are already
soldered to the board, but there are a few through-hole parts that you need to solder yourself.
1. Solder the buzzer to the top of the main board, matching its orientation to the printed outline, then trim
the excess length from the buzzer leads underneath the board.
2. Solder the two 12 machine pin sockets to the top of the board in the front corners.
3. Optional: If you plan to connect headers or wires to the top expansion area, consider soldering them
now.

4. Assembling the Zumo 32U4

Page 31 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

While it is still possible to solder all of these parts after the main board has been mounted on the chassis,
soldering them beforehand is easier and avoids the risk of inadvertently melting the chassis with your soldering
iron.

Motors
4. Cut two of the included jumper wires in half to form four segments, and trim off the ends that are
covered in adhesive (the adhesive could interfere with making a good electrical connection to the motor).
These wire segments will be used as motor leads.
5. Solder a pair of leads to each motor, paying attention to the way the motor will eventually be oriented
in the chassis (see below). You might find it helpful to make a small bend at the tip of each lead to hook
into the hole in the motor lead tab to hold it in place for soldering.
Warning: Holding the soldering iron against the motor lead for more than a few seconds can start
to damage the motor brushes, so try to be reasonably quick/efficient with this soldering. If the first
attempt does not go well, remove the soldering iron and let the motor cool for a few seconds before
trying again.

Each motors positive terminal is indicated by a plus sign (+) in the black plastic end of the motor. The
motors should be soldered into the main board with the positive terminal closest to the front, so you should
attach the leads to allow the motors to be oriented this way. (However, dont worry if you accidentally get the

4. Assembling the Zumo 32U4

Page 32 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

orientation of one or both motors wrong. You can later correct for it in software with our Zumo 32U4 libraries
[https://www.pololu.com/docs/0J63/6].)
6. Press a magnetic encoder disc onto the motor shaft of each motor so that the end of the shaft is flush
with the back of the disc. One easy way to accomplish this is to press the motor onto the disc while the disc
is sitting on a flat surface, pushing until the shaft makes contact with that surface.

Chassis
7. Place the motors into the channel in the front of the chassis, aligning the gearbox with the grooves in
the channel. The front plate of the gearbox should be even with the edge of the chassis.

4. Assembling the Zumo 32U4

Page 33 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

8. Cover the chassis and motors with the main board. The motor leads should be inserted into the through
holes next to the motor drivers.

4. Assembling the Zumo 32U4

Page 34 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

9. Screw the main board to the chassis: we recommend using four screws in the holes closest to the corners
of the board. In each of the four mounting holes, insert a #2-56 machine screw through the main board and
chassis, and tighten it against a nut under the chassis. It is usually easier to place the nut into the recess first
and hold it there with a finger or piece of tape while inserting the screw.

4. Assembling the Zumo 32U4

Page 35 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Note that the kit includes two different sizes of #2-56 machine screws: 3/16 and 1/4. The two longer screws
are intended for use in the front holes (near the motors) so that the additional thickness of a sumo blade can be
accommodated. While you can add the blade before screwing the robot together for the first time, we suggest
waiting until after you have soldered in the 212 connector for the front sensor array so that you have more room
to work.
10. Solder each motor lead to the main board, then trim off the excess length of wire.

4. Assembling the Zumo 32U4

Page 36 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

11. Solder the 212 female header (front sensor array connector) to the bottom of the front expansion area
on the main board. It should be flush with the chassis.

4. Assembling the Zumo 32U4

Page 37 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Battery contacts
12. Turn the chassis over and install the battery terminal contacts as shown in the pictures below. The three
double-contact pieces should be firmly pressed into place until they are flush with the interior surface of the
battery compartment. The two individual contacts should be inserted into the battery compartment so that
their solder tabs protrude through the holes in the top of the chassis; you might want to temporarily tape or
clamp these two individual contacts in place until they have been soldered to the main board as described
in the next step, or you can use a battery to temporarily hold them in place.

4. Assembling the Zumo 32U4

Page 38 of 54

Pololu Zumo 32U4 Robot Users Guide

4. Assembling the Zumo 32U4

20012015 Pololu Corporation

Page 39 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

13. Solder the two individual contacts to the main board from the top. Note that if you are using a battery
to hold the contact in place during soldering, the battery might act as a heat sink, making it more difficult
to solder or requiring a higher soldering iron temperature. The battery terminal slot in the PCB should be
completely filled with solder.

Sprockets and tracks


14. Press the output shafts of the motors into the drive sprockets, with the teeth of the sprockets facing
the motor. The end of the gearbox shaft should end up flush with the outside of the sprocket. To accomplish
this, first ensure that the main board is screwed tightly to the chassis so that sideways force does not push
the motors out of their grooves. Set the wheel on flat surface (like a table top) and press the motor shaft into
the wheel until it contacts the surface.

4. Assembling the Zumo 32U4

Page 40 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

15. Place an M3 nut in each of the two side slots near the rear of the chassis. The slots are sized so that
nuts will not be able to rotate within them.
16. Place an idler sprocket on each shoulder bolt, followed by a washer. The side of the sprocket with
teeth should face the same direction as the threaded end of the bolt, so that the teeth end up pointing in
towards the chassis.
17. Insert the shoulder bolts through the side of the chassis into the nut. Use a 3 mm hex key (Allen
wrench) to tighten the bolts until the washers are snug against the chassis. Be careful not to overtighten the
shoulder bolts as doing so can bend the washers. Note: Be careful if you use threadlocking adhesives like
Loctite as these can corrode the chassis. You should first test any such adhesives on a concealed part of the
chassis to ensure they will not damage it.

18. Install the silicone tracks by stretching them around the sprockets on each side of the chassis.

4. Assembling the Zumo 32U4

Page 41 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Blade
19. Bend the blades mounting tabs to the appropriate angle (about 75 degrees from their original straight
position).
20. Remove the two 1/4 screws attaching the front of the main board to the chassis.
21. Place the blades mounting tabs on top of the main board so that the holes line up with the two front
mounting holes and the two screws through the blade, main board, and chassis. Replace the nuts underneath
the chassis and tighten the screws.

4. Assembling the Zumo 32U4

Page 42 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

LCD
22. Solder the 27 low-profile male header to the bottom of the LCD.

4. Assembling the Zumo 32U4

Page 43 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

23. Plug the LCD into the matching female header on top of the main board; the display should cover the
buzzer.

4. Assembling the Zumo 32U4

Page 44 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Front sensor array


24. Solder the two 13 right-angle male headers on top of the sensor array board. These should go in the
two sets of three holes in the rear corners of the board, and the pins should face inward. Note: these pins go
on the side of the board without components.
25. Solder the 212 extended male header to the top of the sensor array. Note: these pins also go on the
side of the board without components, so that the sensors point at the ground when the board is plugged
into the Zumo; if you solder this header on the wrong side, the sensor array will not work!

4. Assembling the Zumo 32U4

Page 45 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

26. On each 13 header, install a shorting block to connect the sensor of your choice. (See Section 3.5 for
details.)
27. Plug the sensor array into the matching female header on the bottom of the main board.

4. Assembling the Zumo 32U4

Page 46 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

Forward emitters
28. Choose a pair of through-hole infrared LEDs to use as the forward emitters. (See Section 3.6 for
details about the different LEDs included with the Zumo 32U4.)

4. Assembling the Zumo 32U4

Page 47 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

29. Use a pair of long-nose pliers to bend the LED leads to approximately match the shapes pictured,
making sure that each LEDs anode (the longer lead that ends in the smaller post inside the case of the LED)
is toward the rear.
30. Trim the excess length from the leads and insert the LEDs into the machine pin sockets in the front of
the main board.

Forward emitter shrouds


As an alternative to shrouds made of heat shrink tubing, you might consider using a 3D-printed IR LED holder.
More information and an example design can be found in Section 3.6.
31. Cut a length of heat shrink tubing about 3/4 (19 mm) long.
32. Flatten the tube and make a diagonal cut through it to produce two equal pieces. Each piece should
measure about 1/2 (13 mm) along the longer side.

4. Assembling the Zumo 32U4

Page 48 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

33. Slip one of these pieces of heat shrink tubing, square end first, over each forward emitter LED so that
it extends past the case of the LED. The diagonal opening of each tube should face forward and upward so
that the longer side of the shroud blocks infrared light from hitting the floor.

Batteries
34. Install four new or freshly charged AA batteries in the battery compartment. (We recommend using
rechargeable AA NiMH cells [https://www.pololu.com/product/1003].)
35. Replace the battery compartment cover.

4. Assembling the Zumo 32U4

Page 49 of 54

Pololu Zumo 32U4 Robot Users Guide

4. Assembling the Zumo 32U4

20012015 Pololu Corporation

Page 50 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

The assembly of your Zumo 32U4 robot is now complete, and it is ready to be programmed and run!

4. Assembling the Zumo 32U4

Page 51 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

5. Programming the Zumo 32U4


The Zumo 32U4 is designed to be programmed over USB from the Arduino IDE [http://arduino.cc/en/Main/
Software]. It can be programmed from Windows, Linux, and Mac OS X. The ATmega32U4 on the Zumo 32U4
comes preloaded with the same USB bootloader as the A-Star 32U4 family [https://www.pololu.com/category/149/
a-star-programmable-controllers] of general-purpose programmable ATmega32U4 boards. For instructions on how
to program the Zumo 32U4 from the Arduino IDE, please refer to the appropriate sections of the Pololu A-Star
32U4 Users Guide [https://www.pololu.com/docs/0J61]. The most useful sections are listed below.
These sections will help you get started programming your Zumo 32U4:
Installing Windows Drivers [https://www.pololu.com/docs/0J61/6.1]
Programming using the Arduino IDE [https://www.pololu.com/docs/0J61/6.2]
These sections have advanced technical details about the bootloader:
The A-Star 32U4 USB interface [https://www.pololu.com/docs/0J61/8]
The A-Star 32U4 Bootloader [https://www.pololu.com/docs/0J61/9]
If you load a misbehaving program onto the Zumo 32U4, then the usual method of programming might fail. This
section can help you fix that:
Reviving an unresponsive A-Star [https://www.pololu.com/docs/0J61/10]

5. Programming the Zumo 32U4

Page 52 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

6. Zumo 32U4 Arduino library


The Zumo 32U4 can be programmed from the Arduino IDE as described in Section 5.
To help interface with all the Zumo 32U4s on-board hardware, we provide the Zumo32U4 library. The
Zumo32U4 library documentation [https://pololu.github.io/zumo-32u4] provides detailed information about the
library, and the library comes with several example sketches.
The instructions below explain how to install the Zumo32U4 library and start using it:
1. If you have not done so already, download the A-Star Software and Drivers [https://www.pololu.com/file/
download/a-star-1.4.0.zip?file_id=0J743] (281k zip). These files are also available from the A-Star repository on
GitHub [https://github.com/pololu/a-star]. Extract the downloaded ZIP file and find the Zumo32U4 folder,
which is inside the libraries folder. Copy the downloaded Zumo32U4 folder into the libraries
subdirectory inside your Arduino sketchbook directory. The Arduino sketchbook location is typically in
your Documents folder in a subfolder named Arduino. You can see the sketchbook location in the
Arduino IDE Preferences dialog, which is available from the File menu.
For example, if you are using Windows and you have not changed the sketchbook location, the
Zumo32U4 folder would be copied to:
C:\Users\<username>\Documents\Arduino\libraries\Zumo32U4
If the Arduino or libraries directories do not exist yet, you will need to create them.
2. Close the Arduino IDE if it is open, and then restart it.
3. In the Files > Examples menu, locate the entry for the Zumo32U4 library. This is where you can
find several example sketches that show how to use the library. If you do not see Zumo32U4 in your
Examples menu, then the library was probably not installed correctly. Try doing step 1 again and restarting
the Arduino IDE.
After you install the Zumo32U4 library, you can learn more about it by trying the included example sketches and
by reading the Zumo32U4 library documentation [https://pololu.github.io/zumo-32u4].

6. Zumo 32U4 Arduino library

Page 53 of 54

Pololu Zumo 32U4 Robot Users Guide

20012015 Pololu Corporation

7. Related resources
Datasheets for some of the components found on the Zumo 32U4 are available below:
ATmega32U4 documentation [http://www.atmel.com/devices/atmega32u4.aspx]
Texas

Instruments DRV8838
(1MB pdf)

motor

driver

datasheet

[https://www.pololu.com/file/download/

drv8838.pdf?file_id=0J806]

Sharp GP2S60 compact reflective photointerrupter datasheet


GP2S60_DS.pdf?file_id=0J683] (164k pdf)

[https://www.pololu.com/file/download/

Vishay

[https://www.pololu.com/file/download/

TSSP77038 IR receiver
(268k pdf)

module

datasheet

tssp77038.pdf?file_id=0J615]

ST LSM303D 3D accelerometer and 3D magnetometer module datasheet [https://www.pololu.com/file/


download/LSM303D.pdf?file_id=0J703] (1MB pdf)
ST L3GD20H three-axis digital-output gyroscope datasheet
L3GD20H.pdf?file_id=0J731] (3MB pdf)

[https://www.pololu.com/file/download/

Texas Instruments TPS2113A power multiplexer datasheet


tps2113a.pdf?file_id=0J771] (1MB pdf)

[https://www.pololu.com/file/download/

7. Related resources

Page 54 of 54

You might also like