ESP8266 controlled Roomba

Embedd an esp8266 embedded inside the roomba for web based control and statistics

Similar projects worth following

In this project I add an ESP8266 (ESP12) inside my Roomba to get full control over it. Included is firmware with a web-interface, json-api, OTA(over the air updates), NTP and slack support.

At the moment it presents sensor values and statistics in a web interface and let you control it. In addition it sends Slack notifications when it starts, docks or gets stuck.

But, the possibilities are endless, a few of the ones I can think of are:

- Use sensor values and and WIiFi/RSSI for location/mapping of room/apartment.
- Create your own navigation/vacuuming algorithm.
- Add more advanced timer functionality.

  • 1 × Roomba I've got a 780
  • 1 × ESP-12 (8266)
  • 6 × 10k SMD Resistors
  • 1 × 3.3V switched regulator A linear regulator will dissipate to much heat

View project log

  • 1
    Step 1

    Start with soldering the pull ups and pull downs directly on the back side of the ESP module. I've used 10k 0805:s and some wirewrap wire.

  • 2
    Step 2

    Since we need to bring down the roomba battery (up to 15V) to 3.3V we can't use a linear regulator. I'm using a cheap buck regulator ("Mini360 DC-DC Buck Converter Step Down Module") from ebay, but has also successfully used a R78B3.3-1.0 from Recom.

    If you use the variable ebay one, make sure to set it to 3.3V before connecting it to the ESP module.

    Ebay item:

  • 3
    Step 3

    Solder the regulator to the ESP-module with reasonably short wires, since my regulator has a >100nF capacitor om the output I can then skip the capacitor on the ESP input.

    Here I've soldered two wires to RX/TX in order to be able to flash it.

View all 4 instructions

Enjoy this project?



Andrej wrote 02/28/2018 at 14:33 point

hmm, another promising project is dead

  Are you sure? yes | no

mark wrote 02/27/2018 at 17:49 point

Coming in late to this. Did the code ever get published? The screenshot above is definitely better then what I'm using right now in terms of getting values/etc from roomba.

  Are you sure? yes | no

ptamps wrote 02/01/2018 at 17:01 point

Do you have code somewhere in github? I wold love to check this out :)

  Are you sure? yes | no

John Boiles wrote 09/09/2017 at 07:37 point

I've got the same issue as @j0bro -- my Roomba 650 goes into deep sleep mode even though I pulse the BRC pin low periodically. Apparently ThinkingCleaner had a workaround so there's got to be a way to solve it:

  Are you sure? yes | no

tom wrote 03/01/2017 at 08:35 point

hi Frederik, can you supply me with the code. or a github link. i would love to try this out. 

  Are you sure? yes | no

Seth wrote 02/22/2017 at 19:04 point

Cool project :) I'm not much of a software guy, but I can lay out a pcb pretty easily. I started making a pcb for ESP-01 with the vreg and stuff. If you wanna give me a schematic of how things need to be hooked up, I can make a small pcb to make everything nice & tidy.

  Are you sure? yes | no

Jeroen Brosens wrote 01/16/2017 at 10:50 point

Hi Fredrik, found your nice project page since I also built an ESP8266 inside my Roomba 650 but there are still 2 TODO's for me open:

1) Keep the Roomba alive, there is this nasty deep-sleep mode that the robot enters after 5 minutes and I can't wake it, even though I pulse the BRC pin every minute. Did you encounter this?

2) I'd like to receive (battery) status updates like you do, however I couldn't find your code on github. How did you achieve this?

  Are you sure? yes | no

douglaslyon wrote 01/14/2017 at 13:53 point

Seems like the TX and RX lines on the ESP8266 are 3vdc, but roomba ROI voltages are:
0 – 5V.

Don't you need to do a voltage conversion from ESP8622 to TTL for TX and RX? For example,

the TX line could go through a voltage divider with the rx to the ESP8266 tapping between a 10k and a 20k resistor But to drive the roomba from a 3.3vdc xmit line, don't you need a transistor. For level shifter we need active component. For example NPN transistor 2N2222 and two resistors? Right? Perhaps you have a better way?

  Are you sure? yes | no

Jeroen Brosens wrote 01/16/2017 at 10:53 point

You don't need to. The incoming 5V line from the Roomba you indeed need to feed through a voltage divider like you mentioned, however the 3.3V of the ESP8266's TX line is 'high' enough to be received by the Roomba. Mine works fine with receiving control messages. However, my Roomba 650 goes in deep sleep after 5 mins and I have yet to find the solution for this.

  Are you sure? yes | no

Asier San Ildefonso wrote 09/19/2016 at 11:13 point

hi, is posible to have acces to all hardware and software?? Un interested in this project for my roomba.

  Are you sure? yes | no

Marcel wrote 03/21/2016 at 10:24 point

Hi Frederik, nice project. Didi you upload the code to github by any chance? I would love to check it out. regards Marcel

  Are you sure? yes | no

Assaf Inbal wrote 02/03/2016 at 11:48 point

Hey Fredrik, very interested in doing something like this as well. Where/when can I find the rest of the build instrucations and GitHub repo? Thanks!

  Are you sure? yes | no

Ryan wrote 01/04/2016 at 06:36 point

Nice. I did something similar with an ESP-01 and a hacked up power supply (old 12v switched car phone charger + 3.3v linear regulator). I just basically made my ESP a serial passthrough and sent commands using bash and nc. You went way more advanced with the software side of things.

You should add MQTT and/or a REST interface so that it allows roomba status and control using home automation software (Home Assistant/OpenHab/etc). You could do things like trigger roomba to automatically start cleaning when everyone is out and go to dock mode if someone comes home early.

I'm looking forward to trying out your code. Great job on the project.

  Are you sure? yes | no

Ryan wrote 01/04/2016 at 06:40 point

Sorry, just noticed the json-api. That should work fine for home automation control so scratch that off the list.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates