🐝

ESP32でMicropython

2022/09/12に公開



altESP32-WROVER-DEVの画像ESP32-WROVER-DEV

はじめに

この記事では ESP32開発ボード(ESP32-WROVER-X/ESP32-WROOM-X/etc)でMicropythonが動くようにする手順について紹介します。
動作確認はFreenoveESP32-WROVER-DEVを使用していますが、同等品でも動作すると思います。

開発に使用するPCはMacとWindowsの両方について紹介していますので、該当ユーザはアコーデオンを展開して下さい。

In English

This article describes how to install Micropython on ESP32 development kits in Japanese.

Python3のインストール

Macユーザ

Macユーザ

ターミナル(Lanchpadでターミナルを検索)を開き、次のコマンドを実行する。

$ python3 --version
$ Python 3.9.12

上のようにバージョンが表示された場合はすでにpython3がインストールされているので、インストール作業は必要ありません。(バージョンが古い場合は更新作業が必要な場合があります)

zsh: command not found: python3

上のようにコマンドが見つからないというメッセージが表示された場合はpython3のインストール作業が必要ですので、以下のようにインストールして下さい。

ターミナルで次のコマンドを実行する。

$ brew install python3

brewコマンドがインストールされていない場合は次のようなメッセージが表示されるので、リンクのページを参照してbrewをインストールしてください。

zsh: command not found: brew

https://brew.sh/index_ja

python3のインストールが完了したらターミナルで次のコマンドを実行してHello, world!が表示されることを確認します。
>>>はpython3のプロンプトで、終了はCTRL-D(CTRLキーを押したままDのキーを押す)です。

$ python3
Python 3.9.12 (main, Mar 26 2022, 15:51:15) 
[Clang 13.1.6 (clang-1316.0.21.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, world!")
Hello, world!
>>> [CTRL-D]
$


Windowsユーザ

Windowsユーザ

C:\Users\iot10 py --version
Python 3.10.8

C:\Users\iot101>py
Python 3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:50:30) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

のように表示されればpythonはインストールされています。(pythonのプロンプトから抜けるのは、CTRL-Zをタイプした後、エンターキーを押します。)

インストールされていなければ、Microsoft Storeでpython3を検索してインストールか、下のオリジナルサイトからインストールします。
https://www.python.org/

python3のインストールが完了したらコマンドプロンプトもしくはPowerShellを起動して次のコマンドを実行してHello, world!が表示されることを確認します。
>>>はpython3のプロンプトで、終了はCTRL-Z(CTRLキーを押したままZのキーを押した後にエンター機を押します)です。

C:\Users\iot101>py
Python 3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:50:30) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, world!")
Hello, world!
>>> ^Z

C:\Users\iot101>

esptool.pyのインストール

esptool.pyはESP32のファームウェアを削除したり、アップロードしたりできるブートローダユーティリティです。

Macユーザ

Macユーザ

ターミナルで次のコマンドを実行してesptool.pyをインストールします。

$ pip3 install esptool
	:
	:
	:
$

インストールしたesptoolのバージョンを次のコマンドで確認します。

$ esptool.py version
esptool.py v4.2.1
4.2.1
Windowsユーザ

Windowsユーザ

コマンドプロンプトもしくはPowerShellで次のコマンドを実行してesptool.pyをインストールします。

C:\Users\iot101> py -m pip install esptool
Collecting esptool
	:
	:
	:
C:\Users\iot101>



esptool.pyのバージョンを次のコマンドで確認します。

C:\Users\iot101>esptool.py version
esptool.py v4.3
4.3

C:\Users\iot101>

ampyのインストール

ampyはPCからESP32にファイルを転送したり、削除したりするためのツールの一つです。

Macユーザ

Macユーザ

次のコマンドを実行してampyをインストールします。

$ pip3 install adafruit-ampy
	:
	:
	:
$

インストールが完了したら次のコマンドを実行してバージョンを確認します。

$ ampy --version            
ampy, version 1.1.0
$
Windowsユーザ

Windowsユーザ

次のコマンドを実行してampyをインストールします。

C:\Users\iot101>py -m pip install adafruit-ampy
Collecting adafruit-ampy
	:
	:
	:
C:\Users\iot101>

