Arduino環境でAE-TYBLE16のBLEを始める(その2:BLE経由のLチカ)

目的

AE-TYBLE16こと太陽誘電製EYSGJNAWY-WX(SoCはNordic Semiconductor製nRF51822)のBLE機能のステップ2として,BLE経由のLチカを実施する.

  1. 事前にSoftDevice書込み等,Arduino IDEで作成したArduinoスケッチが書込みできる環境の整備:
    STM32 Nucleoを用いたnRF51向けのArduino開発環境をつくる
  2. GPIOやADC,シリアルインターフェースの機能確認:
    Arduino環境でAE-TYBLE16のピンファンクションを確かめる
  3. BLEの接続/非接続の確認:
    Arduino環境でAE-TYBLE16のBLEを始める(その1:接続/非接続)
  4. BLE経由のLチカ確認(本記事)
  5. 照度センサー明暗判定原理試作:
    Arduino環境でAE-TYBLE16のBLEペリフェラルデバイス~明暗判定編~
  6. リードスイッチドア開閉判定原理試作:
    Arduino環境でAE-TYBLE16のBLEペリフェラルデバイスを作る~ドア開閉判定編~

結論

BLEPeripheralライブラリーのExampleのledスケッチと,Nordic SemiconductorのiOSアプリnRF Connect for Mobile を用いて,ペリフェラルとして動作しているAE-TYBLE16にBool値のTrue/Falseを書き込むことで,LED点灯/消灯の動作が確認できた.

BLE経由のLチカ確認

起動時画面 接続中画面
Bool値のTrue書込み
(LED点灯)
Bool値のFalse書込み
(LED消灯)

本記事で紹介するおもな環境は下表のとおり:

ハードウェア名称 規格 製造会社 備考
BLEモジュール AE-TYBLE16 秋月電子通商 購入時1,280JPY
太陽誘電製EYSGJNAWY-WX(SoCはNordic Semiconductor製nRF51822)
デバッガー NUCLEO-L053R8STSW-LINK009 2.0.2 STMicroelectronics タダ
201X年にSTの営業が会社に来たときのもの,ST-Link/V2-1として使用する
BLEモジュール用ソケット 2227P-16G-03 寬德 購入時100JPY
ハンダ不要でブレッドボード挿入に使える
ブレッドボード BB-801 万捷电子 ブレッドボードなら何でもよい
ジャンパーケーブル(オス・メス) DG01032-0024-RD-015など 協威亞洲 間違えないように色をわけたほうがよい
C-17228のほうが安い
USBケーブル(mini B) LDUC1011-1.5m EverU Electronics 充電専用でなければ何でもよい
黄緑色LED OSNG5113A,2.0[V],20[mA] OptoSupply 購入時500JPY
ホストPC マザーボードB450 AORUS M,CPU:Ryzen 7 3700X,メモリー:32[GB] -
iPhone MXD22J/A A2296 Apple
IDE Arduino IDE 1.8.19 ARDUINO
nRF5ライブラリー Nordic Semiconductor nRF5 Boardsパッケージ Sandeep Mistry
BLEライブラリー BLEPeripheralパッケージ 0.4.0 Sandeep Mistry
Nordic SoftDevice S130 2.0.1 Nordic Semiconductor BLEプロトコルスタック
BLE確認アプリ nRF Connect for Mobile 2.5.3 Nordic Semiconductor ASA
ホストPCのOS Windows 10 Pro 64ビット版 Microsoft 英語版(インターナショナル)
iOS 16.1.1 Apple

また,nRF5ライブラリーの設定は以下のとおり:

項目名 設定値 備考
ボード Generic nRF51
Chip 32kB RAM, 256kB flash (xxac) データシートよりEYSGJNZWYは32kB
SoftDevice S130
Low Frequency RC Oscillator データシートよりEYSGJNZWYは水晶振動子が未実装で内蔵RC発振回路で代替指示
ポート COMn 環境による
Programmer ST-Link V2-1 (ST-Link On-Board) ☞以前の私の記事参照

詳細

ハードウェア

AE-TYBLE16のP0.03(DIP4)に黄緑色LEDを接続した(には,電流制限抵抗100[Ω]程度を直列に挿入したほうがよいが,簡易的な確認のために省略した).

また,動作確認では,コンソールログ(UARTのTX,AE-TYBLE16が送信側)が接続されているほうが望ましい.

前回のAE-TYBLE16のピンファンクションを確かめるのUART確認時と同じく,UARTのTX(AE-TYBLE16が送信側)を接続する.接続ポートは,デフォルトの%USERPROFILE%\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.7.0\variants\Generic\variant.hに定義されている

/*
 * Serial interfaces
 */
// Serial
#define PIN_SERIAL_RX       (0) // P0.00
#define PIN_SERIAL_TX       (1) // P0.01

のとおり,P0.01(DIP6)とし,ST-Link/V2-1のCN3のRXに接続して確認した.

結線写真 結線図

ソフトウェア

BLEライブラリーのインストール

