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

Seeed Studio XIAO MG24(Sense) 入門ガイド

Seeed Studio XIAO MG24Seeed Studio XIAO MG24 Sense

はじめに

Seeed Studio XIAO MG24 は、Silicon Labs の MG24 をベースにした小型開発ボードです。XIAO MG24 は ARM Cortex-M33 コア32 ビット RISC アーキテクチャを採用し、最大 78MHz のクロック周波数で動作し、DSP 命令および FPU 浮動小数点演算をサポートし、強力な演算能力を備えています。また、内蔵の AI/ML ハードウェアアクセラレータ MVP により、AI/機械学習アルゴリズムを効率的に処理できます。さらに、優れた RF 性能を持ち、送信 電力は最大 +19.5 dBm、受信感度は -105.4 dBm まで低く なっています。Matter、Thread、Zigbee、Bluetooth LE 5.3、Bluetooth mesh など、複数の IoT および無線伝送プロトコルをサポートします。

仕様

製品XIAO MG24XIAO MG24 Sense
プロセッサSilicon Labs EFR32MG24
ARM Cortex-M33 @ 78MHz
RAM256kB
フラッシュ1536KB + 4MB オンボード
LED1x ユーザー LED
1x 電源 LED
センサ-1x オンボード アナログマイク
1x オンボード 6 軸 IMU
インターフェース22 ピン(すべて PWM):
19x アナログ
19x デジタル
1x I²C
2x UART
2x SPI
ボタン1x RESET ボタン
セキュリティハードウェア暗号アクセラレーション、真性乱数生成器、ARM® TrustZone®、セキュアブート、セキュアデバッグ解除 など
低消費電力(代表値)1.95μA
通常動作(代表値)6.71mA
スリープ(代表値)1.91mA
ソフトウェア互換性Arduino IDE
対応アンテナ最大 2.4GHz セラミックアンテナ: 4.97dBi
動作温度-20°C~70°C
寸法21×17.8 mm

特長

  • 高性能 CPU:ARM Cortex-M33 コア、最大 78MHz のクロック周波数で動作し、DSP 命令および FPU 浮動小数点演算をサポートする 32 ビット RISC アーキテクチャ。
  • 超低消費電力:RX 電流 4.6mA / TX 電流 5mA(0dBm)、複数の低消費電力スリープモード
  • 強力な AI 機能:AI/ML ハードウェアアクセラレータ MVP を内蔵し、AI/機械学習アルゴリズムを効率的に処理可能。
  • 多様な無線伝送:2.4GHz マルチプロトコル無線トランシーバを統合し、Matter、OpenThread、Zigbee、Bluetooth LE 5.3、Bluetooth mesh などの複数の IoT プロトコルをサポート。
  • 優れた RF 性能:送信電力は最大 +19.5 dBm、受信感度は -105.4 dBm(250kbps DSSS)まで低い優れた RF 性能。
  • 強力なセキュリティ:セキュアブート、暗号化、乱数生成、タンパープルーフ、セキュアデバッグなどを含む Secure Vault の強力なセキュリティ機能。
  • 超小型サイズ:21 x 17.8mm。
  • 豊富なオンチップリソース:最大 1536KB フラッシュと 256KB RAM を搭載し、十分なストレージ容量を提供。
  • 豊富なインターフェース:12 ビット 1Msps ADC、温度センサ、アナログコンパレータ、DCDC などの豊富なペリフェラルを統合し、最大 22 ピン、2 USART、2 つの低消費電力 UART、1 つの IIC などのインターフェースを備えています。

ハードウェア概要

XIAO MG24 Sense 表示図
XIAO MG24 表示図
XIAO MG24/ XIAO MG24(Sense) ピン一覧
ヒント

2 つの開発ボードの違いは、MG24 Sense にはマイクロホンセンサと 6 軸加速度センサが搭載されているのに対し、MG24 には搭載されていない点です。

  • 5V - これは USB ポートからの 5V 出力です。このピンを電圧入力として使用することもできますが、外部電源とこのピンの間には、アノードをバッテリー側、カソードを 5V ピン側に接続した何らかのダイオード(ショットキー、信号、電力用)を必ず入れてください。
  • 3V3 - これはオンボードレギュレータからの安定化出力です。
  • GND - 電源/データ/信号のグラウンド

ピンマップ

