カテゴリー
ESP8266+ESP32+RISC-V

Seeed Studio XIAO ESP32C3 をブレッドボードで動かす

$4.99 と安価な Seeed Studio XIAO ESP32C3 (RISC-V搭載)をブレッドボード に実装し、サンプル・プログラムを使って、手軽に IO制御対応IoT機器を製作してみます。

概要

RISC-V を搭載した Seeed Studio XIAO ESP32C3 をブレッドボードで使用する方法について説明します。サンプル・プログラムは、GitHubからダウンロードし、GPIOの割り当てを変更して使用します。GPIO と 端子の割り当てについても説明します。

RISC-V を搭載した Seeed Studio XIAO ESP32C3

本製作の特長

Seeed Studio XIAO ESP32C3 の特長は、必要な機能が小さなモジュールに集約されていること、 ブレッドボードに実装できること、ブレッドボード上の空きスペースが多いことなどです。

  • 必要な機能が 21 x 17.5mm に集約されている
  • ピンヘッダを取り付ければ、ブレッドボードに実装できる
  • ブレッドボード上の空きスペースが多い(2行×2列)
  • アンテナが外付けなので、アンテナ性能を発揮しやすい
コンパクトサイズなのでブレッドボード上の空きスペースが多い

ESP32-C3 チップ

ESP32-C3 は、従来のESPシリーズで採用されていた Tensilica Xtensa よりも低価格な Wi-Fi 内蔵の RISC-V 搭載マイコンです。しかも、他のESP32シリーズと同様に、台湾TSMC社の40nmプロセスで生産することで、高速かつ高機能、低消費電力を実現しています。

低価格な Wi-Fi 内蔵の RISC-V 搭載マイコン ESP32-C3

コア数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 モジュール

ブレッドボードに実装する

Wi-Fi モジュール Seeed Studio XIAO ESP32C3 をブレッドボードに実装する際の一例を紹介します。

Wi-Fi モジュール Seeed Studio XIAO ESP32C3 をブレッドボードに実装した

GPIOポート と Dポート の 割り当て (要注意)

Seeed Studio XIAO ESP32C3 は、 ESP32-C3 の GPIO ポートとはピン割り当てが異なります。例えば、1番ピンの D0 は、ESP32C3 の GPIO 0 ではなく、GPIO 2 に接続されています。

Pin表示割り当てPin表示割り当て
1D0GPIO214VUSBUSB電源(5V)
2D1GPIO313GND電源(GND)
3D2GPIO4123V3電源(3.3V)
4D3GPIO511D10GPIO10
5D4GPIO6, SDA10D9GPIO9
6D5GPIO7, SCL9D8GPIO8
7D6GPIO21, TXD8D7GPIO20, RXD

ピン番号順に D0~D10 が割り当てられているのは分かりやすい一方、XIAO 専用ではない ESP32C3 用サンプル・プログラムを動かそうと思ったときに、若干の手間がかかります。

Arduino IDE では Dポート番号を使用する

Arduino IDE の「ボード」の設定で「XIAO_ESP32C3」を選択すると、Seeed Studio XIAO ESP32C3 の基板裏面に印刷された Dポート番号 が利用できるようになります。

Arduino IDE のボード設定で「XIAO_ESP32C3」を選択する

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

筆者 GitHub eps32c3 リポジトリ

解説書のダウンロード方法

開発環境のセットアップ方法や、各サンプルの説明を記した解説書は、下記からダウンロードしてください。

解説書(PDF版)無料ダウンロード:
https://bokunimo.net/esp32/esp32c3

開発環境のセットアップ方法や、各サンプルの説明を記した解説書は、無料でダウンロードできる

[ご注意]
本稿で製作する Seeed Studio XIAO ESP32C3 の割り当ては、サンプル・プログラムや解説書と異なります。必ず次節「GPIO 割り当ての変更方法」をお読みください。

GPIO 割り当ての変更方法

サンプル・プログラムの GPIO 割り当ての変更方法を説明します。

サンプル・プログラムの GPIO 割り当ての変更して、プログラムを書き込んだ IO実験用ボード

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 温湿度計を作成します。

SENSIRION製 SHT40 を搭載した Adafruit Sensirion SHT40 Temperature & Humidity Sensor を接続し、センサ値を Wi-Fi で送信する Wi-Fi 温湿度計の製作例

前述の解説書にしたがえば、インターネット上のサービス「Ambient」を使ったグラフ化や、Raspberry Pi を使ったLAN内での情報収集が可能になります。

インターネット上のサービス「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があります。

SENSIRION製 SHT40 を搭載した Adafruit Sensirion SHT40 Temperature & Humidity Sensor

なお、従来の 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(下図の右上のボタン)を押下してから離すと、プログラム・書き込みモードに遷移します。

タクトスイッチ 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ポート番号が使えなくなる)。

USBシリアル変換モジュールを使う場合は、 D8 を プルアップし、D6(GPIO21, TXD)を USBシリアル変換ICの RXD へ、D7(GPIO20, RXD)を TXD へ接続する

プログラムの実行方法

書き込みが終了してからEN端子に接続したリセットスイッチ(上図の茶色ボタン)を押してください。

(応用編) ワイヤレス 環境センサ値 表示システム

Wi-Fi 温湿度計 ex05_hum4.ino が送信する 温度と湿度を Wi-Fiで受信して LCD に表示する システムを製作してみます。

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 に製作方法を記しています。

Wi-Fi LCD/表示器は、前述の解説書の 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/

超特急Web接続! 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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

 - 
Chinese (Simplified)
 - 
zh-CN
Chinese (Traditional)
 - 
zh-TW
English
 - 
en
French
 - 
fr
German
 - 
de
Italian
 - 
it
Japanese
 - 
ja
Korean
 - 
ko
Russian
 - 
ru
Spanish
 - 
es