目次
概要
RISC-V を搭載した Seeed Studio XIAO ESP32C3 をブレッドボードで使用する方法について説明します。サンプル・プログラムは、GitHubからダウンロードし、GPIOの割り当てを変更して使用します。GPIO と 端子の割り当てについても説明します。
本製作の特長
Seeed Studio XIAO ESP32C3 の特長は、必要な機能が小さなモジュールに集約されていること、 ブレッドボードに実装できること、ブレッドボード上の空きスペースが多いことなどです。
- 必要な機能が 21 x 17.5mm に集約されている
- ピンヘッダを取り付ければ、ブレッドボードに実装できる
- ブレッドボード上の空きスペースが多い(2行×2列)
- アンテナが外付けなので、アンテナ性能を発揮しやすい
ESP32-C3 チップ
ESP32-C3 は、従来のESPシリーズで採用されていた Tensilica Xtensa よりも低価格な Wi-Fi 内蔵の RISC-V 搭載マイコンです。しかも、他のESP32シリーズと同様に、台湾TSMC社の40nmプロセスで生産することで、高速かつ高機能、低消費電力を実現しています。
コア数1、FPU(浮動小数点数演算ユニット)なし、QFN 32ピンなどから、旧製品 ESP8266EX の後継にあたると思います。
Seeed Studio XIAO ESP32C3
Seeed Studio XIAO ESP32C3 は、ESP32-C3 を搭載し、国内の電波法に適合した工事設計認証を取得済みの Wi-Fi モジュールです。
Wi-Fiモジュール Seeed Studio XIAO ESP32C3:
https://www.seeedstudio.com/Seeed-XIAO-ESP32C3-p-5431.html
販売の一例(スイッチサイエンス):
https://www.switch-science.com/products/8348
ブレッドボードに実装する
Wi-Fi モジュール Seeed Studio XIAO ESP32C3 をブレッドボードに実装する際の一例を紹介します。
GPIOポート と Dポート の 割り当て (要注意)
Seeed Studio XIAO ESP32C3 は、 ESP32-C3 の GPIO ポートとはピン割り当てが異なります。例えば、1番ピンの D0 は、ESP32C3 の GPIO 0 ではなく、GPIO 2 に接続されています。
Pin | 表示 | 割り当て | Pin | 表示 | 割り当て | |
1 | D0 | GPIO2 | 14 | VUSB | USB電源(5V) | |
2 | D1 | GPIO3 | 13 | GND | 電源(GND) | |
3 | D2 | GPIO4 | 12 | 3V3 | 電源(3.3V) | |
4 | D3 | GPIO5 | 11 | D10 | GPIO10 | |
5 | D4 | GPIO6, SDA | 10 | D9 | GPIO9 | |
6 | D5 | GPIO7, SCL | 9 | D8 | GPIO8 | |
7 | D6 | GPIO21, TXD | 8 | D7 | GPIO20, RXD |
ピン番号順に D0~D10 が割り当てられているのは分かりやすい一方、XIAO 専用ではない ESP32C3 用サンプル・プログラムを動かそうと思ったときに、若干の手間がかかります。
Arduino IDE では Dポート番号を使用する
Arduino IDE の「ボード」の設定で「XIAO_ESP32C3」を選択すると、Seeed Studio XIAO ESP32C3 の基板裏面に印刷された Dポート番号 が利用できるようになります。
Dポート番号 は XIAO ESP32C3 の端子番号です。Dから始まるD0~D10の11個が、ピン番号1~11の順に割り当てられています。詳細な定義内容は、ESP32用ライブラリの pins_arduino.h (variants/XIAO_ESP32C3)を参照してください。
サンプル・プログラムと解説書のダウンロード
プログラムのダウンロード方法
筆者が作成したサンプル・プログラムは、下記のGitHubのリポジトリ esp32c3 からダウンロードすることが出来ます。
筆者 GitHub esp32c3 リポジトリ:
https://github.com/bokunimowakaru/esp32c3/archive/master.zip
解説書のダウンロード方法
開発環境のセットアップ方法や、各サンプルの説明を記した解説書は、下記からダウンロードしてください。
解説書(PDF版)無料ダウンロード:
https://bokunimo.net/esp32/esp32c3
[ご注意]
本稿で製作する Seeed Studio XIAO ESP32C3 の割り当ては、サンプル・プログラムや解説書と異なります。必ず次節「GPIO 割り当ての変更方法」をお読みください。
GPIO 割り当ての変更方法
サンプル・プログラムの GPIO 割り当ての変更方法を説明します。
IO実験用ボード用プログラムの変更点
ex00_io.ino
プログラム[0] IO実験用ボード
サンプル・プログラム ex00_io.ino では、LED 用に GPIO 0 をタクト・スイッチ用に GPIO 1 を割り当てています。しかし、Seeed Studio XIAO ESP32C3 には GPIO 0 や 1 は端子に出力していないので、LEDを1番ピンの D0 (GPIO 2) に、タクト・スイッチは 2番ピンの D1 (GPIO 3) に接続します。
ダウンロードした esp32c3-master.zip 内の esp32c3-master フォルダ→ learning フォルダ→ ex00_ioフォルダ内のex00_io.inoを開き、PIN_LED のポート番号を以下のように変更してください。
(ex00_io.ino 変更前)
#define PIN_LED 0
#define PIN_SW 1
(ex00_io.ino 変更後)
#define PIN_LED D0
#define PIN_SW D1
プログラムの使用方法は解説書 P.12 準備4以降を参照ください。
ex00_rgb.ino
プログラム[0] RGB LED 対応版
RGB LED の接続先は、GPIO 2 から D2 (GPIO 4) に変更したので、ex00_rgb.inoでは、 以下のように変更してください。
(ex00_rgb.ino 変更前)
#define PIN_LED 0
#define PIN_SW 1
#define PIN_LED_RGB 2
(ex00_rgb.ino 変更後)
#define PIN_LED D0
#define PIN_SW D1
#define PIN_LED_RGB D2
温湿度センサ用プログラムの変更点
ex05_hum4.ino
Wi-Fi 温湿度計 SHT40/SHT41 版
SENSIRION製 SHT40 を搭載した Adafruit Sensirion SHT40 Temperature & Humidity Sensor を接続し、センサ値を Wi-Fi で送信する Wi-Fi 温湿度計を作成します。
前述の解説書にしたがえば、インターネット上のサービス「Ambient」を使ったグラフ化や、Raspberry Pi を使ったLAN内での情報収集が可能になります。
I2C の接続先は、D4 (SDA, GPIO 6)と D5 (SCL, GPIO 7) を使用します。
learning フォルダ内の ex05_hum4 フォルダ→ ex05_hum4.ino を開き、setup関数内のshtSetupの引き数(0,1)を、(SDA,SCL) に変更してください。
(ex05_hum4.ino 変更前)
#define PIN_LED_RGB 2
shtSetup(1,0);
(ex05_hum4.ino 変更後)
#define PIN_LED_RGB D2
shtSetup(SDA,SCL);
SHT40 は、半導体による環境センサの先駆者 SENSIRION 社が開発した第4世代目の温湿度センサです。主に湿度の精度の違いで SHT40、SHT41、SHT43、SHT45があります。
なお、従来の SHT31 に対応した ex05_hum も learning フィルだ内にあります。
その他のプログラムの変更点
「#define PIN_〇〇 n」の数値部nの前にDを付与すれば、 XIAO 用のDポート番号が利用できます。
I2C アドレスについては、SDA、SCLを使用します。例えば、後の応用で使用する ex04_lcd.ino の場合は、以下のように変更します。
(ex04_lcd.ino 変更前)
#define PIN_LED_RGB 2
lcdSetup(8,2,1,0);
(ex04_lcd.ino 変更後)
#define PIN_LED_RGB D2
lcdSetup(8,2,SDA,SCL);
プログラムの書き込み方法と実行方法
プログラムの書き込み方法
Seeed Studio XIAO ESP32C3 には 2つのタクトスイッチが実装されています。タクトスイッチ BOOT (下図の右下のボタン)を押した状態で、EN(下図の右上のボタン)を押下してから離すと、プログラム・書き込みモードに遷移します。
ダウンロードした解説書の準備[1]「Arduino IDE 開発環境をセットアップする」のうち ⑥COMポート番号の確認 については、 M5Stamp C3 に内蔵されている USBシリアル変換IC 用です。 XIAO ESP32C3 の場合、デバイスマネージャでの表示名が「USB シリアル デバイス (COM〇)」になります。
また、プログラムの書き込みには、ESP32C3 内蔵の USBインタフェースを使用しているので、リセット(ENボタン)の操作の度に、パソコンとのUSB接続が一時的に切断されます。この時に、USBの通信に不具合が生じることがあり、プログラムのデバッグ時などに、頻繁に書き込みやリセット操作、シリアル・モニタを使用する場合は、Espressif 純正の開発ボードを使った方が効率的です。
確実な書き込みやモニタを行うには、下図のように D8を プルアップし、D6 と D7 に USBシリアル変換モジュールを接続し、ボードの設定を「ESP32C3 Dev Module」に設定します(ただし、Dポート番号が使えなくなる)。
プログラムの実行方法
書き込みが終了してからEN端子に接続したリセットスイッチ(上図の茶色ボタン)を押してください。
(応用編) ワイヤレス 環境センサ値 表示システム
Wi-Fi 温湿度計 ex05_hum4.ino が送信する 温度と湿度を Wi-Fiで受信して LCD に表示する システムを製作してみます。
システム構成
- Wi-Fi 温湿度計(写真・左)
- Wi-Fi LCD/表示器(写真・右)
Wi-Fi 温湿度計は、前述の ex05_hum4.ino を Seeed Studio XIAO ESP32C3 書き込んで製作しました。
Wi-Fi LCD/表示器は、いくつかの製作方法があります。
- M5Stamp C3/C3U を使用する方法
- ESP-WROOM-02 や ESP32 を使用する方法
- ESP32-C3-WROOM-02 を使用する方法
- XIAO ESP32C3 を使用する方法
Wi-Fi LCD/表示器のハードウェア
M5Stamp C3/C3U を使用する方法
M5Stamp C3/C3U を使用する方法については、前述の解説書の P.26~P.29 に製作方法を記しています。
ESP-WROOM-02 や ESP32 を使用する方法
Wi-Fi LCD/表示器 は、超特急Web接続! ESPマイコン・プログラム集(CQ出版社) P.119 で紹介した [3] Wi-Fi コンシェルジェ 掲示板担当(Wi-Fi LCD)を ESP32C3 用に変更して作成しました。
したがって、本書で紹介した ESP-WROOM-02 の回路や ESP32 用のプログラムでも動作します。また、ESPモジュールに関する一定の知識があれば、本書をお買い求めいただかなくとも、下記の「IoT実習キット組み立て説明書」をご覧いただければ、製作できると思います。
IoT実習キット組み立て説明書(CQ出版社)
https://shop.cqpub.co.jp/hanbai/books/I/I000315/setsumei.pdf
もし興味をもっていただけましたら、下記のサポートページなどをご覧いただき、購入を検討していただければ幸いです。
超特急Web接続! ESPマイコン・プログラム集 サポートページ:
https://bokunimo.net/bokunimowakaru/cq/esp/
Amazon 販売ページ:
https://www.amazon.co.jp/dp/4789847047
すでに超特急Web接続! ESPマイコン・プログラム集をお持ちの方は、 P.120 図2 などを参照ください。
ESP32-C3-WROOM-02 で製作する方法
ESP-WROOM-02 を ESP32-C3-WROOM-02 に変更する方法については、下記のブログを参照ください。ソフトウェアについては後述します。
XIAO ESP32C3 を使用する方法
他の ESP32-C3 を使ったデバイスでの作成方法と、前述のソフトウェア変更を参考に製作できると思います。
Wi-Fi LCD/表示器のソフトウェア
M5Stamp C3/C3U または XIAO ESP32C3 を使用する場合は、ダウンロードした ZIPフォルダの esp32c3-master フォルダ→ learning フォルダ→ ex04_lcd → ex04_lcd.ino を ESP32-C3 に書き込んで使用します(XIAO ESP32C3 の場合は GPIO のポート変更が必要)。
ESP-WROOM-02 や ESP32 を使用する場合は、前述の書籍「超特急Web接続! ESPマイコン・プログラム集」に付属するCD-ROMや、書籍、サポートページ等に記載の保存先からソフトウェアをダウンロードして使用してください。
ESP32-C3-WROOM-02 を使用する場合は、前述の筆者 GitHub esp32c3 リポジトリからダウンロードした ZIPフォルダの esp32c3-master フォルダ→ super_ex フォルダ→ example05_lcd → example05_lcd.ino を ESP32-C3 に書き込んでください。
関連情報
関連情報へのリンク
(PDF版) RISC-Vコア Wi-Fiマイコン ESP32-C3 搭載 M5Stamp C3 で 無線×IO 制御プログラミング
https://bokunimo.net/esp32/esp32c3/
GitHub Pages esp32c3:
https://git.bokunimo.com/esp32c3/
本ブログ内の ESP8266+ESP32 アーカイブ:
https://bokunimo.net/blog/category/esp/
書籍「超特急Web接続! ESP マイコン・プログラム全集」サポートページ:
https://bokunimo.net/esp/
本ブログ内の関連記事
by bokunimo.net