IMBLEを使ってみた

皆さんこんにちは!
今回は、インタープラン株式会社様の「IMBLE」を使ってみました。このモジュールは2.4GHz帯のBluetooth・ローエナジーを搭載したモジュールです。(一般的にはBLEモジュールと呼ばれています。)IMBLEにはSPP(シリアルポートプロファイル)ライクの通信プロトコルが搭載されていて、インタープラン様の独自コマンドと組み合わせて簡単にデータ通信端末(Bluetoothで言う所のペリフェラル側)を作る事が出来ます。セントラル側(スマホ側)は用途に合わせてアプリを作る必要が有りますが、実験的にはインタープラン様の方で簡易ターミナルを作っていただいておりますので、これを利用してIMBLEを動かしてみたいと思います。
説明は、
 ・用意するもの
 ・事前設定
 ・実験
の順に進めて行きます。

準備

1.用意するもの

IMBLE 1台

IMBLE表面
IMBLE表面
IMBLE裏面
IMBLE裏面

IMBLE-ADP 1台
周辺回路をユニバーサル基板上に組みますので、IMBLEの信号を2.54mmピッチに変換してくれるIMBLE-ADPを使います。(JP2とJP4のみ短絡、その他は開放)

IMBLE-ADP表面
IMBLE-ADP表面
IMBLE-ADP裏面
IMBLE-ADP裏面

・IMBLE用実験回路(手作り)
IMBLEをIMBLE-ADPに載せ、周辺部品をユニバーサル基板上に実装しています。実験回路図はクリックすると拡大したものが別ページで開きます。
拡大した回路の写真、USB-シリアル変換ケーブルの接続方向についても説明しています。

IMBLE実験回路
IMBLE実験回路
実験回路図
実験回路図(クリックで拡大)

・USB-シリアル変換ケーブル(3.3V用) 1本
基板に接続する側はインターフェース電圧が5Vの物と3.3Vの物が市販されていますが、今回は3.3Vの物を使います。
自作される方は大抵ご存じだと思いますが、秋葉原の秋月電子通商様等で販売されています。型式:TTL-232R-3V3(FTDI製)

USB-シリアル変換ケーブル(3.3V用)
USB-シリアル変換ケーブル(3.3V用)

・PC 1台
・PC用ターミナルソフト (TeraTermなど)
IMBLEへデータを送信したり、受信したデータを表示するために必要です。

・対向通信用スマホ又はタブレット(アンドロイド端末又はiOS搭載機)
IMBLEからのデータを受けるための端末。インタープラン様の方でテスト用の簡易ターミナルソフトが用意されていますので予めインストールしてください。今回の実験ではレノボ製のアンドロイドタブレットを使いました。(Android9)

おまけ
今回はBUSYLEDの観測やスリープの動作をしてみるために実験回路を組みましたが、IM920IM920sの様にIM920-USB又はIM315-USB-RXを使ってIMBLEを動かす事が出来ます。IMBLEIMBLE-ADP(JP2とJP4のみ短絡、その他は開放)に載せ、それをIM920-USB又はIM315-USB-RXに繋ぎ、PCと接続してTeraTermで動かす事が出来ます。フロー制御(ハードフロー)は使わない状態にしておく必要が有ります。ハードフローを有効にしてしまいますと、IMBLEを初期化後、何らかのコマンドを送り込むとIMBLEのBUSY端子がHighになり、IM920-USB又はIM315-USB-RXの内部の配線により、PC側から見たCTS端子が非アクティブとなってしまい、その後のコマンドが送り込めなくなります。しかし、TeraTermのハードフローを無効にしておけばCTSを無視してくれるのでIMBLEのBUSY端子がHighになっていても問題なく通信が出来ます。但し、PC側のRTSはLow(アクティブ)になっていないとIMBLEがスリープに入ってしまいます。今回実験で用いているTeraTerm(Ver.4.103)では、ハードフローを有効にしてあっても無効にしてあっても、RTS端子がLow(アクティブ)になっているので問題なく通信が出来ますが、ターミナルソフトによってはこの辺の動作に違いが有るかも知れません。IM920-USB又はIM315-USB-RXを使ってIMBLEを動かす場合はご注意下さい。

2.事前設定

2-1.通信条件の設定
TeraTermを使った場合の端末設定、シリアル通信設定を以下に示します。(COMポート番号はお使いの環境によって変化します。コントロールパネルのデバイスマネージャーでご確認下さい。)設定後、TeraTermから「SRST」コマンドを送ると製品バージョンが表示されます。

端末設定
シリアル通信設定

2-2.対向機(この実験ではAndroidタブレット)
PlayストアからIMBLEのテスト用プログラム(簡易ターミナルソフト)をダウンロードし、インストールしておきます。iOSの場合は試しておりませんので具体的には判りかねますが、インタープラン様のホームページによるとiOS版の簡易ターミナルソフトも有るようです。
ダウンロードし、インストールすると以下の写真の様にアイコンが出来ていました。

