Skip to main content

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 および無線伝送プロトコルをサポートしています。

仕様

項目Seeed Studio XIAO MG24Seeed Studio XIAO MG24 Sense
プロセッサSilicon Labs EFR32MG24
ARM Cortex-M33 @ 78MHz
無線独自 2.4 GHz
Zigbee PRO/Green Power プロトコル
BLE: Bluetooth 5.3、Bluetooth mesh
内蔵センサー - 6軸IMU(LSM6DS3TR-C)
アナログマイクロフォン(MSM381ACT001)
メモリ256kB RAM & 1538KB + 4MB Flash256kB RAM & 1538KB + 4MB Flash
インターフェース2x UART、1x IIC、2x SPI、18x アナログ、18x デジタル、全PWM、1x ユーザーLED、1x 充電LED
1x リセットボタン、
2x UART、1x IIC、2x SPI、18x アナログ、18x デジタル、全PWM、1x ユーザーLED、1x 充電LED
1x リセットボタン、
寸法21 x 17.8mm21 x 17.8mm
電源入力電圧 (Type-C): 5V@14mA
入力電圧 (BAT): 3.7V@7mA
バッテリー充電電流: 200mAバッテリー充電電流: 200mA
低消費電力モデル通常: 3.7V/6.71 mA
スリープモード: 3.7V/1.91mA
ディープスリープモード: 3.7V/1.95μA
通常: 3.7V/6.71 mA
スリープモード: 3.7V/1.91mA
ディープスリープモード: 3.7V/1.95μA
動作温度-20°C ~ 70°C

特徴

  • 強力な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性能:優れた RF 性能、送信電力最大 +19.5 dBm、受信感度最低 -105.4 dBm (250kbps DSSS)
  • 強力なセキュリティ:Secure Vault の強力なセキュリティ機能、セキュアブート、暗号化、乱数生成、改ざん防止、セキュアデバッグなどを含む。
  • 超小型サイズ:21 x 17.8mm。
  • 豊富なオンチップリソース:最大 1536KB Flash と 256KB RAM、十分なストレージ容量。
  • 豊富なインターフェース:12 ビット 1Msps ADC、温度センサー、アナログコンパレータ、DCDC などの豊富な周辺機器を統合し、最大 22 ピン、2 USART、2 低消費電力 UART、1 IIC などのインターフェースを搭載。

ハードウェア概要

XIAO MG24 Sense 表示図
XIAO MG24 表示図
XIAO MG24/ XIAO MG24(Sense) ピンリスト
tip

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

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

ハードウェアの準備

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

tip

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

ソフトウェアの準備

XIAO MG24 の推奨プログラミングツールは Arduino IDE ですので、ソフトウェア準備の一環として Arduino のインストールを完了する必要があります。

tip

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

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

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

XIAO MG24 ボードの追加

XIAO MG24 ボードをインストールするには、以下の手順に従ってください:

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

入力後に見つからない場合は、Arduino IDE を再度開いてください。

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

これでコーディングを楽しめます ✨。

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

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

  • ステップ 3. ボードモデルを XIAO MG24 に選択し、正しいポート番号を選択してプログラムをアップロードします。

プログラムが正常にアップロードされると、以下の出力メッセージが表示され、XIAO MG24 の右側のオレンジ色の LED が点滅していることが確認できます。

MG24 Blink コードLED Blink 表示

バッテリーの使用

XIAO MG24 には内蔵電源管理チップがあり、バッテリーを使用して XIAO MG24 を独立して電源供給したり、XIAO MG24 の USB ポートを通じてバッテリーを充電したりできます。

XIAO にバッテリーを接続したい場合は、認定された充電式 3.7V リチウムバッテリーの購入をお勧めします。バッテリーをはんだ付けする際は、プラス端子とマイナス端子を区別するよう注意してください。電源のマイナス端子は USB ポートに最も近い側で、電源のプラス端子は USB ポートから離れた側です。

pir
caution

はんだ付け時にプラス端子とマイナス端子をショートさせてバッテリーや機器を焼損させないよう注意してください。

バッテリー使用に関する注意事項:

  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:フラッシュ付きディープスリープモードとウェイクアップ

tip

フラッシュをディープスリープに設定したい場合は、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. ターミナルアクセスの許可

    • システム環境設定 > セキュリティとプライバシー > プライバシーを開きます。
    • アクセシビリティの下で、ターミナルがコンピューターを制御することを許可されていることを確認します。
    • ターミナルがリストにない場合は、**+**ボタンをクリックして手動で追加します。
  3. スクリプトの実行

    • ターミナルを開きます。

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

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

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

  4. 復旧の確認

    • スクリプトが完了した後、XIAO MG24は復元され、使用準備が整います。
note
  • macOSがOpenOCDを認識しない場合は、OpenOCDがインストールされており、スクリプトで正しいパスが使用されていることを確認してください。
  • 提供されたスクリプトはXIAO MG24専用に設計されており、他のXIAOモデルでは使用しないでください。

リソース

Seeed Studio XIAO MG24 Sense用

Seeed Studio XIAO MG24用

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

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

Loading Comments...