マイコンのプログラミングでも比較的簡単にできる、pythonを触っていこうと思います。esp32を用いたPythonの環境開発構築から簡単なエルチカまでといった流れで、マイコン開発でのPythonの始め方について、今回はご説明します。
近年、PythonとC言語の融合のようなMicroPythonという言語が開発され、注目を浴びています。最近発売されたRaspberry Pi PicoについてもこのMicorPythonが動くそうなので、今回はその流行に乗ってESP32にてMicroPythonを動かしてみようと思います。
目次
環境構築編
VSCode周りの環境構築
さて、まずマイコン開発においては初めに一番面倒なことしなければいけません。ある程度開発している人ならもうすでに「あぁ…」なんて思っているかもしれません。そう、環境構築です。
参考にしたサイトはここです。
まず前提になんですが、このシリーズではお馴染みVisualStudioCodeパイセンとPymakrというプラグインを用いて開発をしています。導入は上記のサイトを参考させていただきました。また、私の環境はwindows 10 で、pythonの環境は構築済みです。
- ここよりVScodeをダウンロード・インストール(適宜日本語化しておくと分かりやすいかも)
- ここからPymakrに必須のNode.jsをダウンロード・インストール
- VScode内で拡張機能「pymakr」をインストール・有効化
- コマンドプロンプトにて「pip install esptool」でesptoolをインストール(ファームウェアの変更に必要)
- ここから、esp32のMicropython用ファームウェアを入手(私は”esp32-idf4-20200902-v1.13.bin”を入手しました。環境に合わせて選びましょう)
と、ここまでは詳細を省き淡々と説明させていただきました。ここまでは特に問題なく来れました。問題はここから…
ESP32のCOMを確認
esp32をケーブルで接続します。
windowsの方なら、windowsのスタートメニューのロゴ部分にカーソルを合わせて右クリックすると「デバイスマネージャー」が出てきます。
そこできちんと接続できていれば以下の画像のように、COMポートのところに「Silicon Labs CP210x USB to UART Bridge」という表記が出るのですが…

出ている場合は〇なんですが、私は最初全然出ませんでした。絶望しました。
調べた結果、USBケーブルの不調であることが分かりました。だからMicroUSB嫌いなんだよなぁ…
ケーブルを変え接続できたので、次はファームウェアの書き換えだー
ファームウェアの書き換え

次に、最初の方にpipで入れたesptoolを使い、ファームウェアを書き換えていきます。
まずこのコマンドで、ROMをイレースします。esptool --port COM7 erase_flash
次に、esptool --chip esp32 --port COM7 write_flash 0x1000 [ファームウェアのファイル名].bin
このコマンドでフラッシュを書き込みます。Arduinoとは違った面白さがあっていいねぇ
Pymakrの設定ファイルを編集
最後に、VSCode側のPymakrの設定ファイルを編集しました。
Ctl + Shift + Pを押し、コマンドパレットより
Pymakr > Global Settings
を開く。

下の画像のようにしました。具体的には、
- addressをESPのCOMポートに
- auto_connectをfalseに
2をする理由は、どうやらこれがtrueになっていると他のポートに行ってしまうらしいですね。

環境構築は終了
やっとこれで、すべての構築が完了となりました。お疲れさまです…
ハードウェア編
まずはテストから
つぎに、ハードウェアで実際にプログラムを動かしてみようと思います。環境構築ができているかテストしておこうと思います。
VSCodeの下の方にこのようなステータスバーがあり、その中にある「Pymakr Console」というボタンを押すと、esp32と接続されます。

次に、お馴染み”Hello World!!”と表示してもらいましょう!

Pythonのこの対話モード、非常に便利ですね。実行した感じではデバックモードとかは特にないみたい
早速ですがLチカ
動作が確認できたので、さっそくLEDでも光らせてみましょう!
上記リファレンスのサイトにいろいろの乗っていて参考になりました。
ブレッドボードとLED、抵抗を用意します。

今回は27ピンを使っているので27からLED、抵抗、GNDの順に接続しています。
次に、このようにファイルをpythonを書きます。pinやtimeを使ってスリープの時間やピンを設定しています。
import time
from machine import Pin
LED = Pin(26,Pin.OUT)
while True:
LED.on()
time.sleep_ms(500)
LED.off()
time.sleep_ms(500)
書いたファイルを右クリック→Pymakr > Upload projectで書き込みます。

※ステータスバーでも書き込めます。

このような出力が出て、LEDがちかちかします!Python簡単なのでとてもいいですね。


まとめ
ここまでで、開発環境構築とファームウェアの書き換え、実際にHello World!!と表示させたり、Lチカを動かしたりしました。
触ってみた感想なんですが、慣れてるVSCodeで開発ができるのと、Pythonなのでコーディングが見やすく、やりやすい。そして対話モードでfor文がどのような感じで回っているのかの確認とかもできます。すぐコードが確認できるのはどの言語にもない利点だと思います。
次回は、ディジタル入力やI2Cセンサなども触っていこうと思います。それでは、Good Bye!!