2012年11月26日月曜日

Arduino-PC間 bluetooth接続


(製品にbluetoothドングルは含まれません)


arduinoUNOとPC間での無線通信をやってみます。
XBeeでも検討していました。
arduino-PC間通信で要るのは、
XBee ZB シリーズ2 2個 参考価格1,700円x2
コネクタ変換基板 (2mmピッチ→2.54mmピッチ) 参考価格400円
XBee USBアダプタ (PCとの接続) 参考価格1,890円
必要ならXBeeシールド 参考価格1,870円



そんなとき、ニコ動でこの動画を見つけました。

【ゆっくり解説】 Bluetoothの使い方 【電子工作】
http://www.nicovideo.jp/watch/sm19375604

bluetoothのSPPプロファイルでシリアル通信をするので、難しいことは無さそう。
要るもの
PC用bluetoothドングルx2 1個1,000円前後(ノートPCに内蔵されているなら1個)
ランニングエレクトロニクスSBDBT 2,980円
  (シリアル-bluetooth変換モジュール、bluetoothドングルは別売り
を購入。

PC側のbluetoothは元からあったBT-Micro3E1X(class1 v3.0+EDR対応)
arduino側も同じ物を追加購入。違うのにすればよかった(理由後述)
SBDBTは3.3Vバージョン。
3.3V、5V両対応バージョンは1,000円高くなるSBDBT5V。
ファームウェアはSPPサーバーが書き込まれており、すぐにシリアル通信が可能に。
pickit3という書き込み機で書き換えればwiiリモコン、PS3コントローラも使えるとのこと。

まずはペアリングから。
bluetoothドングルをSBDBTに挿しブレッドボードに挿します。
arduinoから3.3Vを供給。
しばらくするとPC側に認識されました。
v3.0+EDRだからでしょうか。ペアリングコードの入力なしでOKでした。

(win7の画面) 
シリアルポートをインストールするボタンを押すとポートが追加されました。
デバイスマネージャにCOMとして認識されています。

SBDBTはフロー制御がハードウェアになっているけど、CTS-RTSをショートさせれば、PC側はフロー制御なしでOK。
SBDBTのファームウェアの書き換えでもできるそうです。
あとは、arduinoのD0(RX)-SBDBT7番、D1(TX)-SBDBT8番をつなぐだけ。
(5Vがつながっているのは奥のモジュールだけ)

PC側の通信ソフトやarduinoIDEのCOMポートを仮想COMポートに変更すれば、スケッチを変更すること無く通信ができていると思います。

配線は正常なのに通信ができない、文字化けしているという方は次を確認。

マイクロソフトや東芝のスタックだと、仮想シリアルポートの通信速度を変更すると、arduino側も自動的に変更されるようですが、BT-Micro3E1Xはモトローラのスタックを使っているためそれができません。
しかも、PC側の通信ソフトやarduinoIDEのシリアルモニタを2400bpsにしないと文字化けします。
2400bpsに設定すると、実際には9600bpsで通信しているということです。
サポート掲示板
http://runele.bbs.fc2.com/?act=reply&tid=3700658
(ユーザーズマニュアルより)

arduino側9,600bpsの場合、PC側は2,400bpsに。
正常にしたい場合は、ファームウェアの書き換えが必要です。
スケッチのアップロードは、今まで通りUSB接続で行います。
その時は、SBDBTとの接続(D0だけでOK)を切ること。
電源を切ってもいいですが、再接続に時間がかかります。COMポートの切り替えも忘れずに。
これはXBeeでも同じですね。
無線でスケッチが書き込めると楽なんですが。

USBを切ってアップロードを試してみましたが、ダメでした。
DTR信号による自動リセットが無いせいかと思い手動リセットを数回試しましたが無理。
UNOのスケッチのアップロードは115kbpsのせいかも知れませんが、確認できず。

ファームの書き換えをしたくないなら、モトローラ製スタック採用のドングルは避けたほうがいいかも知れません。
SPP、3.3Vに対応しているのかも確認したほうがいいでしょう。

PC側がドングル1個だけなので、XBeeみたいに飛び出てなくていいですね。
bluetooth内蔵ノートPC、内蔵スマホ、内蔵タブレット持っていれば追加投資、つなぎ変えなしで接続できていいんじゃないでしょうか。

XBeeには高出力版やwi-fi版などあるのでその機能が要るならそちらで。

環境:arduinoUNO、arduino1.0.2、win7



0 件のコメント:

コメントを投稿