XIAO ピン機能チップピン代替機能説明
5VVBUS電源入力/出力
GND
3V33V3_OUT電源出力
D0アナログPC00GPIO、ADC
D1アナログPC01GPIO、ADC
D2アナログPC02GPIO、ADC
D3アナログPC03GPIO、SPI、ADC
D4アナログ,SDAPC04GPIO、I2C データ、ADC
D5アナログ,SCLPC05GPIO、I2C クロック、ADC
D6アナログ,TX0PC06GPIO、UART 送信、ADC
D7アナログ,RX0PC07GPIO、UART 受信、ADC
D8アナログ,SCK0PA03GPIO、SPI クロック、ADC
D9アナログ,MISO0PA04GPIO、SPI データ、ADC
D10アナログ,MOSI0PA05GPIO、SPI データ、ADC
D11アナログPA09SAMD11_TXGPIO、UART 受信、ADC
D12アナログPA08SAMD11_RXGPIO、UART 送信、ADC
D13アナログPB02GPIO、I2C クロック、ADC
D14アナログPB03GPIO、I2C データ、ADC
D15アナログ,MOSI1PB00GPIO、SPI データ、ADC
D16アナログ,MISO1PB01GPIO、SPI データ、ADC
D17アナログ,SCK1PA00GPIO、SPI クロック、ADC
D18アナログ,CSPD02CsnGPIO、Csn、ADC
ADC_BATPD04BAT 電圧値を読み取る
RF Switch Port SelectPB04オンボードアンテナと UFL アンテナを切り替え
RF Switch PowerPB05RF 電源
ResetRESETリセット
CHARGE_LEDVBUSCHG-LED_赤
USER_LEDPA07ユーザー用ライト_黄

はじめに

XIAO MG24 をすばやく使い始められるように、以下のハードウェアおよびソフトウェアの準備を読んで、XIAO の準備を行ってください。

工場出荷時の手順

新しい XIAO MG24 および XIAO MG24 Sense には、それぞれ簡単な工場出荷時プログラムが書き込まれています。

  1. XIAO MG24

通常版にプリセットされている工場出荷時プログラムは Blink Light です。XIAO の電源を入れると、オレンジ色のユーザーインジケータが点灯します。

  1. XIAO MG24 Sense

通常版にプリセットされている工場出荷時プログラムは、「大きな声を出すほどライトが明るくなる」というものです。

ハードウェアの準備

以下を準備してください:

ヒント

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

ソフトウェアの準備

XIAO MG24 に推奨される開発ツールは Arduino IDE です。そのため、ソフトウェアの準備として Arduino のインストールを完了する必要があります。

ヒント

初めて Arduino を使用する場合は、Getting Started with Arduino を参照することを強くお勧めします。

  • Step 1. お使いのオペレーティングシステムに応じて、安定版の Arduino IDE をダウンロードしてインストールします。

  • Step 2. Arduino アプリケーションを起動します。
  • Step 3. Arduino IDE に XIAO MG24 のボードパッケージを追加し、OK をクリックします。
  • Step 4. Arduino IDE を一度閉じてから、再度開きます。

XIAO MG24 ボードを追加する

XIAO MG24 ボードをインストールするには、次の手順に従います:

https://siliconlabs.github.io/arduino/package_arduinosilabs_index.json 
  1. 上記のボードマネージャ URL を Arduino IDE の設定に追加します。
  1. XIAO MG24 のボードパッケージをダウンロードします。
ヒント

入力しても見つからない場合は、Arduino IDE を再起動してください。

  1. XIAO_MG24 バリアントを選択します。

さあ、コーディングを楽しみましょう ✨。

  • Step 1. Arduino アプリケーションを起動します。

  • Step 2. File > Examples > 01.Basics > Blink に移動し、プログラムを開きます。

  • Step 3. ボードモデルを XIAO MG24 に設定し、正しいポート番号を選択してプログラムを書き込みます。

プログラムが正常に書き込まれると、次のような出力メッセージが表示され、XIAO MG24 の右側にあるオレンジ色の LED が点滅しているのを確認できます。

MG24 BLink CodeLED BLink DisPlay

バッテリーの使用

XIAO MG24 には電源管理チップが内蔵されており、バッテリーを使用して XIAO MG24 に単独で給電したり、XIAO MG24 の USB ポートを介してバッテリーを充電したりすることができます。

XIAO にバッテリーを接続したい場合は、規格に適合した充電式 3.7V リチウムバッテリーの購入をお勧めします。バッテリーをはんだ付けする際は、必ず正極と負極を区別してください。電源の負極は USB ポートに最も近い側であり、電源の正極は USB ポートから離れた側になります。

pir
注意

はんだ付けの際に正極と負極を短絡させて、バッテリーや機器を焼損させないよう十分注意してください。

バッテリー使用上の注意:

  1. 規格に適合した品質の良いバッテリーを使用してください。
  2. バッテリー使用中でも、XIAO はデータケーブルを介してコンピュータ機器に接続できます。XIAO には保護回路チップが内蔵されているため、安全です。
  3. バッテリー駆動時、(特定のプログラムを書き込んでいない限り)XIAO MG24 の LED は点灯しません。LED の状態だけで XIAO MG24 が動作しているかどうかを判断せず、必ずご自身のプログラムの内容から適切に判断してください。
  4. 申し訳ありませんが、現在のところソフトウェアを通じて残りのバッテリー残量を確認する方法はありません(利用可能なチップのピンが残っていないため)ので、定期的にバッテリーを充電するか、テスターを使用してバッテリー残量を確認する必要があります。

同時に、充電中のバッテリーの現在の状態をユーザーに知らせるために、バッテリー充電用の赤色インジケータライトを設計しました。

  1. XIAO MG24 にバッテリーが接続されていない場合、Type-C ケーブルを接続すると赤色のランプが点灯し、30 秒後に消灯します。
  2. バッテリーを接続し、充電のために Type-C ケーブルを接続すると、赤色のランプが点滅します。
  3. Type-C を接続してバッテリーが満充電になると、赤色のランプは消灯します。

バッテリー電圧の読み取り

ソフトウェアコード

/*
AnalogReadSerial

Reads an analog input on pin 0, prints the result to the Serial Monitor.
Graphical representation is available using Serial Plotter (Tools > Serial Plotter menu).
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

This example code is in the public domain.

https://www.arduino.cc/en/Tutorial/BuiltInExamples/AnalogReadSerial
*/

// the setup routine runs once when you press reset:
void setup() {
Serial.begin(115200);
pinMode(PD3, OUTPUT);
digitalWrite(PD3, HIGH);
}

void loop() {
int voltageValue = analogRead(PD4);
float voltage = voltageValue * (2 * 3.3 / 4095.0);

Serial.print("Voltage: ");
Serial.print(voltage, 2);
Serial.println(" V");
delay(1000); // delay in between reads for stability
}

表示結果

pir

ディープスリープとスリープのサンプル

デモ1 : スリープモードとウェイクアップ


/*
ArduinoLowPower timed sleep example

The example shows the basic usage of the Arduino Low Power library by putting the device to sleep for a period of time.
The device will enter sleep mode for 2000ms. During sleep the CPU is stopped but the RAM retains its contents.

This example is compatible with all Silicon Labs Arduino boards.

Author: Tamas Jozsi (Silicon Labs)
*/

#include "ArduinoLowPower.h"

void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
Serial.println("Sleep with timed wakeup");
}

void loop()
{
digitalWrite(LED_BUILTIN, LED_BUILTIN_ACTIVE);
delay(500);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
delay(500);

Serial.printf("Going to sleep at %lu\n", millis());
LowPower.sleep(2000);
Serial.printf("Woke up at %lu\n", millis());
}

デモ2 : ディープスリープモードとウェイクアップ

/*
ArduinoLowPower deep sleep example with external or timed wakeup

The example shows the basic usage of the Arduino Low Power library by putting the device into deep sleep.
The device will remain in deep sleep until the sleep timer expires.
During deep sleep the whole device is powered down except for a minimal set of peripherals (like the Back-up RAM and RTC).
This means that the CPU is stopped and the RAM contents are lost - the device will start from the beginning of the sketch after waking up.

This example is compatible with all Silicon Labs Arduino boards.

Author: Tamas Jozsi (Silicon Labs)
*/

#include "ArduinoLowPower.h"

void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
Serial.println("Deep sleep timed wakeup");
}

