Bluetoothシリアル通信を使ってみよう(Pocket PC編)

作成日: 2004/7/12  最終更新日: 2005/1/18



◆概要

BlueToothは2.4G Hz帯のデジタル無線を用いた近傍通信技術として数年前から注目されてきましたが,最近になって PDA・携帯電話や各種デバイスへの搭載が進み,マイコンと接続できるモジュールなども一般に販売されるようになるなど,エンドユーザや一般の開発者が比較的容易に利用できる環境が整ってきました.

ここでは,BlueTooth GPS[Sony製 GU-BT1]と,Pocket PC[東芝製 Genio e750] + BluetoothSDカード [東芝製 Bluetooth SDカード2]を例として,SPP(Serial Port Profile)を用いた,BlueToothシリアル通信の基礎について紹介します.

サンプルソフトウェアは,.Net Compact Frameworkを用いて,PocketPC用の基本的なシリアル通信処理を実装していますので,汎用的に利用できるのではないかと思います.

図1 BlueToothGPS [Sony製 GU-BT1] と
PDA [東芝製 Genio e750]

図2 BlueTooth SDカード
[東芝製 Bluetooth SDカード2]




◆BlueToothの概要とSPP (Serial Port Profile)

BlueToothは2.4G Hz帯のデジタル無線を用いた近傍通信技術であり,約10m程度の通信範囲でアドホックなネットワークを形成し,相互に通信を行うことができます.また,BlueToothには,マウス・キーボードなどのHID(Human Interface Device),ヘッドセット,LAN,シリアルなど,さまざまなデバイスを利用するための通信規格(プロファイル)が用意されています.ここでは,最も一般的で扱いやすいSPP (Serial Port Profile)についてとりあげます.

SPPでは,BlueToothネットワーク上で仮想のシリアルポートを作り,有線のシリアル通信とほぼ同じ感覚で通信を行うことができます.一対多の同時通信などは行えませんが,小型機器同士の通信を安定して無線化することが可能ですので,機能的に十分な場合も多いと考えられます.

なお,BlueToothネットワークでは,個々のデバイスはマスタースレーブのどちらかとなります.接続を行うためには,事前にマスターとなった機器がスレーブ機器を検索し,通信対象として登録しておく必要があります.たとえば,BlueToothシリアル通信を行うためには,事前に以下のような準備が必要になります.

  1. SPP(シリアル通信)をサポートするBlueToothデバイス同士の電源をいれ,10m以内に近づける.
  2. 接続される側の機器(スレーブ)側を,Inquiry(接続要求)に応答するように設定する.(特に設定不要な場合もある)
  3. 通信を開始する機器(マスター)側で,ユーティリティやコマンドを用いてInquiry(接続要求)を通してスレーブの検索を行う.
  4. マスターは,3で発見した特定のスレーブ機器に対して,利用可能なサービスの検索を行う. この際,PINコード(パスコード)暗号化などの設定が必要なことがある.
  5. 発見されたシリアル通信サービスを,マスターの特定のCOMポートに割り当てる.
  6. シリアル接続を扱えるソフトウェアから,5で設定したポートに接続する.

PDAやPCを用いる場合,2〜5の処理は,主にユーティリティソフトウェアによって簡単に行うことができます.下記のソフトウェアの使い方の,BlueTooth通信の設定を参考にしてください.




◆サンプルソフトウェア

PocketPC上で,BlueToothのシリアル通信経由で,基本的な通信&ログ取得を行うためのシンプルなサンプルソフトウェアを作成しました.通信履歴をファイルに保存することも可能です.ソースコードも配布していますので,PocketPCで手軽にシリアル通信を行いたい場合に参考になると思います.
(確認はしていませんが,有線のシリアルポートでも利用できると思います.)

図3 シリアル通信メインパネル

図4 シリアル通信などの設定



◆ダウンロード

  • SimpleLoggerCe.zip
    実行ファイルと,PocketPCの搭載CPUに応じたインストーラー(CABファイル)を圧縮したものです.
    詳しくは下記のインストールを参照してください.(CPU種別ごとのCABファイルも用意してあります.)
  • SimpleLoggerCeSource.zip
    ソースコードです.Visual Studio .NET 2003 を用いて,C#で書かれています. Visual Studio .NET(2002)ではコンパイルできません.

◆インストール

このソフトは .NET + C# で書かれているため,事前に Microsoft .NET Compact Framework再頒布パッケージ (14.8 MB) をインストールしておく必要があります. (実際にインストールに必要なPocketPC側のメモリサイズは2〜3Mbytes程度です.)再頒布パッケージは,WindowsPCとPocketPCをActiveSyncで接続した状態で,ホストPC側で実行する必要があります.なお,.NET Compact FrameworkはPocketPC2000以前のOSでは動作しません.

下記表で紹介している,各CPUに対応した .NET Compact FrameworkのインストーラーをPocketPCにコピー&実行することでもインストールは可能です.こちらの方がダウンロードサイズは小さくなります(約2.5M).

