工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ArduinoとAndroidでRoomba Create 2をリモコン操作 ─ Bluetooth経由のステップバイステップガイド

必要な部品と材料

部品数量
iRobot Roomba Create 21
Arduino UNO1
HC-06 Bluetoothモジュール1
タクトスイッチ1

使用アプリ

プロジェクト概要

ArduinoとAndroidでRoomba Create 2をリモコン操作 ─ Bluetooth経由のステップバイステップガイド

Instructablesロボティクスコンテスト2016の受賞賞品として入手したRoomba Create 2 (約2万円) を、ArduinoとAndroidアプリでリモコン操作するプロジェクトです。Create 2はシリアルポート(Open Interface)で全制御可能で、将来的にはRaspberry Piでインターネット接続も視野に入れています。

Roomba Create 2の概要

シリアル接続とボーレート変更

RoombaのMini-DINコネクターとArduinoをソフトウェアシリアル(D10/D11)で接続。デフォルト115,200bpsだが、Arduinoソフトウェアシリアルでは不安定なため**19,200bpsに変更**必須。

変更方法(2通り):

  1. 電源OFF状態でCleanボタンを10秒長押し → 下降音が鳴れば19,200bps固定 (電池切れまで)
  2. Mini-DINピン5 (BRCピン) を起動後2秒待ってLowパルス×3回 (50-500ms幅)

起動シーケンス

void wakeUp() {
  setWarningLED(ON);
  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);
}

LED・ディスプレイ制御

移動制御コマンド

ヘルパー関数で前進/後進/左右旋回/停止/その場回転等を実装。テスト用にタクトスイッチ(D12)を押すまで待機する仕組みをsetupに入れると安全。

Bluetoothリモコン化 (HC-06 + Androidアプリ)

ArduinoとAndroidでRoomba Create 2をリモコン操作 ─ Bluetooth経由のステップバイステップガイド
  1. HC-06をハードウェアシリアル(D0/D1)またはソフトウェアシリアルで接続
  2. HC-06のボーレートをATコマンド(AT+BAUD5)で19,200bpsに変更
  3. Androidアプリ「MJRoBot BT Remote Control」をインストール

アプリのボタン割り当て

キー動作
w前進
s後退
a左旋回
d右旋回
f停止 (STOP表示)
mSafeモード再開 (崖検知等で止まった時の復帰)
+ / -速度アップ/ダウン (前進時のみ)

メインループ (Bluetoothコマンド処理)


void loop() {
  checkBTcmd();  // BT受信チェック
  manualCmd();   // コマンドに応じた動作
}

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); break;
    case '-': if(state=='w') motorSpeed=max(motorSpeed-10,MIN); break;
  }
}

今後の展開

このチュートリアルは基本の移動制御まで。今後はセンサー読み取り、Raspberry Pi連携によるインターネット制御、マッピング・ナビゲーション機能の追加を予定しています。

完全なコードと関連ドキュメント:
GitHubリポジトリ

参考ライブラリ:Dom Amato氏作 Create2ライブラリ

製造プロセス

  1. Satellite CCRMAキットでセンサー駆動オーディオエフェクトを構築
  2. Samsung SAMI、Arduino UNO、Raspberry Piで高速・信頼性の高い火災検知システムを構築
  3. Arduino & Raspberry Pi でインターネット制御ビデオストリーミングロボットを構築
  4. Arduinoと1Sheeldで作る万能Androidリモコン──IR制御で家電を一括操作
  5. ArduinoとHC-SR04で作るサーボ駆動障害物回避ロボット
  6. Android連携の低コスト携帯型非接触体温計(MLX90614+Arduino Nano)
  7. Arduino & MPU6050:SG90 & MG996Rサーボの精密制御
  8. Bolt IoTとArduino UNOでLED輝度をシームレス制御
  9. u-blox LEA-6H 02 GPSモジュール: Arduino & Python 統合ガイド
  10. Arduino Dueでマスターする音声認識と音声合成
  11. Arduino Unoで8×8 LEDマトリックスを制御:ステップバイステップガイド