[電子工作]ESP32-S3-WROOMの使い方

ーーーー目次ーーーー

0.ESP32S3評価ボードの紹介

1.ESP32S3とESP32/D/Eの違い?

2.Arduino IDEでのESP32/D/EからESP32S3への移行

3.ESP32S3の活用

 (1)ピンアサイン

 (2)MicroPython

4.トラブルシューティング

ーーーーーーーーーー

0.ESP32S3評価ボードの紹介

  ESP32S3の最上位機種ESP32-S3-WROOM-1-N16R8を手軽に評価できるように、次のようなボードを

 開発し、販売を行っております。サンプルプログラムも用意していますので、ご検討をお願い致します。

   GS-0004:ESP32-S3 2.8型LCDタッチパネルボード+4人打ち麻雀ゲーム機

   GS-0005:ESP32-S3 LCD+I2Sオーディオ搭載ボード

 

1.ESP32S3とESP32/D/Eの違い

  中国のEspressif Systems Pte.(ESP)社が開発したマイコンで、240MHzのXtensa 32bit LX7プロセッサを

 2個搭載し、512KBのRAMを持ち、802.11b/g/n(Max.150Mbps)のWiFiとBluetooth 5に対応し、1000円

 未満で買えてしまうという、コストパフォーマンスの高いマイコンです。

 WROOMと呼ばれるモジュールを比較すると、以前からあるESP32/D/Eと置き換え可能なように見えますが

 残念ながら一部の機能が削除されていたり、ピンアサインが変更されて同じ機能が使えないなど、互換性は

 ありませんし、コンパイルし直しても動かないのでご注意下さい。但し、基板を設計し直し、ソフトの

 ピン番号を書き換えれば、多くのソフトは動きます。

 主な違いは次の通り。

ESP32-S3-WROOM

ESP32-WROOM-32/D/E

プロセッサ

Xrensa 32bit LX7 2コア(Max.240MHz)

Xtensa 32bit LX6 2コア(Max.240MHz)

Bluetooth

Bluetooth 5

Bluetooth V4.2

RAM

512KB

520KB

PSRAM

×/2MB/8MB

×

Temperature sensor

(温度センサー)

×

Hall sensor

(磁気センサー)

×

USB1.1 OTG

×

USB Serial

×

LCD controller

×

Camera controller

×

TWAI controller

×

Sensor_VP/VN

×

DAC

×

〇(2pin)

ピン数

40pin (ユーザーIOは33pin/36pin)

38pin (ユーザーIOは27pin)

 ESP32S3はプロセッサが新しくなったので性能を確認するために私が作成したレイトレーシングのプログラム

 を実行すると、ESP32/D/Eが26.3秒だったのが、ESP32S3では18.9秒で計算でき、同じ周波数でも40%程度

 高速に処理できる場合もあるようです。よって、高い性能が必要な用途、USBやカメラを使いたい、GPIOが

 沢山必要な場合はESP32S3をお勧めします。

 しかし、磁気センサーやDAC(音声出力など)を使っていた場合は、ESP32S3では使えなくなります。

 

2.Arduino IDEでのESP32/D/EからESP32S3への移行

  ArduinoIDEでESP32S3を使う方法は、ESP32と同じですのでこちらを参照下さい。

  注意点は次の通りです。

 

 (1)端子番号について

   Arduinoでは各端子に番号を付けてソフトを作成しますが、ESP32/D/EとESPS3は電源、GND、EN、IO0、

   TXD0、RXD0だけ同じですが、それ以外は異なっていますので、端子番号の変更は必須です。

   そして、私が一番困ったのは、SPIのCK、D、Qの3端子です。回路による高速通信を行うためには

   これら3端子を決まった端子に設定する必要があります。しかし、ESP32/D/EとESP32S3では

   位置が異なります。ESP32/D/E用に作った基板にESP32S3に実装する場合、これら3端子を

   ショートさせることで、動作させることは可能でした。しかし、端子が無駄になるので、新たに基板を

   作り直した方が良いでしょう。

     高速SPI(LCDパネル、SDカード、タッチセンサーなど)を使う場合の端子番号

ESP32-S3-WROOM

ESP32-WROOM-32/D/E

SPI CK

IO12 (20pin)

IO18 (30pin)

SPI D

IO11 (19pin)

IO23 (37pin)

SPI Q

IO13 (21pin)

