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:
- Hardware knop: Houd Clean/Power ingedrukt tijdens uitschakelen ~10 sec tot afdalende toon speelt. Blijft 19.200 baud tot accu leeg of OI commando.
- 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:
| w | Vooruit |
| s | Achteruit |
| a | Links |
| d | Rechts |
| f | Stop |
| m | Safe 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
- Sensor-gestuurde Audio-effecten Bouwen met de Satellite CCRMA Kit
- Een Snel, Betrouwbare Brandsdetectiesysteem Bouwen met Samsung SAMIIO, Arduino UNO & Raspberry Pi
- Bouw een Internet-gecontroleerde Video-streamende Robot met Arduino & Raspberry Pi
- Universele Android-afstandsbediening bouwen met Arduino, 1Sheeld en IR-besturing
- Servo-gestuurde obstakelvermijdende robot: Bouw met Arduino & HC-SR04
- DIY goedkope draagbare thermometer met Android-integratie
- Arduino & MPU6050: Precieze Servomotor Besturing met SG90 & MG996R
- Naadloze LED-dimmer met Bolt IoT en Arduino UNO
- u-blox LEA‑6H GPS Module: Arduino & Python Integratie Handleiding
- Spraakherkenning & Synthese Meesteren op Arduino Due
- Een 8×8 LED-matrix beheersen met Arduino Uno: Stap-voor-stap handleiding