メインコンテンツまでスキップ

Seeed Studio XIAO nRF52840 シリーズ入門ガイド

XIAO nRF52840XIAO nRF52840 SenseXIAO nRF52840 PlusXIAO nRF52840 Sense Plus

Seeed Studio XIAO ファミリーで最初のワイヤレス製品である Seeed Studio XIAO nRF52840 は、Bluetooth 5.0 接続機能を統合した強力な Nordic nRF52840 MCU を搭載しています。同時に、小型で精巧なフォームファクタ を備えており、ウェアラブルデバイスや IoT プロジェクトに使用できます。片面実装可能な表面実装設計 とオンボードの Bluetooth アンテナ により、IoT プロジェクトを迅速に展開することが大幅に容易になります。

さらに、このボードには上位版である Seeed Studio XIAO nRF52840 Sense があります。これは 2 つの追加オンボードセンサを統合しています。1 つは パルス密度変調 (PDM) デジタルマイク です。リアルタイムでオーディオデータを受信できるため、音声認識に使用できます。もう 1 つは 6 軸慣性計測ユニット (IMU) であり、この IMU はジェスチャ認識のような TinyML プロジェクトで非常に有用です。これらのオンボードセンサにより、ボードが超小型でありながらユーザーに大きな利便性を提供します。

新たにアップグレードされた XIAO nRF52840 Plus と XIAO nRF52840 Sense Plus は、機能性と使いやすさが大幅に向上しています。多機能ピンの数は 20 に増加し、より複雑なプロジェクトをサポートするために I2SSPI リソースが追加されました。IoT やスマートカードアプリケーションへの統合を容易にするために NFC ピン が引き出され、さらに BAT ピン ははんだ付けのしやすさを高める位置に再配置され、よりユーザーフレンドリーなハードウェア体験を実現しています。

Seeed Studio XIAO RP2040 と比較すると、Seeed Studio XIAO nRF52840 は より豊富なインターフェース を備えています。まず注目すべき点は、ボード上で 近距離無線通信 (NFC) インターフェース が機能していることです。次に、Type-C インターフェースの側面には小型の リセットボタン があります。反対側には、バッテリ接続時の充電状態を示す チャージ LED とともに 3-in-one LED (ユーザー LED) が配置されています。11 個のデジタル I/OPWM ピン として使用でき、6 個のアナログ I/OADC ピン として使用できます。UART、I2C、SPI といった 3 種類すべての一般的なシリアルインターフェースをサポートします。Seeed Studio XIAO RP2040 と同様に、オンボード 2 MB フラッシュ を搭載しており、Arduino、MicroPython、CircuitPython などのプログラミング言語 でプログラムすることができます。

Seeed Studio XIAO nRF52840 Sense は Seeed Studio XIAO 拡張ボードと互換性があります。

特徴

  • 強力なワイヤレス機能:オンボードアンテナ付き Bluetooth 5.0
  • 強力な CPU:Nordic nRF52840、ARM® Cortex®-M4 32-bit プロセッサ (FPU 搭載)、64 MHz
  • 超低消費電力:スタンバイ時消費電流 5μA 未満
  • バッテリ充電チップ:リチウムバッテリの充放電管理をサポート
  • オンボード 2 MB フラッシュ
  • オンボード PDM マイク (Seeed Studio XIAO nRF52840 Sense のみ)
  • オンボード 6 軸 LSM6DS3TR-C IMU (Seeed Studio XIAO nRF52840 Sense のみ)
  • 超小型サイズ:21 x 17.8mm、ウェアラブルデバイス向けの Seeed Studio XIAO シリーズのクラシックなフォームファクタ
  • 豊富なインターフェース:XIAO nRF52840 (Sense) では 1xUART、1xI2C、1xSPI、1xNFC、1xSWD、11xGPIO(PWM)、6xADC;XIAO nRF52840 (Sense) Plus では 2xUART、1xI2C、2xSPI、1xI2S、1xNFC、1xSWD、18xGPIO(PWM)、6xADC
  • 片面実装コンポーネント、表面実装設計

仕様比較

