(article continued from previous page)
As discussed earlier, StreamHawk is a semi-autonomous robot capable of exploring various rooms in a house while transmitting video, sound, and data back to a PC. This page describes the circuit boards inside of the robot.
A side view of a wireless exploration robot.
Most of my robots contain only custom-designed printed circuit boards (PCBs). However, many robot builders find it a better use of their time and brain-power to purchase off-the-shelf modules. So, due to the complexity of the wireless and speech components, StreamHawk is a combination of custom PCBs and off-the-shelf circuit boards.
Robot guts and electronic circuitry for the StreamHawk robot.
Other than the speakers, motors, and LiPoly batteries, the robot’s circuitry consists of:
An obvious problem of assembling a robot from misc components is that there are a lot of extra wires and connectors. If the complete robot was designed from scratch, all of the electronics could be combined onto a single board or pair of boards. That would save space and weight.
The motherboard contains the key parts of the explorer robot. Everything comes together on this circuit board.
Custom-manufactured robot motherboard with voltage regulator, microcontroller, and four motor drivers.
The off-the-shelf speech module can interface with I2C, an RS-232 serial port, parallel port, or ordinary switches. It uses 5V and hobbyist-friendly 0.1-inch header connectors. Free Windows software and documentation are available online.
The speech module is compact (about 1.6 inches square). It does a good job of converting ordinary English text into speech. On-the-fly phrases can be up to 81 characters.
Devantech SP03 speech module with speaker holes labeled.
Unfortunately, one of the common complaints about this module is that it isn’t loud enough, even with the volume set to the highest amount. When enclosed in the robot’s body, it was impossible to hear. So, I desoldered the attached speaker and added connectors for a pair of external cone speakers.
Two 8-ohm speakers can be wired in series for 16 ohms or parallel for 4 ohms. The output is much louder at 4 ohms. Connecting 4 ohms to a speaker driver that expects 8 ohms is technically abusive, and could lead to hardware failures due to overheating if wired that way on a cranked-up home stereo system. But, speech is used only occasionally on this robot -- so I doubt any harm will occur.
Besides being too quiet, there are a few minor issues with this module. (I apologize if I’m being overly critical, as I am satisfied with the purchase and I appreciate all the hard work that went into it.)
Devantech speech module protected by a plastic envelope.
To protect the board when inserted into the robot, I folded and taped together an envelope made from moderately thick clear plastic recycled from common blister-pack packaging. A nylon screw and nut keep the board from sliding out of the open end where the cabling attaches. A nylon screw is a better choice than a metal screw for this application, since the idea is to toss the envelope on top of another circuit board. A metal screw could short circuit the other board.
Before trying recycled plastic, I previously tried ordinary press-and-seal sandwich bags. But, the speech module header pins poked holes through the thin bag.
The other commercial hardware module used in the StreamHawk robot is a Digi 9XCite 38400 baud 900-MHz wireless serial modem. It can send and receive data wirelessly, as though the robot and computer were connected by a long serial cable. Seriously, it’s that easy.
The complete kit (part# XC09-038-DK) is $149. You'll receive two wireless RF modules, two RS232 development boards, two power supplies, and a bunch of cables and adapters.
Additional modules are available for $40. The module ID, ID mask, and channel can be changed on-the-fly, so the wireless module can have conversations with different robots or groups of robots.
Digi (MaxStream) wireless radio-frequency serial data modules.
This is the simplest setup.
On the computer, run HyperTerminal or write your own serial application using C, .NET, or whatever.
Unlike old-fashioned transmitters, the Digi 9XCite doesn’t care what data values are to be sent. Send a bunch of zeros in a row. It doesn’t care.
The wireless module automatically checks for errors and retries packets if necessary. (Actually, I have experienced lost bytes on rare occasions. But, my firmware was old.) The wireless data module has excellent noise tolerance and a decent range. Other frequencies and transmit power levels are available.
Although the maximum over-the-air rate is 38400, the module accepts data at up to 57600 and will buffer it. If the buffer runs low, either hardware or software flow control can alert the microcontroller to wait. I chose to use a single input pin for hardware flow-control.
Notes to be aware of:
Two smaller PCBs not discussed on this page are the motor connector adapter boards. Why are they needed...