Inspiration

One of our team members noticed that Roombas were being thrown away, or sold for very low prices, simply because they were "outdated" by their standards. However, most of, if not all of, these Roombas perform exactly the same. We fully believe that one man's trash is another man's treasure, and as such, we have come up with a system to extend the life of these older Roombas.

What it does

This provides an extended variant of the Open Interface protocol for the Roomba, allowing people to integrate older Roombas with newer features, including (but not limited to) internet capabilities, smarter path planning algorithms, direct control of the device, and fun capabilities such as dancing and "music playback".

How we built it

There are two parts of this project. The hardware part involved wiring an ESP8266 to the Roomba to interface with it, allowing us to send commands to control each aspect of the Roomba. The Roomba's logic levels were 5V, and our ESP8266 was 3.3 volts, so we needed to utilize a level shifter to communicate both ways. Furthermore, the entire mod is battery powered, where it utilizes a LM2937-5.0 voltage regulator to deliver clean power to the microcontroller.

The software part involved programming a client-server model, where the server was a computer, and the client was the ESP8266 microcontroller.

The goal with this is to allow ease of extensibility of the Roomba's capabilities without having to open the device and damage the Roomba in ways which were not intended. On top of that, we designed a mapping algorithm which allows us to map an arbitrary floor plan for the Roomba to traverse efficiently without requiring human intervention.

Challenges we ran into

Hardware wise: Two Raspberry Pi Picos burned up. We stopped using them, and switched to an ESP8266. On top of that, there were no level shifters or voltage regulators at first, so we had to improvise. An oscilloscope was the only reason we were able to figure out our serial woes.

Software wise: Requesting some of the sensor data did not seem to go too well, as it would always return an empty set of data, regardless of the status. This may be due to some misspecification, as there are variants of the Open Interface which do not have the same command sets (for example, the 500 series vs the older series Roombas).

Accomplishments that we're proud of

Basically everything. We were able to dynamically control a Roomba from a computer, while also powering it directly from the system safely. On top of that, we were able to experiment with better path planning algorithms (adjacent with SLAMM), allowing the Roomba to perform much better than before. And, being able to play your own music is pretty cool too.

What we learned

For software: we learned a lot about path planning, how to interface with a map to generate instructions for a Roomba, and coordinate systems.

For hardware: we learned that interfacing with two different logic levels can be a pain, especially when it doesn't work. Which it didn't. For 7 hours. Then it magically worked. Trust the process?

What's next for Roomba More Smarter

Making the board cleaner and less cluttered. Utilizing capacitors to clamp the input voltage and stable. Making the internet integration better (virtually making it similar to an Alexa).

Built With

Share this project:

Updates