コンプリートBLEモジュールLINBLE-Z1の基本的な使い方
こんにちは、ムセンコネクトCMOの清水です(プロフィールはこちら)。
今回はムセンコネクトのコンプリートBLEモジュール「LINBLE-Z1」の基本的な使い方をご紹介したいと思います。(以下、LINBLEと表記している箇所はLINBLE-Z1を指しているものとします)。
はじめてBLEモジュールを扱う無線初心者向けのページです
本ページは下記のような方々を対象に作成しております。
- BLEモジュールをはじめてご利用いただくエンジニアの方
- ユーザーマニュアルを確認する前にLINBLEの利用方法をザッと把握したい方
- LINBLEに関連した解説ページ、ドキュメントをチェックしたい方
基本、LINBLEの使い方はユーザーマニュアルをご覧いただくことを前提としておりますが、このページではユーザーマニュアルから要点を抜粋し、さらにBluetoothモジュールに関する基礎知識を加筆することで、LINBLEの使い方をイメージしやすくしています。
また、各種解説ページやドキュメントへのリンクを貼ることで、LINBLEに必要な情報へもれなくアクセスできるようにまとめています。
ぜひLINBLEのご検討時、ご利用時にご活用ください。
BluetoothによるRS232Cシリアル通信の無線化
ムセンコネクトのコンプリートBluetoothモジュールLINBLE-Z1の使い方はカンタンです。
マイコンとLINBLEをUARTでつなぎ、マイコンからLINBLEに対してシリアルデータを送受信するだけでOKです。
LINBLEの制御はマイコンからATコマンドライクなテキストコマンドを送信して行います。Bluetooth接続が確立された後は、通常のシリアル通信(RS232C)と同じようにデータ送受信ができますので、マイコンプログラムに大きな変更は必要ありません。
Bluetooth Low Energy(BLE)の接続手順
まずはBluetooth Low Energy(BLE)の接続手順について解説します。手順は大きく4ステップです。
- BLE通信を行う2つのデバイス間においては、接続する側のデバイスを「セントラル(Central)」、接続される側のデバイスを「ペリフェラル(Peripheral)」と呼び、必ずセントラルとペリフェラルの組み合わせで通信を行います(セントラル同士、ペリフェラル同士で通信することはありません)。よって、まず2つのデバイスそれぞれの役割を決める必要があります。
- 役割を決める上で重要なポイントは「接続要求ができるのはセントラル側のみ」であり、「通信を開始できるのはいつもセントラル側デバイス」という点です。
- つまり、システムの構成上、接続アクションを起こしたい側のデバイスはセントラルにする必要がありますし、ペリフェラル側から好きなタイミングで接続、データ送信はできないことになります。
- よってBLEの役割を決めればデバイスの操作アクションも決まりますし、逆に操作が決まっていれば自ずとBLEの役割も決まります。想定しているデバイス操作に合わせてセントラル/ペリフェラルの役割を決めましょう。
- なお、BLEデバイスと言っても、スマホ・タブレット・パソコンのようにセントラル/ペリフェラルの両方に対応しているデバイスもあれば、周辺機器のようにペリフェラルとしてのみ動作できるデバイスもあります。
- LINBLEはセントラル/ペリフェラルの両方に対応しておりますが、ペリフェラル側としてデバイスに組み込まれることが多く、その場合セントラル側はスマホ・タブレット・パソコンが担うことが一般的です。
- セントラル/ペリフェラルの役割が決まったら、接続の準備としてペリフェラル側デバイスを待受状態にします。この待受状態にすることをBLE用語では「アドバタイズ」と言います。
- ペリフェラルデバイスがアドバタイズしていなければ、セントラルから接続させることはできません。(携帯電話で言えば、圏外や電源OFFで着信できない状態と同じです)
- アドバタイズしているBluetoothデバイスに対しては誰でも接続できてしまいます。セキュリティ対策が必要です。
- アドバタイズしているBluetoothデバイスは、周囲のBluetoothデバイス(スマホやパソコン)であれば誰でも発見することができます。意図しない不特定多数の相手から接続されてしまう恐れがあるため、接続認証などのセキュリティ対策はしっかり行いましょう。
- ペリフェラル側をアドバタイズさせたら、セントラルデバイスから接続要求を出します。
- 前述のように、接続要求を出せるのはセントラルデバイスのみです。
- ペリフェラル側がアドバタイズしていない場合は、セントラルが接続要求を出しても接続できずエラーとなります。
- このときの接続処理において、双方の設定値によってBluetooth接続に関する各種パラメータが決められたり、接続認証が行われます。
- 全ての処理が完了すれば、「Bluetooth接続状態」となります。
- Bluetooth接続が完了すれば、双方向データ通信が可能となります。
- セントラル、ペリフェラルのどちらからでもデータ送信が可能です。(セントラル/ペリフェラルの役割と、上位アプリケーションにおけるデータ送信側・データ受信側という決めごとは関係ありません。)
- また、Bluetoothはデータ送信側のみ電波を発信しているわけではなく、接続を維持するために双方のデバイスから絶えず電波が発信されています。(稀にデータを受信するだけのデバイスなら電波法がいらないと誤解されている方もいらっしゃいますが、データを受信をするだけのデバイスでも接続を維持するために発信するので電波法は必要です。)
- LINBLE-Z1同士で通信させる場合、Bluetooth接続が確立された後はシリアルケーブルがつながっているのと同じ状態です。UART経由でデータをやり取りしてください。
- LINBLE-Z1をペリフェラルとして利用し、セントラル側がスマホやパソコンの場合は、LINBLE-Z1(ペリフェラル)が提供している2つのキャラクタリスティックを通じてデータを送受信します。
- WriteキャラクタリスティックはセントラルからLINBLE-Z1へデータを送信する時に利用し、NotifyキャラクタリスティックはLINBLE-Z1からセントラルにデータを送信する時に利用します。
- セントラル/ペリフェラルのどちらからでも通信を終わらせることができます(切断)。
LINBLEと通信可能な相手デバイス
LINBLEは多くの一般的なBLEデバイスと通信可能ですが、LINBLEの役割(ペリフェラル/セントラル)によって通信可能な相手が異なります。
LINBLEをペリフェラルとして使う場合の接続相手
- BLE対応(GATT搭載)のセントラルデバイス
- iOS/Androidスマートフォン、タブレット
- BLE対応のWindowsパソコン(Windows10以降、且つ内蔵Bluetooth搭載)
- LINBLE-Z1(セントラル)やLINBLEドングル(セントラル)
LINBLEをセントラルとして使う場合の接続相手
- LINBLE-Z1(ペリフェラル)またはLINBLEドングル(ペリフェラル)
LINBLEをセントラルとして使う場合は、他社のペリフェラルデバイスと接続することはできません。
LINBLEと接続確認済みデバイス
LINBLEと接続確認済みデバイスの一部をご紹介します。
- iPhone 12 Pro, iPhone SE2, iPad Proなど
- Google Pixel 5
- Microsoft Surface Pro
ホストマイコンとの接続方法
LINBLEとホストマイコンは、UART(Universal Asynchronous Receiver Transmitter)で接続をします。
LINBLEは「ハードウェアフロー制御が動作保証条件」となっておりますので、RTS/CTSが利用できるマイコンをお選びください。
コネクタ信号表
LINBLEのコネクタ信号表です。
NCピンには何も接続しないでください。
信号名 | ピン番号 | 信号名 | |
---|---|---|---|
GND | 1 | 2 | GND |
GND | 3 | 4 | DSI |
RESET | 5 | 6 | NC |
NC | 7 | 8 | NC |
NC | 9 | 10 | NC |
NC | 11 | 12 | NC |
NC | 13 | 14 | VDD |
VDD | 15 | 16 | VDD |
VDD | 17 | 18 | NC |
CTS | 19 | 20 | NC |
TXD | 21 | 22 | NC |
RXD | 23 | 24 | MODE0 |
RTS | 25 | 26 | MODE1 |
STO | 27 | 28 | GND |
GND | 29 | 30 | GND |
接続例
LINBLEとホストマイコンの接続例です。
信号説明
主な信号の説明です。
UART
LINBLE-Z1とホストマイコンを接続します。
ピン番号 | 信号名 | I/O | 機能 | 論理 | 説明 |
---|---|---|---|---|---|
21 | TXD | O | 送信データ | 正 | LINBLEが送信するデータ (ホストマイコンが受信するデータ) |
23 | RXD | I | 受信データ | 正 | LINBLEが受信するデータ (ホストマイコンが送信するデータ) |
25 | RTS | O | 送信要求 | 負 | LINBLEが受信可能な時にLowを出力 (ホストマイコンはLowの時データ出力可) |
19 | CTS | I | 送信許可 | 負 | LINBLEはLowの時データ出力可 (ホストマイコンが受信可能な時にLowを出力) |
なお、LINBLE-Z1はハードウェアフロー制御が必須です。ハードウェアフロー制御が動作保証条件となっておりますのでご注意ください。
ハードウェアフロー制御なしでご利用の場合、一部機能が正常に機能しなかったり、予期せぬ動作を起こしてし
まう場合があります。
MODE
電源投入時、MODE0、MODE1ピンの状態により起動モードが決定します。
接続例ではディップスイッチで切り替えられるようにしています。外付けプルアップは不要です。
※電源投入時、MODE0、MODE1はLINBLE-Z1のチップ内部でプルアップされています。起動モード確定後、LINBLE-Z1はLowと判定されたピンをチップ内部でプルダウンに切り替えて電流消費を抑えます。詳細は、別紙「LINBLE-Z1 消費電流と省電力機能について」をご覧ください。
RESET
接続例ではRESETは未接続としてあります。LINBLE-Z1はチップ内部にPower on Reset回路を搭載しているため、電源投入時にパワーオンリセットされます。
明示的にLINBLE-Z1をリセットする場合はホストマイコン等に接続します。RESETはチップ内部でプルアップされています。LINBLE-Z1をLowに入力すると本モジュールがリセットされます。
STO
BLE通信の接続ステータスがLINBLE-Z1から出力されます。接続ステータスを確認したい場合はSTOピンをホストマイコンに接続します。
接続例ではSTOを未接続としていますが、無線の電波は目に見えないため、接続状態を知る手段としてSTOの接続を推奨しております。
信号のHigh/Low | 状態 |
---|---|
LINBLEからHighを出力 | BLE通信が未接続状態(LINBLE-Z1がオンライン状態以外) |
LINBLEからLowを出力 | BLE通信が接続状態(LINBLE-Z1がオンライン状態) |
DSI
LINBLE-Z1のUART機能を無効にし、LINBLE-Z1の消費電流を更に低減させる時に利用します。接続例ではDSIは未接続としてあります。
結線状態 | 信号のHigh/Low | 状態 |
---|---|---|
未結線 | ー | 常にUART機能を有効にします。 |
結線 | ホストマイコンからHighを入力 | UART機能を無効にし、省電力な状態にします。 |
結線 | ホストマイコンからLowを入力 | UART機能を有効にします。 |
※電源投入(リセット)時にホストマイコンとの結線有無を確認するため、DSI ピンをチップ内部で一時的にプルダウン、プルアップの切り替えを行います。結線有無の確認後は、チップ内部でプルアップされます。詳細は、別紙「LINBLE-Z1 消費電流と省電力機能について」をご覧ください。
動作状態遷移
LINBLEには複数の「動作状態」が存在し、各状態によって振る舞いが異なります。ホストマイコンからUART経由でBTコマンドを実行し、状況に応じてLINBLEの動作状態を遷移させてください。
コマンド状態
電源投入後、LINBLEがBTコマンドを実行できる状態です。この状態ではLINBLEへ送られるデータを全てBTコマンドとして認識します(送られるデータがコマンドと一致しない場合は破棄されます)。
アドバタイズ状態
LINBLEがペリフェラル側デバイスとして、相手セントラルデバイスからのデバイス検索や接続要求を待っている状態です。
オンライン状態
Bluetooth接続が確立され、シリアルデータ通信が可能となる状態です。オンライン状態時にはBTコマンド実行が不可能となり、ホストマイコンからUART通信でLINBLEへ送られるデータは全てシリアルデータとして相手BLEデバイスへ送られます。
エスケープ状態
相手デバイスとのBluetooth接続を維持したままコマンド入力が可能となる状態です。主にBLE接続を切断するときに使用します。
アドバタイズエスケープ状態
アドバタイズ状態を維持したままコマンド入力が可能となる状態です。主にアドバタイズ状態を解除する際に使用します。
ガードタイムについて
ガードタイムとはホストマイコンからの UART通信の連続性を確認し、@@@によるエスケープ判定をガードする時間です。
オンライン状態ではLINBLE-Z1はホストマイコンからUART通信で受信したデータを、そのまま相手BLEデバイスに送信します。エスケープ状態に移行しようとした場合、ホストマイコンは、データの送信が終わってからガードタイムで規定されている時間以上、データの送信を停止してください。ガードタイム経過後に@@@を3回連続で送信することでエスケープ状態に遷移します。
ホストマイコンによるデータの送信が終わってから、ガードタイムが経過する前に”@@@”を送信した場合は、”@@@”はデータとしてみなされ、相手BLEデバイスに送信されます。
アドバタイズ状態からアドバタイズエスケープ状態に移行する場合もガードタイム経過後に@@@を3回連続で送信してください。
起動モード
LINBLEは電源投入時のMODE0、MODE1ピンの状態により起動モードが決定します。用途に応じて使い分けてください。
MODE0 | MODE1 | DIPSW1 | DIPSW2 | |
---|---|---|---|---|
通常モード | HIGH | HIGH | OFF | OFF |
UART設定値起動モード | LOW | HIGH | ON | OFF |
自動モード(ペリフェラル) | HIGH | LOW | OFF | ON |
自動モード(セントラル) | LOW | LOW | ON | ON |
通常モード
電源投入後、必ずUART設定の初期値で起動し、コマンド状態となります。
※UART設定の初期値 9,600bps, データ8, ストップ1, パリティなし
UART設定以外の各種設定値は事前にユーザーによって設定された値で起動します。起動後はコマンド状態となります。
UART設定値起動モード
電源投入後、事前にユーザによって設定された各種設定値で起動します(UART設定値も含む)。起動後はコマンド状態となります。
自動モード(ペリフェラル)
電源投入後、事前にユーザによって設定された各種設定値で起動します(UART設定値も含む)。起動後はペリフェラルデバイスとして動作し、自動でアドバタイズ状態となります(自動でBTAコマンドを実行)。
自動モード(セントラル)
電源投入後、事前にユーザによって設定された各種設定値で起動します(UART設定値も含む)。起動後はセントラルデバイスとして動作し、BTLTコマンドまたはBTLVコマンドで設定された相手ペリフェラルデバイスへ自動でBLE接続を開始します(自動でBTCコマンドを実行)。
自動モードを利用したペア設定の仕方
LINBLE同士で通信させる場合は、自動モードを使って簡単にペア設定することが可能です。
詳しい方法は「LINBLE-Z1をセントラルとして使用する場合の動作手順」の「自動モード(セントラル)で起動させる場合」をご覧ください。
主要BTコマンド
LINBLEの主要BTコマンドをご紹介します。ホストマイコンのプログラムからBTコマンドを実行し、LINBLEを制御してください。
尚、下記に掲載されていないコマンドや各種コマンドの詳細、使用方法についてはLINBLEユーザーマニュアルをご参照ください。
ペリフェラル
- BTA
-
LINBLEをペリフェラルデバイスとしてアドバタイズ状態にするコマンドです。LINBLEをセントラルデバイスから検出可能な状態にします。
セントラル
- BTI
-
周囲のBluetoothデバイスを検索するコマンドです。「検索」は特定のデバイスがアドバタイズ状態にあるか否かの確認や、接続先相手デバイスのBDアドレス取得を目的として行いますが、接続前に毎度実行する必要はありません。
- BTLT
-
接続相手となるペリフェラルデバイスのBDアドレスをセットするコマンドです。
- BTC
-
ペリフェラルデバイスへ接続要求を行うコマンドです。
共通
- BTD
-
BLE接続を切断し、LINBLEをオンライン状態からコマンド状態に移行させるコマンドです。また、アドバタイズ状態を解除してコマンド状態へ移行させる時にも使用します。
- BTLB
-
LINBLEとホストマイコン間のボーレートを変更するコマンドです。
- BTLX
-
LINBLEのデバイス名を設定するコマンドです。
- BTM
-
(コマンド実行された)LINBLE自身のBDアドレス(Bluetooth Device Address)を表示するコマンドです。
- BTY
-
LINBLEの各種設定値を出荷時状態へ戻すための初期化コマンドです。
オンライン状態からオンラインエスケープ状態に、アドバタイズ状態からアドバタイズエスケープ状態に移行する為に利用します。
LINBLEに関するよくあるご質問
LINBLEに関してよくあるご質問をまとめました。
ムセンコネクトではLINBLEに限らず無線化に関するどのようなご質問でも承っておりますので、ご遠慮なくお気軽にお問い合わせください。
- 基板設計時の注意点はありますか?
-
アンテナ付近の金属は電波特性に影響を及ぼすため十分ご注意ください。
基板設計時にはLINBLEをできるだけ基板の外側に配置し、アンテナも外を向くようにしてください。また、基板のベタパターンにもご注意ください。
同様の理由から、金属製の筐体もあまり望ましくありません。金属筐体は全く電波を通さないわけではありませんが、少なからず影響が考えられますので、電波の通り道として筐体の一部を樹脂製にしたり、スリットを入れていただくことを推奨しております。
- 金属筐体に組み込んだ場合、影響はありますか?
-
少なからず影響があると考えられますが、全く飛ばなくなるわけではなく、工夫によって影響を最小限に抑えることが可能です。
過去の経験上、金属筐体に組み込んだ場合でも、減衰はするものの全くBluetooth通信が行えないというケースはあまりありません。
例えば、「筐体なしで10m通信できるところが金属筐体に組み込むと7mになる」というようなイメージです(※あくまでイメージです。逆に電波を完全に遮断するのはそれはそれで難しく、相応のシールド技術が必要だったりします)。
この減衰する度合いは金属の素材や厚さ、組み込まれた位置など、デバイスの様々な要素が影響すると考えられるため、実際に筐体に組み込んだ状態で通信評価していただくことを推奨しております。また、電波の通り道として筐体の一部にスリットを入れたり、樹脂製の筐体に変更していただくことをアドバイスしております。
- LINBLEを制御する上でおすすめのマイコンはありますか?
-
特におすすめのメーカーやスペックなどはありませんが、UART I/Fがあり、LINBLEの動作保証条件であるハードウェアフロー制御が行えるマイコン(CTS/RTSがある)をお選びください。
- ハードウェアフロー制御なし(CTS/RTSを使用しない)で利用するにはどうすれば良いですか?
-
ハードウェアフロー制御はLINBLEの動作保証条件となっているため、ハードウェアフロー制御なしでご利用いただくことはできません。
ハードウェアフロー制御なしでご利用いただいた場合、UART通信のデータの取りこぼしやデータ化けが発生してしまうだけではなく、LINBLEが正常に動作せず想定外の動作を引き起こす恐れがあります。過去の経験上、異常動作が発生したお客様に対し、ハードウェアフロー制御を行っていただくことで改善した例が多数ございます。
- LINBLEを自社プロダクトに組み込んだ場合、Bluetooth認証の手続きや費用は必要ですか?
-
LINBLEはBluetooth SIG認証、国内電波法認証取得済みのコンプリートBLEモジュールです。日本国内でのご利用の場合、国内電波法については再取得が不要ですが、Bluetooth認証に関しては最終製品登録(End Product Listing登録、EPL登録)が必要です。(海外でご利用いただく場合は別途各国の電波法認証を取得する必要があります。)
- LINBLEは海外でも利用できますか?
-
LINBLEが取得している各国電波法は日本の電波法(技適、工事設計認証)のみです。(LINBLEが取得しているBluetooth認証は世界統一規格ですが、「海外の電波法」ではありません。)
日本国内でご利用いただく分には技適の再取得は不要ですが、海外でご利用いただく際は「(お客様の)最終製品として各国の電波法取得が必要」です。
- LINBLEに外部アンテナは接続できますか?
-
LINBLE-Z1に外部アンテナを接続することはできません。
- LINBLEは1対N接続はできますか?
-
BLE通信において、1対N接続が可能か否かはセントラルデバイス側の仕様によります。
- LINBLEをペリフェラルとしてご利用いただく場合
-
1台のセントラルデバイスに対して、複数のLINBLEを接続できるか否かはセントラルデバイスの仕様によります。最近のスマートフォン、タブレットであれば1対N接続に対応している可能性が高いと考えられます。
- LINBLEをセントラルとしてご利用いただく場合
-
LINBLEをセントラルとしてご利用いただく場合、「ペリフェラルとして接続できるデバイスはLINBLEのみ」であり、且つ「同時接続可能な台数は1台」に限られます。(他社製のペリフェラルデバイスとは接続させることができません)
- LINBLEは長期供給可能でしょうか?
-
はい、LINBLEは産業機器でも安心してご利用いただけるよう、可能なかぎり長期供給できるよう努めております。
- 通信速度を速くするためにはどうすれば良いですか?
-
LINBLE-Z1には隠しコマンドとして「高速モード」をご用意しております。
詳しくは「LINBLE-Z1通信速度と高速通信機能について」をご覧ください。 - 消費電力を抑えるためにはどうすれば良いですか?
-
LINBLE-Z1の省電力機能については「LINBLE-Z1消費電流と省電力機能について」をご覧ください。
- できるだけ長距離で通信させたい場合はどうすれば良いですか?
-
長距離通信を実現させるためには様々な要因をクリアーする必要があります。
例えば「BLEモジュール付近の基板や筐体部に金属を用いない」や「通信環境における遮蔽物を避け、直線の見通しが確保できるようにする」などが挙げられます。
また、Bluetoothは双方のデバイスが電波を発信してやり取りしていますので、通信距離は相手デバイスの性能にも左右されます(双方が強肩でなければ遠距離のキャッチボールができないのと同じです)。
なお、ムセンコネクトではBluetooth Low Energy規格の長距離通信機能であるLong Range(LE Coded PHY)に対応したLINBLE-LR1を開発中です。
- ガードタイムって何ですか?
-
ガードタイムとは「ホストマイコンからのUART通信の連続性を確認し、@@@によるエスケープ判定をガードする時間」です。
オンライン状態(Bluetooth接続中)のLINBLEに対してUART経由で送られるデータは全て「送信データ」とみなされますが、エスケープに利用される「@@@(0x40,0x40,0x40)」はLINBLE内部では特殊な扱いになっています「@@@」によるエスケープを行う場合は「送信データ」に続けてすぐに「@@@」を送信せず、「送信データ」を送信後ガードタイムで規定された時間ウェイトしてから「@@@」を送信する必要があります。詳しくはLINBLE-Z1ユーザーマニュアルの「4.3.6ガードタイムについて」をご覧ください。
各種データ
- LINBLE-Z1通信距離について
- LINBLE-Z1通信速度と高速通信機能について
- LINBLE-Z1消費電流と省電力機能について
- 長距離通信対応(LE Coded PHY, Long Range)BLEモジュールLINBLE-LR1の通信距離性能評価
- Long Range(Coded PHY)対応BLEモジュールの消費電流と通信速度性能
開発用便利ツール
LINBLEを使った無線化開発の際に便利なツールをご紹介します。
LINBLEカンタンスターターキット
まずはこれ。どなたでもカンタンに、すぐにBluetooth通信をお試しいただけます。
→ 商品ページ
2.54mmピッチ変換基板
ユニバーサル基板での試作開発時に便利です。
今後はmbedやArduinoでも利用できる変換基板を計画中です。
→ 商品ページ
LINBLE-Terminal(Android, Windows)
AndroidとWindowsで使えるターミナルソフトです。
Windows版は内蔵Bluetooth(BLE)が使えるPCでご利用可能です。
LINBLE Keyboard(iOS)
LINBLEから送信したテキストデータをキーボード入力として表示できるiOSアプリです。
iOSはアプリの配布が容易ではないので、手軽にBLE通信が試せるアプリとして便利です。
→ LINBLE Keyboard
LINBLEドングル
仮想COMポートでBLE通信したいときに便利なケーシングタイプのUSBドングルです。
→ 商品ページ
Tera Term(ターミナルソフト)
Windows用ターミナルソフトとしてお馴染みのTera Term。
仮想COMポート通信では不可欠なソフトの一つです。
使い勝手が良く、フリーでダウンロードできるのも魅力です。
→ Tera Termのダウンロードページ