Add wifi to an older roomba

Apparently, I had the transistor connected wrong. Switching its sides fixed both of my issues - sensor values are read now and the Roomba seems to stay awake on the dock. Many thanks to everyone who contributed to get this wifi component to where it is now!

Is the transistor also inverted on the schema though? In this example from iRobot the emitter goes to RX and the collector goes to the ground, and that’s how I believe I have it connected now (according to 2N3906’s data sheet).

Hi,

today I started to get the same error as you, it could be my transistor is dead :frowning:

[D][custom:079]: Could not get sensor values from serial

any other suggestions?

this is my schema

Why did you draw the DIN port twice? And the buck converter is missing (or is it optional here? I’m a noob myself, so take my replies with a grain of salt :slight_smile: )

Apart from that, I think your TX/RX labels on the DIN port are mixed up - and for that reason the wires as well.

But if it worked before and only stopped working now, maybe just a loose contact to the DIN port? The wires are bent there and some force is used to screw the cover, maybe the solder didn’t hold well.

Here is the final schema I used (It’s the same one used on this thread before, but I believe the emitter/collector sides of the transistor were inverted). It’s been working well since I soldered it 3 months ago (except for occasional erratic sensor values which I filter out in my modified code).


image

The reason I have the DIN “twice” is because I build a PCB, so I wired from the ROOMBA DIN to mine PCB DIN the cables

I have as well the bucket to step down the voltage, but this portion of the schema doesn’t matter for the serial communication, that’s the reason is out of the picture

I think I was the owner of the schema you posted :frowning: , but if you check the schema you posted with my picture, i think that the connection with the PNP is pretty much the same

@vykintasv sounds good?

i still getting

Could not get sensor values from serial

@bremby Sorry missed your previous one…

Makes sense to have a separate PCB DIN, didn’t think of that option.

I still think RX/TX of the DIN port are mixed up in your schema - according to the documentation screenshot in my last reply, BRC/RX are neighbors, while BRC/TX are not. Is it how you have them soldered?

Also, do I understand it correctly that it worked for you before and just suddenly stopped working? Perhaps you have another transistor to test?

I tried with a new one and I swapped the rx/tx, but same result :frowning:
i’m thinkining that something is broken on the Roomba side? any suggestions on how to test where the issue is?

Are you sure you start the uart connection with the start command sent to the Roomba?
After a battery depletion I didn’t and thought my Roomba was a goner.
The battery depletion reset the Roomba uart in some way.

If you’re really unsure, try hooking up the Roomba uart to your pc over USB.
That spits out some info about the firmware running on the Roomba.
In my case it was something like r3-robot/tags/release-3.8.1:6188 and some more stuff.
This way I knew the uart was okay and it had to do something with my programming.

If that does not spit out any data then I think you may have fried you Roomba somehow.
There are used main boards available for many models through Ebay or AliExpress.
You can opt for a new main board.

@Bremby
Ooh I just thought of something else.
Could you have accidentally changed the baud rate?
I believe it is possible to change the baud rate by pressing the clean button in some manner.
That could also be a problem when trying to communicate with the Roomba.

thank you @wburgers, I wasn’t aware of this option. do you know how to reset it to defaut?

Hello! Can you please tell me where can I download the latest firmware?

It’s in the OI spec @Bremby

By default, Roomba communicates at 115200 baud. If you are using a microcontroller that does not
support 115200 baud, there are two ways to force Roomba to switch to 19200:
Method 1:
When powering on Roomba, hold down the Clean/Power button. After about 10 seconds, Roomba plays a
tune of descending pitches. Roomba will communicate at 19200 baud until the power is turned off, the
battery is removed and reinserted, the battery voltage falls below the minimum required for processor
operation, or the baud rate is explicitly changed by way of the OI.
Method 2:
Use the Baud Rate Change pin (pin 5 on the Mini-DIN connector) to change Roomba’s baud rate. After
turning on Roomba, wait 2 seconds and then pulse the Baud Rate Change low three times. Each pulse
should last between 50 and 500 milliseconds. Roomba will communicate at 19200 baud until the
processor loses battery power or the baud rate is explicitly changed by way of the OI.

@PhantoMM I believe the latest and greatest is in @DavideCavestro’s repo.
Check this post for the link:

I can’t flash it. I am getting an error while compiling.

Can you give some more details about the error?
Can’t really help you without any details…

error
UPD.
I corrected the indentation in the text a bit. Now when flashing I get the following warnings:

The warning is pretty clear right?
The substitution friendly_name is not declared in the substitution block.

@wburgers
Many thanks for the help ! Everything worked out!

Glad that you got it working. :+1:
Let us all know if you make further adjustments!

I fried 2 D1 Mini’s now. Any advice on figuring out the cause/fix? I have a 630 and following the below wiring diagrams. I used a multimeter and made sure the buck converter and read the out+ and in+ and adjusted to ~3.2 volts before I soldered it to the D1. I pulled the battery out of the Roomba before I installed the wires in DIN connector. I double checked everything including the function of the D1 Mini, before I put the battery in the Roomba.


image