項目Seeed Studio XIAO nRF52840Seeed Studio XIAO nRF52840 SenseSeeed Studio XIAO nRF52840 PlusSeeed Studio XIAO nRF52840 Sense Plus
プロセッサNordic nRF52840, ARM® Cortex®-M4 32-bit processor with FPU, 64 MHz
ワイヤレス接続Bluetooth Low Energy 5.4/ Bluetooth Mesh/NFC
メモリ256 KB RAM,1MB Flash 2MB onboard Flash
内蔵センサN/A6 DOF IMU (LSM6DS3TR-C), PDM MicrophoneN/A6 DOF IMU (LSM6DS3TR-C), PDM Microphone
インターフェース1xI2C, 1xUART, 1xSPI1xI2C, 2xUART, 2xSPI, 1xI2S
PWM/アナログピン11/620/6
オンボードボタンReset Button
オンボード LED3-in-one LED/ Charge LED
バッテリ充電チップBQ25101
対応プログラミング言語Arduino/ MicroPython/ CircuitPython

ハードウェア概要

XIAO nRF52840/XIAO nRF52840 Sense 表面インジケータ図
XIAO nRF52840/XIAO nRF52840 Sense 裏面インジケータ図
XIAO nRF52840/XIAO nRF52840 Sense ピン一覧

ピンマップ

XIAO ピン機能チップピン説明Arduino 名
5VVBUS電源入力/出力
GND
3V33V3_OUT電源出力
D0AnalogP0.02GPIO, AIN00
D1AnalogP0.03GPIO, AIN11
D2AnalogP0.28GPIO, AIN42
D3AnalogP0.29GPIO, AIN53
D4Analog,SDAP0.04GPIO, I2C Data, AIN24
D5Analog,SCLP0.05GPIO, I2C Clock, AIN35
D6TXP1.11GPIO, UART Transmit7/6
D7RXP1.12GPIO, UART Receive8/7
D8SPI_SCKP1.13GPIO, SPI Clock9/8
D9SPI_MISOP1.14GPIO, SPI Data10/9
D10SPI_MOSIP1.15GPIO, SPI Data11/10
NFC1P0.09NFC
NFC2P0.10NFC
ResetP0.18RESET
ADC_BATP0.14BAT 電圧値の読み取り
6 DOF IMU_PWRP1.086D モジュールの電源スイッチ
6 DOF IMU__INT1P0.116D モジュールの割り込み信号ピン
PDM Microphone_DATAP0.16PDM オーディオデータ入力ピン
PDM Microphone_CLKP1.00PDM オーディオクロック出力ピン
RF Switch Port SelectP2.05オンボードアンテナの切り替え
RF Switch PowerP2.03電源
CHARGE_LEDP0.17CHG-LED_Red
USER_LED_RP0.26ユーザー制御の赤色 RGB LED ピン11
USER_LED_BP0.06ユーザー制御の青色 RGB LED ピン13/12
USER_LED_GP0.30ユーザー制御の緑色 RGB LED ピン12/13

2 つの Arduino ライブラリ

Seeed Studio XIAO nRF52840 は多くの機能を小さなボード 1 枚に集約しており、そのため各機能が必ずしも最大限に発揮されない場合があります。そこで Seeed は、各機能の性能を最大限に引き出すために 2 つの Arduino ライブラリを公開しました。したがって:

  • Bluetooth 機能や「Low Energy Cost Function」を利用したい場合は、Seeed nRF52 Boards ライブラリを使用することを推奨します。
  • 組み込み機械学習アプリケーションで使用したい場合や「IMU & PDM advanced function」を利用したい場合は、Seeed nRF52 mbed-enabled Boards ライブラリを使用することを推奨します。
  • どちらのライブラリも、LED、Digital、Analog、Serial、I2C、SPI などの基本的な使用に関しては非常に良好にサポートしています。

これら 2 つのライブラリでサポートされるピン定義は少し異なる場合があり、Seeed はそれが明確になるまで wiki を継続的に更新していきます。

