clear that this is not an
attempt to make a radio
controlled bot, but rather
a technique to alter variables in real time without
interfering with the
physical movement of the
bot or going through the
compile download cycle
The good thing is all
the components for this
are off-the-shelf and all
that is required is integrating them together to create a
functional device. Take a look at the
block drawing in Figure 2 and the
photo in Figure 3.
Matrix Orbital LCD
■ FIGURE 2. Block diagram of
the functional components.
through the data (and perhaps one to
move horizontally through the data),
and a momentary switch to signal start
of data and end of data (enter).
and what may be some of the
‘gotchas’ of this process.
As a way of illustrating this, we
can think of a simple robot with a
forward looking distance sensor:
Let’s go through each item in
Figure 2 and discuss their features and
how they will integrate together to
create the console.
• Battery — Here I will use my standard two cell LiPolly battery which will
supply around eight volts. I like to use
these as they are lightweight and compact for the power output, but ‘care
and feeding’ can be a little difficult.
1) Runs forward until ‘dist’ (distance)
from an obstacle, then stops.
2) Waits ‘secs’ (seconds) before
turning random degrees and running
• CPU Board — This is our standard
CPU board which we have been using
for some time. It contains an Atmel
Mega32, a driver chip (not relevant
this time), and an RS-232 chip
(perhaps relevant), plus many of the
Mega32 pins brought out to headers.
• Console Frame — This is a piece of
plastic I had Jerry of Rutherford
Robotics cut for me on his laser cutter.
I designed it like a game controller
since that appears to be an easily-held,
two-handed device for entering data.
• LCD — For the LCD, I am using one
from Matrix Orbital, chosen because
it talks I2C and this makes it easy for us
to tie it into the Mega32.
• Keypad — This is also a Matrix
Orbital device, designed to attach
directly to the LCD. The LCD manages
the decoding of the keypad and transmits the characters to the CPU via I2C.
There will, of course, be two parts
to the software for this device: the
code which runs on the console,
accepts input data, and sends changes
to the bot; and code which runs
on the bot, receives these changes,
and modifies the
So, if the bot is running along and
‘dist’ is equal to 5, when the sensor
says the bot is five inches from a wall,
for example, the bot will stop. If ‘secs’
is 2, the bot will wait two seconds,
then turn around and run off again.
Our goal here is to allow us to
remotely change the values of ‘dist’
and ‘secs.’ The first thing we need to
describe is what the variables are,
what ‘type’ they are, and what the
default value is, among other properties. The best way to do this is to
create an array with the elements of
• RF Device — This is the
“EmbeddedBlue” Bluetooth board
offered by Parallax. One of these on
the console and one on the bot
should allow for an easy established
communication link. This board also
talks RS-232 out the other end and
makes the communication look a little
like a cordless RS-232 link — hmmmm.
On the bot side,
we will need a matching EmbeddedBlue
attached via RS-232,
but first let’s consider
the software — what
needs to happen
• Switches — There are several switches: a power switch, a two-way
momentary switch to move vertically
■ FIGURE 3. Off-the-shelf components
for the console.
March 2007 93