ESP32-WROOM-32EでMicroPythonを使い開発(準備編)

〔ESP-WROOM-02〕 〔マイコンのトップに戻る〕
[module編] [GPIO編] [通信編] [I2S編] [WiFi編] [BLE編1] [BLE編2] [BLE編3] [色々編]


前回に"XBeeでMicroPython編"と"XIAOでCircuitPython編"を記事にしました。
今度はMicroPythonでESP32-WROOM-32E(ESP32-D0WD-V3 ESP32 ECO V3, 4MB SPI flash)を
動作させます。尚、MicroPythonでESP-WROOM-02(ESP8266EX)はこちらを参照しましょう。

《ESP32-WROOM-32EにMicroPythonをインストールする》

MicroPythonのファームウエアをダウンロード

これがESP32-WROOM-32EにインストールしてMicroPythonを動作させる為のソフトウェアです

@ こちらのサイトからダウンロードします。

A 私は、ESP-IDF v4.x を使用したファームウェアの安定版、"pSRAM"は内蔵していないタイプなので
  [GENERIC : esp32-idf4-20210202-v1.14.bin]を使いました。
  因みに、"Espressif Systems"社の製品注文情報を見れば"pSRAM"付きか如何かの情報は解ります。

B "esp32-idf4-20210202-v1.14.bin"ファイルを操作しやすい様に"c:\"の直接下のディレクトリへ
  移動させて置きます。

esptoolのインストール

esptoolはESP8266/ESP32チップのROMブートローダと通信して"esp32-idf4-20210202-v1.14.bin"を
インストール出来ます。
詳しくは、こちらじゃ!(GitHubじゃ!Pythonじゃ!さんのサイト)

@ [PowerShell]を起動させます。

A PS C:\Users\user> pip install esptool と実行します。
  (pipは"Pythonインタープリター"のインストールと同時に入っていると思います)

B PS C:\Users\user> esptool.py -h と実行して動作するのを確認しましょう。

MicroPythonのファームウエアを書き込む

@ ESP32-WROOM-32EボードをUSBでPCに繋ぎます。

A デバイスマネージャーかArduinoIDEのシリアルポート確認で繋いだポートを確認して置きます。
  私の環境はデバイスマネージャーで”Sillcon Labs CP210x USB to UART Bridge (COM6)”と表示
  しました、Windows 10なのでUSB接続で"CP210xドライバー"が自動でインストールされています。

B ESP32-WROOM-32Eボードをリセットしますが....
  関係するピンは"GPIO0"/"GPIO2"と"EN(RESET)"ですがぁ、通常は"GPIO0"と"EN"ピンには
  スイッチが配線されています。("EN"ピンはボードで10KΩプルアップされている)
  "GPIO2"ピンは内部的に"LOW"に起動時は繋がりますので何処にも配線をしないで下さい
  後は、"GPIO0(boot)"ボタンを押しながら、"EN(RESET)"ボタンを押します
  (因みに、"GPIO0"は内部的に"HIGH"に繋がるが、ボタンを押す事により"LOW"となります)
  するとぉ、ダウンロードブートモードで立ち上がると思いますがぁマニュアルを見ましょう。

C [PowerShell]を起動させます。

D PS C:\Users\user> esptool.py --port COM6 chip_id と実行します。
  デバイスと繋がっているかテストしてみます。

PowerShell(chip_id) 画面1
こんな感じで表示されたら繋がっています。
MACアドレスがぁ表示されているけどぉ...まぁ、いいかぁ。

E まずフラッシュ全体を消去する必要があります。
  PS C:\Users\user> esptool.py --port COM6 erase_flash と実行し消しましょう。

F 新しいファームウェアを導入します。
  PS C:\Users\user> esptool.py --chip esp32 --port COM6 write_flash -z 0x1000 c:\esp32-idf4-20210202-v1.14.bin と実行し書き込みましょう。

PowerShell(write_flash) 画面2
こんな感じで表示されたら成功でしょう 。
後は、"c:\"の直接下のディレクトリへ移動させたファイルは削除して置きましょう。

G ESP32-WROOM-32EボードのUSBをいったんPCから抜き取ります、でぇ、再び差し込みます。

H シリアル端末(ここではTeraTerm)を立ち上げ、シリアルを"COM6"にし起動させます。
  シリアルポートの設定でボーレートを"115200"にします。
  後は、キーボードで[ENTER]を押せば">>>"のプロンプトが返されます、接続できました。
  (下記の方にTeraTermでREPLを起動させるもう少し詳しい記載があります)

TerTerm起動画面
こんな感じで表示されたら成功でしょう 。
ボードの"RESET"ボタンを押した後等に起動メッセージ(ゴミ?)が出力されますが気にしなくても
良いでしょう。

《フラッシュメモリのバックアップ》

たまに操作ミス等によりESP32-WROOM-32Eボードが立ち上がらなくなる事がありました、
そんな時はフラッシュメモリを削除してファームウエアを再度書き込むと治りますがぁ、
フラッシュメモリに入れていた物も再度書き込みをする必要がありめんどくさいですぅ、
そんな時はバックアップで〜す。
そんな時は、このページ”ESP8266のファームウェアのバックアップとレストア”を見ましょう。

