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/Oと、ADCピンとして使用できる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、最大160MHzで動作する32ビットRISC-Vシングルコアプロセッサ
  • 完全なWi-Fiサブシステム: IEEE 802.11b/g/nプロトコルに準拠し、Stationモード、SoftAPモード、SoftAP + Stationモード、およびプロミスキャスモードをサポート
  • Bluetooth LEサブシステム: Bluetooth 5およびBluetoothメッシュの機能をサポート
  • 超低消費電力: ディープスリープ時の消費電力は約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 ピンリスト

電源ピン

  • 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 ESP32C3はGPIOウェイクアップのみをサポートしており、ウェイクアップをサポートするピンはD0〜D3のみです。このプログラムは他のピンでは動作しない可能性があります。

トラブルシューティング

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

まず、ボードがPCに接続されている状態でRESETボタンを一度クリックしてボードをリセットしてみてください。それでも動作しない場合は、BOOTボタンを押し続け、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...