Welcome to Synthiam!

The easiest way to program the most powerful robots. Use technologies by leading industry experts. ARC is a free-to-use robot programming software that makes servo automation, computer vision, autonomous navigation, and artificial intelligence easy.

Get Started
Asked — Edited

How To Connect Ezb To A Create 2

I have been looking on the forum for a wiring tutorial for the ezb and create 2. There are a lot of ideas and very complicated ideas that seem to work but no simple tutorial to connect ezb to a create 2.

Please let me know if there is a tutorial or can you provide me with one.

Thanks,


ARC Pro

Upgrade to ARC Pro

Harnessing the power of ARC Pro, your robot can be more than just a simple automated machine.

AI Support Bot
Related Content
Synthiam
PRO
Canada
#113  
You can certainly stuff a lot of stuff in that space like Lipo batteries, the EZB controller and a windows PC in that space. Nice.
#114  
Hi Frank,

Thanks for addition info. I updated my interface for mobile. Let me know what you think.

Is there a way to get sensor data on mobile interface, say sonar information>

I cannot see a way to do this.

Thanks.

Jack
#115  
Jack,
I’ll check that tonight

What is the name of the project you posted?

Frank
#116  
Hi Jack,
I assume its the Roomba 500_test project you are referring to.

The Mobile Interface can access variables you set in the program.

For example, your script "battery_check" could loop and update the variable $voltage so you could display that in the Mobile Interface

That variable $voltage is automatically accessible in the mobile interface and could be accessed in a "script label" that you add in the mobile interface... for example

User-inserted image



I think you are talking about these sensors

User-inserted image


So you would need to modify the battery_check script to read the additional sensors you want access and add the script labels in the mobile interface

If this doesn't make sense to you, I could modify the battery_check script, as a sample, to add a sensor you would like to access so you can add the rest of the senors and Mobikle Interface script labelslater

Frank
#117  
Hi Frank,

This my project working on for Roomba.


Roomba Test

Actually I wanted monitor IR sensors.

Also, I have been buying up broken Roombas. One was doing the circle dance with a nine beep error. Use this program to disable sensor and see if would go in a straight line. It circled. I replace the right wheel/ motor assembly and it is fixed.

I may want jut want to dedicate an EZ unit for testing these Roombas as they come in.

Thoughts?

Jack
#118  
Hi Jack,
I loaded your Roomba Test project and modified the battery test script which was actually based on original work done by Richard R

I addded in the reading of two IR senors so you could use that as a sample. This creates the two variables which can be read by the mobile Interface

$left_signal
$front_left_signal


Code:


$voltage=20 # default value
uartinit(0, 1, 115200) # Init UART
sleep(500)
uartWrite(0,1,128) # Send Start(128) command

repeatuntil(IsConnected(0)=0)
uartinit(0, 1, 115200) #have to clear the buffer
sleep(500)
$RX_DATA=0

uartWrite(0,1,142,22) # Voltage check command
sleep(50)

uartWrite(0,1,142,46) # Light Bump Left Signal command
sleep(50)

uartWrite(0,1,142,47) # Light Bump Front Left Signal command
sleep(50)

#*** Add other sensors commnands here ***

$rx = UartAvailable(0, 1) # Read UART
print("******* $rx= " + $rx)

if ($rx=6) # number of return bytes expected **** be sure to bump this number when more commands are added ***
$RX_DATA = UARTRead(0, 1, $rx) # read all the bytes from UART
$MSB=GetByteAt($RX_DATA,0)
$LSB=GetByteAt($RX_DATA,1)
$voltage=($LSB+(256*$MSB))/1000
$voltage=$LSB+(256*$MSB)
print("$voltage= " + $voltage)

$MSB=GetByteAt($RX_DATA,2)
$LSB=GetByteAt($RX_DATA,3)
$left_signal=($LSB+(256*$MSB))/1000
$left_signal=$LSB+(256*$MSB)
print("$left_signal= " + $left_signal)

