2015年5月17日日曜日

arduinoとraspberry pi間のbluetooth接続



参考文献

Raspberry Pi関係



Arduino関係

参考文献というか,ソースそのもの.

Arduino

Bluetoothアダプタ

むか~し買った,planexのbluetoothアダプタ(古すぎて機種名など不明)

実験用本体

  • Arduino ADK (古いから3.0じゃないよ)
最終的には,実験などで使わないようなものを実用系システムに回したいので,ADKではなく,一番使われていないものと後で変更(予定)

最終予定本体

  • Arduino Mega 2560 (こちらも結構古い機体)

USBホストシールド


本当に使えるか否か,未だ未確認.


Raspberry pi

本体

piは自宅で遊び用にしていたが,pi2が出たためそちらも購入.piをセンサ用に流用しようと仕込み中.先日(2015年5月)に秋月の店頭ではmodel B+とPi2の両方が売っていた.

Bluetoothアダプタ

家のごく近所(徒歩3分ぐらい?)のところのヤマダ電機でバッファローのBLEアダプタを購入.箱とか捨てたので,こちらも機種名などは不明.今のところ問題なく動作している.

準備

Raspberry Pi

ソフトのインストール

使っているのはraspbianなんで,普通に「apt-get」する.GUI不要なのでインストールするのは最小限にする.


# apt-get install bluetooth bluez-utils


不具合修正


参考文献「http://d.hatena.ne.jp/yunoya/20140330/1396114048」と同じ問題が出たので以下の修正を実施.bluez-simple-agentの


capability = "KeyboardDisplay"



capability = "DisplayYesNo"

に変更.

Arduino

USBシールド用ライブラリをダウンロードして,添付されているBluetooth用のsppプロファイル向けのサンプルプログラムを入れれば,動作の確認まで可能.

USBシールドのライブラリ(https://github.com/felis/USB_Host_Shield_2.0)をarduinoのIDEに登録すると,サンプルプログラムが利用できる.

USB_Host_Shield_2.0/examples/Bluetooth/SPPが今回使うサンプルプログラム.

このプログラムでは接続確立後に,PCとarduinoからデータを送り合って,相手から届いたデータを画面に出すことができる.arduinoの場合,シリアルモニタ画面を開いて,入力窓からテキストを入れると,Raspberry Piのアプリからそのデータを拾うことができる.

接続

まずは,Bluetoothのデバイスの接続


# bluez-simple-agent hci0 <MACアドレス>
DisplayPasskey (/org/bluez/XXXX/hci0/dev_<MACアドレス>, YYYY)
Release
New device (/org/bluez/XXXX/hci0/dev_<MACアドレス>)
# 

次はBluetoothのシリアルプロファイルを使えるようにする


# rfcomm bind 1 <<MACアドレス>>
 

動作の確認

次のコマンドでarduinoから送られるデータが表示される.

# cat /dev/rfcomm1


0 件のコメント: