Skip to main content

Seeed Studio XIAO ESP32C3 入門ガイド


はじめに

Seeed Studio XIAO ESP32C3 は、Espressif ESP32-C3 WiFi/Bluetooth デュアルモードチップをベースとした IoT ミニ開発ボードで、効率的なアーキテクチャで強力なコンピューティング性能を提供する 32 ビット RISC-V CPU を搭載しています。優れた無線周波数性能を持ち、IEEE 802.11 b/g/n WiFi および Bluetooth 5 (BLE) プロトコルをサポートしています。このボードには、ワイヤレスアプリケーションの信号強度を向上させるための外部アンテナが付属しています。また、小型で精巧なフォームファクタ片面実装設計 を組み合わせています。豊富なインターフェースを備え、PWM ピン として使用できる 11 個のデジタル I/OADC ピン として使用できる 4 個のアナログ I/O を搭載しています。UART、I2C、SPI などの 4 つのシリアルインターフェースをサポートしています。ボード上には小さな リセットボタンブートローダーモードボタン もあります。XIAO ESP32C3 は Grove Shield for Seeeduino XIAO および Seeeduino XIAO Expansion board と完全に互換性がありますが、Seeeduino XIAO Expansion board については、ボード上の SWD スプリングコンタクトは互換性がありません。

上記で強調した機能に関して、XIAO ESP32C3 は 高性能、低消費電力、コスト効率の高い IoT ミニ開発ボード として位置づけられ、低消費電力 IoT アプリケーションおよびワイヤレスウェアラブルアプリケーション に適しています。

この wiki では、XIAO ESP32C3 を素早く始める方法を紹介します!

仕様

項目Seeed Studio XIAO ESP32C3Seeeduino XIAOSeeed XIAO RP2040Seeed XIAO nRF52840Seeed XIAO nRF52840 Sense
プロセッサESP32-C3 32-bit RISC-V @160MHzSAMD21 M0+@48MHzRP2040 Dual-core M0+@133MhznRF52840 M4F@64MHznRF52840 M4F@64MHz
ワイヤレス接続WiFi and Bluetooth 5 (BLE)N/AN/ABluetooth 5.0/BLE/NFCBluetooth 5.0/BLE/NFC
メモリ400KB SRAM, 4MB onboard Flash32KB SRAM 256KB FLASH264KB SRAM 2MB onboard Flash256KB RAM, 1MB Flash 2MB onboard Flash256KB RAM,1MB Flash 2MB onboard Flash
内蔵センサーN/AN/AN/AN/A6 DOF IMU (LSM6DS3TR-C), PDM Microphone
インターフェースI2C/UART/SPII2C/UART/SPII2C/UART/SPII2C/UART/SPII2C/UART/SPI
PWM/アナログピン11/411/1111/411/611/6
オンボードボタンReset/ Boot ButtonN/AReset/ Boot ButtonReset ButtonReset Button
オンボード LEDCharge LEDN/AFull-color RGB/ 3-in-one LED3-in-one LED/ Charge LED3-in-one LED/ Charge LED
バッテリー充電チップETA4054S2FN/AN/ABQ25101BQ25101
プログラミング言語Arduino/ MicroPythonArduino/ CircuitPythonArduino/ MicroPython/ CircuitPython

特徴

  • 強力な CPU: ESP32-C3、最大 160 MHz で動作する 32 ビット RISC-V シングルコアプロセッサ
  • 完全な Wi-Fi サブシステム: IEEE 802.11b/g/n プロトコルに準拠し、Station モード、SoftAP モード、SoftAP + Station モード、プロミスキャスモードをサポート
  • Bluetooth LE サブシステム: Bluetooth 5 および Bluetooth mesh の機能をサポート
  • 超低消費電力: ディープスリープ時の消費電力は約 43μA
  • 優れた RF 性能: 外部 RF アンテナ付属
  • バッテリー充電チップ: リチウムバッテリーの充放電管理をサポート
  • 豊富なオンチップリソース: 400KB の SRAM と 4MB のオンボードフラッシュメモリ
  • 超小型サイズ: ウェアラブルデバイスや小型プロジェクト向けの親指サイズ(21x17.8mm)XIAO シリーズクラシックフォームファクタ
  • 信頼性の高いセキュリティ機能: AES-128/256、Hash、RSA、HMAC、デジタル署名、セキュアブートをサポートする暗号化ハードウェアアクセラレータ
  • 豊富なインターフェース: 1xI2C、1xSPI、2xUART、11xGPIO(PWM)、4xADC、1xJTAG ボンディングパッドインターフェース
  • 片面部品、表面実装設計

ハードウェア概要

*A3(GP105)- ADC2 を使用しており、偽のサンプリング信号により動作しなくなる可能性があります。信頼性の高いアナログ読み取りには、代わりに ADC1(A0/A1/A2)を使用してください。ESP32-C3 データシートを参照してください。

XIAO ESP32C3 前面表示図
XIAO ESP32C3 背面表示図
XIAO ESP32C3 ピンリスト

ピンマップ

