Asked — Edited
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.
Upgrade to ARC Pro
Synthiam ARC Pro is a cool new tool that will help unleash your creativity with programming robots in just seconds!
***Edit*** I also was able to find a tutorial pretty easily in the learn section for creating the serial cable required to connect to the ezb... It was by Robot Doc...
Remember, every control has a question mark next to the close X button. Pressing the question mark button will direct you to a manual page for the respective control. This message is displayed every time ARC is loaded as a reminder.
I know this may seem basic for most but with the Create 2 I do not know how to hook it to my ezb micro and wonder if the existing ezb plugin will work with the Create 2 without modifications.
There is no roomba plugin just the native roomba control in ARC... It does work but I also have an ARC file floating around with a bit more control features... Check it out here... It may have to be tweaked but it should get you started...
Roomba 500, 600 etc sample control
This makes sense. I think I have it now. This was a clear once I found out that it is wired the same as the Roomba.
I really like am totally impressed with this forum.
When I first started it up it did nothing. After working with it a bit it started to move in different directions intermittently and would only work with stop sometimes. I am recharging the Roomba overnight to make sure it is at full charge. Is there something I am missing. I know the Ezb is communicating directly because it is sometimes responding to the Roomba movement control intermittently. Any ideas or recommendations.
The Roomba either does nothing or is very intermittent.
The Roomba is a Create 2. I was wondering if the Correct signals are being sent to the Create 2. There seems to be a start command, a safe command and a stop command. I am wondering if this is my problem.
Here is the link to the manual.
See pages 7-9.
I am making a telepresense robot so I can let my grandchildren run the robot over the internet and I will set an Ipad on a stand on the Roomba so we can Facetime. I am trying to get them involved in Ez-Robot to peak their interest in robotics. They are very creative.
Please take a look at this thread...
where several others are discussing a similar issue.
I'd like to suggest that you try Richard R's design as I did and it worked great for me
I did read the article that you wrote on the 650 in the above link. I noticed that you said to use the UART instead of the send serial. I am actually connected to pin three on the Roomba which you said has been changed on the newer Roombas.
You said that you other people have also had trouble with this connection.
I am pretty unfamiliar with the UART connections. Could you tell me where I can get Richard R's design or the link to the information so I can learn to connect to the UART and use Richard Rs motion script. It seems the UART is the way to go
I know I need to to do this sometime. I guess now's the time.
I suggest that you start with the sample project that Richard R made as shown in the pics below. You should be able to check and see if the Movement Panel drives your Roomba correctly.
In regards to my saying "pin 3" had changed, that was a typo... I was talking about the "DD-BRC pin" which is "pin 5"... sorry. That is the pin the previously could be used to wake up a Create 1 Roomba that doesn't work on a Create 2
I have tried a couple of ways to wake up the Create 2 Roomba. One way was by using a servo on the EZB controller to push the button and the second way was a SwitchBot controlled by my phone
Please keep sending updates on your telepresence project as it progresses. I'm very interested in your project
I have a question. I thought UART connectors have 4 wires but there are only 3 pins on the UART port on the Ezb..
How would I wire the UART port to the Create 2 plug? What pins on the Create cable would the three wires from the Ezb be connected to.
Does the Ezb use three wires ground, transmit and receive?
What are the wires black, red and white carrying. Black ground, red transmit and white receive or black ground, white transmit and red recieve?
I am trying to learn how to work with the UART.
This weekend I'll connect back up my EZB-based Roomba so I can better document the steps
Update: I have finally figured it out on the UARL. I was looking at the wrong ports. There is only 1 UART per board and it is labeled by pin. I am going to try tomorrow to wire it and install custom movement panel.
Let you know how it goes.
I just uploaded a public project "EZB Roomba Basic" that is a very simple version that you can test. I also set the speed to very slow which can be adjusted. This is based on the sample the Richard R published
I put very few features in it with the idea of adding more later when you are ready such as using Roomba power, remotely pushing the "Clean" button to get started and adding a mount for the iPad FaceTime feature with the plan of it being a telepresence robot
It uses UART1 TX/D5 to connect to the Roomba Pin 3 RX. This will also work with the Create 2. I'm using the Roomba 650 which is the basis for a Create 2, but contains the cleaning brushes.
It has a mobile interface, camera, Movement Panel and Init and Dock scripts
Here is a video... note that when docking the Roomba 650 activates the brushes
As for your above question of 3 wire verses 4 wire UART connections, 3 wire is fine as the ground is common.
The UART RX input would be connected to the Roomba TX pin 4
Feel free to ask any question, this forum has a LOT of Roomba experts
I would like someone to look over the following informations to make sure I have done everything correctly before I start the Roomba Create 2.
I have rewired my Roomba to the UART port (Black 4 wire Plug on Ezb microcontroller).
I connected Roomba pin 3 Recieve (purple wire) to RX on Ezb UART port.
I connected Roomba pin 4 Transmit (Black wire) to TX on Ezb UART port.
I connected Roomba pin 7 Ground (orange wire) to GND on Ezb UART port.
See picture below:
I am going to use Richard's Test Plugin.
I don't see the plugin you are referring to, but if it uses UART 0 that is correct... but just to be clear...
EZB UART TX pin should connect to Roomba RX pin... this is used to control the Roomba
The use of the Roomba TX pin connecting back to the UART RX pin is just for reading back any status that may be of interest... its not for controlling the Roomba
The way your description reads is that you are connecting UART TX to Roomba TX and UART RX to Roomba RX... this would NOT work
By the way, in the example I created I'm using UART 1 just in case you decide to try that too
1. You are connected to UART0, if Richard's Example Project uses UART1 so you'll have to make those changes in the project. (Or you could switch your connection points on the EZ-B side if you want)
2. You will want TX to be connected to Receive and RX connected to Transmit. This is a common thing to have connected in reverse.
I can switch the wires on the Ezb. Help me understand what the difference between UART0 and UART1 as far as I can see there is only one UART. Is it a software or physical difference?
The pins are marked TX, RX, GND and 3.3v. Is the 3.3v powerful enough to power Ezb?
UART0 is the connector that you are interfacing too
UART1 is digital pins D5/D6
UART2 is digital pins D18/D19
UART0 is dedicated to only UART communication while UART1 and UART2 are alternate functions of the digital pins mentioned above.
Please see the EZ-Bv4 datasheet for reference.
3.3V is regulated voltage from the EZ-B on-board switching power supply. You won't need to plug anything into it.
Are the Digital ports on I oTiny also dual purpose digital and UART1 AND 2? I do not see a UART0. I would like to use l o Tiny for this controller.
However you can use it to control the roomba if you switch all UartWrite commands for SendSerial commands...
I wired the wires correctly with black ground and white signal to port D5 Ezb and white to pin 3 and black to pin 7 on Roomba plug. I ohmed the wires to make sure they were connected correctly before plugging the cable into the Roomba.
I loaded Riches Roomba sample plugin into the Ezb program, turned on Ezb controller heard the beep, connected to Ezb wireless and tried Riches sample plugin. It did nothing. I started all over again rebooting everything. Still didn't work.
Found out that after failing to work it disconnected wireless each time. I had to completely reboot everything and disconnect Roomba cable to get it to connect to wireless again.
I am not at all knowledgeable about the UART programming in Ezb. I looked at Richards software and could not fully understand what each script was doing. I finally took pictures and decided to see if anyone could help.
All I want to do is control the Roomba Create 2 with a movement panel, with speed control. I just want to be able to drive it around using Movement Panel with the panel, joystick, wireless and over the internet.
I am so frustrated I feel that my only choice is to look at Arduino board and their plugin. I have never bought another microprocessor other than Ezb. It is the greatest software, micro and support forum I have ever seen.
I see several people say it works great on UART but I have read over and over the tutorials and forum info to still no avail. Is it possible to have a Ezb script to provide a simple Movement Panel for Create 2.
I hope all my investment and time has not gone to waste with the Create 2 and Ezb on this project.
Take a deep breath...
There are so many tutorials and forum posts, after reading your previous posts i got the conclusion you ignored a few helpful resources e.g.:
1) What is an UART, TTL/Serial Communication
2) EZB Hardware e.g. UART locations and pin wiring
3) Iotiny Hardware
4) EZ-Script e.g. UartWrite and SendSerial
I understand you want fast results, but, without learning takes longer to move forward.
Sorry to hear that... but you don't know what is an Arduino and how painful will be for a newcomer without patience...
First there is no plugin, there is an IDE where you drop code: (C Code), arduino is an open hardware, that means you need to find someone's forum or the arduino forum for help. If you don't ask the correct questions and/or after a few posts, your thread will go into silence mode.
I believe you are on the right place to get your project moving.
I'm not sure if anyone ever mentioned this, but you need to push the "CLEAN" button on the Roomba just once so that the EZB can talk to it. The CLEAN light should come on...
If you still have a problem, please try the project I loaded "EZB Roomba Basic" as its very stripped down and I can help you troubleshoot it better.
If you can't get it to work with your ezb4 or ioTiny then you will for sure have way more difficulty getting your Create to work with an arduino... If I were you I would stick with ez robot as arduino programming is many times more difficult to do...
I have been helped a lot during my quest by really knowledgeable people. Richard R, Frank and several others have been trying to help. But most of the time information is left out as to where to find out what they are talking about. Sometimes I think I don't even understand what they are trying tell me. I have followed every recommendation and implemented it in my project but still couldn't get it to work.
I do program to some success with standard digital ports. I am continuing to lean.
My point with Arduino is that there is already written plugins to work with Create 2. There are not with Ez plugins. You are right I do not want to start learning C++. Ezb is a lot easier and I am still having problems. No telling what what I would do with C++. I just don't know how to go forward.
Frank please tell me where I can find your Ez Roomba Basic post. It sounds like it is what I am looking for. Also I may have forgotten to push the Roombas on button. I can't remember. Thank You Ellis.
Start a new project in ARC
Click on EZ-Cloud App
In the User: pick faengelm and then the EZB Roomba Basic
Open it and note that you will need to change the connection IP & camera IP to match your EZB controller address
Connect to your EZB
Push the CLEAN button once on the Roomba while its in the dock
Use the back arrow on the Movement Panel to undock
Sometimes its takes a couple of forward & reverse clicks to get recognized or at times the IInit button.... after that its solid
see my youtube video using the Mobile Interface. I have a Roomba 650 which is what the Create 2 is based on
Let me know how it goes
I set everything up according to your instructions and everything worked perfectly.
I am going to attempt to tidy everything up and create a mobile app to control from an Iphone 10. Then I will be ready to talk to my grandchildren on a robot.
Very Cool. Thanks for your patience.
When I get every thing done I will send you a video.
I am so happy to hear it works for you.
This will encourage @RoboHappy and @Nink in their projects
I'm not sure if you noticed, but I also have a mobile panel in my project. The really fun part is watching it seek the dock and recharge.
Its really funny, your telepresence robot looks a lot like mine....
By the way, if your iPad supports IOS 11, you will be able to autoanswer Facetime calls...
Here is what I'm working on for the next versions of this project. I'll leave the Basic verion in place who might be starting from scratch
1. Powering the EZB controller and camera from the Roomba SCP. Since its limited to 250ma I can't power a servo to push the CLEAN button. I'm currently using a SwitchBot to push that CLEAN buutton
2. Powering the entire setup including the iPad by tapping the Roomba battery
3. Remotely controlling the telepresence robot over the Internet
I just wanted to say a BIG thank you for showing me how to use the UART to work with the later generations of Roombas
Without your help, I never would have gotten it to work as I had problems with the EZB Roomba panel on D0 using SendSerial
I have a questions. The 650 Create 2 Roomba seems to loose all normal capability when Ezb is in control (on, connected and plugged in). Is this to be expected? When Ezb is control unit will bump into something and just keep pushing. I thought it would press bumper and change directions. It doesn't. I am going to disconnect cable and let it try on its own without Ezb and see if it works.
That is my fault.... I put the Roomba into "FULL" mode to run some tests and forgot to change the code back to the "SAFE" mode.
I will change the code in the project, but just so you know whats going on here is the change I'm making
I will be changing the "132" to a "131" for the "SAFE" mode which enables sensors. It will just stop when it bumps its something is it really not doing a cleaning mode and wont try to find its way around the room after a bump
If you'd like to look at the complete list of commands here is the iRobot OI spec
It can be a bit hard to follow, but once you see some example, it will make sense
I'll keep adding features and am considering actually writing a EZB Roomba tutorial unless someone more experienced wants to do it. I'm open to ideas and suggestions starting with which advice on Roomba models a new user should pick... e.g. don't pick a 440 as it has no charging pads for docking
The info is great. I would be very excited about you writing a tutorial on the new version create 2. I think there is a lot of people out there that would love to use EZ-Robot to control their Create 2. Looking forward to it.
Thanks for pointing that out...looks like the adafruit site didn't like the ref from EZ-Robot Forum although the embedded link looked fine.
I changed it to the iRobot site which is a better location anyway and that works.
I went to find my old roomba red din connector but it was lost, so I cut the end of an old mouse off. Problem was it only had 4 wires and none were ground (pin 6 and 7) so maybe this is why people are having trouble. Remember when you look at picture of a port your wiring for plug is mirror image so you may mix up pins. Any way I grabbed 2 jumper wires and just connected direct to EZB and works great.
I will buy a connector. Here is a photo to show exactly how it is wired to work with Franks demo.
Any thoughts on making a body for the robot?
I'm glad you got your Roomba working.
For anyone else who does not want to solder on that small connector, here is a cable I'm using from gumstik.com. No worrying about soldering to the wrong pins
The real beauty of it is that you can just clip it unto your EZB Controller with one additional M-F breadboard jumper... no soldering at all!
This is the kind of stuff I thought about putting in a Roomba Basics tutorial
I think you should look into a special iPad camera mount like this...
I'm acutally using a tripod that came with that removable iPad/iPhone head
I'm not planning on trying to motorize an iPad mount, but would be interested in your design. You wouldn't have to impement the PAN function as the Roomba could provide that axis of movement
I attached my tripod with these stick down Cable Tie Mounting Bases. The are cheap, very strong, and and since they are stick down easy to attach and remove when wanted. They use standard Cable Ties or Zip Ties to attach them to tripod.
Frank I like your dual attachment and Nink I like your Roomba deal.
If I understand the use case of our telepresence device, I sit at home while I steer my telepresence device from meeting room to meeting room and pull up a space at the table or hang out at the water cooler.
So if I am at home and my EZB is connected to my work network, how do I connect to it from home?
Do we need to add a raspberry pi or some type of onboard compute as the EZB needs to have enough smarts on board to connect to an external location when powered up. As far as I know there is no way to get the EZB to call home directly. I think @PTP firmware allowed the V4 v1 to do this but does not (as far as I know) work on v4v2.
I am fairly new to EZB so not sure what options there are. Could we use mono or universal bot to establish a connection to robot and then control EZB from home ?
I like your idea of the tie downs. Please send some pictures showing how you connected to the tripod legs.
I really love this forum... lots of sharing of ideas
I haven't worked put yet how to control it from a remote location, but I'm testing several options some dependent on controlling a PC at the remote location and some without a remote PC
he first thing I'm working one is powering the EZB Controller and iPad from the Serial Port connector 200ma power or a means to tap the Roomba battery so that the person on the remote end doesn't have to plug in any chargers.... just using the self-charging features of the Roomba
How does your remote connection idea work?
Best option will be to have a local PC with remote access (many options, let me know if you need guidance, I have used about a dozen different ones).
If you have total control of the network (ie, you can forward ports on the LAN from the internet router) , and a dynamic DNS service so you always know your IP address, you can forward a port to the EZ-B ip address (I would remap from port 23 to a different port number since 23 is a constant hacker target) you can run EZ-B remotely, but you won't get as good performance unless you have gigabyte internet at both ends (and even then, probably not as good as a local connection with a remote desktop).
Thanks for the great advice... here is what I setup based on your suggestion and I actually got MOST of it to work WITHOUT a PC at all at the remote end..
I can test this because I have two different ISPs at my house, Comcast and ATT.
On the remote end, I just have the EZB Controller on the Roomba connected to the ATT Wi-Fi network. I set Command TCP Port to 8023 and the Camera TCP port to 8024 in the EZB Controller and forwarded those ports in the ATT router to the IP address of the EZB Controller.
On the local end, I have a Windows 10 PC connected to the Comcast Wi-Fi network and running ARC with my EZB Roomba Internet program on it. The PC is able to control the remote EZB Controller over the Internet and view the EZB camera!
I then added a mobile Interface and was able to control it from my iPhone connected to the Comcast local Wi-Fi network.
The only thing I can't do on the iPhone is view the EZB camera.
@Ellis & @Nink,
Since this is now starting to get more complicated I will post a sample app and start to added step by step instructions in a Tutorial
It can be a simpler setup if you follow @Richard-R suggestion and use a remote viewer with a PC at the remote end
wow that is a bit of an issue :-) Can't imagine we want to charge a batteries at 0.1C. The charger says it is 1250mA 20v and multimeter on Din plug reads 19.8v So we have a some room to play if Roomba is not charging. We could just tap charging pads and cross fingers with a voltage regulator but the fact they limited us to 200mA lets me think Roomba needs the other 1050mA to charge. So I think we will blow the fuse in Roomba charger when Ipad and roomba are charging.
Perhaps an idea (not sure if this will work) if we could tape over charging pad on bottom of Roomba and put a new metal pad on top that connects to an inline current measuring relay circuit and then back to the taped over pad. So when the current drops (Roomba is no longer charging) we cut power to Roomba and switch to charging the other devices. We could probably current check with an INA219 and an atmega328p (well below 200mA) and a relay. So if current drops (We can assume Roomba is no longer charging ) then we switch over to a voltage regulator to charge other devices.
Maybe I didn't state it properly. I'm not suggesting modifying the Roomba charging circuit and the serial port connector provides enough power to run the EZB controller and its camera. What's really nice is that I can always connect the the EZB controller as power stays on even when the Roomba shuts down on the dock I just use a buck converter to step down the Unregulated Roomba power for the EZB
The only problem is when you want extra power for servos or an iPad, but I have some yet untested ideas that I'd like to prove our before sharing
For my Use Case I assume an infirmed person at the far end who can't be plugging in chargers or pushing buttons
Your idea of modifying the charging pads is interesting, but the Roomba charging circuit is complex. Connect a voltmeter to the charging doc pads and note that it's only about 2v when there is no Roomba docked, I assume for safety even though the charger puts out 22v
The Roomba and dock would always be in alignment for the connection and the Roomba would pull away to disconnect it
I pursue that over the next few days
I'll let you know if my other untested idea works too
I like to see others working on this.
I am going to use a surface tablet and skype. It is simple and should work perfectly.
I will let you know.
Very nice mount
If you decide the use the Surface, I guess you could also let that serve as a ARC program on the Roomba
What are your plans to charge it?
here is my charger. Stealing Franks original idea. 4 extra large paper clips, 4 neodymium magenta (one on ether side of paper clip on charger so they hold in place), a lead acid 12v battery, a float charger and a voltage regulator.
Hot glue paper clips in place but keep them loose on the charger as the Roomba docks differently every time so the need to float around a little bit (wiggle them when almost dry) but can’t float to much or they will lock together and either blow a fuse or bbq your Roomba.
Need to change to lithium ion as battery is heavy. Also need a better magnetic connection idea but it all works.
What will be using the extra power?
Is that just for the iPad?
Where you planning to have a servo push the CLEAN button?
I think I will need some Servos. push elevator button, use a pointer, control gimble for monitor, run a Kinect for camera and depth or maybe 3D Lidar . Ohh I need some LEDs because you always need LEDs. An LTE Modem a GPS, a speaker, a decent microphone, temperature humidity sensor so I can complain about the weather.
OK I think I need more power LOL. (None of this will happen)
For clean button maybe I might just open it up and run a a couple of wires off the button. you think there would be a wake command for that.
wow! This is a lot more complex than my Use Case of an elederly parent living alone with a remote family caregiver controlling the Roomba for FaceTime visits
I have a couple of questions about your work environment:
Will they let you put a non-company PC on their network?
Will they let you connect a non-company device(EZB Controller) to your wireless network?
Also, do you have plans to add some type of camera to help you drive the Roomba around? I guess if you added a control gimbal for the monitor you could be running Skype as your camera.
Have you considered using a Windows tablet mounted on the tripod? That could handle the ARC programs and Skype
Its great to have have these different ideas as there is no single solution
We have a "guest network" but it is behind a firewall and no inbound traffic. I think if I schedule my PC to make an outbound call say once a minute I should be fine, but I should test.
did not think about tablet, on a budget. I have an old acer aspire one laptop with windows but it is noisy and slow. maybe?
Also started work on a base to mount things. Odd shape as you still need bumper to work and accesss to remove dirt container. All good telepresence bot should also be able to clean up after themselves.
Turns out the guest WIFI is fun. DHCP server issued a new address every time I connected and I had to play guess the segment before scanning. That won't work in production.
I think I will have to put 2 WIFI adapters on Windows PC 1 to connect to internet the other to EZ-B in Adhoc mode or worse case throw a router into robot as well. More Power, weight, cost....
I am using my Surface to skype and run Ezb. I have replaced my battery inside the Roomba with a 4500 mAh Roomba replacement battery.
I have not added the Surface to it yet. I will need to go direct to the battery if I do.
I am planning on plugging Surface into power until I get it figured out. I could make the auto power connection on the Dock as you did Nink. I could then charge the Surface battery automatically off of the Dock.
What battery and charger are you using?
Let me know if you figure out a way to tap the Roomba battery
I was hoping that the I would see battery power on the Roomba jack... nope
The charger is a 12V charger with a 12v float charger on it. This is important so you don’t overcharge and can keep topped.
I connect direct to EZB and not to LIPO so EZB always runs off lead acid battery.
It was really what I had laying around from other projects but if I was to buy I would build a couple of lithium pack from 18650 batteries and a specialized charger.
I decided to go with an iPad for now, I found my old IPad 2 and it seems to do FaceTime OK. It is so slow I can’t use it for anything else. I will use the acer laptop for EZ-robot I think so I don’t have to spend money and it should have enough horse power if I disable all the back ground bloatware to run EZB and a remote takeover app.
@Ellis think I will use your idea and do a VPN tunnel and route all traffic back to my house as I am worried I am going to get all sorts of network issues. So adhock on 2nd network card on acer and iPad and EZB can connect to that and then route all traffic over VPN to home network.
If your iPad can run IOS 11, FaceTime can auto answer
Some interesting info from @DJ in another post that may remove the need for VPN
I know that I have been able to control over the Internet to an EZ-B
There is no way I could get (or would ask) my IT department to port forward to EZB. I have tons of respect for @DJ but if someone hacked into the EZB remotely and jumped onto the network at work DJ and I would both be on the front page of the New York Times.
On the iPad 2 sadly it only supports IOS 9. Now I have another problem to solve :-(.
Laptop is 20v 2.5 amp so need to add another 12v battery in series and get a 24v float charger.
Ptp suggested a pico projector, it’s a good idea but they are expensive for a decent one 500+ lumens. I need a way to control remote as well.
I was thinking of stealing Rollis arms and padding out with some ezybits blocks to do some simple tasks.
I ended up using a HDD servo for switch.
I like your design.
I'm still pursuing using the Roomba battery to power everything and will let you know how that turns out... using step downs for 7.5v for EZB/servos and 5v for iPad
Lumberjack time ?
500 lumens are not cheap.
I'm curious how usable are the projectors $100 and below.
Thanks to everyone on this project. I upgraded to work with Alexa and added mobile interface. I will do more as time permits.
The Alexa integration was done using web interface and ISY 99i. I use ISY to control all lighting and sensor at home. I have the ability to access X-10 and INSTEON now and it can be upgraded for others. I also use for outside X10 sensors which send text alerts but also can send commands to robots. Currently InMoov reports on sensor activity.
If you run on PC and then look at mobile interface, it will show you Roomba Voltage. On a previous post I showed that I added a MP1584 DC to Dc converter inside V4 to control high voltages from Roomba charging.
I uploaded a video to you tube. More suggestion appreciated. I am have some issues with playing songs to Roomba. I get some but crash Roomba sometimes.
Thanks for sharing the video... very nice
I'm not sure if you saw this in a previous post, but here is the link to the full Roomba interface spec
in reagrds to the playing a song issue, here is some sample code that I use
Please share some details on how you accomplished the Alexa-Roomba interface. I previously used IFTTT to handle the Alexa EZB interface
Thanks for the code.
I use ISY 99i controller with network interface. This controller gives me the ability to control all lights, X-10 and Insteon. It can handle ZigBee and ZWave too but I don't use either.
It interfaces with Alexa so you can use through the web. It also can send commands to a web page so I send http://192.168.1.122:90/exec/?password=admin&script=ControlCommand("clean",ScriptStart) to start Roomba ro run that script and http://192.168.1.122:90/exec/?password=admin&script=ControlCommand("stop",ScriptStart) to run that script
You could do this through a web page also.
But this gives me huge flexibility. I can start something at a certain time. I can read in X-10 sensors, send a command to EZ Robot and turn on lights etc.
I guess you can use IFTTT but this works for me internally.
I have many other programs ISY handles like sunrise and sunset routines etc.
BTW - That demo runs on Roomba battery with DC-Dc converter I told you about the other day.
Here is link to this unit on amazon.
Takes some work and add on modules but it does a lot of automation.
I am not sure we can send web commands from EZ V4? that would be great if possible.
Let me know if you have any more questions.
Thanks for all the great info
The sending part from Alexa looks very similar to the one I wrote up in this tutorial
If you are looking for a way to send events from EZB, take a look at the plugin I wrote for IFTTT
I really like your use of icons in your mobile interface
I'd like to suggest that you consider using Safe mode instead of Full mode as @Ellis had pointed out a problem in my original use of the Full mode
Also, if you are having intermittent issues, try adding the "Start" command per the Roomba OI spec. It seems like it really not always required
Thanks again for posting your project
Thanks for the input. I will make changes and upload.
I would really like to be able to have the ability to run scripts in mobile mode so I can monitor Roomba systems. I guess we have limited ability in that area.
I have several Roombas that I am working on. One scheduling is shot so I will use this to at least test stating on a schedule with ISY for now.
The main reason I use the ISY is for better centralized control of all IoT projects and systems.
I believe Roombas can only handle 20 KG of weight about, 20 lbs. Do you know if true?
Thanks for the help. I will be making more changes soon.
Here is some info on the payload, from someone who appears to be part of the Create 2 design team
I have been researching the problem of waking up a DOCKED sleeping Create 2 (in my case Roomba 650) for MANY days now and starting to loose hope of finding a solution. I have researched many forums besides this one and found solutions lacking except for the relay across the Clean pins mod that @rbaroni implemented or my servo pushing the clean button. Right now I've directly tapped the Roomba battery to provide the additional power for the servo and the iPad (needed for telepresence) using buck converters. My Roomba firmware is at \r\nr3-robot/tags/release-stm32-3.7.5:6216
I have tried every combination of suggested control sequences and BRC pin pulses suggested and come to the conclusion that there is a bug as suggested by this site
I have checked various other sites such as RobotReviews, Hackster.io and even the robotics.stackexchange where iRobot engineers participate.
My current workaround is to use the IFTTT Sender plugin to control a WeMo power outlet to remove the dock power for 2 minutes. After that, pulsing the BRC line low does indeed wake up a sleeping docked Roomba every time... biut its not elegant
Sometimes am getting Roomba hanging and have to pull battery out to reset. I guess I am sending something to Roomba it doesn't like. I wanted it to do some routine tasks, but finding it is a little unreliable to start on its own.
Rather then pulling the battery, try holding both the spot AND dock buttons for 10 seconds to perform a reset.
Also, rather then trying my rather complex means to disable dock power to get BRC to work when waking a sleeping Roomba, just unplug the power cord to the dock for two minutes to see if the BRC pulse wake up works for you
I'm hoping to get a couple of people to check to see if my solution really works... it's very stable for me.. it's so nice to hear the wake up song and see the green Clean light on a sleeping docked Roomba after so many failures
Can you confirm my power off in dock fix for waking a sleeping docked Roomba?
Unfortunately not at this time. The Roomba I am using would not dock so I retired and I use as a test bed at this time.
I have other Roombas but haven't had the chance to play with. I did do the manual reset and that works good.
This Roomba I cannot figure out what is wrong other than the board is going bad. I traced everything back to the board and will not dock or even charge when placed on docking station. I have 4 Roombas and it will not dock on any. I have to plug in manually so limits what I can do for now.
But it is a good test platform and everything else works on it.
I know what you are going through with used Roombas
I finally decided to buy a Create 2 so that I have a known tested standard to work with
@ellis & @nink & @robohappy can you test my manualy cutting power to the dock solution to wake a sleeping docked Roomba via BRC pulse?
Regarding the stability of a heavily loaded Roomba... I have seen a few recommendations :
* add another caster & weights on the dust bin
* remove the springs from the wheels
* Create (1) even supplied wheel clips for this purpose
Create (1) user manual
Enjoy those rays... I'm not on any schedule... I'm retired..
I'm not sure if this is what you are refering to but I had the usual issue of needing to wake the Create 2 up from a sleep and the only reliable solution I came up with is to carefully remove the top pieces and get access to the clean button. I neatly soldered two fairly thin guage wires to the switch and neatly ran them up to a relay module that activates with 3.3 volts and I control it with a digital output on the EZB Controller. Then control the relay with a simple script.
Turn relay control on
Wait 1 second (for example)
Turn relay control off
This works really well. Just make sure the relay module you use has a control current that doesn't exceed the ezb controller digital output source current. The relay modules I use have a buffer transistor between ezb controller digital output and the relay coil input so requires very little source current from ezb controller digital ouput pin. Hope this helps....Rick
I am going to get back to my create 2 soon.
Thanks for the update. I'm glad the relay worked for you. I'm going to try that now. I have been using a servo to push the Clean button
I noticed you had reported the problem on Robotics.StackExchange and several others had the same issue. The iRobot employees on that forum just seeem to think its bad cables
Recently I have been spending a lot if time trying to get the BRC pulse method to work per the iRobot Create 2 OI spec
My testing has shown that this does REALLY work BUT ONLY IF
* the robot is sleeping undocked, i.e. not charging
* the robot is fast charging, i.e. not trickle charging as it is most of the time
I could force a docked sleeping robot to respond by turning of the power for 2 minutes for the power supply caps to discharge, but this is not dependable method for a telepresence robot
thanks for the link to files for bin mod. Unfortunately I have been buying up used, broken down Roombas and people keep the dust bins!
When I get a dust bin I will print and use.
What is the max weight are you putting on the unit?
I took the inner lid off and here is a picture of what I see
I checked the contacts on SW5 with an ohmmeter and it seems that either set closes on a depression of the switch.
Which contacts did you use?
Not a fun disassembly...
and my current design supports remote operators just fine... but not much fun navigating remotely through a limited vison camera located 1000 miles away
While I wait for the availability of the EZ-Robot Lidar with SLAM, I thought I'd play with a simple waypoint to waypoint navigation approach.
Nothing really exotic here, just using multiple Roomba docking stations... not a practical solution for a large environment, but possibly OK for getting from a charging dock located out of the way of foot traffic to a location near a senior on a couch for a 2 way video chat... just manually back up a bit from the final dock to get a good video chat view
A great feature of Roomba is its ability to find and home in on a dock with a 6 foot radius... and the dock can be moved without remapping.... not easy with SLAM
Check and make sure to use the side of the switch that when you press it you get the lowest ohm reading and when you let up it reads open. It has been awhile since I did this. Just make sure and test before you put back together. Also I would use thin wire like wire wrap wire so that you can route it up through the top cover easily....Rick
In reality what we really need is the LIDAR working and a SLAM of the environment and then feed that data into the Unity plugin the team is working on in the other thread. There are commercially available LIDAR now for < $100 so I have to imagine EZ-Robot can just take one of these and adapt their plugin to work with it.
I had looked into the Virtual walls/lighthouse but for some reason I could never get my Roomba to pick up their codes through the IR sensors. I tried several. Not sure if this would also require a remote person to turn them on as I assume they turn off to save the battery
However, I could read the docking IRs through the Omni, right and left sensors.
I was thinking about writing some code to use a dock as a buoy and pass near it on my way to a final destination... e.g. see Green followed by Red as I pass by on the way out then Red followed by Green on the return
anyway, just kinda for fun awaiting SLAM
BTW, one problem your separate battery and charger solution solves is that Roomba battery will run down if the Roomba is docked with a bigger load than just the Roomba circuitry.
The trickle charger on the Roomba does NOT sense the drop in voltage due to the additional load. In fact, the Roomba OI reports current flowing out of the battery under trickle charge when the EZB is connected!
The only way to get the charger to go back into a sustained fast charge if the battery drops is to send a reset (7) command after the battery drops to about 15.5v
Ran multi meter back to the contact point on board. Checked ok back to board.
And you are correct, a lot of work to get back there.
If you have the iRobot Communication Cable for Create-2
You can connect it from your Create 2 to your Windows laptop and load the free terminal tool called PuTTY
Configure PuTTY to use your Windows COM port and pick 115200 as the baud rate rest of settings are fine
Reset your Create 2 by holding BOTH the Spot and Dock buttons for 10 seconds to reset it. When it reboots, PuTTY will display the welcome message
If you prefer to use EZB Controller to do the above, you could write a script to send the Reset (7) command and read the welcome message
I haven’t yet received an answer from the iRobot Create 2 group on what the correct version is nor how to get an update. They directed me to the non-iRobot site for answers on these types of questions
Here are the versions I found on my Create 2 and my Roomba 650
I've not seen any operational difference between them
I'm looking into using your idea of a relay across the Clean button contacts because I've found the Clean button to be something that always works.
However, I found a strange case where the Clean button doesn't work. Can you confirm this on your robot?
1. Back the robot out of the dock by pulsing the Clean button relay
2. As the robot starts the cleaning cycle, stop it by using the Movement Panel Stop, not the Clean button relay
On my robot, the clean button no longer functions, but the OI to the EZB is still working.
Thats really not a problem, because I can still use the Movement Panel to move the robot around and even dock it
If you really want the Clean button relay to have control again, just send a Stop (173) command which turns off the OI and allows the Clean button to work again
From my past posts, you are probably aware this is a major problem for any Roomba based telepresence robot, i.e. removing the need for someone on the remote end to push the Clean button to start the Roomba so that it can be remotely controlled
I purchased a standard Roomba IR Remote and added a relay that the EZB controller can activate. I can happily report that it DOES indeed wake a sleeping trickle charging Roomba on its dock. In fact, it does acts very similar to pushing the Clean button.
By using this technique, you would NOT have to disassemble the Roomba to add a relay across the Clean button contacts. You could clean up this mod by replacing the IR remote with an Arduino board with a IR LED and software.
However, I need to warn you about a couple of non-show stopping issues. The IR remote acts similar to the Clean button but not exactly the same. A short press on the Clean button turns on the green LED and a second short press starts the cleaning cycle. A long press has no effect. Short presses can be used to interrupt and restart the cleaning cycle
On the IR remote, a short pulse (500ms) will do nothing while docked, but a single long pulse (> 1500ms) will start the cleaning cycle.
You can interrupt the cleaning cycle and restart the cleaning cycle with short pulses. Long pulses just seem to toggle the green LED.
One more thing If you choose to stop the cleaning cycle using the OI movement commands from the EZB controller, which is what we really want to do for a telepresence robot, the IR pulses will no longer be able to control the Roomba. If you wish to regain control via IR, you must send a Stop (173) command
It sounds confusing, but wit works well and finally provides a means to remotely awaken a sleeping trickle charging Roomba for a telepresence Use Case
Great idea @ptp. Thanks for testing it out @frank
I've had some email discussions with the iRobot STEM Program Manager and the good news is that I now know what the pulsing BRC line didn't work... the bad news that is was never designed to work while the Roomba is docked! Even though the spec didn't point that out.
A means to remotely wake a sleeping Roomba is critical to a telpresence robot where no local power-on action manual intervention is desired.
Here are sections of the iRobot® Create® 2 Open Interface (OI) Specification based on the iRobot® Roomba® 600
On closer reading of the above, I began to wonder why iRobot would be concerned about saving battery power on a docked charging Roomba? It turns out, they weren’t! This section was meant to only apply to an UNDOCKED Roomba according to discussions I had with their STEM Program manager!
It turns out that there is yet ANOTHER power saving mode on Roombas that iRobot says was mandated to pass environmental tests, namely Reduced Power Standby Mode. Other than my discussions with iRobot, the only reference I had ever seen to this mode was for Wi-Fi based models such as the 690 or 890 but it also applies to wired 600 series
Here is how I tested their solution:
Dock the Roomba with charger
Hold BOTH the Spot & Dock buttons for 10 seconds and listen for the reset song
The OI should be responding until the Reduced Power Standby Mode kicks in
o Wait for the OI to stop responding ( this could take some time depending on battery charge state)
o If Roomba is in Fast charge mode, you will need to wait for trickle charge to occur
Hold ONLY the Spot button for 15 seconds
o The should be a descending tone song
o Send a Start (128) command
o The OI should be available for movement commands
But this didn't seem that have any advantage over a Clean button push
On top of all this, I have found that a sleeping docked Roomba will wake up every 4-5 minutes a post a message about battery status that looks like this
bat: min 530 sec 6 mV 16393 mA 758 tenths-deg-C 287 mAH 2696 state 19 mode 6
but I haven't foudn a way to use that post to send OI commands
My suggestion to anyone building a telepresence based Roomba to not try to remootely wake a docked Roomba using the OI but instead to rely on ONE of these techniques to activate the Clean button via the EZB controller:
* add a servo to push the Clean button
* add an IR sender mounted on the Roomba
* add a relay across the contacts
I have searched various DIY Roomba sites and noone has an OI soluion and iRobote confirms this behavior is by design
It turned out well and makes the Create 2 more stable... be sure to add some ballast in the bin due to the cleaning brush assembly being removed
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.
I’ll check that tonight
What is the name of the project you posted?
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
I think you are talking about these sensors
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
This my project working on for Roomba.
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.
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
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
I just added in text that looks like this
"front_left_signal= " + $front_left_signal
Thank you. I will test and get back to you on this. It looks like a good way to do it.
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.
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.
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
Here is a tip from @DJ on how that script launch works in th Mobile Interface
You can access the IR lights you see flashing in the docking station and virtual walls using these commands in the Roomba Interface
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
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?
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
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.
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
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
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 firstname.lastname@example.org referencing a post on another forum
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
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
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
In terms of the LIDAR, usually silence means we're working hard on something
Wish I could say more
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