ヒント
  1. Seeed nRF52 Boards のオンボードパッケージを使用する場合、Serial 機能がコンパイルできないことがあります。解決策は、コード内に #include <Adafruit_TinyUSB.h> の行を追加することです。このパッケージは次のリンクからダウンロードできます: https://github.com/adafruit/Adafruit_TinyUSB_Arduino

  2. もっと簡単な方法を好む場合は、最初から Seeed nRF52 mbed-enabled Boards を選択することもできます。こちらは追加の変更なしで Serial 機能のコンパイルをサポートします。

はじめに

まず、Seeed Studio XIAO nRF52840(Sense)をコンピュータに接続し、Arduino IDE から簡単なコードを書き込んで、ボードが正常に動作しているかを確認します。

ハードウェアの準備

次のものを用意します:

ヒント

一部の USB ケーブルは電源供給のみで、データ転送ができません。USB ケーブルを持っていない場合や、お使いの USB ケーブルがデータ転送に対応しているか分からない場合は、Seeed USB Type-C support USB 3.1 を確認してください。

Seeed Studio XIAO nRF52840(Sense)を USB Type-C ケーブルでコンピュータに接続します。

pir

ソフトウェアの準備

  • ステップ 1. お使いのオペレーティングシステムに応じて、最新バージョンの Arduino IDE をダウンロードしてインストールします

pir

  • ステップ 2. Arduino アプリケーションを起動します

  • ステップ 3. Arduino IDE に Seeed Studio XIAO nRF52840(Sense)ボードパッケージを追加します

File > Preferences に移動し、"Additional Boards Manager URLs" に以下の URL を入力します: https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

pir

Tools > Board > Boards Manager... に移動し、検索ボックスにキーワード「seeed nrf52」と入力し、使用したいボードの最新バージョンを選択してインストールします。両方インストールしても構いません。

pir

  • ステップ 4. ボードとポートを選択します

Board

ボードパッケージをインストールしたら、Tools > Board に移動して使用したいボードを選択し、続けて「Seeed XIAO nRF52840 Sense」を選択します。これで Arduino IDE 用の Seeed Studio XIAO nRF52840(Sense)の設定が完了しました。

pir

Port

Tools > Port に移動し、接続されている Seeed Studio XIAO nRF52840 (Sense) のシリアルポート名を選択します。これは通常 COM3 以上です(COM1COM2 は通常ハードウェアシリアルポート用に予約されています)。接続されている Seeed Studio XIAO nRF52840 (Sense) のシリアルポートには、通常かっこが含まれており、Seeed Studio XIAO nRF52840 の場合は Seeed Studio XIAO nRF52840Seeed Studio XIAO nRF52840 Sense の場合は Seeed Studio XIAO nRF52840 Sense と表記されています。

pir

  • ステップ 5. File > Examples > 01.Basics > Blink に移動して Blink サンプルを開きます

pir

  • ステップ 6. Upload ボタンをクリックして、Blink サンプルコードをボードに書き込みます

pir

アップロードが完了すると、内蔵の赤色 LED が 1 秒ごとの間隔で点滅するのが確認できます。これは接続が成功したことを意味し、これで Seeed Studio XIAO nRF52840 (Sense) を使って、さらに多くのプロジェクトを探求できます!

内蔵 3-in-one LED で遊ぶ

Seeed Studio XIAO nRF52840 (Sense) にはユーザーがプログラム可能な オンボード 3-in-one LED が搭載されています。ここでは Arduino を使って RGB の各色を 1 つずつ制御する方法を学びます!

まず、この LED のコードによる制御動作は、一般的なものとは異なることを理解する必要があります。LOW 信号 を与えると LED が点灯しHIGH 信号 を与えると 消灯 します。これは、この LED がコモンアノードで制御されており、低レベル信号のときのみ点灯するためです。

サンプルコードは次のようになります:

void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
digitalWrite(LED_BUILTIN, HIGH);
}

ここでは、HIGH が使われていますが、LED は OFF のままです。LED を ON にするには、HIGHLOW に置き換える必要があります。

以下の LED のピンマッピングを参照し、コード内で使用してください:

  • 赤色 LED = LED_BUILTIN または LED_RED
  • 青色 LED = LED_BLUE
  • 緑色 LED = LED_GREEN

消費電力の検証

