1. Seeed XIAO BLE nRF52840とは
BLEタイプのXIAO。
Seeed Studio XIAO nRF52840
2. Arduino開発環境
上記のSeeed Wikiにしたがってセットアップする。
2.1 ボードの追加
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
- 「ツール」>「ボード」>「ボードマネージャ」で 「seeed nrf52」を検索。
- 「Seeed nRF52 Boards」と「Seeed nRF52 mbed-enabled Boards」が見つかる。ここでは後者を選択。
- ボードとシリアルポートを選択。
※ シリアルポートが認識しないときは、USBコネクタの横の小さなリセットボタン(RSTのシルクあり)をダブルクリックする。
2.2 ライブラリの追加
- 「スケッチ」>「ライブラリをインクルード」>「ライブラリを管理」で「ArduinoBLE」を検索してインストール。
2.3 (捕捉) ボードとライブラリについて
ボードの選択が Seeed nRF52 Boards か Seeed nRF52 mbed-enabled Boards かで利用できるBLEライブラリが異なる。 Seeed nRF52 Boards では Adafruit Bluefruit nRF52 Libraries が、Seeed nRF52 mbed-enabled Boards では ArduinoBLE が利用できる。前者のほうがサンプルが豊富だが、ここではシンプルで分かりやすかった後者をまず使ってみる。
ボード | BLEライブラリ |
---|---|
Seeed nRF52 Boards | Adafruit Bluefruit nRF52 Libraries |
Seeed nRF52 mbed-enabled Boards | ArduinoBLE |
3. Lチカ
3.1 オンボードのLED
基板上に3色LEDがある。
void setup() { } void loop() { digitalWrite(LEDB, HIGH); digitalWrite(LEDR, LOW); delay(500); digitalWrite(LEDR, HIGH); digitalWrite(LEDG, LOW); delay(500); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, LOW); delay(500); }
3.2 NeoPixel
NeoPixel(WS2812B)のドライブにはAdafruitのライブラリが利用できる。
「スケッチ」>「ライブラリをインクルード」>「ライブラリを管理」で「Adafruit NeoPixel」を検索してインストール。
下記は、D0ピンで12個のNeoPixelを制御するスケッチ。
#include <Adafruit_NeoPixel.h> #define PIN D0 #define NUMPIXELS 12 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint16_t colorH = 0; // 色相(HSVのH) void setup() { pixels.begin(); } void loop() { colorH = colorH + 1; for (int i = 0; i < NUMPIXELS; ++i) { // H(色相), S(彩度), V(明度)を制御 pixels.setPixelColor(i, pixels.ColorHSV(colorH, 255, 255)); } pixels.show(); delay(5); }
4. BLE
4.1 スケッチ
BLEで基板上の赤色LEDをON/OFFするサンプルを試す。
「スケッチ例」>「ArduinoBLE」>「Peripheral」>「LED」を開く。
ただし、LEDのON/OFFが逆なので下記のように修正する。
また、ターミナルでシリアルポートを開かないと動作が始まらないことにも注意。
if (switchCharacteristic.value()) { Serial.println("LED on"); digitalWrite(ledPin, LOW); // LOWでON } else { Serial.println(F("LED off")); digitalWrite(ledPin, HIGH); // HIGHでOFF }
4.2 スマホで動作確認
nRF ConnectやLightBlue等の汎用のBLEツールで動作確認する。ここではnRF Connectを使用した。
まずデバイスをスキャンする。このサンプルではデバイス名は「LED」と表示される。見つかったら接続する。
次にサービスを選択する。サービスのUUIDはスケッチの20行目で "19B10000-E8F2-537E-4F6C-D104768A1214" と定義している。表示名は「Unknown Service」となる。
するとキャラクタリスティックが表示される。キャラクタリスティックのUUIDはスケッチの23行目で "19B10001-E8F2-537E-4F6C-D104768A1214" と定義している。表示名は「Unknown Characteristick」となる。
「↑」のボタンを押すと Write value の画面になる。0x01 を SENDすると赤色LEDが点灯する。0x00 を SENDすると消灯する。またシリアルポートにもログが出力される。