XIAO ピン機能チップピン代替機能説明
5VVBUS電源入力/出力
GND
3V33V3_OUT電源出力
D0AnalogGPIO2ADC1_CH2,GPIO, ADC
D1AnalogGPIO3ADC1_CH3GPIO, ADC
D2AnalogGPIO4ADC1_CH4, FSPIHD, MTMSGPIO, ADC
D3AnalogGPIO5ADC2_CH0, FSPIWP, MTDIGPIO, ADC
D4SDAGPIO6FSPICLK, MTCKGPIO, I2C Data
D5SCLGPIO7FSPID, MTDOGPIO, I2C Clock
D6TXGPIO21U0TXDGPIO, UART Transmit
D7RXGPIO20U0RXDGPIO, UART Receive
D8SCKGPIO8GPIO, SPI Clock
D9MISOGPIO9GPIO, SPI Data
D10MOSIGPIO10FSPICS0GPIO, SPI Data
MTDOGPIO7JTAG
MTDIGPIO5JTAG, ADC
MTCKGPIO6JTAG, ADC
MTMSGPIO4JTAG, ADC
ResetCHIP_ENEN
BootGPIO9Enter Boot Mode
U.FL-R-SMT1LNA_INUFL antenna
LightVCC_3V3CHG-LED

電源ピン

  • 5V - これはUSBポートからの5V出力です。電圧入力としても使用できますが、外部電源とこのピンの間に何らかのダイオード(ショットキー、信号、電力)を配置し、アノードをバッテリー側、カソードを5Vピン側にする必要があります。
  • 3V3 - これはオンボードレギュレータからの調整済み出力です。700mAまで引き出すことができます
  • GND - 電源/データ/信号グランド

ストラッピングピン

ESP32C3のチップマニュアルによると、チップ内のGPIO2GPIO8GPIO9はストラッピングピンであり、これらのピンのハイレベルとローレベルの設定により、チップが異なるブートモードに入る可能性があります。これらのピンを使用する際はこの点にご注意ください。そうでないと、XIAOがプログラムのアップロードや実行を常に妨げられる可能性があります。

入門ガイド

まず、XIAO ESP32C3をコンピュータに接続し、ボードにLEDを接続して、Arduino IDEから簡単なコードをアップロードし、接続されたLEDを点滅させることでボードが正常に機能しているかを確認します。

ハードウェアの準備

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

tip

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

  • ステップ 1. USB Type-CケーブルでXIAO ESP32C3をコンピュータに接続します。
  • ステップ 2. 以下のようにD10ピンにLEDを接続します

注意: LEDを通る電流を制限し、LEDを焼損させる過電流を防ぐため、必ず抵抗(約150Ω)を直列に接続してください

ソフトウェアの準備

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

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

  • ステップ 3. Arduino IDEにESP32ボードパッケージを追加します

File > Preferencesに移動し、**"Additional Boards Manager URLs"**に以下のURLを入力します: https://jihulab.com/esp-mirror/espressif/arduino-esp32.git

**Tools > Board > Boards Manager...**に移動し、検索ボックスにキーワード"esp32"を入力し、esp32の最新バージョンを選択してインストールします。

  • ステップ 4. ボードとポートを選択します

ボード

Tools > Board > ESP32 Arduinoに移動し、"XIAO_ESP32C3"を選択します。ボードリストは少し長いので、下までスクロールする必要があります。

ポート

Tools > Portに移動し、接続されたXIAO ESP32C3のシリアルポート名を選択します。これはCOM3以上である可能性が高いです(COM1COM2は通常ハードウェアシリアルポート用に予約されています)。

最初のBlinkプログラムを実行する

  • ステップ 1. 以下のコードをArduino IDEにコピーします

上図のようにD10がLEDに接続されていることを確認してください。


// define led according to pin diagram in article
const int led = D10; // there is no LED_BUILTIN available for the XIAO ESP32C3.

void setup() {
// initialize digital pin led as an output
pinMode(led, OUTPUT);
}

void loop() {
digitalWrite(led, HIGH); // turn the LED on
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off
delay(1000); // wait for a second
}
  • ステップ 2. Uploadボタンをクリックしてコードをボードにアップロードします

アップロードが完了すると、接続されたLEDが1秒間隔で点滅するのが確認できます。これは接続が成功したことを意味し、XIAO ESP32C3でより多くのプロジェクトを探索できるようになりました!

バッテリーの使用

XIAO ESP32C3は3.7Vリチウムバッテリーを電源入力として使用することができます。配線方法については以下の図を参照してください。

pir
caution

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

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

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

バッテリー電圧の確認

ESP32C3のピン数の制限により、XIAO ESP32C3が他のXIAO シリーズと同じ数のGPIOを持つことを保証するため、エンジニアはバッテリーの電圧測定に割り当てる追加のピンがありませんでした。

しかし、バッテリー電圧測定用に別のピンを使用したい場合は、msfujinoの天才的な操作を参考にできます。XIAO ESP32C3のために共有されたすべての経験と努力について、msfujinoに特別な感謝を表したいと思います。

