ArduinoでSeeed Studio XIAO ESP32C3

思いがけず、Seeed社のBluetooth Low EnergyとWi-Fi機能を搭載した小型マイコンボードである「Seeed Studio XIAO ESP32C3」 を入手したので Arduico環境での開発に挑戦したいと思います。

開発環境のセットアップ

ubuntu上のArduino IDEでPico開発 に倣って、XIAO ESP32C3 の環境を構築します。

環境構築情報は、Getting Started with Seeed Studio XIAO ESP32C3 を参照しています。

ファイル – 基本設定 から 追加のボードマネージャのURL に下記を追加します。

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

https://wiki.seeedstudio.com/XIAO_ESP32C3_Getting_Started/

ツール – ボード – ボードマネージャ と選択し、esp32でフィルタすると、左側のペインに追加可能なボードの一覧に「Arduino ESP32 Boards」 と 「esp32」 の2つが選択可能な状態になります。今回は 公式ではない「esp32」 を選択してインストールします。

それぞれのバージョンは、公式の「Arduino ESP32 Boards」 は「2.0.13」、今回インストールした 「esp32」は「3.0.2」でした。

Platform esp32:esp32@3.0.2 installed

が出力されれば、無事にインストール完了です。

続けて、ボードとポートの設定をそれぞれ行います。
ボードは、ツール – ボード – esp32 – XAIO_ESP32C3 を選択します。
ポートは、ツール – ポート – /dev/ttyACM0 (ESP32 Family Device) を選択します。

これで、開発環境の構築は完了です。としたいところですが、書き込みのテストだけ実施しておきましょう。

「→」をクリックして実行します。

Traceback (most recent call last):
  File "/home/developer/.arduino15/packages/esp32/tools/esptool_py/4.6/esptool.py", line 34, in <module>
    import esptool
  File "/home/developer/.arduino15/packages/esp32/tools/esptool_py/4.6/esptool/__init__.py", line 41, in <module>
    from esptool.cmds import (
  File "/home/developer/.arduino15/packages/esp32/tools/esptool_py/4.6/esptool/cmds.py", line 14, in <module>
    from .bin_image import ELFFile, ImageSegment, LoadFirmwareImage
  File "/home/developer/.arduino15/packages/esp32/tools/esptool_py/4.6/esptool/bin_image.py", line 14, in <module>
    from .loader import ESPLoader
  File "/home/developer/.arduino15/packages/esp32/tools/esptool_py/4.6/esptool/loader.py", line 30, in <module>
    import serial
ModuleNotFoundError: No module named 'serial'
exit status 1

Compilation error: exit status 1

やっぱり、シリアル系のところはエラーが出るもんですねぇ。今回はPyhtonのシリアルのトラブルのようです。

本当は、仮想化しておいた方が良いのでしょうけど…

$ sudo apt install -y python3-pip
$ python3 -m pip install pyserial

再度、書き込みを実施して問題ないようです。恒例のLチカもWikiのサンプルコードを走らせて確認できました。

// define led according to pin diagram
int led = D10;

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
}

ちなみにWikiにも接続図があるように点灯するLEDは外付けのLEDなので注意してください。

WiFi動作の確認(APモード)

Lチカの動作確認もできたので、WiFi動作の確認を行います。
今回はAPモードで起動してpingでの動作確認程度まで…

WiFi接続に使用するAPI等については、ライブラリの提供元のドキュメントである ESP32 Arduino Core’s documentation を参考にします。

Libraries – Wi-Fi API とリンクを辿り確認します。
サンプルプログラムの一部を抜粋して動作確認を実施しました。

#include <WiFi.h>

const IPAddress ip(192, 168, 11, 1);
const IPAddress subnet(255, 255, 255, 0); 
const char ssid[]  = "XAIO_ESP32C3";
const char pass[] = "12345678";

void setup() {
  Serial.begin(115200);
  delay(1000);

  Serial.println("Configuring access point...");

  if (!WiFi.softAP(ssid, pass, 11)) {
    log_e("Soft AP creation failed.");
    while (1);
  }
  delay(100);
  WiFi.softAPConfig(ip, ip, subnet);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
}

void loop() {
  // put your main code here, to run repeatedly:
}

無事にAPモードで起動し、APに接続してpingの確認までできました。