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 Flash 2MB オンボードFlash
内蔵センサーN/A6軸 IMU (LSM6DS3TR-C)、PDMマイクロフォンN/A6軸 IMU (LSM6DS3TR-C)、PDMマイクロフォン
インターフェース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 ピンリスト

2つのArduinoライブラリ

Seeed Studio XIAO nRF52840は、1つの小さなボードに多くの機能を搭載しており、時にはそれらの最高のパフォーマンスを発揮できない場合があります。そのため、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 nRF52840Seeed Studio XIAO nRF52840の場合)またはSeeed Studio XIAO nRF52840 SenseSeeed 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カラーを一つずつ制御する方法を学びます!

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

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でボードにコードをアップロードする際にフリーズしてしまいます

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

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

まず「リセットボタン」を一度クリックしてボードをリセットしてみてください。それでもうまくいかない場合は、素早く2回クリックしてブートローダーモードに入ってください。

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

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

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

pir

Q4: 電源投入時の緑色ライトの動作はどのようになりますか?

nRF52840 RGB Schematic

P0.17ピンは緑色インジケーターライトの動作を制御し、充電状態を示します:

  • 低レベル:充電中の場合。
  • 高レベル:バッテリーが充電していないまたは満充電の場合。

低レベルの場合、RED_CHG LEDが点灯します。

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

リソース

Seeed Studio XIAO nRF52840

Seeed Studio XIAO nRF52840 Sense

Seeed Studio XIAO nRF52840 (Sense) Plus

コースリソース

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

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

Loading Comments...