Upgrading Colin

Colin is my trusty servant, he tirelessly cleans my flat for me and his only reward is electricity (and an occasional bit of verbal abuse when he stops behind a door and blocks it).
He is a Roomba 520 and automatic vacuum cleaner, those things which bounce around on the floor cleaning up dirt. I have had him for a couple of years now and despite having a cool data port on the top I have never made use of it. Over the past month I have been playing around with the Electric Imp as a quick way of adding internet connectivity to projects and thought it might be a good time to bring the two together.

I set out with the intention of spending an evening on an upgrade, opening him up and connecting the imp to the data line and embedding the circuit within the casing. This bit went fairly well but some careless handling led me to short out part of the charging circuit, this delayed things as I waited for a replacement part but everything was repaired successfully. In the end the upgrade was a success and Colin is now streaming data, you can view a number of the sensor readings on xivley. At the moment the data flow is one way but it would be relatively trivial to trigger it to start or command other operations.

The full details of the build can be found in the video below but after running this system for a week I have noticed a few interesting things.

I connected the imp to the data lines using a long unshielded ribbon cable, this is fine normally but when Colin is running it does generate interference which damages about 50% of the data being picked up, this is a little annoying but not a big problem.

As I mentioned in the video I tied the imps wakeup pin to the sleep signal for the audio amp, while this did work at the time it isn't reliable in practice, at least not without some kind of filtering. I found that if I moved Colin around it would cause the imp to wake up, this was probably due to noise entering the system somewhere and triggering the 3.3v input pin. For most of the time Colin is charging and when he isn't he is cleaning so he is rarely powered off so this became a bit of a non issue.

Overall this project has been a nice mix of fail and success, at the end of it all Colin is still running well and he is now reporting his stats so I am happy.

You can find the device code in this gist it's not the exact code thats running but should work. In addition here is the Roomba PDF covering the data interface spec