$MSB=GetByteAt($RX_DATA,4)
$LSB=GetByteAt($RX_DATA,5)
$front_left_signal=($LSB+(256*$MSB))/1000
$front_left_signal=$LSB+(256*$MSB)
print("$front_left_signal= " + $front_left_signal)

endif



if ($voltage<13.9)
uartWrite(0,1,143)
print("Low battery, attempting to dock")
halt()
endif
sleep(2000)
endrepeatuntil


I also added two "script labels" to your Mobile Interface so that the variables could be displayed in real time

On the mobile interface, the script labels look like this
User-inserted image


I just added in text that looks like this
"front_left_signal= " + $front_left_signal

Frank
#119  
Frank,

Thank you. I will test and get back to you on this. It looks like a good way to do it.

Jack
#120  
Frank,

I believe the way you set this up it will only read when connected to PC not just by using mobile alone?

Have you noticed that EZ camera can "see" the IR signal coming from docking station and virtual walls as white flashing light. I guess it sees IR. Not sure how to use this yet.

I want to create to types of apps here, one for mobile and one for PC. Mobile is for demo off site uses. PC I have a bunch of ideas that I will update you with when I do.

In the mobile app I want to do something other than just move around, maybe lock on to Gyph and track.

Jack
#121  
Hi Jack,
You don't need a PC connected running ARC to see variables in the Mobile Interface. Here is what I'm looking at in the Mobile Interface on my iPhone when I'm running my Roomba software.

User-inserted image


The only trick is to be sure you launch the Roomba variables read script in your "OnConnect" in the desktop setup to have the Roomba variables populated
User-inserted image


Here is a tip from @DJ on how that script launch works in th Mobile Interface
www.ez-robot.com/Community/Forum/posts.aspx?threadId=11120

You can access the IR lights you see flashing in the docking station and virtual walls using these commands in the Roomba Interface

User-inserted image


User-inserted image


User-inserted image


Frank
#122  
Hi Jack,
I understand your desire to have the Roomba do move than just move around with a joystick... we all want real in home navigation.

I'm anxiously waiting for the EZ Robot Lidar add-on to be released

In the meantime, I've toyed with simple concepts like this.


Its just using some dead recogning; back for x seconds, turn left for y seconds, drive straight for z seconds... and then seek the next dock

I found another guy on youtube who used the dock as a sync up location before opening the fridge..



I know several others like @ptp and @CochranRobotics have been working on a Lidar navigation solution

Frank
#123  
Frank,

I understand now how you get things to run under connection script. Thanks. But how do you designate where to send to a label box on mobile interface. It needs a name of the script label control or label control? I do not see a way to designate a name to either.

Am I missing something here?

Thanks.

Jack
#124  
Hi Jack,
The Mobile Interface can read any variable you set in the main program that is run by the connection script.

Just to test this, try this:

In your connection script set $test="1234"

Then in your Mobile Interface create a Script Label and set the text to be
"Test= " + $test

After saving your program, run the Mobile interface on your phone and you will see the Sript Label contains the text you assigned in the connection script


Frank
#125  
Hi frank,

Ok that works but I tried to run a loop check battery temp and throws an error.

This is very crude way of doing this I guess. I would like to be able to run a script on a label inside that interface.

I guess the only way to get real time value is to have a button run a script and take that global variable and update the label.

Is that how you update your variables?

Also just to throw out to you. Thinking of taking a Roomba, running at night or when no one is around. Have it carry a ultraviolet light throughout the house to kill germs.

They have robots in hospitals now that cost a fortune. I would use Roomba as a test bed for now with making something else later.

One thing needed would be is to have it run a specified route then return to charge.

Thoughts?

Jack
#126  
Hi Jack,
The script does not have to exist in the Mobile Interface. Instead launch a looping script like this in the main interface and launch it with the Connect Control

Code:


$voltage=20 # default value
uartinit(0, 1, 115200) # Init UART
sleep(500)
uartWrite(0,1,128) # Send Start(128) command

repeatuntil(IsConnected(0)=0)
uartinit(0, 1, 115200) #have to clear the buffer
sleep(500)
$RX_DATA=0

uartWrite(0,1,142,22) # Voltage check command
sleep(50)