void loop()
{
digitalWrite(LED_BUILTIN, LED_BUILTIN_ACTIVE);
delay(500);
digitalWrite(LED_BUILTIN, LED_BUILTIN_INACTIVE);
delay(500);

Serial.printf("Going to deep sleep for 10s at %lu\n", millis());
LowPower.deepSleep(10000);
}


デモ3 : フラッシュ付きディープスリープモードとウェイクアップ

ヒント

フラッシュをディープスリープに設定したい場合は、0xb9 レジスタを有効にする必要があります。

/*
ArduinoLowPower deep sleep example with external or timed wakeup

The example shows the basic usage of the Arduino Low Power library by putting the device into deep sleep.
The device will remain in deep sleep until the sleep timer expires.
During deep sleep the whole device is powered down except for a minimal set of peripherals (like the Back-up RAM and RTC).
This means that the CPU is stopped and the RAM contents are lost - the device will start from the beginning of the sketch after waking up.

This example is compatible with all Silicon Labs Arduino boards.

Author: Tamas Jozsi (Silicon Labs)
*/
#include <Arduino.h>
#include "ArduinoLowPower.h"

#define CS_PIN PA6
#define CLK_PIN PA3
#define MOSI_PIN PA5
#define MISO_PIN PA4

#define READ_DATA 0x03
#define WRITE_ENABLE 0x06
#define PAGE_PROGRAM 0x02
#define SECTOR_ERASE 0x20

void sendSPI(byte data) {
for (int i = 0; i < 8; i++) {
digitalWrite(MOSI_PIN, data & 0x80);
data <<= 1;
digitalWrite(CLK_PIN, HIGH);
delayMicroseconds(1);
digitalWrite(CLK_PIN, LOW);
delayMicroseconds(1);
}
}

void writeEnable() {
digitalWrite(CS_PIN, LOW);
sendSPI(WRITE_ENABLE);
digitalWrite(CS_PIN, HIGH);
}

void setup()
{
//Serial.begin(115200);
pinMode(PA7, OUTPUT);
digitalWrite(PA7, LOW);

pinMode(CS_PIN, OUTPUT);
pinMode(CLK_PIN, OUTPUT);
pinMode(MOSI_PIN, OUTPUT);
pinMode(MISO_PIN, INPUT);


//SW
pinMode(PD3, OUTPUT);
pinMode(PB5, OUTPUT);
pinMode(PB1, OUTPUT);
pinMode(PB0, OUTPUT);
pinMode(PA6, OUTPUT);
digitalWrite(PD3, LOW); //VBAT
digitalWrite(PB5, LOW); //RF_SW
digitalWrite(PB1, LOW); //IMU
digitalWrite(PB0, LOW); //MIC
digitalWrite(PA6, HIGH); //FLASH

//Serial.println("Deep sleep timed wakeup");
writeEnable();
digitalWrite(CS_PIN, LOW);
sendSPI(0xB9);
digitalWrite(CS_PIN, HIGH);
}

void loop()
{
delay(12000);
digitalWrite(PA7, HIGH);
delay(500);

//Serial.printf("Going to deep sleep for 10s at %lu\n", millis());
LowPower.deepSleep(600000);
}

ディープスリープ中に XIAO MG24 がブリックすることを防ぐ

XIAO MG24 は Seeed Studio 製の高性能なマイコンボードですが、ディープスリープモードに入った後にデバイスが反応しなくなる(「ブリック」する)という報告があります。本チュートリアルでは、この問題の原因を説明し、詳細な復旧方法と、XIAO MG24 がブリックするのを防ぐための予防策を紹介します。

XIAO MG24 は省電力のために ディープスリープモード(EM4)に入りますが、場合によっては正しくウェイクアップできず、新しいスケッチをアップロードできなくなることがあります。他の XIAO ボードとは異なり、MG24 には専用の BOOT ボタンや、ブートモードに入るための公式な方法がないため、復旧が困難になります。

予防策

ディープスリープモードを使用する際に XIAO MG24 がブリックするのを防ぐには、次の手順に従ってください。

  1. エスケープピン(PC1)を使用する

XIAO MG24 には、ブリックを防ぐための エスケープ機構 が内蔵されています。リセット中に PC1LOW にプルダウンすると、デバイスは無限ループに入り、その間に新しいスケッチをアップロードできます。

  • リセットする前に PC1GND に接続します。
  • リセット後、デバイスがループしている間にスケッチをアップロードします。
  1. スケッチを修正する ユーザースイッチを検出し、押された場合に無限ループに入るよう、次のコードをスケッチに追加します。これにより、デバイスがループしている間に新しいスケッチをアップロードできるようになります。
