Add wifi to an older roomba

thank you
please, keep me honest here; i didn’t see any command to move the robot, right?


There are several commands that can be used to drive the robot. The main ones are:

1. Code [137]: Drive ==> Must send +/- Speed in mm/s and +/- Radius in mm
2. Code [145]: Drive Direct ==> Must send Left/Right Speed in mm/s (+ for Forward and - for Backward)
3. Code [146]: Drive PWM ==> Must send +/- PWM data for Left and Right wheels

Microsoft Word - iRobot_Roomba_500_Open_Interface_Spec.doc (cfpm.org)

I got some time some value (the PR for temperature) at the start. And since their a can’t get anything new even restoring previous version or anything else. Also tries a level shifter didn’t change anything.

I try to find a PNP for the moment.

Also tension drop from 5V to 3.1V when connecting Roomba tx to anything (resistance divider or level shifter) so I do not know if the Roomba tx isn’t dead?

HI,

I’m trying to use the code with a NodeMCU v4, can someone help me to understand how to remap the GPIO?

IIRC I need to replace the values here, any suggestions?

init: 'RoombaComponent::instance(D1, D5, D6, Roomba::Baud115200, 30000);'

someting like this?

init: 'RoombaComponent::instance(GPIO2, GPIO3, GPIO1, Roomba::Baud115200, 30000);'

1 Like

I experimented a bit here, when I have some spare time I’d continue from there.

Thank you @davidecavestro ,

do you have any suggestions about I can remap the wemos D pin to nodemcu ?

Hi,

I measured the roomba connector and for the TX / RX pin I see a 5v and a 3.3V.
that’s correct? if yes that means that I can connect directly the 3.3 pin to the ESP without passing through the bucket step down, correct?

No for RX you need to use a PnP, i already try directly, with resistor divider and with serial converter.

The best resul i got is with the pnp. It works 90% of the time.

I would also like to upgrade my old Roomba with a d1 mini (no hardware series available). Step-down for the supply voltage and TX level shifting is all understandable to me. I’ve read a lot but I’m a little confused. Which BIN/code should I use now? And which d1 mini pins for tx/rx should i connect?

Thanks

Hi! I also have a Roomba 555, but I don’t have the remote for it. How could I teach Broadlink the signals?

The IR codes are available on page 22 of the Roomba 500 series Open Specification manual https://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf

HI can you please share your library if you have all activities showing correctly and some help steps,. Thanks in advance. I managed to get the data from the in ESPhome i just dont have activity and no oi mode. I used GitHub - davidecavestro/ESPHomeRoombaComponent at d4db1a22137eb4caaa1425fb828d9a64d1a9fe6b. Also i added the buttons for the commands. If anyone want’s i can do a noob tutorial step by step :slight_smile:

2 Likes

Hey you are right, I think I simply made a huge mistake wiring both Roomba RX and TX to the logic level converter.
Official irobot doc states:

The Create 2 serial port can take a 3.3V input on its RX or DD
lines as a “high” logic level, but it will output 5V on its TX line

OTOH from my understanding the buck converter is just for power, not for signals… am I wrong?

I’not an electronic expert, but reading the docs I would say that if you are using a 3.3V board, like and esp8266 you can send a 3.3V signal to the roomba (RX line) but the roomba will answer back with a 5V signal that may fry the esp8266. You still need a buck converter, at least on TX from roomba (but converting everything to/from 3.3V/5V seems a good approach to me).

I found these 2 schemas


image

that’s what I need? use the PnP?

or I can use the logic converter only for TX and wire directly the RX?

I’m going to restart from scratch ASAP with:

  • RX and TX pins on the ESP (not SofrwareSerial)
  • the logic level converter just for reading values from Roomba (eventually switch to PNP if needed).

Maybe i’m wrong, but I still plan to use the buck converter for power and the logic level converter just for signals.

2 Likes

I just wanted to post here that I did a quick and dirty fork of davidecavestro’s repository with a focus on being able to start/stop/dock the vacuum. It’s kind of a hack but it works. There’s a working example config included, some updated circuit diagrams, and a PCB file that may or may not be useful.

I’ve been using it for a little over a week with no problems so I thought I’d post it here. This thread has been incredibly helpful in getting my roomba connected to HA

2 Likes

Hi everyone,

I changed my code to use the ESPHome UART bus instead of initializing the serial communication in the component.

This means that you are able to choose the pins yourself and ESPHome will figure out if it needs to use a hardware or software serial (depending on the chosen pins).
I had to copy some of the methods from the Roomba library, but the rest of the library is no longer needed, so it does not have to be provided or be compiled anymore.

Let me know what you think of this approach.

4 Likes

Hi @Real-Time-Kodi ,

Thank you so much I’m now able to control my old roomba!!!

This is awesome i will try this as soon as i have my esp

Do you have the pinout for the roomba side ?