Asked — Edited

Robot Chassis ( Roomba Or Else)

Hello everyone,

I need some assistance in deciding on a drivetrain for my robot project.

I currently have two Roomba 600 series vacuums, which are integrated with an onboard computer via USB and COM port. However, I'm encountering an issue with waking the Roomba from sleep mode. Despite extensive research on various forums, the solutions I've found seem inconsistent. Occasionally, when the Roomba enters sleep mode, it becomes unresponsive to commands, and I have to either remove the battery or let it sit in the dark for a few minutes before it becomes operational again. Initially, I wanted the Roomba to return to its docking station for self-charging, but that’s no longer a priorityI’d prefer for it to always be available for commands.

Additionally, I have a gutted Samsung vacuum, but I'm struggling to identify which pins to use for the onboard encoders. I'm considering replacing its two 12V motors with different motors that have built-in encoders. This change could enhance navigation when paired with a LiDAR C1 and 4-6 ultrasonic sensors.

Alternatively, since I have two Roombas, I could dismantle one and use only the motors and encoders. My goal is to refine self-navigation as much as possible before incorporating additional ultrasonic sensors and other components.

I thought I’d reach out to the forums for feedback and opinions before making a decision. The project is for a TurtleBot-style robot using a circular trash can as the body. I'm not too concerned about retaining the Roomba’s original vacuuming features.

Any advice or suggestions would be greatly appreciated!


ARC Pro

Upgrade to ARC Pro

ARC Pro is more than a tool; it's a creative playground for robot enthusiasts, where you can turn your wildest ideas into reality.

PRO
Synthiam
#1   — Edited

Are you sure pulling pin 5 (brc pin) low for 500ms doesn’t power the roomba on?

*edited for correct pin

#2   — Edited

@DJ  By any chance, did you mean pin 5 instead of pin 1, since pin 1 is unregulated +Voltage?

@athena, could you provide me with an EZ script to turn the Roomba on? I'm unsure whether I should be using:

# Wake-up function in EZ-Script

Set(D3, ON)   # Set the digital port high (equivalent to digitalWrite(ddPin, HIGH))

or
# Wake-up function using PWM on digital port D3

PWM(D3, 100)  # Set PWM to 100% (full power)
#3   — Edited

*Note: we edited your post to properly put code in the code tags so it is formatted correctly and readable by others. 

DJ was incorrect. The pin to use is pin #5. I will edit DJ's post accordingly to avoid future confusion with search engines.

Your question will confuse Athena because she will attempt to fulfill the request to use PWM. However, you cannot use PWM because that's pulse width and is used for varying voltages. It's best to ask the question using the correct approach to avoid confusing her. In this case, using JavaScript, you will use the Digital.set(port, value) command.

The instructions from the Roomba manual state that you put the pin LOW for 500ms and then return HIGH.

// set pin low
Digital.set(d0, false);

// wait 500 ms
sleep(500);

// set pin high
Digital.set(d0, true);

*Note: We provided JavaScript because ezscript is deprecated, contains bugs, and has slow performance. If you have trouble learning JavaScript, we suggest using Blockly, which will generate the JavaScript for you.

This is copied and pasted from the sci manual.

 Roomba will not respond 
to any SCI commands when it is asleep. Users can wake up 
Roomba by setting the state of the Device Detect pin low for 
500ms. The Device Detect line is on the Roomba external Mini-DIN 
connector.

Here is the manual: https://cdn.hackaday.io/files/1747287475562752/Roomba_SCI_manual.pdf

User-inserted image

PRO
Canada
#4  

To wake up your Roomba using ARC, you can use JavaScript to control the digital port. Here's a step-by-step guide on how to implement this:

  1. Connect the Roomba to your EZB: Ensure that the Roomba is connected to your EZB via the correct digital port. In this example, we'll use digital port D0.

  2. Use JavaScript in ARC: Open your ARC project and add a script control where you can input JavaScript code.

  3. Implement the Wake-Up Script: Use the following JavaScript code to wake up the Roomba by setting the digital port low for 500ms and then high again.

// Set pin low to wake up Roomba
Digital.set(d0, false);

// Wait for 500 milliseconds
sleep(500);

// Set pin high
Digital.set(d0, true);
  1. Run the Script: Execute the script to wake up your Roomba.

Note: Ensure that the digital port you are using (D0 in this example) is correctly connected to the Roomba's Device Detect pin (pin #5 on the Mini-DIN connector). This script will simulate the wake-up process as described in the Roomba SCI manual.

If you have any further questions or need additional assistance, feel free to ask!


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
#5  

I did a factory reset on Roomba ( 600 series) and tried the above. It Work perfectly, thank you.

PRO
Synthiam
#6  

Woot! that's great:D I knew i was on to something. just didn't know if it was correct lol