UMEHOSHI ITA TOP PAGE    COMPUTER SHIEN LAB

以下で示す部品の追加は、一つの例です。必ずこうしなくてはならないという訳ではございません。
また、[UMEHOSHI ITA]へ何を追加して、どう使うかは自由です。
最終的な安全性や信頼性は、ご利用者の責任で追加部品などを選定し、ご利用者の判断でお使いくいださい。

U19(ESP32-WROOM-32D) で動くESP32のMicroPython動作の実験

このページは、 U19にESP32-WROOM-32Dに取付で示した次のボードの ESP32にMicroPythonを書き込み、その動作を確認するまでを示しています。

なお、以下で示したようにESP32の初期内部プログラムを変更してしまうと、 ビルトインのBASIC が2度と起動でなくなるので、ご注意ください。

(つまり今後、この基板でESP32のビルトインのBASICを、動かすことがない場合だけ行ってください。)

ESP32の書き込みの準備

ESP32-WROOM-32Dとマイクロコントローラ (PIC32MX270F256B-50I/SP) は、
URAT(Universal Asynchronous Receiver/Transmitter)端子で繋がっており、非同期式で送受信できます。
また、ESP32-WROOM-32Dの一部の端子がCN11とCN12に繋がります。 この繋がりの関係を以下に表で示します。

CN12ESP32-WROOM-32D端子名PIC32MX端子No:名-CN11ESP32-WROOM-32D端子名PIC32MX端子No:名
CN12-12: 3V313: VDD CN11-1011: IO26
CN12-235:TXD0 出力12: RX (RA4) 入力 CN11-910: IO25
CN12-334:RXD0 入力11: TX (RB4) 出力 CN11-837: IO23
CN12-46: IO34 CN11-736: IO22(RTS)
CN12-5 未接続 CN11-6JMP10-OPEN-U19-23: IO1518: RTS (RB9) 出力
CN12-67: IO35 CN11-533:IO21
CN12-78: IO32 CN11-4 5: SENSOR_VN
CN12-89: IO33 CN11-3 4: SENSER_VP
CN12-912: IO27 CN11-2JUM11-OPEN-16: IO13(注1)17: CTS (RB8) 入力
CN12-10GND19: Vss CN11-131: IO19(CTS)

そして、 スルーモードでUSBとやり取りはUARTを介してESP32とやり取りすることできます。
これを利用して、PCからESP32へプログラム書き込みできます。

なお、ESP32をプログラム書き込みの「UART Download Mode」にするためは 起動時に「IO0」をLOWにしなければなりません。
[UMEHOSHI ITA]において、ESP32の「IO0」端子はどこにも繋がっていません。
そのためには、 「IO0」を引き出して空いているCN12-5とジャンパーで配線し、ここに繋がるスイッチを付けたボードを別途に作成する必要があります。
[UMEHOSHI ITA]基板の裏で「IO0:(U19-25)に繋がっているT6スルーホール」とCN12-5は、次のようにジャンパー線を半田付けします。

CN11とCN12に接続する「IO0」をON/OFFボタンを付けて作成した基板と、取り付けイメージを次に示します。


次に、「IO0」のON/OFFボタンを付けた基板を取り付けて、PCと[UMEHOSHI ITA]基板をUSBで繋ぐことになりますが、
このようにESP32を追加した基板を使うには、大きなUSB電源供給能力(ピークで1.5A程度)が必要です。
PCやスマフォと直接USB接続しないで、別電源付きのUSBハブを経由して接続した方が良いでしょう。

(USB2.0の給電能力が500mA、USB3.0で900mAのため、規格を超えて使うことになります)

上記の追加した黄色のスイッチを「SW-IO0」とします。
赤色リセットの「SW1」を押しながら白の「SW2」「SW-IO0」を押して、
「SW1」を離してから、LED1が消灯するまで「SW2」「SW-IO0」とを押し続ける操作で ESP32がプログラム書き込みの「UART Download Mode」になります。
そして、同時に[UMEHOSHI ITA]がスルーモードになり、USB経由でESP32へプログラムが書き込める状態になります。

ESP32にMicroPython をインストール

以前は、https://github.com/espressif/esptool/からツールをダウンロードする方法を使っていましたが、
windowsのpython3.6.8コマンド群が使える環境で、pipでインストール方法が簡単です。(2022/4/23時点確認)
pip install esptool のコマンド操作で3.3がインストールされました。
以下のesptool操作では、上記で示した黄色のスイッチを「SW-IO0」を追加した基板を取り付けた状態で、
「SW1」(RESET SW)を押しながら「SW2」「SW-IO0」を押してから「SW1」を離し、
一度点灯したLED1が消灯した時点で、「SW2」「SW-IO0」を放す操作をした状態で行うコマンド操作です。
まず、以下の操作でファームウエアをバックアップします。(元に書き戻しする場合は、ここで出来たファイルを指定して、先頭からwrite_flashします。)
(COM8の番号の部分は、接続するUSBの番号に合わせてください)

