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

スマホのGセンサーで操作するBluetoothロボットカー:ArduinoとRemoteXYで実現

必要な部品と材料

部品 数量 備考
Arduino UNO(または互換ボード) 1 メイン制御
HC-06 Bluetoothモジュール 1 スマホとの無線通信(HC-05も可)
L298N モータードライバーIC/モジュール 1 DCギアモーター2台駆動用
2輪ロボットカープラットフォーム 1 シャーシ、ギアモーター、車輪含む
電源用バッテリー(例:7.4V LiPoや9V角形電池) 1 モーターとArduino用

使用アプリ・オンラインサービス

プロジェクト概要

スマートフォンの加速度センサー(Gセンサー)をジョイスティックとして使い、Bluetooth経由でロボットカーを直感的に操作するプロジェクトです。RemoteXYというサービスを利用することで、アプリ側のGUI設計とArduino側の通信コードを自動生成でき、専用アプリ開発なしでスマホ操作を実現できます。

スマホのGセンサーで操作するBluetoothロボットカー:ArduinoとRemoteXYで実現
完成したGセンサー操作ロボットカー

製作手順

Step 1: ハードウェア組み立て

市販の2輪ロボットカーキットを組み立て、以下のように配線します。

スマホのGセンサーで操作するBluetoothロボットカー:ArduinoとRemoteXYで実現
電子部品の接続図

Step 2: RemoteXYでGUI作成

  1. RemoteXYエディターを開く
  2. 「New Project」→ 接続タイプ「Bluetooth」を選択
  3. コントロールパネルに「ジョイスティック」を配置し、プロパティで「G-sensor」モードを有効化
  4. 必要に応じてスイッチ(LED制御用等)を追加
  5. 「Get source code」ボタンでArduinoスケッチを生成・ダウンロード
スマホのGセンサーで操作するBluetoothロボットカー:ArduinoとRemoteXYで実現
RemoteXYエディターでのGUI設計例(ジョイスティックをG-sensorモードに設定)

Step 3: ライブラリ導入とスケッチ準備

  1. RemoteXYライブラリ(RemoteXY.h)をArduino IDEにインストール
  2. ダウンロードしたスケッチを開き、一度コンパイル・書き込みしてBluetooth接続を確認
  3. この段階ではモーター制御コードは含まれていないので、次のステップで追加

Step 4: モーター制御機能の追加

生成されたスケッチのRemoteXY構造体には、ジョイスティックのX/Y値(-100〜100)とスイッチ状態が格納されます。これらを用いて左右モーターのPWM値を計算し、L298Nを駆動する関数Wheel()を実装します。

Step 5: スマホアプリで操作

  1. RemoteXYモバイルアプリをインストール
  2. アプリ起動後、BluetoothボタンからHC-06(通常「HC-06」や「INVOR」と表示)を選択してペアリング
  3. ジョイスティック画面でスマホを傾けると、カーが対応する方向に移動

完成スケッチ(モーター制御統合版)

/////////////////////////////////////////////
// RemoteXY include library
/////////////////////////////////////////////
#define REMOTEXY_MODE__SOFTWARESERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>

#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600

unsigned char RemoteXY_CONF[] = {
  3,0,23,0,1,5,5,15,41,11,
  43,43,1,2,0,6,5,27,11,5,
  79,78,0,79,70,70,0
};

struct {
  signed char joystick_1_x; // -100..100
  signed char joystick_1_y; // -100..100
  unsigned char switch_1;   // 1=ON, 0=OFF
  unsigned char connect_flag;
} RemoteXY;

/////////////////////////////////////////////
// Motor pin definitions
/////////////////////////////////////////////
#define PIN_MOTOR_RIGHT_UP 7
#define PIN_MOTOR_RIGHT_DN 6
#define PIN_MOTOR_RIGHT_SPEED 10
#define PIN_MOTOR_LEFT_UP 5
#define PIN_MOTOR_LEFT_DN 4
#define PIN_MOTOR_LEFT_SPEED 9
#define PIN_LED 13

unsigned char RightMotor[3] = {PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN, PIN_MOTOR_RIGHT_SPEED};
unsigned char LeftMotor[3]  = {PIN_MOTOR_LEFT_UP,  PIN_MOTOR_LEFT_DN,  PIN_MOTOR_LEFT_SPEED};

void Wheel(unsigned char *motor, int v) {
  if (v > 100) v = 100;
  if (v < -100) v = -100;
  if (v > 0) {
    digitalWrite(motor[0], HIGH);
    digitalWrite(motor[1], LOW);
    analogWrite(motor[2], v * 2.55); // 0-100 → 0-255
  } else if (v < 0) {
    digitalWrite(motor[0], LOW);
    digitalWrite(motor[1], HIGH);
    analogWrite(motor[2], (-v) * 2.55);
  } else {
    digitalWrite(motor[0], LOW);
    digitalWrite(motor[1], LOW);
    analogWrite(motor[2], 0);
  }
}

void setup() {
  pinMode(PIN_MOTOR_RIGHT_UP, OUTPUT);
  pinMode(PIN_MOTOR_RIGHT_DN, OUTPUT);
  pinMode(PIN_MOTOR_LEFT_UP, OUTPUT);
  pinMode(PIN_MOTOR_LEFT_DN, OUTPUT);
  pinMode(PIN_LED, OUTPUT);
  RemoteXY_Init();
}

void loop() {
  RemoteXY_Handler();
  digitalWrite(PIN_LED, RemoteXY.switch_1 ? HIGH : LOW);
  // 差動駆動: Y軸=前進/後退, X軸=旋回
  Wheel(RightMotor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x);
  Wheel(LeftMotor,  RemoteXY.joystick_1_y + RemoteXY.joystick_1_x);
}

回路図

スマホのGセンサーで操作するBluetoothロボットカー:ArduinoとRemoteXYで実現
全体回路図

ポイントとトラブルシューティング

拡張アイデア

製造プロセス

  1. Bluetooth 制御 Raspberry Pi ロボットに音声フィードバックを追加して構築
  2. Pythonで作るWi-Fi制御Raspberry Piロボット - ステップバイステップガイド
  3. ArduinoだけでDTMFデコーダーを構築 – 外付けIC不要
  4. Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
  5. SERENA:Arduino Mega 2560とTFT LCDタッチスクリーン搭載カスタムアラームシステム
  6. Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
  7. Android加速度センサーで操作するラジコン車両:Raspberry Pi・Arduino・モーターシールド連携
  8. 古いラジコンカーをXboxコントローラーで操作可能に - ArduinoとUSBホストシールドで実現
  9. Arduino Nanoで音声制御ロボットを自作
  10. MobBob:Arduino製ロボットをAndroidスマホでシームレスに制御
  11. Python 3からArduino UNOを制御 – シリアル通信でLED点滅デモ