04_BLE_LED

BLEでLEDを操作する

スマートフォンから送った「ON」「OFF」でLEDを操作します。

LEDモジュールBLE通信
1

準備する

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

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

LEDモジュール

LEDモジュール

接続先:A

nRF Connectを使用する

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

2

サンプルコード

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

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

プログラムを書き込む

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

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

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

4

動作確認

nRF Connectで確認する

1CherryIoTに接続する

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

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

2Digitalを開く

「My BLE Device」タブの「CLIENT」→「Environmental Sensing」にある「Digital」で、書き込み(WRITE)アイコンをタップします。

nRF ConnectでDigitalが表示された画面

3書き込む値の形式を選ぶ

「Write value」画面で値の形式を選択します。

nRF ConnectのWrite value画面

4TEXT (UTF-8)を選ぶ

値の形式から「TEXT (UTF-8)」を選択します。

nRF ConnectでTEXT UTF-8を選択する画面

5ONを送信する

入力欄に半角大文字で「ON」と入力し、「SEND」をタップします。

nRF ConnectでONを入力して送信する画面

6LEDの点灯を確認する

「ON」が送信されると本体LEDが点灯します。同じ手順で「OFF」を送信すると消灯します。

nRF ConnectからONを送信した画面

nRF Connectアプリから「ON」「OFF」を送ると、LEDが点灯・消灯するなら成功です。

動作中、シリアルモニターにはnRF Connectアプリから受信した「ON」または「OFF」が表示されます。

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

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

コードの解説

BLEで受信した文字列を判定し、結果をLEDの出力へ反映します。

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

const int ledPin = 3;コネクタAのLEDに対応するGPIO3を、定数ledPinへ保存します。

bool bleOn = false;BLEから受信したLED状態を記録し、最初はOFFにします。

class MyCallbacks : public BLECharacteristicCallbacks {BLEへ値が書き込まれたときの処理を行うクラスを作ります。

String rxValue = pCharacteristic->getValue().c_str();スマートフォンから書き込まれた文字列を受け取ります。

if (rxValue.equals("ON")) {受信した文字が「ON」かを判定します。

bleOn = true;受信した文字が「ON」のときは、LEDの状態をONとして記録します。

} else if (rxValue.equals("OFF")) {最初のifの条件を満たさず、受信した文字が「OFF」のとき、次の処理を実行します。

bleOn = false;LEDの状態をOFFとして記録します。

Serial.println(rxValue);受信した文字列をシリアルモニターに表示します。

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

pCharacteristic = pService->createCharacteristic(サービスの中に、読み取り・書き込みができるキャラクタリスティックを作ります。READはスマートフォンが値を取得する操作、WRITEはスマートフォンから値を送る操作です。

pCharacteristic->setCallbacks(new MyCallbacks());BLEへ値が書き込まれたときにMyCallbacksを実行するよう設定します。

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

digitalWrite(ledPin, bleOn ? HIGH : LOW);bleOnの状態に合わせて、コネクタAのLEDを点灯または消灯します。

delay(500);次のLED更新まで500ミリ秒待ちます。