IO19 (31pin)

 (2)ボードマネージャのバージョンについて

   ESP32S3を使う場合、ArduinoIDEのツール−ボード−ボードマネージャ で「ESP32」で検索し、

   ESP32の開発環境をインストールするのですが、バージョン2.0.xを選択する必要があります。

   しかし、ESP32/D/Eでは、逆にバージョン2.0.xではmallocでメモリが確保できなかったりして

   動かないソフトもありますので、ESP32/D/EとESP32S3でバージョンを切り替えるなどの

   対策が必要です。

 

 (3)ArduinoIDEのESP32用スケッチ例

   ArduinoIDEのESP32用スケッチ例ですが、このピンアサインの通り端子を繋ぎ変えれば、多くのソフトが

   ESP32S3で動きました。一部ソフトではピン番号を変更する必要がありますが、SD、WebServer、

   WiFi、Bluetoothなどは動作します。しかし、一部スケッチは動作しなかったり、無茶苦茶遅かったり

   しますのでご注意下さい。

 

3.ESP32S3の活用

 (1)ESP32S3のピンアサインについて

   一部端子は使用上の制約がありますので、次の表を参考に、ピンアサインを決めて下さい。

GPIO

専用端子

SD

ADC

TOUCH

GND

GND

3V3

+3.3V

+3.3V

EN

Reset (EN)

Reset

IO4

IO4

ADC1-CH3

TOUCH4

IO5

IO5

ADC1-CH4

TOUCH5

IO6

IO6

ADC1-CH5

TOUCH6

IO7

IO7

ADC1-CH6

TOUCH7

IO15

IO15

XTAL_32K_P

ADC2-CH4

IO16

IO16

XTAL_32K_N

ADC2-CH5

IO17

IO17

ADC2-CH6

IO18

IO18

ADC2-CH7

IO8

IO8

ADC1-CH7

TOUCH8

IO19

IO19

USB D-

ADC2-CH8

IO20

IO20

USB D+

ADC2-CH9

IO3

IO3

ADC1-CH2

TOUCH3

IO46

IO46

IO9

IO9

FSPI HD

ADC1_CH8

TOUCH9

IO10

IO10

FSPI CS0

DAT3/CS

ADC1_CH9

TOUCH10

IO11

IO11

FSPI D

CMD/DI (MOSI)

ADC2_CH0

TOUCH11

IO12

IO12

FSPI CLK

CLK

ADC2_CH1

TOUCH12

IO13

IO13

FSPI Q

DAT0/DO (MISO)

ADC2_CH2

TOUCH13

IO14

IO14

FSPI WP

ADC2_CH3

TOUCH14

IO21

IO21

IO47

IO47

SPICLK_P

IO48

IO48

SPICLK_N

IO45

IO45

IO0

IO0(BOOT)

BOOT

IO35

IO35

SPIIO6 (for PSRAM)

IO36

IO36

SPIIO7 (for PSRAM)

IO37

IO37

SPIDQS (for PSRAM)

IO38

IO38

IO39

IO39

IO40

IO40

IO41

IO41

IO42

IO42

RXD0

IO44

RXD0

TXD0

IO43

TXD0

IO2

IO2

ADC1-CH1

TOUCH2

IO1

IO1

ADC1-CH0

TOUCH1

GND

GND

 (2)MicroPython

   MicroPythonを書き込めば、ESP32S3でPythonを使うことができます。PSRAMも使えるので、

   MicroPythonのプラットフォームとして最適です。

   MicroPythonのESP32-S3から、Firmwareの[.bin]を選んで、ダウンロードします。その後、

   ESP32S3を書き込みモードにして、次のコマンドで書き込みます。

     >>esptool.py --chip esp32s3 --port /dev/ttyUSB0 erase_flash

     >>esptool.py --chip esp32s3 --port /dev/ttyUSB0 write_flash -z 0 ???.bin

   TXD0/RXD0にシリアル信号を接続し、uPyCraft、gtkterm、TeraTermなどのシリアルモニタを

   115200bps、8bit、NoParityで起動すれば、MicroPythonが使えます。

   上のピンアサインの通り接続すれば、SDカードにもアクセスできます。

 

Arduinoの紹介はこちら。 

 

「ESP32の使い方」はこちら

 

GS-0004:ESP32-S3 2.8型LCDタッチパネルボード+4人打ち麻雀ゲーム機」はこちら

 

GS-0005:ESP32-S3 LCD+I2Sオーディオ搭載ボード」はこちら