基本的な動作アイデアは:バッテリー電圧を200kで1/2に分圧してA0ポートに接続し、電圧を監視できるようにすることです。

pir

データシートでは公称2500mVフルスケールAD変換とありますが、チップごとに大きなばらつきがあり、実際には±10%です。私のチップは2700mVフルスケールでした。

幸い、各チップの校正済み補正値がヒューズ領域に書き込まれており、analogReadMilliVolts()関数を使用することで、特別な処理をすることなく補正された電圧値を読み取ることができます。

AD変換の結果とマルチメーターで測定した電圧は、約5mVの誤差でよく一致しており、実用上問題ありません。

また、特に通信中にスパイク状のエラーが発生したため、これを除去するために16回平均化する必要がありました。

以下はバッテリー電圧をテストする手順です。

void setup() {
Serial.begin(115200);
pinMode(A0, INPUT); // ADC
}

void loop() {
uint32_t Vbatt = 0;
for(int i = 0; i < 16; i++) {
Vbatt = Vbatt + analogReadMilliVolts(A0); // ADC with correction
}
float Vbattf = 2 * Vbatt / 16 / 1000.0; // attenuation ratio 1/2, mV --> V
Serial.println(Vbattf, 3);
delay(1000);
}
tip

上記はSeeed Studioフォーラムユーザーmsfujinoからのもので、元の投稿は: https://forum.seeedstudio.com/t/battery-voltage-monitor-and-ad-conversion-for-xiao-esp32c/267535です。 上記に基づいてバッテリー電圧測定を試みる前に、優れた実践スキルとより良いはんだ付けスキルを持つことをお勧めし、バッテリーの短絡などの危険な行為には注意してください。

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

XIAO ESP32C3はディープスリープモードとウェイクアップ機能をサポートするよう設計されています。これら2つの機能の使用について、以下の使用例を提供します。

#define BUTTON_PIN_BITMASK 0x200000000 // 2^33 in hex

RTC_DATA_ATTR int bootCount = 0;

/*
Method to print the reason by which ESP32
has been awaken from sleep
*/
void print_wakeup_reason(){
esp_sleep_wakeup_cause_t wakeup_reason;

wakeup_reason = esp_sleep_get_wakeup_cause();

switch(wakeup_reason)
{
case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break;
}
}

void setup(){
Serial.begin(115200);
delay(1000); //Take some time to open up the Serial Monitor

//Increment boot number and print it every reboot
++bootCount;
Serial.println("Boot number: " + String(bootCount));

//Print the wakeup reason for ESP32
print_wakeup_reason();

esp_deep_sleep_enable_gpio_wakeup(BIT(D1), ESP_GPIO_WAKEUP_GPIO_LOW);

//Go to sleep now
Serial.println("Going to sleep now");
esp_deep_sleep_start();
Serial.println("This will never be printed");
}

void loop(){
//This is not going to be called
}

XIAOがディープスリープに入る前にシリアルモニターを素早く開くことができれば、以下に示すようなメッセージ出力を確認できます。これは、XIAOが現在「スリープ状態」にあることを意味します。

tip

ディープスリープモードに入った後、XIAOのポートは消失し、再度ポート番号を確認するには起動する必要があります!

プログラムでは、D1のローレベルを使用してウェイクアップしています。これは、ピンD1にボタンを接続し、ボタンを押すとXIAOがウェイクアップすることを意味します。

caution

XIAO ESP32-C3はGPIOウェイクアップとタイマーウェイクアップをサポートしており、ウェイクアップをサポートするピンはD0〜D3です。

トラブルシューティング

Q1: Arduino IDEでボードにコードをアップロードする際にスタックする

まず、ボードがPCに接続されている状態でRESETボタンを一度クリックしてボードをリセットしてみてください。それでも解決しない場合は、BOOTボタンを押し続けながらボードをPCに接続し、その後ボタンを離してブートローダーモードに入ってください。

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

上記のQ1と同じ解決方法に従ってください。

Q3: ブートローダーを工場出荷時ファームウェアで再フラッシュしたい

USB Type-CでボードをPCに接続し、ESP RF Test Toolを使用してブートローダーを工場出荷時ファームウェアで再フラッシュできます。

  • ステップ1. BOOTボタンを押し続けながらXIAO ESP32C3をPCに接続してブートローダーモードに入る

  • ステップ2. 接続後、BOOTボタンを離す

  • ステップ3. このページにアクセスしてESP RF Test Tool and Test Guideをダウンロードする

  • ステップ4. .zipを展開し、ESP_RF_Test_EN\ESP_RF_Test_EN\EspRFTestTool_v2.8_Manualに移動してEspRFTestTool_v2.8_Manual.exeを開く
  • ステップ5. ChipTypeとしてESP32C3、COMポート、BaudRateとして115200を選択し、openをクリックする

以下の出力が表示されます

  • ステップ6. Flashを選択し、Select Binをクリックする

フラッシュが成功すると以下の出力が表示されます

MicroPython GitHubリポジトリ

リソース

コースリソース

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

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

Loading Comments...