
Seeed 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 MG24 | XIAO MG24 Sense |
|---|---|---|
| プロセッサ | Silicon Labs EFR32MG24 ARM Cortex-M33 @ 78MHz | |
| RAM | 256kB | |
| フラッシュ | 1536KB + 4MB オンボード | |
| LED | 1x ユーザー 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 ピン | 機能 | チップピン | 代替機能 | 説明 |
|---|---|---|---|---|
| 5V | VBUS | 電源入力/出力 | ||
| GND | ||||
| 3V3 | 3V3_OUT | 電源出力 | ||
| D0 | アナログ | PC00 | GPIO、ADC | |
| D1 | アナログ | PC01 | GPIO、ADC | |
| D2 | アナログ | PC02 | GPIO、ADC | |
| D3 | アナログ | PC03 | GPIO、SPI、ADC | |
| D4 | アナログ,SDA | PC04 | GPIO、I2C データ、ADC | |
| D5 | アナログ,SCL | PC05 | GPIO、I2C クロック、ADC | |
| D6 | アナログ,TX0 | PC06 | GPIO、UART 送信、ADC | |
| D7 | アナログ,RX0 | PC07 | GPIO、UART 受信、ADC | |
| D8 | アナログ,SCK0 | PA03 | GPIO、SPI クロック、ADC | |
| D9 | アナログ,MISO0 | PA04 | GPIO、SPI データ、ADC | |
| D10 | アナログ,MOSI0 | PA05 | GPIO、SPI データ、ADC | |
| D11 | アナログ | PA09 | SAMD11_TX | GPIO、UART 受信、ADC |
| D12 | アナログ | PA08 | SAMD11_RX | GPIO、UART 送信、ADC |
| D13 | アナログ | PB02 | GPIO、I2C クロック、ADC | |
| D14 | アナログ | PB03 | GPIO、I2C データ、ADC | |
| D15 | アナログ,MOSI1 | PB00 | GPIO、SPI データ、ADC | |
| D16 | アナログ,MISO1 | PB01 | GPIO、SPI データ、ADC | |
| D17 | アナログ,SCK1 | PA00 | GPIO、SPI クロック、ADC | |
| D18 | アナログ,CS | PD02 | Csn | GPIO、Csn、ADC |
| ADC_BAT | PD04 | BAT 電圧値を読み取る | ||
| RF Switch Port Select | PB04 | オンボードアンテナと UFL アンテナを切り替え | ||
| RF Switch Power | PB05 | RF 電源 | ||
| Reset | RESET | リセット | ||
| CHARGE_LED | VBUS | CHG-LED_赤 | ||
| USER_LED | PA07 | ユーザー用ライト_黄 |
はじめに
XIAO MG24 をすばやく使い始められるように、以下のハードウェアおよびソフトウェアの準備を読んで、XIAO の準備を行ってください。
工場出荷時の手順
新しい XIAO MG24 および XIAO MG24 Sense には、それぞれ簡単な工場出荷時プログラムが書き込まれています。
- XIAO MG24
通常版にプリセットされている工場出荷時プログラムは Blink Light です。XIAO の電源を入れると、オレンジ色のユーザーインジケータが点灯します。

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

ハードウェアの準備
以下を準備してください:
- 1 x Seeed Studio XIAO MG24
- 1 x コンピュータ
- 1 x USB Type-C ケーブル
一部の 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
- 上記のボードマネージャ URL を Arduino IDE の設定に追加します。
.png)
- XIAO MG24 のボードパッケージをダウンロードします。
.png)
入力しても見つからない場合は、Arduino IDE を再起動してください。
XIAO_MG24バリアントを選択します。

さあ、コーディングを楽しみましょう ✨。
最初の Blink プログラムを実行する
-
Step 1. Arduino アプリケーションを起動します。
-
Step 2. File > Examples > 01.Basics > Blink に移動し、プログラムを開きます。
.png)
- Step 3. ボードモデルを XIAO MG24 に設定し、正しいポート番号を選択してプログラムを書き込みます。

プログラムが正常に書き込まれると、次のような出力メッセージが表示され、XIAO MG24 の右側にあるオレンジ色の LED が点滅しているのを確認できます。
| MG24 BLink Code | LED BLink DisPlay |
|---|---|
![]() | ![]() |
バッテリーの使用
XIAO MG24 には電源管理チップが内蔵されており、バッテリーを使用して XIAO MG24 に単独で給電したり、XIAO MG24 の USB ポートを介してバッテリーを充電したりすることができます。
XIAO にバッテリーを接続したい場合は、規格に適合した充電式 3.7V リチウムバッテリーの購入をお勧めします。バッテリーをはんだ付けする際は、必ず正極と負極を区別してください。電源の負極は USB ポートに最も近い側であり、電源の正極は USB ポートから離れた側になります。

はんだ付けの際に正極と負極を短絡させて、バッテリーや機器を焼損させないよう十分注意してください。
バッテリー使用上の注意:
- 規格に適合した品質の良いバッテリーを使用してください。
- バッテリー使用中でも、XIAO はデータケーブルを介してコンピュータ機器に接続できます。XIAO には保護回路チップが内蔵されているため、安全です。
- バッテリー駆動時、(特定のプログラムを書き込んでいない限り)XIAO MG24 の LED は点灯しません。LED の状態だけで XIAO MG24 が動作しているかどうかを判断せず、必ずご自身のプログラムの内容から適切に判断してください。
- 申し訳ありませんが、現在のところソフトウェアを通じて残りのバッテリー残量を確認する方法はありません(利用可能なチップのピンが残っていないため)ので、定期的にバッテリーを充電するか、テスターを使用してバッテリー残量を確認する必要があります。
同時に、充電中のバッテリーの現在の状態をユーザーに知らせるために、バッテリー充電用の赤色インジケータライトを設計しました。
- XIAO MG24 にバッテリーが接続されていない場合、Type-C ケーブルを接続すると赤色のランプが点灯し、30 秒後に消灯します。
- バッテリーを接続し、充電のために Type-C ケーブルを接続すると、赤色のランプが点滅します。
- 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
}
表示結果

