2014年8月24日日曜日

BL600のVirtual Serial Portを動かす

BL600でSPPのようなシリアル通信ができないかとさがしていたところ、公式サイトでVirtual Serial Port (vSP) Bridge and Command Modes Demonstrationというデモがあったので、同じ物を作ってみました。

BL600のソフトウェア部分はファームウェアとSmartBasicの2段構えになっていて、古いバージョンのファームウェア(1.3.57未満)でvSPを使う場合は専用のSmartBasicのコード(upass.vsp.sb)を使う必要がありました。新しいファームウェア(1.3.57以降)ではファームウェア側にその機能が取り込まれており、ジャンパ線を繋ぐだけで利用可能になります。

公式のデモ動画にSIO_7とVCCを繋ぐと、特に何もせずvSPとして動作してくれました。デモ動画では開発キットで通信していましたが、今回は手持ちのBL600にUSBシリアルを接続し、配線を同じにしたものを使用しました。Nexus4にはLaird BL600 Serial(Google Playからダウンロード)をインストールしました。
PC側はUwTerminal(BL600の開発用ツール)を起動し、USBシリアル側を開いています。 Nexus4側はアプリでConnectを押してBL600と接続しています。

PCとNexus4の間で、BL600を経由したvSPでメッセージのやりとりができました。PC側は今回はUwTerminalを使用しましたが、Linuxで一般的なcuコマンドなどでも通信できます。

気になった点として通信速度があると思います。正直なところ遅いです。メッセージがやり取りができる程度だと考えたほうが良いでしょう。
ボーレートが標準で9600となっていますが、これはAT+CFGコマンドで変更が可能です。ただ大きい数字にするとデータ化けが発生していました。

Android側のサンプルアプリであるLaird BL600 SerialはiOS版もありますので、iOSから同様の通信もできると思います。

BLEで通信する場合、GATT上で大抵のことは事足りるのでユースケースとしては疑問が残るところもありますが、シーケンシャルな通信が必要な処理や、既存の低速な有線シリアル通信を置き換えることには使えるかもしれません。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。