uartWrite(0,1,142,46) # Light Bump Left Signal command
sleep(50)

uartWrite(0,1,142,47) # Light Bump Front Left Signal command
sleep(50)

#*** Add other sensors commnands here ***

$rx = UartAvailable(0, 1) # Read UART
print("******* $rx= " + $rx)

if ($rx=6) # number of return bytes expected **** be sure to bump this number when more commands are added ***
$RX_DATA = UARTRead(0, 1, $rx) # read all the bytes from UART
$MSB=GetByteAt($RX_DATA,0)
$LSB=GetByteAt($RX_DATA,1)
$voltage=($LSB+(256*$MSB))/1000
$voltage=$LSB+(256*$MSB)
print("$voltage= " + $voltage)

$MSB=GetByteAt($RX_DATA,2)
$LSB=GetByteAt($RX_DATA,3)
$left_signal=($LSB+(256*$MSB))/1000
$left_signal=$LSB+(256*$MSB)
print("$left_signal= " + $left_signal)

$MSB=GetByteAt($RX_DATA,4)
$LSB=GetByteAt($RX_DATA,5)
$front_left_signal=($LSB+(256*$MSB))/1000
$front_left_signal=$LSB+(256*$MSB)
print("$front_left_signal= " + $front_left_signal)

endif



if ($voltage<13.9)
uartWrite(0,1,143)
print("Low battery, attempting to dock")
halt()
endif
sleep(2000)
endrepeatuntil

[


Any variables that are updated in the main interface will show up in the Mobile Interface


Regarding your "night patrol", its a great idea that is waiting on the EZ-Robot Lidar release with navigation...

In the meantime, the only thing I can come up with is that lame approach I had using multiple docking stations and a script. Your script could just have it drive a pattern for a while like it was doing floor cleaning and then dock

The Roomba is actually pretty quiet when you remove the main and side brish moters and the vaccuum in the dust bin

Keep the Use Cases coming. I love the ideas

Frank
#127  
I have some GREAT NEWS for those interested in using Create 2 as a telepresence robot! Those of us working in the area are aware of the issue of waking the Create 2 while it is docked and trickle charging.

I've had extensive discussions with the iRobot STEM Program Manager and they said that pulsing the BRC pin only works if undocked. The agreed to send me a beta test version of firmware that resolves this issue and I can report that it works great!


Right now its still in beta so you will need to send an email to create@irobot.com referencing a post on another forum

robotics.stackexchange.com/questions/12846/irobot-roomba-620-similar-to-create-2-enters-power-saving-mode-although-the-is/15623?noredirect=1#comment25934_15623

to receive the firmware update which comes on a plug in transfer device called an OSMO

This is much easier than our previous approach of adding a relay across the CLEAN button contacts or a servo pushing that button or using an IR sender to wake up a docked sleeping Create 2

Regards,
Frank
#128  
Hi Frank,

Nice work on the create2 ! Haven't had a chance to work with mine in quite some time. You have sparked my intetest to start working on it again !

You seemed to mention that EZ-Robot still plans to come out with their Lidar Navigation System. Is this actually going to happen? Still haven't seen the hardware items they said would be released quite along time ago. Also haven't seen any software updates of late. Is Ez-Robot still doing ok and have they switched completely over to focusing on the education side of the business. As far as the Lidar system they could have a cheaper version for the educational market and one for makers that has more capability. Thanks Much...Rick
#129  
Hi Rick,

Thanks for the feedback


I don't have info on Ez-robot's plans for the Lidar they mentioned a while back

Maybe @Jeremie could get us an update as that's the missing piece in my telepresence robot


Frank
PRO
Canada
#130  
Great news Frank! I remember when iRobot used to deliver firmware updates that way for the Roomba years ago:)

In terms of the LIDAR, usually silence means we're working hard on something;)

Wish I could say more:)
#131  
Hi Jeremie,
The new wireless Roombas like 690 or 890 can do OTA updates, but the Create 2 is based on the older units like a 650

Regarding the Lidar and SLAM, I anxiously waiting for you to break your silence:)

Thanks,
Frank