Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Управление Roomba Create 2 через Arduino и Android: пошаговое руководство

Компоненты и материалы

Приложения

О проекте

Введение

Призёр Instructables Robotics Contest 2016 получил Roomba Create 2. Этот туториал показывает, как управлять двигателями, светодиодами и звуком через Arduino и Bluetooth-пульт на смартфоне. Дальнейшие части — сенсоры, Raspberry Pi, IoT.

Roomba Create 2: режимы OI (Open Interface)

Мы используем Safe Mode.

Последовательное подключение (Mini-DIN 7 pin)

По умолчанию 115200 бод. Нужен 19200 бод для SoftwareSerial Arduino.

Два способа смены бодрейта:

  1. При выключенном Roomba зажмите Clean/Power ~10 сек до нисходящей мелодии.
  2. Или пульсируйте пин 5 (Baud Rate Change) три раза по 50–500 мс после включения.

Схема: Arduino D10 (RX) ↔ Roomba TX, D11 (TX) ↔ Roomba RX через делитель напряжения (Roomba 5V толерантен, но лучше 3.3V логика). Пин DD (Device Detect) — D12 → Mini-DIN pin 5.

Инициализация (пробуждение и Safe Mode)

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
  delay(1000);
}

Управление LED и дисплеем

Движение

Основные команды OI:

Обёртки: drive(), driveWheels(), driveWheelsPWM(), turnCW(), driveStop().

Bluetooth-пульт (HC-06)

Основной цикл

void loop() {
  checkBTcmd();   // чтение символа из BT
  manualCmd();    // выполнение команды
}
void checkBTcmd() {
  if (BT1.available()) { command = BT1.read(); BT1.flush(); }
}
void manualCmd() {
  switch(command) {
    case 'm': startSafe(); BT1.println("Roomba BT Ctrl OK - 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); command=state; break;
    case '-': if(state=='w') motorSpeed=max(motorSpeed-10,MIN_SPEED); command=state; break;
  }
}

Ресурсы

Полный код и библиотека roombaDefines.h на GitHub. База взята из библиотеки Dom Amato (Create2).

Отличный старт для робототехники на базе промышленной платформы. Удачи!

Производственный процесс

  1. Создание аудио-эффектов, управляемых датчиками, с набором Satellite CCRMA
  2. Создание быстрой надежной системы обнаружения пожара с Samsung SAMI, Arduino UNO и Raspberry Pi
  3. Создание интернет-управляемого видеostreaming-робота на Arduino и Raspberry Pi
  4. Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
  5. Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
  6. Портативный бесконтактный термометр на Arduino Nano с Android-приложением
  7. Точное управление сервоприводом через MPU6050 (Arduino, SG90, MG996R)
  8. Бесшовное управление яркостью светодиодов с помощью Bolt IoT и Arduino UNO
  9. Модуль GPS u-blox LEA-6H 02: Интеграция с Arduino и Python
  10. Освоение распознавания и синтеза речи на Arduino Due