ESP32にMicroPythonファームを入れてVS codeでLチカしてみた

ESP32ではMicroPythonが使えるみたいなので、Pythonで書いたLED点滅のプログラムをESP32で動作させてみました。



ファームウェアの入手

MicroPythonのESP32のダウンロードページにあるファームウェアをダウンロードします。毎日ビルドや安定ビルド、SIPRAM対応ボード用とかいろいろなファームがあるみたいですが、今回はGENERIC : esp32-idf3-20191220-v1.12.binを使ってみました。

ダウンロードしてきた.binファイルはDドライブ直下に保存しました

pipでesptoolのインストール

下記のコマンドでesptoolをインストールします。Pythonのバージョンはpython3.8.2を使いました。

pip install esptool

ESP32のファームウェアの削除する

ファームの削除や書き込みにはシリアルポートの番号が必要なので確認しておきます。今回はCOM3でした。

コマンドを実行するためにはEPS32を書き込みモードにする必要があり、ボード上のBOOTスイッチを押しながらENスイッチを1回押してBOOTスイッチを離すと書き込みモードになります。この状態で下記コマンドを実行するとファームが削除できます。コマンドのポート番号は環境によって書き換える必要があります。

esptool.py --port COM3 erase_flash

ESP32にファームウェアを書き込む

前述の削除の時にEPS32は書き込みモードになったままなので、下記コマンドを実行するとファームを書き込むことができます。ポートとファームのファイル名は環境によって書き換える必要があります。

esptool.py --chip esp32 --port COM3 write_flash -z 0x1000 esp32-idf3-20191220-v1.12.bin

実行結果は下記の通りです

VS codeで.pyファイルをアップロードする準備

MicroPythonでは.pyファイルにコードを書いてボードにアップロードするという流れになるようです。この作業をVS codeで行えるように準備しました。

node.jsが必要らしいのでインストールしておきます。今回は12.18.2 LTSをインストールしました。

VS codeの拡張機能からPymakrを検索してインストールします

インストールが完了したら設定ファイルが開かれたので必要に応じて書き換えます。ネットの情報を参考にしてaddressをCOM3としてauto_connectをfalseとしました。

ステータスバーのPymakr Consoleに✓が入っている状態で下記コマンドを実行するとhello worldと返ってきたのでVS codeで通信できているようです。

print("hello world")

.pyファイルをアップロードする

ボード上のLEDを点滅させるプログラムを書いてblink_led.pyというファイル名で保存しました。ステータスバーのUploadをクリックするとアップロードできます。

import time
from machine import Pin

led = Pin(2, Pin.OUT)

def run():
    for i in range(10):
        led.value(1)
        time.sleep(1)
        led.value(0)
        time.sleep(1)

Upload done, resetting board…と書いているのでボードが再起動したようです


アップロードしたblink_led.pyが存在するか確認するために下記コマンドを実行しました。返ってきたリストの中にblink_led.pyが含まれているので無事アップロードできました。

import os
os.listdir()

アップロードした.pyファイルを実行するために下記コマンドを実行しました

import blink_led
blink_led.run()

ボードを見てみると青いLEDが点滅しているのが確認できました



所感

好きなプログラミング言語であるPythonでマイコンを動作できるのはいいですね。8ビットのPICにアセンブラを書いていた頃が懐かしいです。Pythonだとマイコンのコードも楽に書けるかもしれないのでいろいろ試してみようと思います。

コメント

タイトルとURLをコピーしました