インストールが完了したら次のコマンドを実行してバージョンを確認します。

C:\Users\iot101> ampy --version            
ampy, version 1.1.0
C:\Users\iot101>

ターミナルソフトのインストール

ターミナルソフトはPCとESP32との間をUSBケーブルを介してシリアル通信するためのソフトです。
この記事ではMac/Windows/Linuxに対応したCoolTermを使用します。
動作テストで使用するので、下のリンクから自分のOSにあったものをダウンロードしてインストールして下さい。
他のターミナルソフトをすでにインストールしている場合は、それを代用できるので、この項目は飛ばして下さい。
https://freeware.the-meiers.org/

ファームウェアのインストール

下のリンクからReleasesの最新バージョンをPCにダウンロードして下さい。
記事執筆時のバージョンは v1.19.1 (2022-06-18) .bin となっています。
https://micropython.org/download/esp32/

FreenoveのESP32-WROVER用スターターキットでは下の写真のように、GPIO拡張ボードが付属しているので、一般的な5穴のフルサイズブレッドボード(長辺約16cm)でも実装できます。
GPIO拡張ボードがない場合は、6穴のブレッドボードを用意して、ESP32を直接ブレッドボードに実装して下さい。6穴ハーフサイズブレッドボード(長辺8cm)の場合、部品実装を考慮して、2枚を横長に連結して使用することをお勧めします。
ブレッドボードによっては、5穴のブレッドボードを長辺同士結合して、ESP32を2枚のブレッドボードに跨らせて実装するという方法もあるようです。

Micropythonのファームウェアを入れるだけなら、GPIO拡張ボードやブレッドボードは必要ありませんが、今後、IoT関連の実験を行う上で必要となってくるので、用意しておくことをお勧めします。

ESP 32-WROVER-DEVのように、使用する開発ボードにカメラが実装されている場合は、コネクタの黒い部分を90°持ち上げて、カメラをゆっくりと引き抜いてから、黒い部分を元に戻しておいて下さい。

altESP32ブレッドボード取り付け状態
ESP32-WROVER-DEVをGPIP拡張ボードを使用してブレッドボードに取り付けた例

6穴ハーフサイズブレッドボードの例
alt6穴ハーフサイズブレッドボード
Sunhayato online Shopの画像を引用

PCとESP32をUSBケーブルで接続してください。

Macユーザ

Macユーザ

MacがESP32をどのようなデバイス名で認識しているか調べるために次のコマンドを実行します。

$ ls /dev/tty.usb*
/dev/tty.usbserial-14140
$

usbserial-の後の数字は使用しているUSBポートや接続しているUSBアダプタによって変わる可能性があります。

既存ファームウェアの削除

次のコマンドを実行して既存ファームウェアを削除します。

$ esptool.py --chip esp32 --port /dev/tty.usbserial-14140 erase_flash
esptool.py v4.2.1
Serial port /dev/tty.usbserial-14140
Connecting....
Chip is ESP32-D0WD-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 94:e6:86:df:b0:ec
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...    ←ここで暫く待たされます
Chip erase completed successfully in 15.9s
Hard resetting via RTS pin...
$

/dev/tty.usbserial-14140の部分は先に調べたデバイス名に変更してください。

Micropythonファームウェアのアップロード

続いて、先ほどダウンロードしたMicrpythonのファームウェアを次のコマンドを実行してアップロードします。
/dev/tty.usbserial-14140の部分は先に調べたデバイス名に変更してください。