簡易ターミナルソフトのアイコン
簡易ターミナルソフトのアイコン

実験

IMBLEの実験基板と簡易ターミナルソフトの間での通信実験を行います。

1.簡易ターミナルソフトの起動~IMBLEとの接続

IMBLE実験回路をPCと接続し、ターミナルソフトとの間での通信確認を行った後、簡易ターミナルソフトのアイコンをタップすると以下の様な画面になります。

デバイス検出画面
デバイス検出画面

ターミナルソフトが起動するとペリフェラルを探す為にスキャンをはじめ、IMBLEが見つかると左の写真の様に「IMBLExxxx」が一覧の中に出てきます。ここで、「xxxx」は4桁の16進数で、シリアル番号を16進数にしたものになります。
また起動にあたり、端末のBluetooth機能がオフになっている場合は使用許可を求めるメッセージが出ますので簡易ターミナルソフトを使う場合は許可してください。

次に、先の画面上の「IMBLExxxx」をタップするとIMBLEと接続し、以下の左下の画面に切り替わります。その後、「Device Information Service」、「IMBLE Data Exchange Service」をタップすると右下の画面に切り替わります。

コネクト後
コネクト後
メニュー展開後
メニュー展開後

ここで、「Device Information Service」の下の「Manufacturer Name String」をタップすると下の画面の様に「Data:Interplan」と、それに相当するキャラクターコードが表示されます。

製造社名表示
製造社名表示

上から三行目の「Data:No data」となっていた行が「Data:Interplan」に変わっています。

簡易ターミナルソフトとIMBLEが接続されると、PCのターミナルソフト上に端末と接続された旨の表示が出ます。「CONNECT」の文字の後ろの文字は端末のアドレスを表しますが、Bluetoothの仕様により、同じ端末を使ったとしても、必ずしも同じ文字列にはならないようです。(ランダムアドレスを用いている端末の場合)

コネクトの表示
コネクトの表示

2.IMBLEから送信

IMBLEから文字を送ってみます。端末の「IMBLE Data Read」をタップし、TeraTermから「TXDA」コマンドを用いて文字列を送ってみましょう。

TXDAコマンド
TXDAコマンド実行結果
TXDAコマンド実行結果

三行目のData欄にキャラクターコードを文字に変更した「ABC」とキャラクターコードが表示されている。

同様に、「TXDT」コマンドを使って文字を送ると以下の様になります。

TXDTコマンド
TXDTコマンド
TXDTコマンド実行結果
TXDTコマンド実行結果

「TXDA」コマンドは16バイト迄の任意長の送信が出来ますが、「TXDT」コマンドは8バイト固定長データの送信コマンドです。データが短い時は自動的に余りバイトに「00」が付加されます。よって、受信側では送信側で送っていない「00」が5個(5バイト)付いています。

3.端末から送信

今度は接続した端末からIMBLEに向けて文字を送ってみます。簡易ターミナルソフトの「IMBLE Data Write」をタップすると入力用のボックスが出てきます。この中に文字のキャラクターコードを打ち込みます。(例では「313233」)するとPCのターミナルソフトに「00,0000,00:31,32,33」が出力されたと思います。

テキストボックス
入力用テキストボックス
入力後テキストボックス
テキストボックスに入力した例
PC側受信データ
PC側受信データ

端末から「313233」と言うデータ(キャラクタだと”123″)を送るとターミナルソフトには「00,0000,00:31,32,33」が出力されています。最初の「00,0000」は固定値で、常にこれが付加されます。続く「00」は、受信した電波の強さ(RSSI)ですが、現在未対応との事で「00」が出力されます。実際に送られてきたデータはコロン(:)以降で、送った「313233」が1バイトずつカンマ(,)で区切られて出力されています。

4.切断

実験が終了し、端末とIMBLEの通信を終了(切断)する手順です。
IMBLE側から切断する方法と、端末側から切断する方法が有ります。IMBLE側から切断するには、「DSCN」コマンドを打つと切断されます。端末側から切断するには簡易ターミナルソフトの右上に表示されている「DISCONNECT」をタップします。

IMBLEから切断
IMBLEから切断

TeraTerm上で「DSCN」コマンドを打つと、「OK」のメッセージと切断されたことを示す「DISCON」が返ってきます。

端末側の切断釦
端末側の切断釦
端末側から切断した時のTeraTerm上の表示
TeraTermの表示

端末側から切断すると、IMBLE側(に接続したTeraTerm上)に「DISCON」のメッセージが出ます。

以上のように、IMBLE側は簡単なコマンドでキャラクターコードを使ったデータ通信が可能です。端末側のアプリをどうするかと言う点は有りますがBluetoothモジュールのプログラムを作らずにデータ通信が出来ると言う点はメリットではないでしょうか。
無線モジュール.comでは無線モジュールを利用した様々な提案・開発を行っております。是非開発実績もご覧になってください。

前の記事

IM920を使ってみた

次の記事

TWELITEを使ってみた