.NET Compact Frameworkがインストールされたら, ZIPファイルを解凍し,搭載CPUに応じたCABファイルをPocketPCにコピー&実行してください.下記に,PocketPCのOS/機種毎のCPU種別を紹介します.PocketPC2002/2003は全てStrong Arm版のソフトウェアで動作します.(ソフトウェアの動作確認は,現時点ではPocketPC 2003のみで行っています.

OS

PocketPC 2002 / 2003

PocketPC 2000  
機種例 全て共通 COMPAQ iPAQ
東芝 GENIO e
CASIO CASSIOPEIA E-750/700
NTTDoCoMo G-FORT
HP Jornada525/548
CPU種別 Strong Arm MIPS SH-3
インストーラ- Strong Arm版 MIPS版 SH3版
.NETCF
インストーラー
.NET CF Strong Arm版 .NET CF MIPS版 .NET CF SH3版



インストール後,スタートメニュー→プログラム→SimpleLoggerを選択することで,ソフトウェアを起動できます.
アンインストールは, スタートメニュー→
設定→システム→プログラムの削除→SimpleLoggerを選択することで行います.


※PocketPC上の\Program Filesなどのディレクトリに実行ファイル(SimpleLogger.exe)をコピーするだけでも動作すると思います.この場合,プログラムメニューには登録されませんので,エクスプローラーなどから直接プログラムを実行してください.





◆基本的な使い方

1. BlueTooth通信の設定

- ソフトウェアを起動する前に,BlueToothの通信設定を行う必要があります.以下に,Pocket PC[東芝製 Genio e750] + BluetoothSDカード [東芝製 Bluetooth SDカード2]に,BlueTooth GPS[Sony製 GU-BT1]を接続する場合を例として,設定方法について説明します.

(1)プログラム→BlueTooth設定→ツール→周辺デバイスの検索を実行

(2)アイコンをタップ&ホールドし,
サービスの更新 を実行
(3)ダイアログに従ってPINコードを入力

(4)SPP(Serial Port Profile) サービスが表示

(5)アイコンをタップ&ホールドし,
接続登録を実行
(6)接続されるポート番号を確認

図5 BlueToothデバイスの検索とサービスの登録

2. シリアル通信の設定

-サンプルソフトウェアを起動後, 設定のタブを開き,通信する機器の設定にあわせて,ボーレート(通信速度)バイトサイズパリティストップビットフロー制御の設定を行います.( GU-BT1と接続する場合は,特に設定を変更する必要はありません.)

3. シリアル通信の開始

- メインのタブを開き,接続するポートを選択して,ログ取得開始ボタンをクリックします.接続が成功した場合は,「ポートを開きました」というメッセージが上側のテキストボックスに表示されます.
※Windows CE系では,COMポートはCOM1〜COM9までの最大9つしか利用できません.

- 通信開始後,ログ取得停止ボタンをクリックすると,接続が終了します.

4. メッセージの受信

- 受信したメッセージや,コマンドの実行結果は,メインタブ上段のテキストボックスに表示されます.なお,受信メッセージは設定タブの区切り子で設定された文字毎に改行され,新しいものほど上に表示されます.

5. メッセージの送信

- メインタブ中段のテキストボックスにメッセージを入力し,エンターキーをタップすることで,メッセージを送信できます.送信メッセージの末尾には,設定タブの区切り子で設定された文字列が追加されます.

5. ソフトウェアの終了
- メインタブの終了ボタンを押すと,ソフトウェアを終了できます.
番外: その他の設定

-設定タブのログをファイルに保存するをチェックしておくと,ファイル名で指定したファイルに通信ログを保存します.
ログファイルのサイズが最大サイズで設定した値を超えると,通信は終了されます.

-受信した文字列は,区切り子で設定した文字毎に改行されて,新しいものほど上に表示されます.
基本的には改行コード(\r, \n, \r\n)を想定しています.




◆おわりに

ここでは,BlueTooth GPS[Sony製 GU-BT1]と,Pocket PC[東芝製 Genio e750] + BluetoothSDカード [東芝製 Bluetooth SDカード2]を例として,BlueTooth SPP(Serial Port Profile)を用いた,BlueToothシリアル通信の基礎について紹介しました.

サンプルソフトウェアでは,.NET Compact Frameworkを用いて,PocketPC上で動作する基本的なシリアル通信プログラムを実装しています.モバイル環境向けのさまざまなアプリケーションを開発する際のベースとして利用できるのではないかと思います.

将来的には,もう一歩踏み込んだ具体的なアプリケーションや,マイコンを利用した単体で動作するBlueToothデバイスの製作についても紹介したいと思います.




◆参考URL
  • .Net Compact FrameworkのFAQ
    -.Net Compact Frameworkを利用した開発に必要なさまざまな情報がまとめられています.
     開発を行う前に,目を通すと役立つと思います.
  • Windows Mobile WhitePaper
    -PocketPCの開発に役立つ情報がまとめられています.
  • CEの種類について
    -WindowsCEのバージョン毎の特徴や,CPUの種類について説明されています.
  • CPUの種類について
    -こちらもPocketPCのCPUの種類について説明されています.
  • 24Term
    -PocketPCで動作するターミナルソフトです.ソースコードも公開されています.
  • Sony BlueTooth GPS
    -Sony製のBlueToothGPS[GU-BT1]の紹介ページです.
  • Bluetooth GPSユニット GU-BT1をCLIE以外で使う
    -GU-BT1がCLIE以外で使える(汎用的なBlueToothプロファイル&GPSプロトコルを使っている)ことをこちらで知りました.
  • NMEA 0813のプロトコル
    -今回直接は触れていませんが,GU-BT1で採用されているGPSプロトコル「NMEA 0813」について詳しく解説されています.


[デバイスふらり旅]