Seeed XIAO BLE nRF52840 を試してみた

# はじめに

XIAOシリーズに無線機能(Bluetooth® Low Energy)がついた製品(Seeed XIAO BLE nRF52840)が発売されたので、ノラバッジ(MINI LED BADGE)を対応するため、さっそく試してみた。

- Seeeduino XIAO
- Seeed XIAO RP2040
- Seeed XIAO BLE nRF52840
- Seeed XIAO BLE nRF52840 Sense

![image_01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/14e0b6bb-2ab9-4aad-772e-b15ddc460678.jpeg)

![image_08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/80acb0ac-2d46-8ea1-4cdb-000ffc63d1cc.jpeg)

![image_07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/275f87ba-77e4-6198-0368-0f2a27fba324.jpeg)

https://protopedia.net/prototype/1904

![image_02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/d6780b1e-6026-a03c-997d-16a64d0b48b0.jpeg)

# ノラバッジ(MINI LED BADGE)の対応機種

nRF52832で動作実績があったので、nRF52840でも動作するだろうと予測はしていましたが、新たなBLEライブラリ(<a href="https://github.com/arduino-libraries/ArduinoBLE">ArduinoBLE</a>) を使用する必要がありました。

- MDBT42Q (nRF52832)
- M5Stick-C、M5Atom Lite、M5Atom Matrix (ESP32)

https://qiita.com/kitazaki/items/f748ba7c0739ec22e182

https://qiita.com/kitazaki/items/537e9b215e2089004bbc

# XIAO BLEのArduino IDE環境

基本的にSeeed Wikiを参照して手順とおりに実施すれば環境構築は完了します。

https://wiki.seeedstudio.com/XIAO_BLE/

ただし、Windows環境を前提に説明されていますので、macOS環境は少し異なる部分がありました。

### USB接続で認識されるXIAO BLE nRF52840のデバイス情報

```bash
$ system_profiler SPUSBDataType

USB:

    USB 3.1 Bus:

      Host Controller Driver: AppleUSBXHCIAR
      PCI Device ID: 0x15d4 
      PCI Revision ID: 0x0002 
      PCI Vendor ID: 0x8086 
      Bus Number: 0x00 

    USB 3.0 Bus:

      Host Controller Driver: AppleUSBXHCISPTLP
      PCI Device ID: 0x9d2f 
      PCI Revision ID: 0x0021 
      PCI Vendor ID: 0x8086 

        Seeed XIAO nRF52840 Sense:

          Product ID: 0x8045
          Vendor ID: 0x2886
          Version: 1.01
          Serial Number: 7B8BEF52CBA61E5E
          Speed: Up to 12 Mb/s
          Manufacturer: Arduino
          Location ID: 0x14100000 / 4
          Current Available (mA): 500
          Current Required (mA): 100
          Extra Operating Current (mA): 0
```

![image_02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/2139a01f-5324-ac48-5844-f604bedbea90.jpeg)

### ボードマネージャーでSeeed XIAO nRF52840 Senseをインストール

インストール後に警告が表示されましたが、動作(コンパイル、ビルド、デバイスへのインストール)には問題ありませんでした。

![image_03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/e05468a1-7e6b-d729-fa4a-bedb9709edda.jpeg)

### ボードの選択

「ツール」→「ボード」→「Seeed nRF Boards」→「Seeed XIAO BLE - nRF52840」の順に選択します。

![image_05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/55a4585f-89fb-2298-97b3-4548268e916b.jpeg)

### シリアルポートの選択

「ツール」→「シリアルポート」→「/dev/cu.usbmodem14101」の順に選択します。  
(環境によって、usbmodemXXXXXのXXXXXの数字は変わる可能性があります)

![image_06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/7be8f5c3-b236-ce2c-02ff-41e25d887e2d.jpeg)

# Lチカの動作確認

Seeed Wikiの手順通りです。3色のLED動作を確認しました。

![image_10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/a3d4b2a9-3f24-3a25-3c2a-8fe6e3e50b9d.jpeg)
![image_11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/d0fea05e-a56f-9f4e-aa2e-12a29ffb41e8.jpeg)
![image_12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/49d654c9-d1bc-d9f9-9ddd-6838ceedc4fe.jpeg)

# BLEの動作確認

Seeed Wikiの手順通りです。ArduinoBLE(BLEライブラリ)のバージョンは1.3.1でした。

https://wiki.seeedstudio.com/XIAO-BLE-Sense-Bluetooth-Usage/

![image_20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/ce89435b-382f-870f-583a-af0b5a1e1c1a.jpeg)

LightBlueアプリの動作確認で、最初、表示名が「Arduino」でしたが、接続して値を書き込んだ後は表示名前が「LED」に変化しました。

![IMG_0848.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/72e202af-7d4c-c47c-afb7-9800a8aaf3d3.png)
![IMG_0849.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/0ca26464-84c0-c191-caeb-2a9c3a9003ce.png)

# ノラバッジとの接続確認

サンプルコードのBLE PeripheralのCallbackLEDのソースコードを参考にノラバッジとの接続確認を行いました。

https://github.com/arduino-libraries/ArduinoBLE/tree/master/examples/Peripheral/CallbackLED

ソースコードはGitHubに置きました。

https://raw.githubusercontent.com/kitazaki/nora_badge_3rd/master/XIAO_BLE_MINI_LED_BADGE_01.ino

![image_40.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/db63199b-6ae5-49db-7aff-19de253c46cc.jpeg)

### 動画

<a href="https://youtu.be/9bx-d_6mkCs"><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/7343c7d0-b1d1-3422-91f7-3086393ae1a8.jpeg"></a>

### LightBlueアプリの動作確認

![IMG_0852.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/02cc1345-99b1-b4ae-876c-e909b8696757.png)

### LED Badgeアプリの動作確認

![IMG_0858.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/90c14f8d-1a29-01cb-f01f-2a62caed1a6e.png)