Seeed Studio XIAO nRF52840 は低消費電力であり、ここではそれを検証する方法を提供します。ここでは Seeed nRF52 Boards ライブラリを使用することを強く推奨します。

  • ステップ 1. JLink Downloader を使用して、Seeed Studio XIAO nRF52840 (Sense) 用の bootloader firmware を書き込みます。
注記

Seeed Studio XIAO nRF52840 の工場出荷時ファームウェアを使用している場合、または Seeed Studio XIAO nRF52840 のファームウェアを一度も変更していない場合は、このステップをスキップできます。

  • ステップ 2. ここで Seeed nRF52 Boards ライブラリを使用します。

pir

  • ステップ 3. deep_sleep デモをここでアップロードし、Arduino で実行します
// The MIT License (MIT)
// Copyright (c) 2019 Ha Thach for Adafruit Industries

#include "SdFat.h"
#include "Adafruit_SPIFlash.h"

// Uncomment to run example with custom SPI and SS e.g with FRAM breakout
// #define CUSTOM_CS A5
// #define CUSTOM_SPI SPI

#if defined(CUSTOM_CS) && defined(CUSTOM_SPI)
Adafruit_FlashTransport_SPI flashTransport(CUSTOM_CS, CUSTOM_SPI);

#elif defined(ARDUINO_ARCH_ESP32)
// ESP32 use same flash device that store code.
// Therefore there is no need to specify the SPI and SS
Adafruit_FlashTransport_ESP32 flashTransport;

#else
// On-board external flash (QSPI or SPI) macros should already
// defined in your board variant if supported
// - EXTERNAL_FLASH_USE_QSPI
// - EXTERNAL_FLASH_USE_CS/EXTERNAL_FLASH_USE_SPI
#if defined(EXTERNAL_FLASH_USE_QSPI)
Adafruit_FlashTransport_QSPI flashTransport;

#elif defined(EXTERNAL_FLASH_USE_SPI)
Adafruit_FlashTransport_SPI flashTransport(EXTERNAL_FLASH_USE_CS, EXTERNAL_FLASH_USE_SPI);

#else
#error No QSPI/SPI flash are defined on your board variant.h !
#endif
#endif

Adafruit_SPIFlash flash(&flashTransport);


/* If you want to use a specific flash device, for example for a custom built board, first look for it in Adafruit_SPIFlash\src\flash_devices.h
* If it isn't in there you need to create your own definition like the W25Q80DLX_EXAMPLE example below.
* These definitions need to be edited to match information on the data sheet of the flash device that you want to use.
* If you are not sure what the manufacture ID, memory type and capacity values should be, try running the sketch anyway and look at the serial output
* The flash device will report these values to you as a single hexadecimal value (the JDEC ID)
* For example, the first device on the list - the W25Q80DLX - will report its JDEC ID as 0xef4014, which is made of these three values:
* manufacturer_id = 0xef
* memory_type = 0x40
* capacity = 0x14
* With this macro properly defined you can then create an array of device definitions as shown below, this can include any from the list of devices in flash_devices.h, and any you define yourself here
* You need to update the variable on line 71 to reflect the number of items in the array
* You also need to uncomment line 84 and comment out line 81 so this array will be passed to the flash memory driver.
*/
//Example of a user defined flash memory device:
//#define W25Q80DLX_EXAMPLE \
// { \
// .total_size = (1 << 20), /* 1 MiB */ \
// .start_up_time_us = 5000, .manufacturer_id = 0xef, \
// .memory_type = 0x40, .capacity = 0x14, .max_clock_speed_mhz = 80, \
// .quad_enable_bit_mask = 0x02, .has_sector_protection = false, \
// .supports_fast_read = true, .supports_qspi = true, \
// .supports_qspi_writes = false, .write_status_register_split = false, \
// .single_status_byte = false, .is_fram = false, \
// }

/*
* Create an array of data structures and fill it with the settings we defined above.
* We are using two devices, but more can be added if you want.
*/
//static const SPIFlash_Device_t my_flash_devices[] = {
// W25Q80DLX_EXAMPLE,
//};
/*
* Specify the number of different devices that are listed in the array we just created. If you add more devices to the array, update this value to match.
*/
//const int flashDevices = 1;


