RN4020をBLEセントラルとして利用する。
この記事について
この記事ではRN4020をBLEセントラルデバイスとして利用し、BLEのペリフェラルデバイスとやりとりするための方法を紹介します。これまではRN4020をペリフェラルデバイスとして利用してきましたが、RN4020自信はセントラルとしても動作することが可能です。
RN4020のセントラルとしての利用方法
セントラルとして活用するには以下の方法で行います。
1. セントラル動作モードの設定
RN4020をセントラルとして活用するためにはSR
コマンドで動作モードを変更するだけで利用できます。
SR,80000000 R,1
以上でRN4020がセントラルデバイスとして動作始めます。
2. デバイスの検索
続いて、ペリフェラルデバイスの検索を行い、接続したいデバイスを発見します。今回は接続対象のデバイスとしてWx2Beaconを利用します。Wx2Beaconの詳細については以下の記事を確認してください。
ペリフェラルデバイスの検索を行うためにはF
コマンドを実行します。以下のように結果が表示されます。
F 62CEEEEE4D99,1,,,-4E 579E9EEEE4DB,0,,11111101C75C5666666A678911111111,-52 E6E4B1DA83BC,1,,,-14 FEA458B80011,1,,,-43
データは「,」区切りのデータとして出力れます。先頭がデバイスのUUIDとなります。また、2つ目はアドレスの種類を表します。接続のために必要になるためこの2つを控えておきます。一番最後がRSSI(電波強度)となります。目的のデバイスをRN4020に最も近づけておき、一番値が大きい(ここでは-14)デバイスを探すとわかりやすいです。今回は「E6E4B1DA83BC,1」を値として記録しておきます。
目的のデバイスが見つかったらX
コマンドを使いスキャンを停止します。
3. デバイスへの接続
目的のデバイスが見つかったらE
コマンドを使い接続します。デバイスの検索で記録した「E6E4B1DA83BC,1」を使い接続します。
E,1,E6E4B1DA83BC AOK Connected ConnParam:0028,0004,0190
デバイス検索時とは逆に入力します。接続を切断する場合はK
を実行します。
K Connection End
4. キャラクタリスティックの操作
サービス又はキャラクタリスティックの検索はペリフェラルとして利用するのと同様LS
又はLC
を利用します。ペリフェラルとして利用するときは自身に設定されたサービスとキャラクタリスティックを表示していましたが、セントラルとして動作する場合は接続先デバイスのサービスとキャラクタリスティックを表示します。
今回の場合は以下のように表示されます。
LC 180A 2A29,000E,02 2A24,0010,02 2A25,0012,02 2A27,0014,02 2A26,0016,02 0C4C3000770046F4AA96D5E974E32A54 0C4C3001770046F4AA96D5E974E32A54,0019,02 0C4C3001770046F4AA96D5E974E32A54,001A,10 0C4C3002770046F4AA96D5E974E32A54,001C,02 0C4C3003770046F4AA96D5E974E32A54,001E,0A 0C4C3004770046F4AA96D5E974E32A54,0020,02 0C4C3005770046F4AA96D5E974E32A54,0022,02 0C4C3006770046F4AA96D5E974E32A54,0024,02 0C4C3006770046F4AA96D5E974E32A54,0025,10 END
WxBeacon2の場合は 0C4C3001770046F4AA96D5E974E32A54,0019,02
センサデータを読み出すことができます。先頭からUUID,HandleID,パーミッション(0x02はRead)となっています。このキャラクタリスティックに対してCHR
コマンドでデータを読み出します。UUIDではなく、HandleIDを使うことに注意してください。
CHR, 0019 R,038C081D14070002007127420D7D1A5907650B.
対象のデータが取れました。これをデコードすることでWxBeacon2のセンサ情報を取得できます。Arduinoなどのマイコンを使うことで簡単にBLEセントラルデバイスを構築できそうです。