Yes I know, its an old project covered a few times. Most notably, The Hook up did a fantastic use case of the Roomba with MQTT (below) while the Roomba library written by Mike McCauley (https://github.com/Apocrathia/Roomba/blob/master/Roomba.h) provides an easy way to interface with an older 600 series Roomba.
So when I did upgrade my Roomba to a new self-cleaning one, I couldn’t think of a much better use than for it to go to my classroom and serve its life out as a ‘resource’. I used an NodeMCU ESP32 and a 5v buck converter, wired it up to the serial port interface according to the documentation put out by iRobot. Note, there needs to be a small pnp transistor to boost the signal coming out of the Roomba. All the wiring is in the Hook up’s github repo.
The challenge I took on was creating an Android app using the MIT App Inventor Software to talk to the Roomba. Reason being, students love having some control over a robot, and an app would be a good conversation starter about Bluetooth / WiFi pairing, serial commands etc. Creating the app was fairly easy. I needed some drive controls, some buttons and some text boxes to receive data. So the layout, as basic as it looks, does the job. Pairing the ESP32 goes on top, and there are plenty of tutorials on that. The other buttons are all sending some characters via Bluetooth to the ESP32.


While the app wasn’t a problem, nor was the implementation of the Roomba.h library, what I did struggle with was the sensor data. There is a certain way to deconstruct the data coming out of the Roomba and the documentation does provide that information but my feeble brain somehow can decode it.
For now, charging state (integers) should be from 0-5 and I get all sorts of values and same with battery voltage (should be a max of 14.4) Maybe I need to use something like a ‘map’ function to round of the data ? But it doesn’t look like any of the others used it and still managed to get the accurate data out.
Nevertheless, its been a fun few hours tinkering, and I don’t think I want to burn more energy into it. I’ll ask around on Reddit (maybe even the library creator ) for some answers, but as of now, this is what I have. I look forward to the students having a play and giving their thoughts. Files are on GitHub if you want to have a play yourself with an old Roomba approximately $50 on FB marketplace.
