ArduinoとBitVoicer Serverで作る2輪音声制御ロボット
概要
Arduino UNO、Pololuデュアルモータードライバーシールド、Microchip RN171VX WiFiモジュール、プリアンプ付きエレクトレットマイク、BitVoicer Serverを組み合わせ、音声コマンドで前進・後退・旋回・幾何学図形描画等を行う2輪ロボットを製作しました。音声認識の重処理をPC側のBitVoicer Serverにオフロードし、Arduinoは音声取得・ストリーミング・モーター制御に専念するアーキテクチャです。
システム構成と信号フロー
- マイクで音声を拾い、ブレイクアウト基板で増幅
- Arduino ADCでデジタル化・バッファリング
- RN171VX経由でWiFi経由でBitVoicer Serverへストリーミング
- Serverで音声認識し、定義済みコマンド(バイト値)をArduinoへ返信
- Arduinoでコマンドをデコードし、モータードライバーへ速度・方向・時間を指示
主要ハードウェア
| 部品 | 概算費用 | 備考 |
|---|---|---|
| Arduino UNO R3 | $25 | DUEなら音声応答も可能 |
| Pololu Dual MC33926 Motor Shield | $29.95 | 5-28V, 3A継続。PWMピン9,10使用(Timer2不使用でBVSMicと非競合) |
| SparkFun XBee Shield | $14.95 | RN171VX搭載用 |
| Microchip RN171VX WiFiモジュール | $34.95 | シリアルコマンドで設定可、XBeeフォームファクター |
| SparkFun Electret Mic Breakout | $7.95 | アナログ出力、100倍増幅推奨 |
| BitVoicer Server 1.0ライセンス | $8.90 | PCインストール必須 |
| 2WDシャーシキット | $15.95 | ギア比1:48モーター、エンコーダーディスク付属 |
| LM1117 3.3Vレギュレーター、10μFコンデンサー | ~$2.3 | WiFi送信時のピーク電流対策でADC基準電圧を分離 |
| LED×4、330Ω抵抗×4、単3電池×4、9V電池、ジャンパー線等 | - | ステータス表示、電源、配線 |
製作のポイント
WiFiモジュールのセットアップ
RN171VXはシリアルコマンドで全設定可能。Arduinoスケッチ(WiFi Module Setup)でSSID、パスフレーズ、固定IP、通信パラメータを送信。XBeeシールドのスイッチをDLINE↔UARTで切替えて書込み・動作を切替え。
ノイズ対策
WiFi送信時のADCノイズ(無音時にレベル35まで上昇)を、シールド上に3.3Vレギュレーターと10μFコンデンサーを実装し、マイクとADCの電源を分離することで解決。マイクスタンドにフェルト・スポンジで防振対策も施行。
動作精度向上のための工夫
エンコーダーディスクはキットに付属だが未使用。回転センサーや超音波センサーを追加すれば距離・角度制御の精度が大幅向上。現状はモーター駆動時間(ミリ秒)で距離を近似(例:13.7cm/s @ 62.5%速度 → 1m = 7299ms)。三角関数で弧・旋回時間を計算。
ソフトウェア構成
Arduinoスケッチ(BVS_Demo3.ino)
BVSP・BVSMicクラスでBitVoicerプロトコル・音声ストリーミング処理- 40種類の基本コマンド(バイト値0-39)を
RunCommand()のswitch文で処理。速度設定(遅/標準/速)、前進距離(1cm〜3m)、後退、旋回(10°〜360°)、円運動、戻る、複合動作等 cmdDuration/cmdStartTime/cmdRunningで非ブロッキング実行管理- TCP接続管理:
Connect()/Disconnect()でコマンドモード⇔データモード切替、ステータスタイムアウトで再接続 - LEDステータス:Server稼働、データ転送、SRE割当、アクティベーション期間の4項目
BitVoicer Server側(Voice Schema)
- デバイス「ArduinoUnoWiFi」をTCP/IP(固定IP)で登録
- アクティベーションワード認識時のStart/EndキューでLED制御用Int16送信
- 同一動作へ複数文をマッピング(例:「move forward one meter」と「go forward one meter」)
- 複合コマンド(正方形・三角形・円描画)は基本コマンドを遅延指定でシーケンス実行
- ソリューションオブジェクトファイル(
Device.sof,VoiceSchema.sof)で一括インポート可能
動作確認と課題
音声認識率は高いが100%ではない。移動精度はオープンループ制御のため誤差が蓄積。エンコーダーや超音波センサー追加で改善見込み。BitVoicer Serverのライセンス費用($8.9)以外は一般的なパーツで構成可能。
製造プロセス
- Bluetooth 制御 Raspberry Pi ロボットに音声フィードバックを追加して構築
- Arduino & Raspberry Pi でインターネット制御ビデオストリーミングロボットを構築
- Python連携で信頼性向上: Arduino RFID勤怠管理システム
- NeoPixelリングとArduinoで作るインタラクティブジャイロスコープLEDディスプレイ
- Android加速度センサーで操作するラジコン車両:Raspberry Pi・Arduino・モーターシールド連携
- ArduinoとHC-SR04で作るサーボ駆動障害物回避ロボット
- ArduinoとAndroidでRoomba Create 2をリモコン操作 ─ Bluetooth経由のステップバイステップガイド
- Arduinoベースのヌンチャク操作6自由度ロボットアームキット
- Arduino Nanoで音声制御ロボットを自作
- 音声で家電を操作:GoogleアシスタントとBluetoothでArduino家電制御
- Arduino Dueでマスターする音声認識と音声合成