The modern home is filled with plenty of “smart” devices, but unfortunately, they don’t always speak the same language. The coffee maker and the TV might both be able to talk to your phone through their respective apps, but that doesn’t necessarily mean the two appliances can work together to better coordinate your morning routine. Which is a shame, since if more of these devices could communicate with each other, we’d be a lot closer to living that Jetsons life we were promised.
Luckily, as hardware hackers we can help get our devices better acquainted with one another. A recent post by [MyHomeThings] shows how the ESP8266 can bridge the gap between a Roomba and Amazon’s Alexa assistant. This not only allows you to cheaply and easily add voice control to the robotic vacuum, but makes it compatible with the Amazon’s popular home automation framework. This makes it possible to chain devices together into complex conditional routines, such as turning off the lights and activating the vacuum at a certain time each night.
The hack depends on the so-called Roomba Open Interface, a seven pin Mini-DIN connector that can be accessed by partially disassembling the bot. This connector provides power from the Roomba’s onboard batteries as well as a two-way serial communications bus to the controller.
By connecting a MP1584EN DC-DC converter and ESP8266 to this connector, it’s possible to send commands directly to the hardware. Add a little glue code to combine this capability with a library that emulates a Belkin Wemo device, and now Alexa is able to stop and start the robot at will.
We’ve seen this sort of trick used a few times before to add backdoor Alexa support to various gadgets, and it’s always interesting to see what kind of unusual hardware folks are looking to make an integral part of their smart home.
Is connecting directly to the Roomba batteries going to give you over-discharge protection or not?
I would be worried that this will deeply discharge the battery pack and that can lead to poor lifetime on the expensive pack.
Just checking. I don’t really know.
When I connected things to my Roomba I used an external battery pack just to avoid this issue.
Yeah, I looked it up.
From the Roomba documentation:
“Always On: The serial port power comes from either the charger when the robot is on the dock or from the battery while the robot is running, serial port power is always on. We recommend installing an on/off switch between the serial port and your project. Remember to turn off your project when you’re done. If you leave your project on and don’t return the robot to the dock to charge you will eventually deeply discharge the battery and damage it.”
So be careful out there.
Ref: https://www.irobotweb.com/-/media/MainSite/PDFs/About/STEM/Create/BatteryPower.pdf
I don’t understand the need for this physical hack at all. We simply enabled the iRobot Home skill and have full Alexa voice control of our Roomba unit.
Do your homework.
Had it truly not occured to you that older Roombas obviously wouldn’t have that feature built-in?
Older 500/600 Roombas have no network capability. Kudos to Roomba for releasing the Open Interface Spec (which incidentally they still support).
You should do your homework.
“Do your homework.” must be the Hackaday equivalent of “Do your research.”
Confidently telling people they’re wrong while being hilariously wrong themselves.
Do your own homework – Look at the photo. That appears to be a Roomba 5xx series, which has no such communication with the outside world (bar the serial interface).
I have kept my 5xx series precisely because it *doesn’t* have an internet connection. No spying, no firmware updates to break things. 5/5 would buy again. Not one of the new ones though :-)
Has anyone managed to get this to work? Trying to install this into a Roomba 770 – Is it correct to connect the ESP module’s RX to the serial? Should it not be the TX pin?
Have you tried it? Is the connection RXD-RXD or RXD(roomba)-TXD(ESP8266)?. Thank you
I did it. I connected the RXD(roomba) with TXD(ESP01S), it worked, RXD-RXD didnot work…