PR

LolinD32(ESP32)でMicroPythonを使えるようにしてみた話

esp32-micropython-lolind32-eyecatch

今回は、ネット通販でも簡単に購入可能な
お安いESP32搭載のマイコンボード
LolinD32についての記事です。

今まで、本ブログでも時々出てきていたESP32は
基本このLolinD32です。

ESP32搭載だと、
基本的にArduinoと同じように、
ArduinoIDEの開発環境でコードの書き込みが可能です。

ただ、ESP32って、
別にArduino言語でしか動かせないわけではないんです。

イメージとしては、RaspberryPi Picoみたいなイメージです。

RaspberryPiPicoは公式の推奨がMicroPythonですが、
ArduinoIDEで、Arduino言語でコードを書くことができます。

それと逆?というイメージですね。
※誰もESP32の公式推奨言語がArduino言語とは言っていない笑

使えるようにするにはちょっと手順があるので
詳しく解説していきましょう。

この記事を読むことでわかること

自己紹介

サラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

2022年5月に転職。現役バリバリの技術者です。
現在は超大手企業の新規事業分野で装置の研究・開発をしています。

Youtubeチャンネルにさまざまな動画を上げています

↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓

注意

本ブログはアフィリエイトを用いた広告を掲載しています。

【おさらい】ESP32とはどんなマイコンなのか

ESP32-lolinD32-connected-battery
LolinD32 ESP32を搭載した安価なマイコンボード。

ESP32というのは、BluetoothとWi-fiの機能
つまり無線通信が可能なマイコンで、
特徴としては、低コストで低消費電力なので、
IoTエンジニアには絶大な人気を誇る。らしい。
ちょっと周りにIoT関係のエンジニアがいないので噂レベルです。

ちなみに、Arduinoでおなじみ、Atmel社が設計しているAVRとかは、
もうすでにいろんなシリーズが出ています。
1996年から順次リリースされているものなので、かれこれ30年近く使われています。

一方、こちらのESP32については、
歴史は浅く、まだまだ実績が足りていない感があります。
2016年に発売されたものなので、10年も経っていません。

作っているメーカーは、中国のEspressif Systemというところです。
この分野は欧米と日本がこれまで強かったですが、
ついに中国企業で出てきた。といった具合。

いままでESP32を使ってどんなことをしてきたか?

さて、本ブログ、ホビーハッピーブログでESP32を取り扱ったことが、
何度かありました。

無線通信できるメリットを生かして、
防湿庫の中にモバイルバッテリーと一緒に入れて、
外部に湿度の測定データを送っていました。
その時の記事↓↓↓↓↓↓↓↓↓↓

ESP32の無線機能が活躍。防湿庫の中から外に配線が出せない状況でも使えた。

無線であることが最大のメリットという認識です。
実はESP32というだけあって、コアサイズは32bitのマイコンということで、
単純比較してしまうとArduinoに載っているマイコンチップよりも高性能なんて話も…
※Arduinoに載っているのはたいていコアサイズ8bitのマイコンチップ。

コアサイズの他にも、Arduino Nano Everyに搭載されている、
ATmega4809というマイコンは、最大動作周波数が20MHzですが、
ESP32に関しては、160または240MHzで動作します。

性能だけ見てしまうと、ARMのCortexなんかと比較するのがいいんでしょうね。
Arduinoが低スペックとかって話はいったん置いておきましょう。

MicroPythonを使うメリットについて。

micropython-logo
MicroPythonはこんなロゴ。

ESP32の強みや特徴について何となくわかってもらえたと思いますが、
ここからはMicroPython。つまり今までのハード側のお話から、ソフト側の話に変わります。

まず、MicroPythonがなんなのかわからない状態だと、
メリットもデメリットもよくわからないので、特徴をご説明しておきます。

MicroPythonの特徴と使う場面

このMicroPython、
名前にPythonと入っていますが、じつはPythonの親戚なんです。

厳密にはPythonと異なるところはあるのですが、
文法などはPythonそっくりで、Python3と高い互換性がウリです。

MicroPythonが登場するタイミングとしては、
ARM系のマイコンを制御するときと、ESP32を制御するときですね。
※MicroPythonが使えるマイコンチップはあらかじめ公開されており、
マイコンチップなら何でも使えるわけではありません。

