ESP32/8266でMicroPythonを調べて見ました
今、PCと廉価なCPUボードの端末との連携をワイヤレスのUARTで行う
アプリケーションを色々作っていて、それにはPC側にPythonを使う方法を
採っています。その中で、CPUボード側にもPythonを導入したものとして
MicroPythonが有るのを知り、手持ちのESP-XXのボードで調べて見ました。
調べた結果は以下の通りです。使い易いIDEも用意されていてとても良いかと
思いました。
<ESP32とESP8266基板のMicroPython>
組み込み基板用のPythonとしてESP32およびESP8266チップ用の
組み込み基板用のPythonとしてESP32およびESP8266チップ用の
MicroPythonが公開されていましたので、次の手持ちのESP-XXの基板で
状況を確認して見ました。
[確認した基板]
[確認した基板]
1.ESP32ボードx1、ESP8266ボードx4
ESP32 : ESP32-T
ESP8266 : WeMos D1, WeMos D1 mini, LoLin, ESP-01
2.ESP-01は書き込みモード設定用のスイッチで対応
[動作状況]
<関連資料>
MicroPythonの公開先は次のURLです。
URL : https://micropython.org/
ESP32/8266の書き込みツール(esptool)は次のURLです。
URL : https://pypi.org/project/esptool/
利用した開発用IDE(uPyCraft)は次のURLです。
URL : https://dfrobot.gitbooks.io/upycraft/content/
Webアプリケーションでコードを参考にさせて頂いた方は次のURLです。
URL : https://www.dygv.work/entry/2017/11/12/150357
<開発環境>
必要なアイテム等は次のものとなります。
MicroPythonの公開先は次のURLです。
URL : https://micropython.org/
ESP32/8266の書き込みツール(esptool)は次のURLです。
URL : https://pypi.org/project/esptool/
利用した開発用IDE(uPyCraft)は次のURLです。
URL : https://dfrobot.gitbooks.io/upycraft/content/
Webアプリケーションでコードを参考にさせて頂いた方は次のURLです。
URL : https://www.dygv.work/entry/2017/11/12/150357
<開発環境>
必要なアイテム等は次のものとなります。
1.公開されているESP32/8266のコードを入手
2.書き込みツール(esptool)を利用して書き込み
3.書き込み後のチップとはUartでアクセス
4.以上の必要な処理を行えるIDEとして uPyCraft
[uPyCraft]
2.書き込みツール(esptool)を利用して書き込み
3.書き込み後のチップとはUartでアクセス
4.以上の必要な処理を行えるIDEとして uPyCraft
[uPyCraft]
uPyCraftでは、Source Code Pro のフォントを推奨していて、
フォントのインストールが完了するまで、起動毎に催促がでます。
フォントのインストールが完了するまで、起動毎に催促がでます。
フォントのインストールに管理者権限が必要な場合が有ります。
インストールの状況はコントロールパネルのフォントで確認できます。
インストールの状況はコントロールパネルのフォントで確認できます。
<uPyCraftでの操作>
[MicroPythonの書き込み]
[MicroPythonの書き込み]
ESP32の書き込みの場合、書き込みアドレスはuPyCraftは0x0で
MicroPythonのサイトからダウンロードしたものは0x1000の様です。
[ESP-01への対応]
ESP-01の場合、下記の様なUartのコントロール信号によるモード切替の
回路が有りません。
MicroPythonのサイトからダウンロードしたものは0x1000の様です。
[ESP-01への対応]
ESP-01の場合、下記の様なUartのコントロール信号によるモード切替の
回路が有りません。
その為、下記の様に2つのスイッチによる操作で対応します。
まず両方をオンして、最初にリセット側をオフにし、次に
GPIO0側をオフにします。
uPyCraftでは、前のファームウェアの消去と次のものの書き込みの時にそれぞれ
書き込みモードへの切り替えが必要となります。
GPIO0側をオフにします。
uPyCraftでは、前のファームウェアの消去と次のものの書き込みの時にそれぞれ
書き込みモードへの切り替えが必要となります。
[Sample code (blink.py) の実行]
パワーオンで実行させたい場合は、実行させた時にターミナルウインドーに
表示されている実行用のコマンドをboot.pyの最後に付加します。
このサンプルの場合は、次のコマンドとなります。
exec(open('./blink.py').read().globals())
[WiFiの簡易アプリケーションの実装]
下記の様にboot.yにサーバーの起動のラインを加えて、mainをダウンロード
表示されている実行用のコマンドをboot.pyの最後に付加します。
このサンプルの場合は、次のコマンドとなります。
exec(open('./blink.py').read().globals())
[WiFiの簡易アプリケーションの実装]
下記の様にboot.yにサーバーの起動のラインを加えて、mainをダウンロード
します。
アクセスします。
<結果と感想>
MicroPythonを手持ちのESP32/8266のボードで確認した状況は次の様な
MicroPythonを手持ちのESP32/8266のボードで確認した状況は次の様な
ものでした。
1.手持ちの全てのボードでMicroPythonが問題なく動作する事を確認
2.書き込みモードへの切り替え回路が無い場合でも、スイッチを付加して
1.手持ちの全てのボードでMicroPythonが問題なく動作する事を確認
2.書き込みモードへの切り替え回路が無い場合でも、スイッチを付加して
それのマニュアル操作で対応可能で有る事を確認(ファームウェアの
書き込みの時だけ対応が必要な事も確認)
3.WiFiの機能を利用しないLEDの点滅サンプルでも、ウォッチドッグ
3.WiFiの機能を利用しないLEDの点滅サンプルでも、ウォッチドッグ
タイマーの問題は無くブート処理の先頭に有るバックグランドの
持っており、MicroPythonの様なプラットホームのOSを実装するには
適していると思いました。
2.また、MicroPythonはESP32/8266のウォッチドッグタイマー等への
2.また、MicroPythonはESP32/8266のウォッチドッグタイマー等への
対策もされている様で、I/Oが間に合えばWiFil機能を利用しない通常の
易いMicroPythonの方がアプリケーションの開発に適しているのでは無いかと
思いました。また、eBayを見る限り、ArduinoのボードとESP8266のボード
との値段の差はそれ程ない為、I/Oポートが間に合えばWiFiを利用しない
場合のアプリケーション等にも積極的に利用可能では無いかと思いました。
場合のアプリケーション等にも積極的に利用可能では無いかと思いました。