01_BLE_client

CherryIoTをBLEデバイスとして表示する

スマートフォンからCherryIoTをBLEデバイスとして確認します。

BLE通信
1

準備する

CherryIoTをPCに接続する

CherryIoTをPCのUSB-A挿入口に接続します。

nRF Connectを準備する

Google Play ストアまたはApp Storeで「nRF Connect for Mobile」を検索して、スマートフォンにアプリをインストールします。

nRF Connect for Mobileのインストール画面
2

サンプルコード

GitHubで公開しているサンプルコードです。コードをコピーして Arduino IDEで使用します。

01_BLE_client.ino
GitHubで開く
GitHubからコードを読み込んでいます...
3

プログラムを書き込む

上のサンプルコードをコピーし、Arduino IDEに貼りつけます。

ボードとポートの設定を確認し、左上の 「→(書き込みボタン)」を押してCherryIoTに書き込みます。

初めて書き込む方は「はじめてのCherryIoT」で詳しい手順を確認してください。

4

動作確認

nRF Connectで確認する

1nRF ConnectでCherryIoTを探す

nRF Connectを起動して、「SCAN」をタップします。

nRF ConnectでSCANをタップする画面

2My BLE Deviceを確認する

SCANNERの一覧に「My BLE Device」が表示されます。

nRF ConnectのSCANNER一覧に表示されたMy BLE Device

nRF Connectアプリに「My BLE Device」が表示されるなら成功です。

動作中、シリアルモニターにはBLEの開始状況と、スマートフォンから読み取り可能になったことが表示されます。

Arduino IDEの画面右上にあるアイコンをクリックすると、 画面下にシリアルモニターが表示されます。

Arduino IDEでシリアルモニターを表示する場所
5

コードの解説

BLEサーバーとサービスを作成し、「My BLE Device」という名前でアドバタイズします。

01_BLE_client.ino
GitHubで開く
GitHubからコードを読み込んでいます...

Serial.begin(115200);シリアルモニターへ文字や測定値を表示するため、通信速度を115200bpsに設定します。

#include <BLEDevice.h>ESP32のBLE機能を使うためのライブラリを読み込みます。

#define SERVICE_UUIDBLEで公開するサービスを識別するUUIDを設定します。UUIDはサービスやデータ項目をほかと区別するための長い識別番号です。サービスは関連する機能をまとめる箱、キャラクタリスティックはその中で読み書きする個別のデータ項目です。

BLEDevice::init("My BLE Device");CherryIoTを「My BLE Device」という名前のBLE機器として初期化します。

pServer = BLEDevice::createServer();スマートフォンから接続されるBLEサーバーを作ります。

pService = pServer->createService(SERVICE_UUID);設定したUUIDを使ってBLEサービスを作ります。

pCharacteristic = pService->createCharacteristic(サービスの中に、読み取り・書き込み・通知・指示ができるキャラクタリスティックを作ります。READはスマートフォンが値を取得する操作、WRITEはスマートフォンから値を送る操作、NOTIFYはCherryIoT側から値の変化を自動送信する仕組み、INDICATEはスマートフォン側の受信確認を伴って値を送信する仕組みです。

pCharacteristic->addDescriptor(new BLE2902());スマートフォンが通知を有効にできるよう、BLE2902ディスクリプターを追加します。

pService->start();作成したBLEサービスを開始します。

pAdvertising->addServiceUUID(SERVICE_UUID);アドバタイズ情報へサービスUUIDを追加します。

BLEDevice::startAdvertising();周囲のスマートフォンから見つけられるよう、アドバタイズを開始します。