Sandeep Mistry氏のライブラリーを使用する.追加方法は,ほかのライブラリー追加方法と同じ.

  1. ツールメニューのライブラリを管理...から,ライブラリマネージャを起動する
    ライブラリマネージャの起動
  2. bleperiなどで検索して,BLEPeripheralライブラリーを検索してインストールする
    BLEPeripheralライブラリーの検索とインストール

ledスケッチの実行

BLEPeripheralライブラリーで用意されているスケッチのうち,ledでBluetoothの黄緑色LEDの点灯/消灯を試みる.

BLEPeripheralライブラリーで用意されているExamples

ledは以下のとおり,BluetoothでのBool値のTrue/FalseでLEDを点灯/消灯するように作られている(コンソールへの結果表示含む).

// Copyright (c) Sandeep Mistry. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

// Import libraries (BLEPeripheral depends on SPI)
#include <SPI.h>
#include <BLEPeripheral.h>

// define pins (varies per shield/board)
#define BLE_REQ   10
#define BLE_RDY   2
#define BLE_RST   9

// LED pin
#define LED_PIN   3

// create peripheral instance, see pinouts above
BLEPeripheral            blePeripheral        = BLEPeripheral(BLE_REQ, BLE_RDY, BLE_RST);

// create service
BLEService               ledService           = BLEService("19b10000e8f2537e4f6cd104768a1214");

// create switch characteristic
BLECharCharacteristic    switchCharacteristic = BLECharCharacteristic("19b10001e8f2537e4f6cd104768a1214", BLERead | BLEWrite);

void setup() {
  Serial.begin(9600);
#if defined (__AVR_ATmega32U4__)
  delay(5000);  //5 seconds delay for enabling to see the start up comments on the serial board
#endif

  // set LED pin to output mode
  pinMode(LED_PIN, OUTPUT);

  // set advertised local name and service UUID
  blePeripheral.setLocalName("LED");
  blePeripheral.setAdvertisedServiceUuid(ledService.uuid());

  // add service and characteristic
  blePeripheral.addAttribute(ledService);
  blePeripheral.addAttribute(switchCharacteristic);

  // begin initialization
  blePeripheral.begin();

  Serial.println(F("BLE LED Peripheral"));
}

void loop() {
  BLECentral central = blePeripheral.central();

  if (central) {
    // central connected to peripheral
    Serial.print(F("Connected to central: "));
    Serial.println(central.address());

    while (central.connected()) {
      // central still connected to peripheral
      if (switchCharacteristic.written()) {
        // central wrote new value to characteristic, update LED
        if (switchCharacteristic.value()) {
          Serial.println(F("LED on"));
          digitalWrite(LED_PIN, HIGH);
        } else {
          Serial.println(F("LED off"));
          digitalWrite(LED_PIN, LOW);
        }
      }
    }

    // central disconnected
    Serial.print(F("Disconnected from central: "));
    Serial.println(central.address());
  }
}

nRF Connect for Mobileを使用してLEDに接続してBool値のTrue/Falseを書き込むと,黄緑色LEDは点灯/消灯の動作をする.

nRF Connect for Mobileのインストール

BLE確認アプリとして,Nordic SemiconductorのnRF Connect for Mobileを使用する*1

  1. App StoreにてnRF Connect for Mobileを検索してインストールする
    App StoreでのnRF Connect for Mobile
  2. インストール後にnRF Connect for Mobile起動時にBluetoothのアクセスを許可する
  3. nRF Connect for Mobile起動後,Scanner画面になるため,ledスケッチを書き込んだAE-TYBLE16を探す(ledスケッチのとおり名称:LED,サービス:19B10000-E8F2-537E-4F6C-D104768A1214が該当する)
    LEDかつServices: 19B10000-E8F2-537E-4F6C-D104768A1214を探す
  4. Connectをタップして接続すると,AE-TYBLE16のコンソールログに接続情報が出るとともに,nRF Connect for Mobileに以下のような画面が出る
    接続情報
  5. Clientをタップして画面を切り替え,↑マークのボタン(書込み)をタップする
    ↑マークのボタンをタップ(書込み操作)
  6. Write Valueの画面に切り替わったら,Bool,True,Writeの順にタップすることで書込み操作が行われ,LEDが点灯するとともにAE-TYBLE16のコンソールログにLED点灯の情報が出る
    Bool値のTrueを書き込む
  7. LEDを消灯する場合は,再度Write Valueの画面に切り替えて,Bool,False,Writeの順にタップすることで,LEDが消灯するとともにAE-TYBLE16のコンソールログにLED消灯の情報が出る
    Bool値のFalseを書き込む
  8. Disconnectをタップして非接続とすると,AE-TYBLE16のコンソールログに接続情報が出るとともに,nRF Connect for Mobileで非接続状態になる

データシート等

  1. 秋月電子通商AE-TYBLE16商品添付カード,2017/10/23発行

リンク先はすべて2023/01/04現在のもの

*1:今回はiOS版を使用するが,AndroidnRF Connect for Mobileももちろん存在する.