#define USER_SW  PC3   // Example pin for user switch

void setup() {
// Other setup code...

pinMode(USER_SW, INPUT_PULLUP);
if (digitalRead(USER_SW) == LOW) {
Serial.println("Enable to upload new sketch");
while (true) {
digitalWrite(LED_BUILTIN, LOW);
delay(50);
digitalWrite(LED_BUILTIN, HIGH);
delay(50);
}
}
}
  1. 不要なフラッシュスリープを避ける

スケッチで、絶対に必要な場合を除き、フラッシュメモリをスリープモード(Deep Power Down)にしないようにしてください。これにより、新しいスケッチのアップロードに関する問題を防ぐことができます。

謝辞

この問題に対する貴重な貢献と解決策を提供してくださった Seeed Studio コミュニティ の皆様に特別な感謝を申し上げます。本チュートリアルで紹介した復旧方法と予防策は、msfujinoPJ_Glasso といったコミュニティメンバーの洞察に基づいて作成されています。

詳細や議論については、元のフォーラムスレッドをご覧ください。
DeepSleep bricks XIAO_MG24 - Seeed Studio Forum

ブリック状態からの復旧

XIAO MG24 は、現在シリアルポートチップを搭載している唯一の XIAO モデルです。他の XIAO モデルとは異なり、BOOT ボタンや BOOT 復旧方法がありません。この設計上の見落としにより、デバイスがスリープモードに入ったりソフトウェア異常が発生したりした際に、シリアルポート経由でプログラムをアップロードできなくなる問題が起こり得ます。これに対処するため、シリアルポートをウェイクアップして機能を回復させる方法を用意しました。

Windows 向けソリューション

  1. パッケージをダウンロードして展開する
    • 提供された ZIP ファイルをダウンロードします。

  • コンピュータ上の任意のフォルダに内容を展開します。
  1. XIAO MG24 を接続する

    • USB ケーブルを使用して、反応しない XIAO MG24 をコンピュータに接続します。
  2. スクリプトを実行する

    • 展開したフォルダを開き、flash_erase.bat スクリプトを探します。
    • スクリプトをダブルクリックして実行します。
    • スクリプトはフラッシュメモリを消去し、デバイスをリセットします。
  3. 復旧を確認する

    • スクリプトの実行が完了したら、XIAO MG24 は復旧し、再び使用できる状態になっているはずです。

macOS 向けソリューション

  1. パッケージをダウンロードして展開する
    • 提供された ZIP ファイルをダウンロードします(リンクはここに追加されます)。

  • コンピュータ上の任意のフォルダに内容を展開します。
  1. XIAO MG24 を接続する

    • USB ケーブルを使用して、反応しない XIAO MG24 をコンピュータに接続します。
  2. Terminal へのアクセスを許可する

    • System Preferences > Security & Privacy > Privacy を開きます。
    • Accessibility の項目で、Terminal にコンピュータの制御が許可されていることを確認します。
    • Terminal が一覧にない場合は、+ ボタンをクリックして手動で追加します。
  3. スクリプトを実行する

    • Terminal を開きます。

    • cd コマンドを使って、展開したフォルダに移動します。例:

      cd /path/to/extracted/folder
    • 次のコマンドを使用して xiao_mg24_erase.sh スクリプトを実行します。

      ./xiao_mg24_erase.sh
    • スクリプトは OpenOCD を使用してフラッシュメモリを消去し、デバイスをリセットします。

  4. 復旧を確認する

    • スクリプトの実行が完了したら、XIAO MG24 は復旧し、再び使用できる状態になっているはずです。
注記
  • macOS が OpenOCD を認識しない場合は、OpenOCD がインストールされていること、およびスクリプト内で正しいパスが使用されていることを確認してください。
  • 提供されているスクリプトは XIAO MG24 専用に設計されており、他の XIAO モデルでは使用しないでください。

リソース

Seeed Studio XIAO MG24 向け

ハードウェア設計

Seeed Studio XIAO MG24 Sense 向け

ハードウェア設計

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

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

Loading Comments...