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の確認までできました。