Tuesday, October 8, 2013

Roomba Hack Part I




About a month ago a friend had emailed me the following, “I have a box of junk with a Roomba in it, if you don’t want it, then it’s going to the dump.” Not wanting to see a piece of technology much less a piece of robotic technology be carelessly thrown to the scrap heap I agreed to take it off his hands. His warnings included that the battery was dead and that he wasn’t even sure it worked or not. I requested that he include all the parts he could find, and I would pick it up when we met for lunch the following Friday.
 

Friday rolled around and I was anxious to have lunch with a few friends as well as get my hands on the discarded Roomba. After a fine lunch consisting of a Dandan Noodle Bowl at PeiWei, we walked over to my friend’s car to get the goods. The Roomba was indeed old and had appeared to have had something spilled on it at one time or another. The box he gave me contained a Roomba, a charging station with cable, an artificial wall, and a remote control. SCORE, it looked like a complete set. I took everything home and did some research.


Serial number in battery compartment
I thumbed through some pictures to get a rough idea of what model I had. It would appear that I had either a Roomba Discovery or Sage. I managed to find a model number in the battery compartment and it looks like it is a model 4110 which is a Roomba Sage. I cleaned everything up and attempted to charge the battery with poor results. However the unit held enough charge to let me know that it indeed booted up and was at least semi functional. This provided me enough faith to invest in getting a new battery. A quick trip to eBay and twenty dollars later had me waiting around for the new battery to arrive.


OSMO II Upgrade Unit



Until then, I just had to wait. In the meantime I tried to clean things up as best as I could, and do some additional research on what it could actually do, minus vacuuming the floor. As it turns out the newer Roombas, post 2005, are equipped with an SCI (Serial Control Interface) called ROI (Roomba Open Interface) which allows a person to query and send commands to the Roomba via a small port. Models manufactured before 2005 had all the necessary hardware but lacked the proper firmware that included the ROI. A little sleuthing on the web and a check of the serial number showed that I had a model manufactured in September of 2004. The Roomba I have, has the hardware but lacks the firmware. So once the battery comes in and everything checks out I will have to either purchase or rent an upgrade unit. Unfortunately the upgrade units are in severely depleted supplies and are nowhere to be found but luckily I managed to get a hold of someone online who is willing to rent me his. I find it a bit ridiculous that an upgrade unit is needed seeing as how the serial port on the Roomba is just serial TTL data and with the right programming I bet a regular computer could load the necessary firmware, but then I guess iRobot would not be able to make money that way.


Battery day finally arrives, and I follow all the directions very carefully. Put in Roomba, charge Roomba for a day, then use. Once all that happens, I fire it up for a test, keeping my fingers crossed. The video pretty much tells it all. Yup, this one is crippled. Time to do some diagnostics. Luckily the same fella that offered to rent me his upgrade unit sent me a Roomba Service manual that detailed how to test and disassemble a Roomba. In the video above you can see when it finally gives up, it audibly alerts me with an "Uh Oh" code of four beeps. The manual says that there is a drive motor problem, but not much else. I can tell the right wheel has the issue just by watching it.


To narrow things down further I invoked the built in set of twenty-one test procedures by executing the following:

Put Roomba into built-in-test mode:
1. Power Roomba OFF by pressing the POWER button.
2. Hold down the SPOT and CLEAN buttons.
3. Power Roomba ON by pressing the POWER button.
4. Keep holding down the SPOT and CLEAN buttons for about 0.5 SECONDS until you hear a series of ASCENDING BEEPS and the user panel LEDs start flashing.

For AUTO-ADVANCE mode:
5. Release the SPOT and CLEAN buttons.

For MANUAL-ADVANCE mode:
6. Continue holding down the SPOT and CLEAN buttons for a total of 3 SECONDS until you hear a second series of DESCENDING BEEPS.
7. Release the SPOT and CLEAN.


      I opt for the manual-advance mode so I can go at my own pace and stop the tests when I encounter an issue. As suspected the tests for the right wheel drop sensor failed. I am at the point now where I will need to open things up to take a look under the hood.

Stay Tuned....