Hacking the WowWee RoboRemotePosted by MrScott on Thursday, 19 June 2008
This article describes the steps needed to convert the WowWee RoboRemote into a sensor interface and programmable robot controller. By making these changes to the RoboRemote, it will be possible to use custom sensors and control logic to extend the capabilities of WowWee robots. This can be done without modifying the robot itself in any way.
An Introduction to the WowWee RoboRemote
The RoboRemote was announced by WowWee at the 2008 Consumer Electronics Show (CES). It is advertised as a programmable remote that can be used to control all current, and future, WowWee robots. The advertised list price is $19. The RoboRemote is now available at the WowWee Store.
RoboRemote Technical Specifications
- 4 customizable buttons with 3 shift levels
- USB connection
- Infrared signal range of up to 6 1/2 feet (2 meters)
- 3 "AAA" cell batteries (not included)
The RoboRemote controls the robots using an infrared (IR) transmitter. Pressing a button on the remote causes a programmable sequence of commands to be sent to the robot. The commands are programmed into each button on the remote using an included computer software application and a USB cable. When a RoboRemote button is pressed, all of the IR commands associated with the button stream from the remote's infrared transmitter. It works as if a user was pressing the individual command buttons on the robot's original remote.
While this remote will be very handy for users to control multiple robots with a single remote, there is another potential use for the RoboRemote. Hidden inside the RoboRemote is the heart of what is needed to construct an opto-isolated control and sensor interface with programmable control behaviors.
Engineers seem to have a different word for everything. This section is your magic decoder ring. It converts geek speak to English (almost). Skip to the next section if you already know, or don't want to be bothered with, the technical jargon.
Two devices that communicate via an optical signal are described as being "opto-isolated". That's just a fancy way of saying that one device flashes a light, and the other device sees the light. The electrical system of one device is isolated from the electrical system of the other device. One benefit of the isolation is that an electrical problem in the controlling device has no way of damaging the controlled device. This is an ideal arrangement for people who want to experiment with control or sensor circuits without risking a robot's internal electronics.
The term "control and sensor interface" is just a fancy way of saying that this device will be the thing that other stuff is plugged into. One type of thing that could be attached are new sensors. Another type of thing that might be plugged in would be control logic that doesn't have sensor input. An example of sensorless simple control logic would be a timer to repeat an action every few minutes.
The programmable part of the new controller is provided by the base RoboRemote function. The remote is programmed for what the robot is to do when a button is pressed, and the sensors or control logic press the button.
The rest of this article will describe how to modify the RoboRemote to provide a way to attach new controls to your robot. It will done in a way so that there are no changes needed to the robot itself.
Disassembling the RoboRemote
First things, first. If you disassemble your RoboRemote, you will be voiding your manufacturer's warranty. If you break it, you get to buy another one. The good news is that the remote is not particularly fragile, there are not many pieces, and it is not very expensive.
Having said that, plan for success by preparing a clean surface to work on. If you don't lose a piece, you don't have to spend time trying to find a lost piece. The only other caution is to take care when disassembling the two halves of the RoboRemote case. The battery compartment is on the bottom half, and there are wires that lead from it to the circuit board. Take care not to stress or break those wires, or you will get extra practice with your soldering iron.
First, remove the battery cover door by loosening its screw. Inside the battery compartment are four additional screws that hold the RoboRemote case together. The case opens easily after the four screws are removed from the battery compartment. Take care when separating the case that the wires leading from the battery compartment to the circuit board are not pulled loose.
Once the case is open, the three screws that hold the circuit board to the top of the case can be removed. Once the screws are removed, the circuit board separates easily from the top of the case. The rubbery control buttons are sandwiched between the circuit board and the case. They may come loose as the circuit board is separated from the case. This is not a cause for concern.
When you examine the top side of the circuit board, you will see the button contacts over which each rubber remote button sits. When a button is pressed, those contacts are shorted together. It is the shorting together of these button contacts that cause the remote to detect a button press. The lines on the circuit board running out from each button contact are the printed wires that connect each contact to the electronics. Note that WowWee has nicely provided convenient holes and pads in each wire trace. Could they have been anticipating somebody wanting to attach additional wires?
Adding External Connections
Once you are looking at the guts of your RoboRemote, you will see that there is a printed circuit board (PCB). There are multiple Light Emitting Diodes (LEDs) at the front edge. On the top side of the PCB is a central LED that shows the shift status, and places for the buttons to press on the board in the middle.
On the bottom side of the PCB are the various electronic components that control the function of the RoboRemote. The heart of this function is the microchip covered by a dark blob of epoxy. It is the brain of the RoboRemote. The major components on the PCB are
- 4 function buttons
- 1 shift button
- USB Port
- IR Transmitters and Receivers
- Power Connections
What we want to do is provide alternate means of telling the microchip that buttons have been pressed. By soldering additional wires into the existing button traces, and routing them to a plug connector, we will be able to use that plug to connect different sensors and control logic. Those new connections will function just like button presses to the microchip. When the control logic simulates a button press, the microchip will react just as if the unmodified RoboRemote buttons were being used.
The trickiest part of this RoboRemote modification is the addition of wires to the existing circuit board. Soldering is equal parts care and skill. Melting metal and using it to bond two other pieces of metal together is not too difficult. Doing that without damaging nearby, heat sensitive materials can take some practice. You may want to start by only extending a single button's contacts as a first step.
Insulated wrapping wire is a good choice for extending the button connections. It is very thin and flexible, so it can be snaked between components to route the wires outside of the remote. The thin wire is also easy to solder. A standard IC socket can be modified for use as the socket at the end of the wires.
First, locate the button pads that can be used for attaching the wires. They are the silvered circles near the remote's central chip. The SW2, SW3, SW4, and SW5 pads are associated with the four programmable remote buttons. Note that the SW5 pad is the most isolated from other nearby components. That makes it a good choice for your first soldering project.
This picture shows a wire attached to the SW5 solder point.
You will also need a wire from the GND connection to form the other leg of the button connection leads. All four buttons have one side of their connections to GND (ground), so there are a total of five wires needed to extend all four buttons.
The IC socket has enough pins for all button pads and GND on just one half of the socket. A razor saw can be used to split the socket in half. One half of the socket is attached to the button extension wires. A wire wrap tool is a good choice for mechanically attaching the wrapping wire to the socket pins prior to soldering.
In this example, only one button has had its connection routed out to the socket. The other three buttons would be done in a similar manner. Only one pair of button wires is needed for simple experiements with external control logic. The socket can be mounted to the removeable side panel of the remote. Be sure that the socket pins are not contacting the circuit board inside the remote.
Placement of the IR Transmitter
The RoboRemote is relatively small and light. It can easily be piggybacked on an existing robot body, or used as a base station broadcasting to a robot in a room. For beginners in electronic assembly, I recommend keeping the modified RoboRemote inside its original case. The alternate plan, for those more experienced in desoldering and resoldering, is to remove the RoboRemote from its case, mount the circuit board inside the robot, and extend the leads on the IR transmitter so that the transmitter is positioned near the robot's IR receiver.
Simple Control Logic
As described earlier, the RoboRemote buttons work by shorting together two contacts on the circuit board. The new external control logic needs to function by doing the same thing. It must act as if a wire has momentarily connected the two pads of one of the RoboRemote buttons. The logic should operate by normally presenting an open connection, and generating a "short" when an action is desired. This is accomplished by momentarily shorting together one of the SW# wires and the GND wire.
Once the button extensions are attached, any number of different control logic circuits can be devised to short those button contacts together. Some general ideas, in order of increasing complexity, include
- Simple Mechanical Switches
- A Control Signal and Solid State Relay
- Electronic Timer generating a control signal
- Boolean Logic generating a control signal
The following pictures show an example of connecting a pushbutton switch to the RoboRemote. It provides an easy way to test the socket wiring and button programming.
One thing to make note of is that the RoboRemote has an auto-repeat mode for the actions programmed into a button. If a button is pressed, and held for more than 1/2 a second, the remote will go into a loop that continually streams the IR codes associated with that button. The RoboRemote will continue to stream those IR codes until another button is pressed. It is up to you, the creator of the external control logic, to either take advantage of that behavior, or to avoid it by not shorting the button contacts together for too long.
Simple External Sensor Examples
Something the external control logic might be used for is to provide additional sensors for a robot. Examples of sensors that could be connected to the RoboRemote control logic include
- contact switches (bump)
- light sensor
- magnetic sensor (reed switch)
- noise sensor
- moisture sensor
This is Just the End of the Beginning
This article has described how to modify a RoboRemote to permit connections of external circuitry.
By combining the remote with sensors, control logic, and different behaviors on different buttons, it is possible to extend the behavior of a WowWee robot without actually modifying the robot.
- Make the Robot Seek out Light or Sound
- Build a Virtual Wall a Robot Cannot Pass
- Enhance Obstacle Avoidance
Detailed examples of control logic and additional sensors will be left for another article.