趣味のマイコンいじり

安価なマイコンを利用して作成したアプリの紹介です。

ESP32/8266でMicroPythonを調べて見ました

今、PCと廉価なCPUボードの端末との連携をワイヤレスのUARTで行う
アプリケーションを色々作っていて、それにはPC側にPythonを使う方法を
採っています。その中で、CPUボード側にもPythonを導入したものとして
MicroPythonが有るのを知り、手持ちのESP-XXのボードで調べて見ました。
調べた結果は以下の通りです。使い易いIDEも用意されていてとても良いかと
思いました。

<ESP32とESP8266基板のMicroPython>
   組み込み基板用のPythonとしてESP32およびESP8266チップ用の
   MicroPythonが公開されていましたので、次の手持ちのESP-XXの基板で
   状況を確認して見ました。

  [確認した基板]
   イメージ 1


  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

<開発環境>
   必要なアイテム等は次のものとなります。
   イメージ 2

   イメージ 3

   イメージ 4

   イメージ 5

    1.公開されているESP32/8266のコードを入手
    2.書き込みツール(esptool)を利用して書き込み
    3.書き込み後のチップとはUartでアクセス
    4.以上の必要な処理を行えるIDEとして uPyCraft     

 [uPyCraft]
    イメージ 6

    uPyCraftでは、Source Code Pro のフォントを推奨していて、
    フォントのインストールが完了するまで、起動毎に催促がでます。
    イメージ 7
    フォントのインストールに管理者権限が必要な場合が有ります。
    インストールの状況はコントロールパネルのフォントで確認できます。

<uPyCraftでの操作>
 [MicroPythonの書き込み]
    イメージ 8

    イメージ 9
    ESP32の書き込みの場合、書き込みアドレスはuPyCraftは0x0で
    MicroPythonのサイトからダウンロードしたものは0x1000の様です。

 [ESP-01への対応]
    ESP-01の場合、下記の様なUartのコントロール信号によるモード切替の
    回路が有りません。
    イメージ 16

    その為、下記の様に2つのスイッチによる操作で対応します。
    イメージ 10
    まず両方をオンして、最初にリセット側をオフにし、次に
    GPIO0側をオフにします。

    uPyCraftでは、前のファームウェアの消去と次のものの書き込みの時にそれぞれ
    書き込みモードへの切り替えが必要となります。
    イメージ 11

 [Sample code (blink.py) の実行]
    イメージ 12
    パワーオンで実行させたい場合は、実行させた時にターミナルウインドーに
    表示されている実行用のコマンドをboot.pyの最後に付加します。
    このサンプルの場合は、次のコマンドとなります。

       exec(open('./blink.py').read().globals())


 [WiFiの簡易アプリケーションの実装]
   下記の様にboot.yにサーバーの起動のラインを加えて、mainをダウンロード
   します。
    イメージ 13

    イメージ 14

    ボードのデバイスに割り付けられたIPアドレスは、以下の様にツールの
    ターミナルウインドーから確認できますので、それをWiFi端末から
    アクセスします。
    イメージ 15

<結果と感想>
   MicroPythonを手持ちのESP32/8266のボードで確認した状況は次の様な
   ものでした。

       1.手持ちの全てのボードでMicroPythonが問題なく動作する事を確認
       2.書き込みモードへの切り替え回路が無い場合でも、スイッチを付加して
             それのマニュアル操作で対応可能で有る事を確認(ファームウェア
             書き込みの時だけ対応が必要な事も確認)
       3.WiFiの機能を利用しないLEDの点滅サンプルでも、ウォッチドッグ
             タイマーの問題は無くブート処理の先頭に有るバックグランドの
             ガベージコレクションが有効に働いていると想定

     なお、状況を調査した時の感想は次の様なものでした。

       1.ESPシリーズのチップはいずれも大きな容量のフラッシュメモリ
             持っており、MicroPythonの様なプラットホームのOSを実装するには
             適していると思いました。
       2.また、MicroPythonはESP32/8266のウォッチドッグタイマー等への
             対策もされている様で、I/Oが間に合えばWiFil機能を利用しない通常の
             マイコンのアプリケーションにも十分対応できると思いました。
       3.今回利用したIDEのuPyCraftは非常に使いやすく、またその操作も
             直感的に使える様にして有ると思いました。
       4.また、このツールのソースコードPythonで書かれており、
             このツールの開発者はPythonに精通していると思いました。

      以上の様な状況で、ESP32/8266に関する限り、Arduinoよりコードの書き
      易いMicroPythonの方がアプリケーションの開発に適しているのでは無いかと
      思いました。また、eBayを見る限り、ArduinoのボードとESP8266のボード
      との値段の差はそれ程ない為、I/Oポートが間に合えばWiFiを利用しない
      場合のアプリケーション等にも積極的に利用可能では無いかと思いました。