ディープスリープとスリープのサンプル
デモ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 がブリックするのを防ぐには、次の手順に従ってください。
- エスケープピン(PC1)を使用する
XIAO MG24 には、ブリックを防ぐための エスケープ機構 が内蔵されています。リセット中に PC1 を LOW にプルダウンすると、デバイスは無限ループに入り、その間に新しいスケッチをアップロードできます。
- リセットする前に PC1 を GND に接続します。
- リセット後、デバイスがループしている間にスケッチをアップロードします。
- スケッチを修正する ユーザースイッチを検出し、押された場合に無限ループに入るよう、次のコードをスケッチに追加します。これにより、デバイスがループしている間に新しいスケッチをアップロードできるようになります。
#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);
}
}
}
- 不要なフラッシュスリープを避ける
スケッチで、絶対に必要な場合を除き、フラッシュメモリをスリープモード(Deep Power Down)にしないようにしてください。これにより、新しいスケッチのアップロードに関する問題を防ぐことができます。
謝辞
この問題に対する貴重な貢献と解決策を提供してくださった Seeed Studio コミュニティ の皆様に特別な感謝を申し上げます。本チュートリアルで紹介した復旧方法と予防策は、msfujino や PJ_Glasso といったコミュニティメンバーの洞察に基づいて作成されています。
詳細や議論については、元のフォーラムスレッドをご覧ください。
DeepSleep bricks XIAO_MG24 - Seeed Studio Forum
ブリック状態からの復旧
XIAO MG24 は、現在シリアルポートチップを搭載している唯一の XIAO モデルです。他の XIAO モデルとは異なり、BOOT ボタンや BOOT 復旧方法がありません。この設計上の見落としにより、デバイスがスリープモードに入ったりソフトウェア異常が発生したりした際に、シリアルポート経由でプログラムをアップロードできなくなる問題が起こり得ます。これに対処するため、シリアルポートをウェイクアップして機能を回復させる方法を用意しました。
Windows 向けソリューション
- パッケージをダウンロードして展開する
- 提供された ZIP ファイルをダウンロードします。
- コンピュータ上の任意のフォルダに内容を展開します。
-
XIAO MG24 を接続する
- USB ケーブルを使用して、反応しない XIAO MG24 をコンピュータに接続します。
-
スクリプトを実行する
- 展開したフォルダを開き、
flash_erase.batスクリプトを探します。 - スクリプトをダブルクリックして実行します。
- スクリプトはフラッシュメモリを消去し、デバイスをリセットします。
- 展開したフォルダを開き、
-
復旧を確認する
- スクリプトの実行が完了したら、XIAO MG24 は復旧し、再び使用できる状態になっているはずです。
macOS 向けソリューション
- パッケージをダウンロードして展開する
- 提供された ZIP ファイルをダウンロードします(リンクはここに追加されます)。
- コンピュータ上の任意のフォルダに内容を展開します。
-
XIAO MG24 を接続する
- USB ケーブルを使用して、反応しない XIAO MG24 をコンピュータに接続します。
-
Terminal へのアクセスを許可する
- System Preferences > Security & Privacy > Privacy を開きます。
- Accessibility の項目で、Terminal にコンピュータの制御が許可されていることを確認します。
- Terminal が一覧にない場合は、+ ボタンをクリックして手動で追加します。
-
スクリプトを実行する
-
Terminal を開きます。
-
cdコマンドを使って、展開したフォルダに移動します。例:cd /path/to/extracted/folder -
次のコマンドを使用して
xiao_mg24_erase.shスクリプトを実行します。./xiao_mg24_erase.sh -
スクリプトは OpenOCD を使用してフラッシュメモリを消去し、デバイスをリセットします。
-
-
復旧を確認する
- スクリプトの実行が完了したら、XIAO MG24 は復旧し、再び使用できる状態になっているはずです。
- macOS が OpenOCD を認識しない場合は、OpenOCD がインストールされていること、およびスクリプト内で正しいパスが使用されていることを確認してください。
- 提供されているスクリプトは XIAO MG24 専用に設計されており、他の XIAO モデルでは使用しないでください。
リソース
Seeed Studio XIAO MG24 向け
ハードウェア設計
- 📄[Datasheet] Silicon Labs EFR32MG24 データシート
- 📄[Reference Manual] Silicon Labs EFR32MG24 リファレンスマニュアル
- 📄[Schematic] XIAO MG24 回路図
- 🗃️[PCB Design Files] XIAO MG24 KiCad プロジェクト
- 🗃️[PCB Design Libraries]
Seeed Studio XIAO MG24 Sense 向け
ハードウェア設計
- 📄[Datasheet] Silicon Labs EFR32MG24 データシート
- 📄[Reference Manual] Silicon Labs EFR32MG24 リファレンスマニュアル
- 📄[Schematic] XIAO MG24 Sense 回路図
- 🗃️[PCB Design Files] XIAO MG24 Sense KiCad プロジェクト
- 🗃️[PCB Design Libraries]
技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます。私たちは、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに応じて選べる、複数のコミュニケーションチャネルをご用意しています。






