BLEモジュールRN4870/71の使い方まとめ
BLE通信モジュール RN4870/71
RN4870/71はMicrochip社製のBLEモジュール。
技適取得済のモジュールなので、機器に埋め込んで使用できる。
RN4870/71はGPIO、ADC、I2C、UART、SPIが使用可能。
加えてスクリプトモードでスタンドアローンに動作できる。
スクリプトモードは、事前に動作させたい内容をBLEモジュールに記録することで、
例えば電源ON後や通信接続後などに実行したい操作を自動で行わせられる。
この機能を使用することで、簡単な操作であれば、Hostコントローラーが不要になる。
ブロック図は以下。
モジュールによって使用可能な機能とピン数が異なる。以下の通り。
機能 | RN4870 | RN4871 |
---|---|---|
GPIO | 4 | 2 |
ADC | 5 | 2 |
I2C | 1 | 1 |
UART | 1 | 1 |
SPI | 1 | 0 |
*GPIO、ADC、I2Cのピンは兼用。
RN4870は多機能だがサイズが大きい。RN4871はサイズは小さいが機能が少ない。
目的に応じて選びましょう。
RN4870 | RN4871 | |
---|---|---|
サイズmm | 12 x 22 | 9 x 11.5 |
とにかく簡単に使う
Bluetoothは生活になじみ深いので、使い方も把握しているつもりだったが、
いざモジュールを使うとなると、
GAP、GATT、Advertisement、UUIDなどなど
前提知識が色々必要でちんぷんかんぷん。
各用語は他人様の記事で勉強するとして、
ここではデフォルト状態の2つのRN4871モジュールを通信させるための
必要最小限の手順を書く。
実現したいこと:
CentralモジュールをPCで操作して、PeripheralモジュールのAD値を取得する。
* 通信モジュールはCentralとPeripheralに分類される。
* いわゆるMasterとSlave、HostとClientの関係。
手順の概要
必要な手順は以下の通り。
- PeripheralのMACアドレスを把握する
- Peripheralが自分の存在を周囲に発信する(Advertisement)
- Centralが特定のMACアドレスを持つPeripheralをスキャンする
- 接続後、Centralをリモートコマンドモードに変更
- PeripheralのAD値を取得する
PeripheralのMACアドレスを把握する
- PeripheralとPCをUART接続する。
- コマンドモードへ移行するため
$$$
と入力する。 - ECHOをONにするため
+
と入力する(やらなくてもよい)。 - 詳細情報を取得するため、
D
と入力する。 - BTA=xxxxxxxxと表示されるので、このxxxxxxxxをメモする。
Peripheralが自分の存在を周囲に発信する(Advertisement)
- 電源を接続すると自動で実行される。
- Interval時間や送信強度などを変更することで電力を抑制できるが、
- ここでは割愛。
Centralが特定のMACアドレスを持つPeripheralをスキャンする
- CentralとPCをUART接続する。
$$$
と入力しコマンドモードに移行する。+
でECHOをON。C,0,xxxxxxxx
と、先ほどメモしたMACアドレスを入力し特定のモジュールをスキャンする。- 接続されたら再び
$$$
でコマンドモードにする。 B
と入力し接続をSecureにする。
接続後、Centralをリモートコマンドモードに変更
SS,C0
を入力し、UART Transparentモードに移行する。!,1
と入力し、リモートコマンドモードへ移行。これでCentralへのコマンドが全てPeripheralへ送信されるようになる。
PeripheralのAD値を取得する
@,4
でPeripheralモジュールの消費電流のADC値を取得する。@,5
でPeripheralモジュールの温度センサのADC値を取得する。