Seeed Studio XIAO ESP32C3を動かしてみた

Seeed K.K.の松岡です。
Seeed Studio XIAO ESP32C3を触ってみます。ESP8266はそれなりに作り込んで使っているのですが、ESP32シリーズやRISC-Vはほとんど使っていません。はてさてどうなることやら。

本記事は、技適マーク付与前のSeeed Studio XIAO ESP32C3を、技適未取得機器を用いた実験等の特例制度に届出した上で動かしています。

開発環境

Arduino IDEにEspressifが提供しているArduino coreを追加すると、Seeed Studio XIAO ESP32C3の開発ができるようです。

Seeed Wikiには、Additional Boards Manager URLsにpackage_esp32_dev_index.json(←Development release)を加えてと書かれていますが、もうStableにリリースされているようで、package_esp32_index.json(←Stable release)を加えれば良いようです。

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

追記してBoards Managerを開くと、esp32 by Espressif Systemsが表示されました。バージョンはv2.0.4でした。Installを実行します。

インストール後、ESP32 ArduinoXIAO_ESP32C3が選べるようになりました。これを選択します。

Lチカ

それでは、開発環境がきちんと整っているかをLチカで確認してみましょう。

PCのUSBにSeeed Studio ESP32C3を接続して、Seeed wikiにある、Blink the LEDのサンプルコードをArduino IDEにコピペ、Uploadを実行します。あ、PCとSeeed Studio XIAO ESP32C3が繋がっているPortを選んでおくのを忘れずに。
コンパイルに結構時間がかかります。気長に待ちましょう。

static constexpr int LED_PIN = D10;

void setup()
{
  pinMode(LED_PIN, OUTPUT);
}

void loop()
{
  digitalWrite(LED_PIN, HIGH);
  delay(200);
  digitalWrite(LED_PIN, LOW);
  delay(800);
}

Uploadが完了するとLEDが点滅、、、点滅はしていますが、なにやら様子がおかしいです。

調べたところ、Seeed Studio XIAO ESP32C3に載っていて高速に点滅しているLEDは充電状態表示用のものでした。つまり、コードでdigitalWrite()しているものとは別物。
ブレッドボードを使ってLEDを取り付けると、今度は良い感じに点滅しました。

わたしがLチカするとき、HIGHとLOWの時間を変えて試します。論理の確認になるので。

Wi-Fi

続いて、Wi-Fiも見ておきましょう。
TLSがきちんと動くか気になるので、ExamplesのHTTPClientにあるBasicHttpsClientを試してみましょう。

BasicHttpsClient

Wi-FiアクセスポイントのSSIDとパスフレーズを書き換えて、Uploadを実行します。

あれれ、[HTTPS] GET... failed, error: connection refusedというエラーが発生しました。通信できていないようです。

PCのChromeで、接続先サーバーhttps://jigsaw.w3.orgの証明書を確認(下図の左)するとDigiCert Baltimore Root - Cloudflare Inc ECC CA-3 - sni.cloudflaressl.comでしたが、サンプルコードのrootCACertificate(下図の右)はGandi Standard SSL CA 2でした。どうやら、証明書検証ではじかれていたようです。

PCで証明書の情報を抜き取って、rootCACertificateを次のとおり変更すると、無事、エラーが出なくなり、通信できるようになりました。

const char* rootCACertificate = \
"-----BEGIN CERTIFICATE-----\n" \
"MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ\n" \
"RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD\n" \
"VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX\n" \
"DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y\n" \
"ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy\n" \
"VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr\n" \
"mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr\n" \
"IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK\n" \
"mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu\n" \
"XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy\n" \
"dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye\n" \
"jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1\n" \
"BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3\n" \
"DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92\n" \
"9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx\n" \
"jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0\n" \
"Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz\n" \
"ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS\n" \
"R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp\n" \
"-----END CERTIFICATE-----\n";

まとめ

  • Arduino IDEで開発できた。wikiのBoards Manager URLが古いので注意。(Seeed Wikiへフィードバックしておきます...)
  • (他ボードと比べて)コンパイルに時間がかかる気がする。
  • 搭載LEDはソフトで操作できないので、LチカするときはLEDを追加する。
  • Wi-Fiでhttps通信できた。

変更履歴

日付 変更者 変更内容
2022/8/20 松岡 作成