R:\MicroPythonFolder\install>esptool --chip esp32 --port COM8 --baud 115200 read_flash 0 0x400000 esp32_20220423.bin
esptool.py v3.3
Serial port COM8
Connecting...
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, Coding Scheme None
WARNING: Detected crystal freq 41.36MHz is quite different to normalized freq 40MHz. Unsupported crystal in use?
Crystal is 40MHz
MAC: 30:ae:a4:9c:7d:e4
Stub is already running. No upload is necessary.
4194304 (100 %)
4194304 (100 %)
Read 4194304 bytes at 0x0 in 384.2 seconds (87.3 kbit/s)...
Hard resetting via RTS pin...

R:\MicroPythonFolder\install>

上記で初期状態のファームウェアをesp32_20220423.binに保存しています。
ここでWARNINGの警告メッセージが出ていますが、無視してください。(後述の他の操作でも無視してください。)
[UMEHOSHI ITA]の状態をスルーモードにし、PCのUSBを[UMEHOSHI ITA]のUART1を介してESP32と通信して動作しているのですが、 その相性が良くないために出現する警告で、現状では直せていませんが、実行結果の様子から正しく動作しているようです。

次に、次の操作でESP32を初期化します。(フラッシュの内容を消去します。)

R:\MicroPythonFolder\install>esptool -c esp32 -p COM8 -b 115200 erase_flash
esptool.py v3.3
Serial port COM8
Connecting...
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, Coding Scheme None
WARNING: Detected crystal freq 41.36MHz is quite different to normalized freq 40MHz. Unsupported crystal in use?
Crystal is 40MHz
MAC: 30:ae:a4:9c:7d:e4
Stub is already running. No upload is necessary.
Erasing flash (this may take a while)...
Chip erase completed successfully in 8.0s
Hard resetting via RTS pin...

R:\MicroPythonFolder\install>

また、MicroPython のファームウェアを https://micropython.org/download/esp32/からダウンロードで入手します。
以下の操作は、上記リンクからダウンロードしたファイル(esp32-20220117-v1.18.bin)をカレントディレクトリに置いて、MicroPython のファームウェアを書き込んでいる例です。

R:\MicroPythonFolder\install>esptool -c esp32 -p COM8 -b 115200 write_flash -z 0x1000 esp32-20220117-v1.18.bin
esptool.py v3.3
Serial port COM8
Connecting...
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, Coding Scheme None
WARNING: Detected crystal freq 41.36MHz is quite different to normalized freq 40MHz. Unsupported crystal in use?
Crystal is 40MHz
MAC: 30:ae:a4:9c:7d:e4
Stub is already running. No upload is necessary.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x0017cfff...
Compressed 1555136 bytes to 1022998...
Wrote 1555136 bytes (1022998 compressed) at 0x00001000 in 91.6 seconds (effective 135.7 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

R:\MicroPythonFolder\install>

以上で、MicropPythonのインストールが終わりです。
一度、USBケーブルを外して、「SW-IO0」を追加した基板を取り外します。

再び、USBケーブルとPCを接続して、インストール後の確認コード例を下記に示します。
このESP32を付けた[UMEHOSHI ITA]の起動では、ケーブル接続後、 赤色リセットの「SW1」を押しながら白の「SW2」を押して、
「SW1」を離してから、遅れて「SW2」を放して始める必要があります。(LED1点灯の点灯状態)


MicropPythonインストール後の確認操作を下記に示します。
まず、[UMEHOSHI ITA]を一時スルーモードにしてから操作します。
それには「Tera Term」を起動して、 『[Enter]と T と [Enter] と [Enter]』の入力操作で、一時スルーモードにします。
この状態で、ターミナル画面にはMicropPythonの会話モードの「>>>」のプロンプトが出現しているはずです。
次のように確認できます。これは、リセット操作です。

>>> import machine
>>> machine.reset()
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4540
ho 0 tail 12 room 4
load:0x40078000,len:12344
ho 0 tail 12 room 4
load:0x40080400,len:4124
entry 0x40080680
MicroPython v1.18 on 2022-01-17; ESP32 module with ESP32
Type "help()" for more information.
>>>

このスルーモードで「Tera Term」へのキー入力は、[UMEHOSHI ITA]を介して「ESP32-WROOM-32D」への入力となり、、 「ESP32-WROOM-32D」からの出力は「Tera Term」に送られて、見えるようになっています。

以上でPCとUSBで接続し、PC側の「Tera Term」のターミナルで、MicroPythonの会話モードが動作できたことになります。
この続きとして、ESP32利用のMicroPythonコード例と、[UMEHOSHI ITA]の操作例を このこちらのページで示します。