zazz.com.au as one of their daily bargains. I've only been using it for a few days, but so far I'd highly recommend it.
One of the main features of the system is the automatic docking station. When the robot's batteries are low it can automatically find its way back and start charging. In my opinion this is the killer feature for the device, since it means you can set-and-forget the cleaner. It has a scheduler feature so you can arrange to have it start during the work day and complete the noisy cleaning before you come home.
Additionally there is a room denial system (which I'll call a 'lighthouse'), which allows you to throw a virtual wall across the room and prevent the robot from passing.
I wanted to find out exactly what was inside the lighthouse. It has a single PCB with a few components, a single IC, some transistors and 3 LEDs. The green LED is power, and there are two IR leds. One is directional, pointing forwards to define where the robot is not allowed to pass, the other is a funneled through a reflector which bounces the beam in all directions.
However I noticed that there is a segment removed from the baffle, pointing towards the front. So I suspect the IR output to the front is slightly higher.
I hooked up a logic analyzer to the LEDs and studied how it blinked the LEDs in each mode. I used the excellent logic analyzer from Saleae. (Please make a Linux version, guys!)
The IR structre is very simple;
Note that the lighthouse IR beam isn't related to the docking station code below.
The atmega chip has enough current limiting to allow you to simply hook up the IR led without any resistors.
here, or the link at the bottom of the page.
What was interesting was the construction of the docking station seemed quite different to the lighthouse. The dock uses through-hole components, and looks like some quite old technology, where the lighthouse uses surface mount. There are two sprung metal contacts on the front of the unit which the robot presses against for charging.
There are 3 IR LEDs, separated by baffles. It's quite an ingenious design. Depending on where the robot is on the 'glide path', different sets of LEDs are visible.
The system consists of 8 pulses. 4 synchronizing pulses, followed by 4 pulses which uniquely convey which LED is speaking:
You can see roughly how the robot self-centres by looking at the time lapse pictures of the behavior here:
The PCB has 14 surface mount buttons, a single DIP chip and an LED. There's a daughter board mounted on the main board which handles the RF communications.
The DIP chip has TK98P01 A949U0621#N.
There's a plastic encapsualted crystal (XTAL1B), which has Z4.0MC written on the side.
The daughter board is labelled XR210_SOV10, and has a 16MHz xtal on it.
Annoyingly enough, you have to desolder the battery terminals in order to get it out of the case. In doing so, it lifted the pads a bit.
If anyone's interested, I've attached the capture file from the remote. (The free Saleae software to view it can be downloaded here).
The keys pressed in following order: Power, Up, OK, Down, Left, Right, Mon, Tue, Wed, Thu, Fri, Sat, Sun, Full Go
After each key is pressed a burst of information appears on pins 1 through 6 which lasts for 16ms. This appears to repeat each 70ms while the button is held down
Pin 1 and Pin 3 appear to be data lines. My gut instinct is that pin 3 is the output from the uc to the RF unit, and pin 1 is the return.
Pin 2: Note that Pin 1 or 3 never changes while pin 2 changes. Highly likely that it's some sort of clock with 2us pulses. Additionally it's held high for 140us at the start, probably indicating a clear condition before communicating.
Pin 4: goes high for 0.415ms after each burst. So it's likely that it's some sort of ACK.
Pin 6: seems to be a 2Mhz clock, which is consistent with the resonator on the board.
My first instinct is that it's an SPI bus, but there's no clear slave-select line.