Skip to main content

Seeed Studio XIAO nRF52840 シリーズの始め方

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Seeed Studio XIAO nRF52840 シリーズの始め方

XIAO nRF52840XIAO nRF52840 SenseXIAO nRF52840 PlusXIAO nRF52840 Sense Plus

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

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

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

Seeed Studio XIAO RP2040 と比較すると、Seeed Studio XIAO nRF52840 は より豊富なインターフェースを備えています。まず注目すべきは、ボード上で 近距離無線通信 (NFC) インターフェースが機能することです。次に、Type-C インターフェースの側面に小さな リセットボタンがあります。反対側には、3-in-1 LED (ユーザー LED) と、バッテリー接続時に充電状態を示す 充電 LED があります。11 のデジタル I/OPWM ピンとして使用でき、6 のアナログ I/OADC ピンとして使用できます。UART、I2C、SPI などの一般的なシリアルインターフェースすべてをサポートしています。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 5.0/BLE/NFC
メモリ256 KB RAM、1MBフラッシュ、2MBオンボードフラッシュ
内蔵センサーN/A6 DOF IMU (LSM6DS3TR-C)、PDMマイクN/A6 DOF 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は、多くの機能を小さなボードに集約していますが、すべての機能を最大限に発揮できるわけではありません。そのため、Seeedは各機能の性能を最大限に引き出すための2つのArduinoライブラリを公開しました。以下のように使用を推奨します:

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

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

tip
  1. Seeed nRF52 Boardsのオンボードパッケージを使用する場合、シリアル機能がコンパイルされないことがあります。この場合の解決策として、コードに「#include <Adafruit_TinyUSB.h>」を追加してください。このパッケージは以下からダウンロードできます:https://github.com/adafruit/Adafruit_TinyUSB_Arduino

  2. より簡単な方法を好む場合は、最初からSeeed nRF52 mbed-enabled Boardsを選択することをお勧めします。このライブラリは追加の修正なしでシリアル機能のコンパイルをサポートします。

はじめに

まず、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以上が該当します(COM1およびCOM2は通常ハードウェアシリアルポート用に予約されています)。接続されているSeeed Studio XIAO nRF52840 (Sense)のシリアルポートには、Seeed Studio XIAO nRF52840または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 カラーを個別に制御する方法を学びます!

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

note

もし、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"

// カスタム SPI と SS を使用する場合は以下をアンコメント
// #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 はコードを格納する同じフラッシュデバイスを使用します。
// そのため、SPI と SS を指定する必要はありません。
Adafruit_FlashTransport_ESP32 flashTransport;

#else
// ボードバリアントでサポートされている場合、オンボード外部フラッシュ (QSPI または SPI) マクロはすでに定義されています。
// - 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 ボードバリアントに QSPI/SPI フラッシュが定義されていません!
#endif
#endif

Adafruit_SPIFlash flash(&flashTransport);

/* カスタムボード用に特定のフラッシュデバイスを使用したい場合は、まず Adafruit_SPIFlash\src\flash_devices.h を確認してください。
* そこにない場合は、以下の W25Q80DLX_EXAMPLE の例のように独自の定義を作成する必要があります。
* これらの定義は、使用したいフラッシュデバイスのデータシートの情報に基づいて編集する必要があります。
* 製造者 ID、メモリタイプ、容量値が不明な場合は、スケッチを実行してシリアル出力を確認してください。
* フラッシュデバイスはこれらの値を 16 進数の値 (JDEC ID) として報告します。
* 例:リストの最初のデバイス W25Q80DLX は JDEC ID を 0xef4014 として報告します。
* これは以下の 3 つの値で構成されています:
* - manufacturer_id = 0xef
* - memory_type = 0x40
* - capacity = 0x14
* このマクロを正しく定義すれば、以下のようにデバイス定義の配列を作成できます。
* flash_devices.h のリストにあるデバイスや、ここで定義したデバイスを含めることができます。
* 配列のアイテム数を反映するように 71 行目の変数を更新してください。
* また、84 行目をアンコメントし、81 行目をコメントアウトして、この配列をフラッシュメモリドライバに渡します。
*/
// ユーザー定義フラッシュメモリデバイスの例:
//#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, \
// }

/*
* 上記で定義した設定を使用してデータ構造の配列を作成します。
* ここでは 2 つのデバイスを使用していますが、必要に応じて追加できます。
*/
//static const SPIFlash_Device_t my_flash_devices[] = {
// W25Q80DLX_EXAMPLE,
//};
/*
* 配列にリストされている異なるデバイスの数を指定します。
* 配列にデバイスを追加した場合、この値を更新してください。
*/
//const int flashDevices = 1;

#include <bluefruit.h>
void setup()
{
flash.begin();
Bluefruit.begin();
if(flash.deepPowerDown() == false){
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
while(1)
{
yield();
}
}
flash.end();

sd_power_system_off();
}

void loop()
{
// 何もすることはありません
}
tip

ここで、コードを提供してくださった著者 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ピンへのアクセス:デバッグおよびブートローダーの再書き込み

必要なハードウェア

必要なソフトウェア

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

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

pir

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

pir

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

pir

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

FAQ

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

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

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

まず「リセットボタン」を1回クリックしてリセットを試してください。それでも解決しない場合は、ボタンを素早く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ピンは緑色のインジケータライトの動作を制御し、充電状態を示します:

  • LOWレベル:充電中の場合。
  • HIGHレベル:バッテリーが充電されていないまたは完全に充電された場合。

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

詳細については、以下のデータシートを確認してください:

リソース

Seeed Studio XIAO nRF52840

Seeed Studio XIAO nRF52840 Sense

Seeed Studio XIAO nRF52840 (Sense) Plus

コースリソース

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

私たちの製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。

Loading Comments...