Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bestuur Je Roomba Create 2 Met Arduino En Android: Stapsgewijze Handleiding

Onderdelen en Benodigdheden

iRobot Roomba Create 2 1
Arduino UNO 1
HC-06 Bluetooth Module 1
Drukknop (voor motor test) 1

Apps en Online Diensten

  • MJRoBot BT Remote Control (Android app, gratis via Google Play)

Over Dit Project

De Roomba Create 2 (ca. $200) is een uitstekend platform voor robotica ontwikkeling. Deze tutorial laat zien hoe u de Arduino via de seriële poort met de Roomba verbindt, motoren, LED's en geluid aanstuurt, en via Bluetooth met een Android app bestuurd.

Stap 1: Benodigdheden

Zie tabel boven. Totaal kostprijs: Create 2 (~$200) + Arduino + BT module + knop.

Stap 2: De Roomba Create 2

Specificaties:

  • Differentieel aandrijving (2 wielen + voorste zweefwiel)
  • Max snelheid: 500 mm/s
  • 4× 7-segment displays, 5 LED's (Clean, Spot, Dock, Warning, Dirt)
  • Sensoren: 4 kliffendetectors, 2 botsdetectors, wielencoders

Programmeer Modi (Open Interface - OI):

  • Passive Mode: Alleen sensor data lezen, geen actuator controle.
  • Safe Mode: Volledige controle, maar veiligheidsfuncties actief (lading, klif, wielval → stopt motoren, gaat naar Passive).
  • Full Mode: Volledige controle, alle veiligheidsfuncties uitgeschakeld.

Referentie: iRobot® Create® 2 Open Interface (OI) specificatie.

Stap 3: Seriële Verbinding

Roomba communiceert standaard op 115.200 baud. Voor Arduino moeten we dit verlagen naar 19.200 baud.

Twee manieren om baudrate te wijzigen:

  1. Hardware knop: Houd Clean/Power ingedrukt tijdens uitschakelen ~10 sec tot afdalende toon speelt. Blijft 19.200 baud tot accu leeg of OI commando.
  2. Baud Rate Change Pin (Mini-DIN pin 5): Na aanzetten 2 sec wachten, dan 3× pulseren (50-500 ms laag).

Aansluiting Arduino ↔ Roomba Mini-DIN (7-pin):

  • Arduino TX (D1) → Roomba RX (pin 4) – via spanningsdeler 5V→3.3V!
  • Arduino RX (D0) → Roomba TX (pin 3) – direct OK (3.3V is HIGH voor Arduino)
  • Arduino D2 → Roomba Device Detect (pin 5) – voor wake-up
  • GND ↔ GND (pin 6)

Stap 4: Roomba Opstarten

void wakeUp() {
  digitalWrite(ddPin, HIGH); delay(100);
  digitalWrite(ddPin, LOW);  delay(500);
  digitalWrite(ddPin, HIGH); delay(2000);
}

void startSafe() {
  Roomba.write(128); // START
  Roomba.write(131); // SAFE MODE
  delay(1000);
}

Stap 5: LED's en Display Sturen

LED's (Opcode 139)

  • Power LED: kleur (0=groen, 128=oranje, 255=rood) + intensiteit (0-255)
  • Spot, Dock, Warning, Dirt: aan/uit via bitmask
void setPowerLED(byte color, byte intensity) { ... }
void setDebrisLED(bool on) { ... }
// etc.

Display (4× 7-segment)

  • Opcode 163: Raw cijfers (0-9 per digit)
  • Opcode 164: ASCII benadering (letters/symbolen)
void setDigitLEDs(byte d1, byte d2, byte d3, byte d4) { ... }
void writeLEDs(char a, char b, char c, char d) { ... } // bv. writeLEDs('s','t','o','p');

Stap 6: Roomba Bewegen

Hoofdcommando's:

  • 137 Drive: Snelheid (mm/s) + Straal (mm)
  • 145 Drive Direct: Links/Rechts snelheid (mm/s), + = vooruit, - = achteruit
  • 146 Drive PWM: PWM waarden (-255 tot 255)

Helper Functies:

void drive(int velocity, int radius) { ... }
void driveWheels(int right, int left) { ... }
void driveWheelsPWM(int rightPWM, int leftPWM) { ... }
void turnCW(int velocity, int degrees) { drive(velocity, -1); delay(6600); drive(0,0); }
void driveStop() { drive(0,0); }
void driveLeft(int speed) { driveWheels(speed, 0); }
void driveRight(int speed) { driveWheels(0, speed); }

Stap 7: Bluetooth Besturing

HC-06 Configuratie

Standaard 9600 baud → wijzigen naar 19200 via AT commando: AT+BAUD5.

Aansluiting: HC-06 TX → Arduino RX (D0), HC-06 RX → Arduino TX (D1) via spanningsdeler. VCC→5V, GND→GND.

Android App: MJRoBot BT Remote Control

Gratis in Play Store. Stuurtekens per knop:

wVooruit
sAchteruit
aLinks
dRechts
fStop
mSafe Mode herstart (na cliff/wielval)
+Snelheid +10
-Snelheid -10

Arduino Loop Logica

void loop() {
  checkBTcmd();   // Lees BT commando
  manualCmd();    // Voer actie uit
}

void checkBTcmd() {
  if (BT1.available()) {
    command = BT1.read();
    BT1.flush();
  }
}

void manualCmd() {
  switch (command) {
    case 'm': startSafe(); BT1.println("Safe mode"); playSound(3); break;
    case 'f': driveStop(); writeLEDs('s','t','o','p'); break;
    case 'w': drive(motorSpeed, 0); writeLEDs(' ','g','o',' '); break;
    case 'd': driveRight(motorSpeed); writeLEDs('r','i','g','h'); break;
    case 'a': driveLeft(motorSpeed); writeLEDs('l','e','f','t'); break;
    case 's': drive(-motorSpeed, 0); writeLEDs('b','a','c','k'); break;
    case '+': if (state=='w') motorSpeed = min(motorSpeed+10, MAX_SPEED); break;
    case '-': if (state=='w') motorSpeed = max(motorSpeed-10, MIN_SPEED); break;
  }
}

Stap 8: Conclusie

Volledige code en documenten op GitHub: Roomba_BT_Ctrl.

Dit is een startpunt. Toekomstige projecten: Raspberry Pi integratie, internet connectiviteit, sensor data uitlezen. Basisbibliotheek gebruikt: Create2 Library by Dom Amato.

Voor meer projecten: MJRoBot.org (Portugees).

Productieproces

  1. Sensor-gestuurde Audio-effecten Bouwen met de Satellite CCRMA Kit
  2. Een Snel, Betrouwbare Brandsdetectiesysteem Bouwen met Samsung SAMIIO, Arduino UNO & Raspberry Pi
  3. Bouw een Internet-gecontroleerde Video-streamende Robot met Arduino & Raspberry Pi
  4. Universele Android-afstandsbediening bouwen met Arduino, 1Sheeld en IR-besturing
  5. Servo-gestuurde obstakelvermijdende robot: Bouw met Arduino & HC-SR04
  6. DIY goedkope draagbare thermometer met Android-integratie
  7. Arduino & MPU6050: Precieze Servomotor Besturing met SG90 & MG996R
  8. Naadloze LED-dimmer met Bolt IoT en Arduino UNO
  9. u-blox LEA‑6H GPS Module: Arduino & Python Integratie Handleiding
  10. Spraakherkenning & Synthese Meesteren op Arduino Due
  11. Een 8×8 LED-matrix beheersen met Arduino Uno: Stap-voor-stap handleiding