Skip to main content

Seeed Studio XIAO nRF52840 シリーズの使い方

XIAO nRF52840XIAO nRF52840 SenseXIAO nRF52840 PlusXIAO nRF52840 Sense Plus

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

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

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

Seeed Studio XIAO RP2040 と比較して、Seeed Studio XIAO nRF52840 はより豊富なインターフェースを含んでいます。まず注目すべきは、ボード上で近距離無線通信(NFC)インターフェースが機能することです。次に、Type-C インターフェースの側面に小さなリセットボタンがあります。反対側には、バッテリーが接続されたときの充電状態を示す充電LEDと共に**3-in-1 LED(ユーザーLED)**があります。PWM ピンとして使用できる 11 のデジタル I/OADC ピンとして使用できる 6 のアナログ I/O があります。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ビットプロセッサ(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ビットプロセッサ(FPU付き)、64 MHz
ワイヤレス接続Bluetooth LE 5.2/NFC
メモリ256 KB RAM、1MBフラッシュ、2MBオンボードフラッシュ
内蔵センサーなし6軸IMU(LSM6DS3TR-C)、PDMマイクロフォンなし6軸IMU(LSM6DS3TR-C)、PDMマイクロフォン
インターフェース1xI2C、1xUART、1xSPI1xI2C、2xUART、2xSPI、1xI2S
PWM/アナログピン11/620/6
オンボードボタンリセットボタン
オンボードLED3-in-1 LED/充電LED
バッテリー充電チップBQ25101
プログラミング言語Arduino/MicroPython/CircuitPython

ハードウェア概要

XIAO nRF52840/XIAO nRF52840 Sense 表面図解
XIAO nRF52840/XIAO nRF52840 Sense 裏面図解
XIAO nRF52840/XIAO nRF52840 Sense ピンリスト

2つのArduinoライブラリ

Seeed Studio XIAO nRF52840は小さなボードに多くの機能を搭載しており、時にはそれらの最高のパフォーマンスを発揮できない場合があります。そのため、Seedは各機能のパワーを最大化するために2つのArduinoライブラリを公開しています。したがって:

  • Bluetooth機能と「低消費電力機能」を適用したい場合は、Seeed nRF52 Boardsライブラリの使用を推奨します。
  • 組み込み機械学習アプリケーションで使用したり、「IMU & PDM高度機能」を適用したい場合は、Seeed nRF52 mbed-enabled Boardsライブラリの使用を推奨します。
  • 両方のライブラリは、LED、デジタル、アナログ、シリアル、I2C、SPIなどの基本的な使用において非常によくサポートしています。

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

tip
  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から簡単なコードをアップロードして、ボードが正常に機能しているかを確認します。

ハードウェアセットアップ

以下を準備する必要があります:

tip

一部の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 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-1 LEDで遊ぶ

Seeed Studio XIAO nRF52840 (Sense)にはオンボード3-in-1 LEDがあり、ユーザーがプログラム可能です。今度は、Arduinoを使用してRGBカラーを1つずつ制御する方法を学びます!

まず、このLEDの動作がコードで制御される際に通常とは異なることを理解する必要があります。LOW信号を与えるとLEDが点灯し、HIGH信号を与えるとLEDが消灯します。これは、この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ライブラリの使用を強く推奨します。

note

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
}
tip

ここで、コードを提供してくれた作者 → daCoder ← に特別な感謝を表したいと思います

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

バッテリー充電電流

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

低充電電流

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ピンへのアクセス

必要なハードウェア

必要なソフトウェア

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

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

pir

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

pir

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

pir

  • ステップ 4. binまたはhexファイルをソフトウェアにドラッグします。その後、F4とF5をその順序で押します。再フラッシュが完了します。

FAQ

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

まず "Reset Button" を一度クリックしてボードをリセットしてみてください。それでもうまくいかない場合は、素早く2回クリックしてブートローダーモードに入ってください。それでもうまくいかない場合は、ボードをPCから切断し、再度ボードを接続してください。

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

まず "Reset Button" を一度クリックしてボードをリセットしてみてください。それでもうまくいかない場合は、素早く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データシート:BQ25100XIAO nRF52840データシートをご確認ください。

リソース

Seeed Studio XIAO nRF52840

Seeed Studio XIAO nRF52840 Sense

Seeed Studio XIAO nRF52840 (Sense) Plus

コースリソース

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

弊社製品をお選びいただきありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。

Loading Comments...