#include <bluefruit.h>

bool deepPowerDown(Adafruit_SPIFlash& flash, Adafruit_FlashTransport& transport) {
uint32_t id_before = flash.getJEDECID();

transport.begin();
transport.runCommand(0xB9); // SPI deep power-down command
delay(10);

uint32_t id_after = flash.getJEDECID();

return (id_after == 0xFFFFFF || id_after == 0xFFFFFFFF);
}

void setup() {
flash.begin();
Bluefruit.begin();

if (!deepPowerDown(flash, flashTransport)) {
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
while (1) {
yield();
}
}

flash.end();

sd_power_system_off();
}

void loop() {
// nothing to do
}
ヒント

ここで、コードを提供してくださった作者の方に特別な感謝の意を表したいと思います → daCoder

このサンプルについて、より詳細な情報を知りたい場合は、Here をクリックしてください

バッテリー充電電流

バッテリー充電電流は 50mA または 100mA を選択でき、Pin13 を High または Low に設定することで 50mA か 100mA に変更できます。低電流充電は入力モードが HIGH LEVEL に設定されているときであり、高電流充電は出力モードが LOW LEVEL に設定されているときです。

Low Charging Current

void setup(){
pinMode (P0_13, OUTPUT);
}
void loop() {
digitalWrite(P0_13, HIGH);
}

High Charging Current

void setup(){
pinMode (P0_13, OUTPUT);
}
void loop() {
digitalWrite(P0_13, LOW);
}

デバッグおよびブートローダー再書き込みのために SWD ピンへアクセスする

必要なハードウェア

必要なソフトウェア

Web サイトから Segger ソフトウェアをダウンロードする必要があります。

  • ステップ 1. Jlink を使用して、以下のピンを接続します:

pir

  • ステップ 2. J-Flash を起動し、nRF52840 を検索して新しいプロジェクトを作成します:

pir

  • ステップ 3. "Target" をクリックし、続いて "Connect" を選択します。

pir

  • ステップ 4. bin または hex file をソフトウェア上にドラッグします。その後、F4 と F5 をこの順番で押します。これで再書き込みは完了です。

FAQ

Q1: ボードにコードをアップロードするときに Arduino IDE がフリーズします

まず "Reset Button" を 1 回クリックしてボードを reset してみてください。それでも解決しない場合は、bootloader mode に入るために素早く 2 回クリックします。それでも動作しない場合は、ボードを PC から取り外し、再度接続してください。

Q2: Arduino IDE 上で、ボードがシリアルデバイスとして表示されません

まず "Reset Button" を 1 回クリックしてボードを reset してみてください。それでも解決しない場合は、bootloader mode に入るために素早く 2 回クリックします。

Q3: XIAO nRF52840 (Sense) を使用してバッテリー充電を行う際の注意点は何ですか?

P0.14 (D14) が 3.3V の高レベルで ADC 機能をオフにすると、P0.31 は入力電圧制限の 3.6V に達します。P0.31 ピンが焼損するリスクがあります。

現在この問題に対しては、ユーザーがバッテリー充電中に P0.14 (D14) の ADC 機能をオフにしたり、P0.14 (D14) を High に設定したりしないことを推奨します。

pir

Q4: 電源投入時に緑色のランプはどのように動作しますか?

nRF52840 RGB Schematic

P0.17 ピンは緑色インジケータランプの動作を制御するために使用され、充電状態を示します:

  • Low レベル:充電が進行中のとき。
  • High レベル:バッテリーが充電されていない、または完全に充電されているとき。

Low レベルのとき、RED_CHG LED が点灯します。

詳細については、PMIC のデータシート BQ25100 および XIAO nRF52840 データシート を確認してください。

リソース

Seeed Studio XIAO nRF52840

ハードウェア設計

メカニカル設計

Seeed Studio XIAO nRF52840 Sense

ハードウェア設計

メカニカル設計

その他

Seeed Studio XIAO nRF52840 (Sense) Plus

ハードウェア設計

メカニカル設計

コース用リソース

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます。私たちは、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに応じて選択いただける、複数のコミュニケーションチャネルをご用意しています。

Loading Comments...