見出し画像

ESP32-C3 使ってみた

新型Arduinoの情報を見て、そのワイヤレスモデルについているマイコンが…"ESP32-S3"。
それと同系統というか、似た名前で"C3"というマイコンもあります。
ちょっと調べたところ、S3とC3はとある共通する素晴らしい特徴があります。
そこで使い方を調べてみました。しかしながら情報が少なくひとつのページだけ見て使うに至らなかったので、本記事だけで使えるように全部まとめようと思います。
S3に関する記事は以下

こちらもチェック

本来動画がメインですので、動画の方でも解説上げました。
今後は実験や工作を動画で予定

DIP化基盤に関する記事も追加しました
こちらもあわせてご確認ください

ESP32-C3仕様

特に大事な仕様だけメモ
電源電圧:3.0~3.6V
フラッシュ:4MB / RAM400KB
Wi-Fi:802.11b/g/n
Bluetooth: Bluetooth Low Energy(Bluetooth 5)
ネイティブUSB

データの書き込みについて

まず第一に知りたいであろうスケッチの書き込みについて

他のESPシリーズ(ESP32 / ESP32D / ESP32E等)との違い

ESP32-C3 / S3と他のESPシリーズとの最大の違いは、USBシリアル変換モジュール無しで書き込めることでしょう。
通常は"PC→USBシリアル変換モジュール→ESPシリーズ"という配線でスケッチの書き込みしますが、本品は"PC→ESP32-C3"という配線で書き込めます。

USBシリアル変換モジュール
ESP32-C3書き込み配線

具体的な書き込み方法は?

データシートを見る限り、他のESPシリーズ同様に特定のピンをプルアップ/ダウンさせることで起動モードを変えて書き込みを行えるようになるようです(後述しますが今回は関係ない)。
以下のようにピン状態を設定することで起動モードを変えられます。

ブート関係のピン

検証結果から言うとブートモードを決定するのは9番ピンです。
LOWにしておくと書き込み待機状態になります。
※9番ピンは内蔵プルアップがかかっているので、書き込み時だけGNDにつなげばOK。
8番ピンと9番ピンを同時にLOWにするのはNG。予期しない動作を起こす可能性があるので避けろとデータシートに書いてあります。
※実験では2番ピンの状態に関係なく起動/書き込み可でした。
※これらの情報はデータシートP12に書いてあります。

以上の情報をまとめると
GPIO2: HIGH
GPIO8: HIGH
GPIO9: NC(書き込みモードだけLOW)

ぶっちゃけ関係ない

さて、書き込みに関するピンを紹介して置いてなんですが、内蔵USBを使用して書き込む場合、ブートモードを切り替える必要はなさそうです。
以下にその趣旨の記述が書いてありますので試したところ、スケッチ実行中に突然書き込みを行ったところ正常に書き込みが開始されました。

まずはドライバーを入れる

順番が前後しましたが、ESP32-C3のUSB機能を使用するには専用のドライバのインストールが必要です
以下の"USB ドライバーの構成"部分にあるコマンドをWindows Power Shellに貼り付ければインストール完了。

回路図

実験の結果、書き込みの回路図は以下になります。
ポイント
IO2,8,ENはプルアップでHIGHにしておく。
USBは5Vで、ESP32は3.3Vなのでレギュレーターで落とす。
USBのD+,D-はPCのD+,D-と直結。(調べたところレベル変換が必要等はなかった)

書き込み回路図

テストスケッチ

ボード設定

ではスケッチの書き込みをしてみます。
まずはボードの設定です。
既にESP32シリーズを使用したことがあり、ボード定義をダウンロードしている前提です。その中に"ESP32C3"があるのでこれを選択します。
そして、ドライバのDL配線が正しく行われていれば以下のようにCOMポートの部分は括弧書きでESP32C3と表示されるポートがあるのでそれを選びます。
それ以外の設定はとりあえずデフォルトです。

ボード設定

適当スケッチ

テストで以下のスケッチを書き込んでみました。
2番ピンはプルアップしているので除外。8番ピンはテストでは無接続。

byte pins[] = {0, 1, 3, 10, 7, 6,  4, 5, 8, 9};
void setup() {
  for (int i = 0; i < sizeof(pins); i++) {
    pinMode(pins[i], OUTPUT);
  }
}

void loop() {
  for (int i = 0; i < sizeof(pins); i++) {
    digitalWrite(pins[i], !digitalRead(pins[i]));
  }
  delay(100);
}

以下が実行時の様子です。
変換基盤が無いので色々と配線が長くワイヤーも長いので超見づらいです。
なお、9番ピンにLEDを入れておくとLOW判定になるらしくプログラムが実行されませんでした(あとから挿す分にはOK)。
8番ピンにLEDを接続し、残りは後から手で接触させて動作確認しました。
一応本スケッチは動作することが確認できました。
そして、起動中の状態で書き込みを実行することでスケッチの上書きが可能であることも確認できました。

テスト配線

まとめ

今回はESP32-C3の使いはじめ方についてみてきました。
まだまだこちらは情報が少なく、起動関係の情報を集めるだけでだいぶ苦労しました。
ちなみにC3はESP8266と同サイズなので、こちらの後継となりそうです。
ESP8266同様Wi-Fiに加え、BLE(Bluetooth Low Energy)が搭載されています。
今までBLE工作はESP32(無/D/E)を使用するしかなく、場合によってはオーバースペックなこともしばしばありますが、そういった場合に特に活用できそうです。


情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。