03_BLE_LightSensor

明るさをBLEで送信する

光センサーで測った明るさをスマートフォンへBLEで送信します。

光センサーモジュールBLE通信
1

準備する

CherryIoTとモジュールを接続する

CherryIoTの指定コネクタに以下のモジュールを接続し、CherryIoTをPCのUSB-A挿入口に接続します。

光センサーモジュール

光センサーモジュール

接続先:A

nRF Connectを使用する

nRF Connectを初めて使用する方は、「01_BLE_client」をご確認ください。

2

サンプルコード

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

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

プログラムを書き込む

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

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

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

4

動作確認

nRF Connectで確認する

1CherryIoTに接続する

nRF Connectを起動し、「My BLE Device」の右側にある「CONNECT」をタップします。

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

2明るさの値を確認する

「My BLE Device」タブの「CLIENT」→「Environmental Sensing」にある「Analog Output」で「↓↓↓(NOTIFY)」アイコンをタップします。光センサーを覆ったり照らしたりして、表示されるluxの値が変化することを確認します。

nRF Connectに光センサーの明るさが表示された画面

センサーを覆ったり照らしたりすると、nRF Connectアプリに表示される明るさの値が変化するなら成功です。

動作中、シリアルモニターには光センサーで測定した明るさが表示されます。

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

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

コードの解説

測定した明るさを文字列へ変換し、BLEキャラクタリスティックの通知として送ります。

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

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

pinMode(litsnsrPin, INPUT);光センサーの端子を「入力」に設定します。

BLEDevice::init("My BLE Device");CherryIoTをBLE機器として初期化します。

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

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

float litsnsr_ad = analogRead(litsnsrPin);光センサーのアナログ値を読み取ります。

float lux = 10000 * litsnsr_v / (3.3 - litsnsr_v) / 1000;読み取った値をルクスへ換算します。

Serial.println(" Lux : " + String(lux));測定した明るさをシリアルモニターに表示します。

pCharacteristic->setValue(String(lux) + "lux");明るさに単位を付け、BLEで送信する値として設定します。

pCharacteristic->notify();設定した明るさを、接続中のスマートフォンへ通知します。BLEの通知を使うため、スマートフォン側でキャラクタリスティックの通知を有効にしておきます。

delay(500);次の測定と通知まで500ミリ秒待ちます。