コマンドプロンプト画面
[esptool.py -b 115200 read_flash 0x00000 0x400000 esp32e_flash.bak]
ESP32 4MBのバックアップです、意外と時間かかります。
書き戻しは、[esptool.py -b 115200 write_flash 0x00000 esp32e_flash.bak]として上手く行った。

《PyCharmを使ってみる》

"PyCharm"のインストール”ESP8266 MicroPythonプラグイン”の導入方法こちらを参照しましょう。
※ 使うのは、ESP32-WROOM-32Eですが、”ESP8266 MicroPythonプラグイン”で動作します。

@ ESP32-WROOM-32EボードをUSBでPCに繋ぎます。
  次に、Pycharmを起動させます。

A ”+新規プロジェクトの作成”をクリックします。

Pycharmへようこそ画面
この画面で始まらずメイン画面で始まった場合は、メニューバーの[ファイル]->[新規プロジェクト]です

B 新規プロジェク画面が表示されるのでプロジェクトを作成します。

注意) ここ以降、貼付けの図はESP-WROOM-02の記事での図を使っている所が有ります。
新規プロジェク画面
"ロケーション:”にプロジェクト名を入力します、私は"esp32Test"という素晴らしい名前を選びました。
〇既存インタープリター”にチェックを入れて「Python x.x」を選んで置きます。
[作成]ボタンをクリックします。あなたはPythonプロジェクトを作りました!

 
C メニューバーから[ファイル]->[設定]->[言語 & フレームワーク]->[MicroPython]を
  順番にクリックします。

設定画面(言語&フレームワーク)
□Enable MicroPython support”にチェックを入れます。
デバイスタイプ:”で「ESP8266」を選びましょう。
Device path:”にデバイスのCOMポートを入力します。私のは"COM6"ですね。
[適用]をクリックします。(因みに、[検出]は出来なかった)

D [プロジェクト:esp32Test]->[プロジェクト構造]に移動します。
  (念の為、"esp32Test"の名前はあなたの決めたプロジェクト名になりますよぉ)

設定画面(プロジェクト構造)
".idea"を右クリックして、除外としてマークします。
[適用]をクリックし、[OK]をクリックして設定画面を閉じます。

 
E 新規ファイルを作成します。

新規ファイルの作成画面1
"esp32Test"を右クリックして、[新規]->[Pythonファイル]を選択します。
新規ファイルの作成画面2
"main.py"とファイル名を入力します。


main.pyを書き込んで見る

上記事からの続きで〜すぅ。

@ "main.py"ファイルにスクリプトを、
   print("Hello Kimura world")
  と書きました。

A 書き込みます。

アップロード風景画面
"main.py"を右クリックして、[実行(U)'Flash main.py']をクリックします。
下記図の様に実行されます。
アップロード実行結果画面
ESP32-WROOM-32Eに書き込まれ、ソフトリセットがされている様ですね。
(ESP32ボードは"PyCharm"起動後、最初の1回目が書込まれない現象が起きているがぁ?....)

B "MicroPython REPL"を動作させましょう。
  メニューバーから[ツール]->[MicroPython]->[MicroPython REPL]を順番にクリックします。

MicroPython REPL 起動操作

C REPLを操作します。(Pycharmの画面下側に表示されます)

MicroPython REPL 操作操作
REPLが表示され、">>>"のプロンプトが表示されるのを待ちます。
表示されたら[CTRL]+[D]を押せば、ソフトリセットが実行されスクリプトが起動されます。

※ REPLを表示している時に"main.py"ファイルを書き込むとエラーで失敗します、
  書き込む場合はREPLを閉じましょう
。(”ターミナル:ローカル”タブのXをクリックすればOKです)
  因みに、シリアル端末(TeraTerm等)でREPLを開いている時も閉じないとダメです。

《シリアル端末でREPLを起動させる》

ここでは"Tera Term"ターミナルエミュレーターを使用した例です。

@ "Tera Term"を起動すると、[Tera Term 新しい接続]ダイアログボックスが開かれます。
  "シリアル(E)"にチェックを入れ、"ポート(R):" でESP32-WROOM-32Eボードを接続している
  COMポートを選びます。(ポート番号は各自で異なりますよ、念の為)

TeraTerm起動画面
[OK]ボタンを押しましょう。

A メニューバーから[設定(S)]→[シリアルポート(E)...]を順にクリックして、
  [シリアルポート設定]ダイアログボックスを開きます。

シリアルポート設定画面
"ボーレート(B):"を9600bpsから115200bpsに切り替え、
(因みに、フロー制御が"hardware"と図はなっているが、"none"のままですよ)
[OK]ボタンを押しましょう。

B [CTRL]+[C]又は、[ENTER]を押して">>>"プロンプトを表示させます。




[ページ上へ] [module編へ]


【きむ茶工房ガレージハウス】
Copyright (C) 2006-2021 Shigehiro Kimura All Rights Reserved.