My Lazy-Ass ESP8266 to Roomba 500 Series Connector

I couldn’t justify buying a new Roomba for $1000+ just so I could have network connectivity and scheduling.  The functionality just doesn’t add enough to the product to win me over and the old 500 series I have does a great job as it is.

So just in case I ever have a need for those functions, I’ve extended the life of the old beast and added the network interface and microcontroller in the most half assed way I could.  And here it is…

The simplest and laziest way I could find to connect my Roomba 500 series to an ESP8266 and give it a basic control interface.

PArts List


Let’s not fart about, wire it in like the diagram above.  The 15kohm and 10kohm resistors work as voltage dividers to bring down the levels of the Roombas transmit line.  Apparently it never learned to use an inside voice and basically screams all the data back so loud that the ESP’s ears would bleed and it’s brain leak out before it would understand a word.

So with the voltage divider earplugs in all that’s left if the brainwork.  The code at the very end of this post gives me a basic page to control the Roomba from a web browser.  Just basic settings for now and more to come if I decide I need them.


The Code


6 comments on “My Lazy-Ass ESP8266 to Roomba 500 Series ConnectorAdd yours →

  1. Hi Marcel,
    I have some questions about your Project.
    Looking at the Schematics, D3 must be RX, as its connected to the PIN 5 TX of the Roomba, using the resistors as Voltage dividers. Therefore D2 must be TX, connected to the Pin 3 of the Roomba.
    D1 then is connected to Pin 8 of the Roomba, which is Ground. What is the sense of this one?
    In your Code on line 50 you initialize “SoftwareSerial mySerial” GPIO 5 (D1) as RX and GPIO 4 (D2) as TX. Not what your Schematic looks like? I red that some are connecting DD (Roomba PIN6) somewhere to initialize the connection?

    I’m guessing that D3 GPIO 0 should be connected to PIN 6 (DD) on Roomba . In your Code you initialize it on line 54 and set it to High on line 55. Thats it for DD?
    Could you shed some light here?

    PS: For Power, obviousely it’s always 16+ Volts, therefore we always need a Voltage Regulator or the Wemos will blow up…

  2. Hello,
    in the wiring-scheme you use the Pins D1-D3. In the source-code are the Pin D0 (in startUp()) and 4,5 ( mySerial(5,4)) used. Is this so correct?

  3. In your schematic you are using a 8 pin connector, my roomba however has a 7 pin connector.

    I just used your schematic and it fried my Wemos D1 unfortunately.

    1. Which series Roomba do you have exactly? You gotta be careful not to plug into the 18ish volt line.

      1. I got an iRobot Roomba 605.

        I think I did use the 18ish v line.

        I didn’t test it with a multimeter, will do it when I get my new wemos boards

Leave a Reply

Your email address will not be published. Required fields are marked *