Seeed Studio XIAO ESP32C3でMicroPython
ArduinoでSeeed Studio XIAO ESP32C3 の開発環境を構築したばかりですが、Micro Pythonの環境も構築してみたいと思います。
作業の流れは、ubuntuでPico開発 と大きな差はないので参照しながら実施します。
仮想環境の作成とThonnyのインストール
まずは、仮想環境の作成から実施します。
$ mkdir esp32
$ cd esp32
$ python3 -m venv .venv
$ source .venv/bin/activate
インストール済みパッケージの確認。
$ pip list
Package Version
---------- -------
pip 22.0.2
setuptools 59.6.0
一応、アップデート
$ pip install -U pip setuptools
アップデート後に確認してみると
$ pip list
Package Version
---------- -------
pip 24.1.2
setuptools 70.3.0
ちゃんと更新されたようです。
Thonnyのインストールと、ESP32 への書き込みに必要なesptoolをインストールします。
$ pip install thonny esptool
ここまでで、下準備は完了です。
Seeed Studio XIAO ESP32C3 のFWの更新
ネットで検索すると、「ESP32-C3 with USB」というキーワードが出てきますが、現在のリンク先は「ESP32-C3」となっているようです。
最新のFWが v1.23.0 のようなので事前にダウンロードします。
Frimwareの更新情報はこんな感じ。
まずは消去(erase)処理から
$ esptool.py erase_flash
esptool.py v4.7.0
Found 1 serial ports
Serial port /dev/ttyACM0
Connecting...
Detecting chip type... ESP32-C3
Chip is ESP32-C3 (QFN32) (revision v0.4)
Features: WiFi, BLE, Embedded Flash 4MB (XMC)
Crystal is 40MHz
MAC: ec:da:3b:be:97:78
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 15.0s
Hard resetting via RTS pin...
続けて書き込み(write)を行います。
$ esptool.py write_flash -z 0x0 ESP32_GENERIC_C3-20240602-v1.23.0.bin
esptool.py v4.7.0
Found 1 serial ports
Serial port /dev/ttyACM0
Connecting...
Detecting chip type... ESP32-C3
Chip is ESP32-C3 (QFN32) (revision v0.4)
Features: WiFi, BLE, Embedded Flash 4MB (XMC)
Crystal is 40MHz
MAC: ec:da:3b:be:97:78
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00197fff...
Compressed 1667600 bytes to 1000925...
Wrote 1667600 bytes (1000925 compressed) at 0x00000000 in 12.3 seconds (effective 1080.9 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
これでFWの準備ができました。
WiFi動作(AP)の確認
いきなりですが、今回はLチカではなく、WiFi動作(AP)の確認を行ってみます。
まずは thonnyの起動を行います。
$ thonny
起動後、実行 – インタプリタ設定 で インタプリタを MicroPython(ESP32)へ変更します。
今回のコードはこんな感じです。
import network
import utime
def start_access_point():
ap = network.WLAN(network.AP_IF)
ap.config(essid="esp32_AP", authmode=network.AUTH_WPA2_PSK, password="esp32test")
ap.active(True)
start_access_point()
while True:
utime.sleep(1)
ap.config で authmode を指定しないと デフォルト値は 0 で open モードとなるようです。
セキュリティ面を気にする人は注意してください。