ARM系と言えば、RaspberryPi Picoも実はよく見ると、
ARM-cortex0シリーズがメインCPUとなっているため、
標準でMicroPythonを使うことをオススメされるというわけです。

MicroPythonは、残念ながらArduinoシリーズはサポート外ですので、
ArduinoばっかりやってきたんだけどそろそろPythonもいじろうかな…

どうせやるならマイコンでGPIOをON/OFFとかしてみたいな…
なんていう場合にはMicroPythonは結構いいかもしれないです。

Arduinoの独自言語はわかりやすいのですが、Pythonに比較的慣れているならば、
Pythonの文法でできたほうが統一感があっていいですよね。

MicroPythonをLolinD32で使えるようにする手順について。

ESP32でMicroPythonが使えるとわかっていただいたところで、
実際に手元にあるESP32搭載のLolinD32にMicroPythonを導入してみましょう。
手順は以下の通りです。

ここで注意点ですが、Pythonがすでに使える環境であることを前提とします。
もしPythonが使えない状況だと、ESPtoolが使えません。
pipができることが条件となります。

  • あらかじめesptoolをダウンロードしておく。
  • LolinD32に合ったMicroPythonの
    インストールファイルをダウンロードしておく。
  • LolinD32をPCとつなげてesptoolを使って中身を消す。
  • MicroPythonをLolinD32に書き込む。

esptoolをダウンロードしておく。

esptoolというものが突然出てきましたが、
こちらは、ESP32用のツールと思ってもらえればOKです。
このツールを使って、ROMの消去や、書き込みを行います。

具体的なダウンロード方法については、pipを使用します。

pythonが使える状況で、

pip install esptool

これだけです。正しくダウンロードできたらこの作業は終了です。

LolinD32に合ったMicroPythonのインストーラをダウンロードする。

続いて、MicroPythonはそれぞれボードの機種によって
インストールするファイルが異なります。

ここでダウンロードできます。

実はLolinD32がラインナップに含まれればよかったのですが、
無いので、ESP32のファイルで代用します。

micropython-esp32
ESP32のページから.binファイルをダウンロードする。

具体的にダウンロードしておくファイルは、
Releasesの中の一番上の.binファイルです。
このファイルを使ってLolinD32にMicroPythonを入れます。

LolinD32に入っている中身をesptoolで消去する。

MicroPythonをインストールするファイルはダウンロード完了しているので、
いまLolinD32に書き込まれているROMデータを消去していきましょう。

この行程では、冒頭で紹介したesptoolを使用します。

pipを利用してesptoolをダウンロードしていると思いますが、
esptoolが使えることを確認したうえでこのようなコマンドを打ちます。

esptool.py --port COM4 erase_flash

COM4となっているのは、わたしのLolinD32がCOM4で認識していたためです。
ご自分のLolinD32がCOM何につながっているかの確認は、
デバイスマネージャーからできます。

間違ったCOM番号でerase_flash(フラッシュ削除)してしまうと大変なので、
面倒でもLolinD32がつながっているCOM番号は必ず確認しましょう。

MicroPythonをLolinD32に書き込む。

最後に、erase_flashしてまっさらな状態になったLolinD32に、
新しくMicroPythonを使えるように.binファイルを入れます。

具体的にはこんな感じ。

esptool.py --port COM4 write_flash -z 0x1000 C:\Users\○○\Downloads\esp32-20220618-v1.19.1.bin     

消去で使用したesptoolは、書き込むときにも使用します。
.binファイルはフルパスを記入しておくのがよさそうです。

今回のまとめ

今回はESP32マイコンを搭載したLolinD32で、
MicroPythonを使えるようにしたお話でした。

解説見ても、「ああ、こんなもんでできるのか。」
と思ってもらえましたよね。

ちなみに、MicroPythonをLolinD32に書き込んだあと、
ArduinoIDEでArduino言語でプログラムを書き込みたいときは、
通常通り、書き込んで大丈夫です。

MicroPythonが入っていようが、
ArduinoIDE側でもう一度Arduino言語で駆動できるように、
自動的に内部の情報を書き換えてくれているようです。

ですから、MicroPythonを入れたあと、
今まで通りArduinoIDEの開発環境で遊びたくなっても、
特段することはなく、いつも通りArduinoIDEを使って
書き込みすればいいだけなんですよね。

コメント

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