目的
AE-TYBLE16こと太陽誘電製EYSGJNAWY-WX(SoCはNordic Semiconductor製nRF51822)のBLE機能のステップ1として,接続と非接続確認を実施する.
- 事前にSoftDevice書込み等,Arduino IDEで作成したArduinoスケッチが書込みできる環境の整備:
☞STM32 Nucleoを用いたnRF51向けのArduino開発環境をつくる - GPIOやADC,シリアルインターフェースの機能確認:
☞Arduino環境でAE-TYBLE16のピンファンクションを確かめる - BLEの接続/非接続の確認(本記事)
- BLE経由のLチカ確認:
☞Arduino環境でAE-TYBLE16のBLEを始める(その2:BLE経由のLチカ) - 照度センサー明暗判定原理試作:
☞Arduino環境でAE-TYBLE16のBLEペリフェラルデバイス~明暗判定編~ - リードスイッチドア開閉判定原理試作:
☞Arduino環境でAE-TYBLE16のBLEペリフェラルデバイスを作る~ドア開閉判定編~
結論
BLEPeripheralライブラリーのExampleのstarterスケッチと,Nordic SemiconductorのiOSアプリnRF Connect for Mobile を用いて,ペリフェラルとして動作しているAE-TYBLE16に接続/非接続の動作が確認できた.
起動時画面 | 接続中画面 |
---|---|
本記事で紹介するおもな環境は下表のとおり:
ハードウェア名称 | 規格 | 製造会社 | 備考 |
---|---|---|---|
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 | 充電専用でなければ何でもよい |
ホスト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) | ☞以前の私の記事参照 |
詳細
ハードウェア
動作確認で,コンソールログ(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ライブラリーを検索してインストールする
starterスケッチの実行
BLEPeripheralライブラリーで用意されているスケッチのうち,一番簡単なstarterでBluetoothの接続/非接続を試みる.
starterは以下のとおり,Bluetoothでの接続/非接続時にコンソールにその結果を表示するように作られている.
// 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 // create peripheral instance, see pinouts above BLEPeripheral blePeripheral = BLEPeripheral(BLE_REQ, BLE_RDY, BLE_RST); // uuid's can be: // 16-bit: "ffff" // 128-bit: "19b10010e8f2537e4f6cd104768a1214" (dashed format also supported) // create one or more services BLEService service = BLEService("fff0"); // create one or more characteristics BLECharCharacteristic characteristic = BLECharCharacteristic("fff1", BLERead | BLEWrite); // create one or more descriptors (optional) BLEDescriptor descriptor = BLEDescriptor("2901", "value"); void setup() { Serial.begin(115200); #if defined (__AVR_ATmega32U4__) delay(5000); //5 seconds delay for enabling to see the start up comments on the serial board #endif blePeripheral.setLocalName("local-name"); // optional blePeripheral.setAdvertisedServiceUuid(service.uuid()); // optional // add attributes (services, characteristics, descriptors) to peripheral blePeripheral.addAttribute(service); blePeripheral.addAttribute(characteristic); blePeripheral.addAttribute(descriptor); // set initial value characteristic.setValue(0); // begin initialization blePeripheral.begin(); } 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 (characteristic.written()) { // central wrote new value to characteristic Serial.println(characteristic.value(), DEC); // set value on characteristic characteristic.setValue(5); } } // central disconnected Serial.print(F("Disconnected from central: ")); Serial.println(central.address()); } }
nRF Connect for Mobileを使用して接続/非接続すると,コンソールにログが出力される.
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画面になるため,starterスケッチを書き込んだAE-TYBLE16を探す(starterスケッチのとおり名称:
local-name
,サービス:FFF0
が該当する) - Connectをタップして接続すると,AE-TYBLE16のコンソールログに接続情報が出るとともに,nRF Connect for Mobileに以下のような画面が出る
- Disconnectをタップして非接続とすると,AE-TYBLE16のコンソールログに接続情報が出るとともに,nRF Connect for Mobileに以下のような画面が出る
また,情報は以下の5つの画面から構成され,接続時には以下のような表示となった.
クライアント情報 | サーバー情報 |
---|---|
ログ情報 | DFU(デバイスファームウェアアップデート)情報 |
---|---|
改訂履歴
# | 日付 | 内容 |
---|---|---|
1 | 2023/01/04 | 誤記修正 |
データシート等
参考サイト
リンク先はすべて2023/01/03現在のもの
*1:今回はiOS版を使用するが,Android版nRF Connect for Mobileももちろん存在する.