Asked
— Edited
Hey Community!
My parents just got a Roomba, which, being a robotics person, interested me. Since I know DJ and other members have hacked roombas, I was curious if there were any pointers people may have, such as the hack itself, or code, or other innovative ideas they've had with there Roomba. But firstly, does the 655 work with the hack?
Thanks, Tech
First question.
The Roomba doesn't have the same connector as a keyboard I have, yet the keyboard is a ps2 connector keyboard? Does the ps2 connector still work in it?
Yes I'm aware the middle rectangle must be broken off.
Yes, just be careful with your pin alignment. Also the 655 responds to the 500 Roomba Open Interface commands and runs at 115,200 k bytes.
Just the Man I wanted to hear from!
I'm thinking of making a circular attaching base that has an arm to reach down and plug into the Roomba.
As for serial commands, will they be different from the 500? Or are they the same? What are some examples?
Add control
select Robots
Select iRobot Roomba
Explain to your parents why their vacuum now has an arm on it
Here's pic of an ongoing project with a 535 Roomba. As DJ pointed out, he has already built the commands that you can use. I have removed the EZB(3) and prepping for using the newer EZB(4).
Hey @Doc Don't mean to thread jack, but where did you get that clear acrylic disk from?
lol Richard R, ebay is your friend. Not only round but also square acrylic is available. Different thicknesses are offered, I prefer 1/4 inch so that I can use 4-40 brass inserts to insert into the plastic and then use 4-40 standoffs.
@Doc... I am not sure eBay has my best interest at heart.... I do spend a lot of money there.... LOL
Thanks Richard
Home depot has different sized sheets Richard.
LOL... I used to work part time for the depot... I know very well that they sell Lexan sheets... Problem is, they don't sell round Lexan or poly carbonate....
Build a robot that can hold a laser cutter or dremel, get the robot to cut it to a perfect circle, that wouldn't be too difficult to do with a little EZ-Script
@Rich... What's the formula....? Pi r2 something, something?..... Sounds like some serious math.... I think I might be able to do it free hand...
I think there is an example in the examples for a circle.
Easy way though... secure a modified servo to the centre of the sheet. Build an arm the correct radius with the cutting device on the end of it, let the modified servo spin around. No maths needed (I'm currently designing something similar using EZ-Bits)
Now, If I happened to wire the connector wrong, is the Roomba safe? or would the Roomba go "caput"?
And to do the voltage check(outlined here:Roomba Hardware)I would put the voltmeter on the signal and the gnd on the wire?
Yes, you must be careful when wiring the 7 pin min din leads. The full battery potential is present on several pins. Look at this picture for guidance.
So to test with a volt meter I need to put the probes on these ports?
Or 3 and 4?
The EZB is going to be sending commands out of its transmit lead. That data will wind up on the Roombas receive lead. You don't really need to test with a voltmeter.
Quote from hardware. What do I do(If I need to do it)?
Sorry if I'm being critical here guys, I just don't want to trash 400 dollars. What do I do to check the signal voltage? One probe on the signal, the other on the gnd?
Also, what would a good fuse be to put in the line?(Amperage)
To check dc voltage connect one lead to Gnd and the other to the pin you want to measure.
I get 4.59VDC which is in the range. Fuse I would say 2 amp probably.
Where are you wanting to place a fuse ? It is not needed on the Tx, Rx pins.
Ok well maybe I don't totally know what I'm doing...
Going to plug in and try it out. Please no blue smoke!
@Tech... so all you need is pin 7 (on the Roomba connector) to ground on your ezb digital port you're using... Then pin 3 from the Roomba connector to the signal pin (white pin) on your ezb... That's it, two wires... If you want to receive data from the Roomba, you will need pin 4 on the Roomba side and you will have to use one of the UART ports on the ezb...
You have it right in post #18 No need for any fuses... just straight wiring...
Make sure you don't connect the red pin on your ezb to anything... leave it open...
I did, but it appears that when I send the init command the roomba resets completely?
Scratch that. The Roomba(on 115000 baud rate) will disable when certain buttons are pressed. Other buttons do nothing. When old protocol is used, Only movement buttons work, and they activate the spot clean(all of the movement buttons). When both old protocol and 115000 is used it is the same as just 115000 baud rate. When disabled, it can be woke up by lifting it up and putting it back down.
The issue I ran into is that when using the 115,200 baud rate and using D0 on a EZB(4) there is a comm difficulty. Roomba likes 5 volts, but the EZB(4) uses 3.3 volts. Most communications using the built in EZB apps don't work well on the 500 and up Roomba models.
@Doc... I knew you had issues with this before... Just wondering if you had any luck using the UART ports instead of D0? I guess it wouldn't matter if the UART ports are also set at 3.3V as well... So looks like I am going to have issue with my new Create 2 then? Does the same problem occur (which I kind of assuming it does) if you try and control the 500 series Roombas in a script using send serial commands rather than the Roomba control?
Using a bit of hardware from Sparkfun seems to help with the com port issue. I haven't tried the UART ports on the EZB(4) for transmit and receive messages other than the output from the Built In Tests.
I'm still waiting on a fix to the linefeed terminal display that DJ put on the "to do list" over 6 months ago.
Technopro, don't use old protocol with your 600 Roomba. It only expects 115,200 baud.
@Doc... just checked the data sheet... Looks like the UART has the same data pin voltage of 3.3... Looks like I may order the level shifter you posted, thanks...
@Doc @Tech... If you're interested I have just uploaded a small ezb project file to control a Roomba 500 (600, 700 etc) series robot... It uses a custom Movement Panel and simple UART commands for forward, reverse, left and right...
Look for.... Roomba 500 custom Movement Panel under the category "sharing"... I think it's the last one in that category
Note it uses UART port 1 which is D5 on your ezb...
I have never used uart commands before. Could you coach me through where you got the codes?(I'm all about learning!)
Will test your code tomorrow. Thanks.
Irobot published a document with all the commands that can be sent and received from 500 model Roomba iRobot_Roomba_500_Open_Interface_Spec.pdf
@Tech So yes, download the Doc that @Doc listed above... It will show you what data commands that you can send to your Roomba to do simple things like what I did. You will also have access to turning on and off the vacuum, side brush, main brushes etc. Seek docking station etc, etc.... And you can receive sensor data too... You'll need that 3rd wire on your Roomba plug connected to pin 4 on the Roomba (I think it's pin 4).... Pin 6 on the ezb is the receive data pin for UART 1......
So far I can only get my EZB to receive 1 byte data packets from the Roomba sensors (like reading the bumper and wheel drop sensors)... 2 packet data are things like battery voltage, wheel encoder data etc.... Not sure why I can't get 2 byte data to work but I know that it most likely is my coding LOL... probably. However, I know DJ is working on the serial commands as the dynamixel guys are have some data receive issues too... But I wouldn't worry about this just quite yet.... Project for another day...
Ok so for uart, what are the different numbers used in the init script? And what is the order?
uartinit(0, 1, 115200) sleep(20) uartWrite(0, 1,128,132) #Init iRobot create and place in full mode
Also, how do I return the Roomba to normal? I tried writing a command to set it to passive, and to off, but no luck and a red light on my ez-b.
I haven't got that far with the 500 series yet... To reboot the Roomba to normal operation... Press and hold down all 3 buttons (Dock, Clean, Spot) at the same time for about 15 seconds... The LED will go out then the Roomba will reboot back to normal operation... Or you can take the battery out and put it back in....
uartWrite(0, 1,128) #Puts iRobot in passive mode
If you send the clean command, it forces it into normal operation. Just got told I have to wait until the warranty is over until I can play with it.
Thanks for the help guys. When I do something Roomba wise I'll wake this thread up.
uartWrite(0, 1,7) #will reset the Roomba
@Tech... well that sucks.... I have one (Roomba 530) you can have for dirt cheap $35.... LOL No pun intended. It's used but works great.... or you can check out eBay for one...
Cheers Richard
$35? Is it complete? Is that just the vacuum or are other accessories available too?
@Tech yep, with dust bin, brushes and battery... you have a charger (your parents Roomba) so you don't need one... Like I said, it is used, but works great...
Could I get some photos?
Sure.... There is some minor yellowing on one side of the Roomba... nothing really just some minor sun yellowing.... Everything else is perfect... A bargain for $35...
Great thanks! I'll let you know about it soon.
No Probs...
Cheers
Okay. I'm waking this thread up again. I am using the roomba again, and downloaded Richards cloud project and got it operating. What I want to figure out is the wiring to receive data from the roomba. In one of the past posts @Richard_R said that you would connect a wire to pin 4 on the roomba and another UART port on the ez-b, but which ports on the ez-b V4 are uart?
Thanks.
@Techno
UART serial expansion port it port UART0.
D5 (TX) and D6 (RX) can be used as UART1.
D18 (TX) and D19 (RX) can be used as UART2.
Thanks Steve!