Skip to main content

Seeed Studio XIAO ESP32C3 の使い方

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

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) プロトコルをサポートしています。このボードには外部アンテナが付属しており、無線アプリケーションの信号強度を向上させます。また、小型で洗練されたフォームファクター片面実装可能なデザインを兼ね備えています。豊富なインターフェースを備え、11個のデジタル I/OPWM ピンとして、3個のアナログ I/OADC ピンとして使用できます。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ビット RISC-V @160MHzSAMD21 M0+@48MHzRP2040 デュアルコア M0+@133MHznRF52840 M4F@64MHznRF52840 M4F@64MHz
無線接続WiFi および Bluetooth 5 (BLE)N/AN/ABluetooth 5.0/BLE/NFCBluetooth 5.0/BLE/NFC
メモリ400KB SRAM、4MB オンボード Flash32KB SRAM 256KB FLASH264KB SRAM 2MB オンボード Flash256KB RAM、1MB Flash、2MB オンボード Flash256KB RAM、1MB Flash、2MB オンボード Flash
内蔵センサーN/AN/AN/AN/A6 DOF IMU (LSM6DS3TR-C)、PDM マイク
インターフェースI2C/UART/SPII2C/UART/SPII2C/UART/SPII2C/UART/SPII2C/UART/SPI
PWM/アナログピン11/411/1111/411/611/6
オンボードボタンリセット/ブートボタンN/Aリセット/ブートボタンリセットボタンリセットボタン
オンボード LED充電 LEDN/Aフルカラー RGB/3-in-one LED3-in-one LED/充電 LED3-in-one LED/充電 LED
バッテリー充電チップETA4054S2FN/AN/ABQ25101BQ25101
プログラミング言語Arduino/MicroPythonArduino/CircuitPythonArduino/MicroPython/CircuitPython

特徴

  • 強力な CPU: ESP32-C3、32ビット RISC-V シングルコアプロセッサ、最大 160 MHz で動作
  • 完全な Wi-Fi サブシステム: IEEE 802.11b/g/n プロトコルに準拠し、ステーションモード、SoftAP モード、SoftAP + ステーションモード、プロミスキャスモードをサポート
  • Bluetooth LE サブシステム: Bluetooth 5 および Bluetooth メッシュの機能をサポート
  • 超低消費電力: ディープスリープ時の消費電力は約 43μA
  • 優れた RF 性能: 外部 RF アンテナを含む
  • バッテリー充電チップ: リチウムバッテリーの充放電管理をサポート
  • 豊富なオンチップリソース: 400KB の SRAM、および 4MB のオンボードフラッシュメモリ
  • 超小型サイズ: 親指サイズ (21x17.8mm)、XIAO シリーズのクラシックなフォームファクターでウェアラブルデバイスや小型プロジェクトに最適
  • 信頼性の高いセキュリティ機能: AES-128/256、ハッシュ、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のチップマニュアルによると、チップ内のGPIO2GPIO8、およびGPIO9はストラッピングピンです。これらのピンの高低レベル設定により、チップが異なるブートモードに入る可能性があります。この点に注意しないと、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. LEDをD10ピンに以下のように接続します。

注意: LEDに流れる電流を制限し、過電流によるLEDの焼損を防ぐために、約150Ωの抵抗を直列に接続してください。

ソフトウェア準備

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

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

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

File > Preferencesに移動し、"Additional Boards Manager URLs"に以下のURLを入力します: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

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

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

ボード

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

ポート

Tools > Portに移動し、接続されたXIAO ESP32C3のシリアルポート名を選択します。通常、これはCOM3以上になります(COM1およびCOM2は通常ハードウェアシリアルポート用に予約されています)。

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

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

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


// 記事内のピン図に基づいてLEDを定義
const int led = D10; // XIAO ESP32C3にはLED_BUILTINはありません。

void setup() {
// デジタルピンledを出力として初期化
pinMode(led, OUTPUT);
}

void loop() {
digitalWrite(led, HIGH); // LEDを点灯
delay(1000); // 1秒待機
digitalWrite(led, LOW); // LEDを消灯
delay(1000); // 1秒待機
}
  • ステップ 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
}
float Vbattf = 2 * Vbatt / 16 / 1000.0; // 減衰比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 // 16進数で2^33

RTC_DATA_ATTR int bootCount = 0;

/*
ESP32がスリープから目覚めた理由を出力するメソッド
*/
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("RTC_IOを使用した外部信号によるウェイクアップ"); break;
case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("RTC_CNTLを使用した外部信号によるウェイクアップ"); break;
case ESP_SLEEP_WAKEUP_TIMER : Serial.println("タイマーによるウェイクアップ"); break;
case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("タッチパッドによるウェイクアップ"); break;
case ESP_SLEEP_WAKEUP_ULP : Serial.println("ULPプログラムによるウェイクアップ"); break;
default : Serial.printf("ディープスリープによるウェイクアップではありません: %d\n",wakeup_reason); break;
}
}

void setup(){
Serial.begin(115200);
delay(1000); // シリアルモニターを開くための時間を確保

// 起動回数をインクリメントして、毎回再起動時に出力
++bootCount;
Serial.println("起動回数: " + String(bootCount));

// ESP32のウェイクアップ理由を出力
print_wakeup_reason();

esp_deep_sleep_enable_gpio_wakeup(BIT(D1), ESP_GPIO_WAKEUP_GPIO_LOW);

// 今すぐスリープに入る
Serial.println("今からスリープに入ります");
esp_deep_sleep_start();
Serial.println("このメッセージは決して表示されません");
}

void loop(){
// この関数は呼び出されません
}

シリアルモニターをXIAOがディープスリープに入る前に素早くオンにすると、以下のようなメッセージが表示されます。これはXIAOが「スリープ状態」であることを意味します。

tip

ディープスリープモードに入ると、XIAOのポートが消えます。ポート番号を再び確認するには、ウェイクアップする必要があります!

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

caution

現在、XIAO ESP32C3はGPIOウェイクアップのみをサポートしており、ウェイクアップをサポートするピンはD0~D3のみです。他のピンではこのプログラムは動作しない可能性があります。

トラブルシューティング

Q1: Arduino IDEがコードをボードにアップロードする際にフリーズする

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

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. ESP32C3をChipTypeとして選択し、COMポート、115200をBaudRateとして選択し、openをクリックします

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

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

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

MicroPython GitHub リポジトリ

リソース

コースリソース

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

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

Loading Comments...