目的
AE-TYBLE16こと太陽誘電製EYSGJNAWY-WX(SoCはNordic Semiconductor製nRF51822)のBLE機能のステップ2として,BLE経由のLチカを実施する.
- 事前にSoftDevice書込み等,Arduino IDEで作成したArduinoスケッチが書込みできる環境の整備:
☞STM32 Nucleoを用いたnRF51向けのArduino開発環境をつくる - GPIOやADC,シリアルインターフェースの機能確認:
☞Arduino環境でAE-TYBLE16のピンファンクションを確かめる - BLEの接続/非接続の確認:
☞Arduino環境でAE-TYBLE16のBLEを始める(その1:接続/非接続) - BLE経由のLチカ確認(本記事)
- 照度センサー明暗判定原理試作:
☞Arduino環境でAE-TYBLE16のBLEペリフェラルデバイス~明暗判定編~ - リードスイッチドア開閉判定原理試作:
☞Arduino環境でAE-TYBLE16のBLEペリフェラルデバイスを作る~ドア開閉判定編~
結論
BLEPeripheralライブラリーのExampleのledスケッチと,Nordic SemiconductorのiOSアプリnRF Connect for Mobile を用いて,ペリフェラルとして動作しているAE-TYBLE16にBool値のTrue/Falseを書き込むことで,LED点灯/消灯の動作が確認できた.
Lチカ over BLE pic.twitter.com/d9DPdpqb7Y
— AKETO, Tomu (@so2akt) 2023年1月4日
起動時画面 | 接続中画面 |
---|---|
Bool値のTrue書込み (LED点灯) |
Bool値のFalse書込み (LED消灯) |
---|---|
本記事で紹介するおもな環境は下表のとおり:
ハードウェア名称 | 規格 | 製造会社 | 備考 |
---|---|---|---|
BLEモジュール | AE-TYBLE16 | 秋月電子通商 | 購入時1,280JPY 太陽誘電製EYSGJNAWY-WX(SoCはNordic Semiconductor製nRF51822) |
デバッガー | NUCLEO-L053R8(STSW-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氏のライブラリーを使用する.追加方法は,ほかのライブラリー追加方法と同じ.
- ツールメニューのライブラリを管理...から,ライブラリマネージャを起動する
bleperi
などで検索して,BLEPeripheralライブラリーを検索してインストールする
ledスケッチの実行
BLEPeripheralライブラリーで用意されているスケッチのうち,ledでBluetoothの黄緑色LEDの点灯/消灯を試みる.
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.
- App StoreにてnRF Connect for Mobileを検索してインストールする
- インストール後にnRF Connect for Mobile起動時にBluetoothのアクセスを許可する
- nRF Connect for Mobile起動後,Scanner画面になるため,ledスケッチを書き込んだAE-TYBLE16を探す(ledスケッチのとおり名称:
LED
,サービス:19B10000-E8F2-537E-4F6C-D104768A1214
が該当する) - Connectをタップして接続すると,AE-TYBLE16のコンソールログに接続情報が出るとともに,nRF Connect for Mobileに以下のような画面が出る
- Clientをタップして画面を切り替え,↑マークのボタン(書込み)をタップする
- Write Valueの画面に切り替わったら,Bool,True,Writeの順にタップすることで書込み操作が行われ,LEDが点灯するとともにAE-TYBLE16のコンソールログにLED点灯の情報が出る
- LEDを消灯する場合は,再度Write Valueの画面に切り替えて,Bool,False,Writeの順にタップすることで,LEDが消灯するとともにAE-TYBLE16のコンソールログにLED消灯の情報が出る
- Disconnectをタップして非接続とすると,AE-TYBLE16のコンソールログに接続情報が出るとともに,nRF Connect for Mobileで非接続状態になる
データシート等
リンク先はすべて2023/01/04現在のもの
*1:今回はiOS版を使用するが,Android版nRF Connect for Mobileももちろん存在する.