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

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) で、ジェスチャ認識のような 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、FPU 搭載 ARM® Cortex®-M4 32 ビットプロセッサ、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
オンボードボタンリセットボタン
オンボード LED3-in-one LED/ チャージ 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電源出力
D0アナログP0.02GPIO, AIN00
D1アナログP0.03GPIO, AIN11
D2アナログP0.28GPIO, AIN42
D3アナログP0.29GPIO, AIN53
D4アナログ,SDAP0.04GPIO, I2C データ, AIN24
D5アナログ,SCLP0.05GPIO, I2C クロック, AIN35
D6TXP1.11GPIO, UART 送信7/6
D7RXP1.12GPIO, UART 受信8/7
D8SPI_SCKP1.13GPIO, SPI クロック9/8
D9SPI_MISOP1.14GPIO, SPI データ10/9
D10SPI_MOSIP1.15GPIO, SPI データ11/10
NFC1P0.09NFC
NFC2P0.10NFC
ResetP0.18リセット
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 機能や「低消費電力機能」を利用したい場合は、Seeed nRF52 Boards ライブラリを使用することを推奨します。
  • 組み込み機械学習アプリケーションで使用したい場合や「IMU & PDM 高度機能」を利用したい場合は、Seeed nRF52 mbed-enabled Boards ライブラリを使用することを推奨します。
  • どちらのライブラリも、LED、デジタル、アナログ、シリアル、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 を確認してください。

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

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. ボードとポートを選択します

ボード

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

pir

ポート

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

pir

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

pir

  • Step 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 は 消灯 します。LED を 点灯 させるには、HIGHLOW に置き換える必要があります。

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

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

消費電力の検証

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

注記

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

  • Step 2. ここで Seeed nRF52 Boards ライブラリを使用します。

pir

  • Step 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

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

バッテリー充電電流

バッテリー充電電流は 50mA または 100mA を選択でき、Pin13 を High または Low に設定することで 50mA か 100mA に切り替えることができます。低電流充電時は、入力モードで HIGH レベルに設定され、高電流充電時は、出力モードで LOW レベルに設定されます。

低電流充電

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

高電流充電

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

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

必要なハードウェア

必要なソフトウェア

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

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

pir

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

pir

  • Step 3. "Target" をクリックし、次に "Connect" を選択します。

pir

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

FAQ

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

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

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

まず「Reset Button」を 1 回クリックしてボードをリセットしてみてください。それでも解決しない場合は、ブートローダモードに入るために素早く 2 回クリックします。

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

P0.14 (D14) が 3.3V の High レベルで 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...