$ esptool.py --chip esp32 --port /dev/tty.usbserial-14140 --baud 460800 write_flash -z 0x1000 ~/Downloads/esp32-20220618-v1.19.1.bin
esptool.py v4.2.1
Serial port /dev/tty.usbserial-14140
Connecting....
Chip is ESP32-D0WD-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 94:e6:86:df:b0:ec
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x0017efff...
Compressed 1560976 bytes to 1029132...
Wrote 1560976 bytes (1029132 compressed) at 0x00001000 in 27.2 seconds (effective 459.7 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
$
Windowsユーザ

Windowsユーザ

PCがESP32を認識しているか調べるためにデバイスマネージャを開きます。(開き方がわからない場合、Windowsの検索機能で検索して下さい)
下の画面コピーのように、ポート(COMとLPT)として認識されていれば大丈夫です。
この例ではCOM3として認識していますが、使用している環境に応じて変わります。
altデバイスの認識

もし認識しない場合は、次のサイトからデバイスドライバをダウンロードしてインストールしてください。
http://www.wch-ic.com/downloads/CH341SER_EXE.html

既存ファームウェアの削除

コマンドプロンプトもしくはPowerShellを開き、次のコマンドを実行して既存ファームウェアを削除します。
com3の部分はデバイスマネージャに表示されたデバイス名に変更してください。

C:\Users\iot101> esptool.py --chip esp32 --port com3 erase_flash
esptool.py v4.2.1
Serial port com3
Connecting...
Failed to get PID of a device on com3, using standard reset sequence.
...
Chip is ESP32-D0WD-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 94:e6:86:df:b0:ec
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...    ←ここで暫く待たされます
Chip erase completed successfully in 16.6s
Hard resetting via RTS pin...
C:\Users\iot101>

Micropythonファームウェアのアップロード

続いて、先ほどダウンロードしたMicrpythonのファームウェアを次のコマンドを実行してアップロードします。
com3の部分はデバイスマネージャに表示されたデバイス名に変更してください。

C:\Users\iot101> esptool.py --chip esp32 --port com3 --baud 460800 write_flash -z 0x1000 Downloads\esp32-20220618-v1.19.1.bin
esptool.py v4.2.1
Serial port com3
Connecting...
Failed to get PID of a device on com3, using standard reset sequence.
..
Chip is ESP32-D0WD-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 94:e6:86:df:b0:ec
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x0017efff...
Compressed 1560976 bytes to 1029132...
Wrote 1560976 bytes (1029132 compressed) at 0x00001000 in 25.2 seconds (effective 496.2 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
C:\Users\iot101>

動作テスト

次にターミナルソフトCoolTermを起動して動作テストを行います。

Macユーザ

Macユーザ

先にインストールしたターミナルソフトのCoolTermを起動します。
altCoolTermの起動

  1. 画面上部のOptionsをクリックするとConnection Optionsのパネルが開くので、Portをusbserial-1414-(自分の環境に合わせて変更してください)に、Baudrateを115200に変更します。他はデフォルトのままで大丈夫です。usbserial-1414-が表示されない場合は画面下部にあるRe-Scan Serial Portsボタンをクリックすると表示されるはずです。
    画面下部のOKボタンを押してConnection Optionsのパネルを閉じます。
    altCoolTermオプション設定
  2. 画面上部のConnectボタンをクリックします。
  3. ESP32のリセットボタンを押します。(ESP32-WROVER-DEVではUSBコネクタとVcc端子の間にある、EN/RSTと表示された方のボタンです)
  4. ESP32と通信が始まり、メッセージが表示されます。
    altCoolTerm接続完了

ESP32からのメッセージが表示されたことが確認できたら次のプログラムを>>> のプロンプトに続けて入力して、Hello, World! が表示されることを確認してください。

>>> print("Hello, World!")
Hello, World!
>>> 
Windowsユーザ

Windowsユーザ

先にインストールしたターミナルソフトのCoolTermを起動します。
altCoolTermの起動

  1. 画面上部のOptionsをクリックするとConnection Optionsのパネルが開くので、PortをCOM3(自分の環境に合わせて変更してください)に、Baudrateを115200に変更します。他はデフォルトのままで大丈夫です。COM3が表示されない場合は画面下部にあるRe-Scan Serial Portsボタンをクリックすると表示されるはずです。
    画面下部のOKボタンを押してConnection Optionsのパネルを閉じます。
    altCoolTermオプション設定
  2. 画面上部のConnectボタンをクリックします。
  3. ESP32と通信が始まり、メッセージが表示されます。
    altCoolTerm接続完了

ESP32からのメッセージが表示されたことが確認できたら次のプログラムを>>> のプロンプトに続けて入力して、Hello, World! が表示されることを確認してください。

>>> print("Hello, World!")
Hello, World!
>>> 

これでこの記事は終わりです。
次はVisual Studio Codeで開発環境を作る記事を書く予定にしています。

Discussion