Bartosz Tomeczko varia

DIY Roomba virtual wall (part 1)

Recently I got an iRobot Roomba as a gift (wedding gift to be precise). With the Roomba itself there was one Virtual Wall included. The idea of diving open area using the virtual wall is a really brilliant one. I quickly found out that I need more than just one such device for instance in the corridor where I have three doors (and which I would like to stay open during vacuuming). I quickly checked eBay et al. and found out that one Virtual Wall for my Roomba would cost ca 40 $USD plus the delivery cost. Therefore I decided to check it how it actually works and if it is possible to make a "Virtual Wall"-like device at my own.


iRobot Roomba Virtual Wall under examination:

First step is to check what are we actually fighting with :) Virtual Wall uses infrared signals to form a beam which Roomba is not allowed to pass through. One can check this using any CCD camera. Smartphone camera may be good but better would be to use old CCD camera from network camera.

So now - let's check what do we actually see. I used a simple integrated IR receiver from old satellite receiver (working at 38kHz). I have read somewhere googling that old roombas were using 38kHz so I gave it a try and used 38kHz receiver as well. Using some googling as well I got a pinout for the receiver:


So using following setup:

I got following results for the top transmitter:

And for the front transmitter:

So it is easy to see that Virtual Wall is sending two kinds of pulses. One is sent by the transmitter on the top (which protects the wall from being hit by Roomba from back) and the second one is sent by the front transmitter (main beam).

If we would treat short spaces as zeros and long spaces as ones we would get following results:

Transmitter from the top of Virtual Wall sends 0110 0110 1001 011
Transmitter from side of Virtual Wall sends 0110 0110 1001 010

It is easy to notice that VW sends 15 bits of some code with last bit depending on the source of the light (top transmitter or front transmitter). So let's try to reproduce same pattern using... anything ;) Whatever is handy :) In my case I have Arduino on my desk so let's use it. Simple quick sketch which reproduces the pattern is available [[here]]. I have connected IR LED (from the remote controller from the same satellite receiver box:)) to port 13 of Arduino (same as LED). Just to have a short proof of (my) concept. 

Got following result:

Will be continued in part 2.