"0.96" OLED diplay with MicroPython on the ESP-01
ssd1306のチップを利用した0.96インチのOLEDをESP-01のMicroPythonで
動かして見ました。MicroPythonのファームの中にssd1306の基本動作ライブラリ
が実装されていましたが、昔、Arduinoで行ったデモサンプルを実行させるには
足りない部分が有ったので、拡張のライブラリモジュールも追加作成して
行いました。コードはArduinoのものからの移植で対応できましたが、その過程で
MicroPythonを利用する場合のやり方も合わせて色々検討しました。表示させた
結果を見る限り、描画速度はArduinoのものの6~7割程度でMicroPythonでは
速度に対してはあまり期待できないのかと思いました。ただし、コードの
開発作業はコード中に書いてある例外処理での中断時のコメント表示がとても
有効で、それらを利用しながらとても簡単に行う事ができました。その時の状況は
次のものです。
<ESP-01へのMicroPythonの実装>
ESP-01の動作サンプルで、LEDの点滅より少し複雑なものとして手持ちの
ESP-01の動作サンプルで、LEDの点滅より少し複雑なものとして手持ちの
0.96インチのOLEDの表示処理をArduinoのものから移植して、
MicroPythonへのコード実装状況を確認して見ました。用意したものは次の
接続および、実装したコードの動作をバッテリーで確認するものです。
1.MicroPythonのファームウァアの書き込みは、ESP-01用の
USB to Uart TTL を改造して利用(書き込みモード設定用に2つの
タクトスイッチを付加)
2.IDEへの接続には、汎用の安価はUSB to Uart TTLのボードを利用
3.コード確認用の部品としては次のものを用意
- ESP-01
- ESP-01用アダプター
- "0.96"OLED(ssd1306チップ)
- リセット用のタクトスイッチ
- 5V to 3.3Vの電圧降下レギュレータ
[動作状況]
2.IDEへの接続には、汎用の安価はUSB to Uart TTLのボードを利用
3.コード確認用の部品としては次のものを用意
- ESP-01
- ESP-01用アダプター
- "0.96"OLED(ssd1306チップ)
- リセット用のタクトスイッチ
- 5V to 3.3Vの電圧降下レギュレータ
[動作状況]
<関連資料>
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/
ESP32/8266のMicroPythonによるLED点滅テストの記事はこちらです。
<開発環境>
[ファームウェアの書き込み]
開発したモジュールのコードはファームウァア上で行う為、ファームウェア
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/
ESP32/8266のMicroPythonによるLED点滅テストの記事はこちらです。
<開発環境>
[ファームウェアの書き込み]
開発したモジュールのコードはファームウァア上で行う為、ファームウェア
書き込み後は、書き込みモードへの設定は必要有りませんが、ファームウェア
そのものの書き込みに対してはESP8266のチップの書き込みモードの設定が
必要です。ESP-01にはチップを書き込みモードに設定する為の外部回路が
付いてないのでその為のスイッチを以下の様にESP-01用の
「USB to Uart TTL」のボードに付けて対応します。
1.RST, GPIO0のポートがGNDと短絡できる様に2つのタクトスイッチを
ONにする
2.チップの書き込みモードには、チップのリセット直後のGPIO0の状態に
2.チップの書き込みモードには、チップのリセット直後のGPIO0の状態に
よって設定されるので、RSTのスイッチの開放後に少し時間を置いて
3.書き込みを行うファームウェアは、次のURLからダウンロードしたものを
行う事ができ、ESP-01の場合は、チップのメモリ消去と書き込みに時に、
それぞれマニュアルで書き込みモードに設定する必要が有る。
5.ファームウェアの書き込みが終了したら、RST端子に接続されている
5.ファームウェアの書き込みが終了したら、RST端子に接続されている
タクトスイッチのみを一旦オン/オフして、書き込みモードを解除する。
(そのままにして、取り外しもしくは書き込みツールの電源をオフすると、
プロンプト「>>>」が出る事で確認できる。
[アプリケーション開発用の接続]
アプリケーションモジュールの開発は次の構成で行います。
[アプリケーション開発用の接続]
アプリケーションモジュールの開発は次の構成で行います。
IDEおよびバッテリーとの接続状態は次の様になります。
[モジュールのダウンロードと実行]
開発したモジュールのチップ上へのダウンロードと実行は次の様に行います。
開発したモジュールのチップ上へのダウンロードと実行は次の様に行います。
1.開発したモジュールを一つづつIDEの"device"フォルダにドラッグアンド
ドロップしてダウンロードする。
2.ダウンロードが完了したら、IDEの"device"フォルダ内の実行モジュールを
2.ダウンロードが完了したら、IDEの"device"フォルダ内の実行モジュールを
クロスプリコンパイルしたモジュールの".mpy"フォーマットの利用がサポート
されています。".mpy"モジュールを".py"モジュールから変換してチップへ
ダウンロードするには、次の2つのモジュールをPC上のPythonへインストール
する必要が有ります。
[".py"と".mpy"の違い]
".py"と".mpy"でのチップ内のRAMの消費量の違いは次の様になっていました。
ESP8266の場合は、僅かな節約の様です。
[".mpy"の作成とダウンロード]
"uPyCraft"では、バイナリーファイルのダウンロードには対応していない様で、
ダウンロードには、次の様に一旦IDEのUartの接続を切り離して、上記のPC上の
Pythonのモジュールを利用して行います。
"uPyCraft"では、バイナリーファイルのダウンロードには対応していない様で、
ダウンロードには、次の様に一旦IDEのUartの接続を切り離して、上記のPC上の
Pythonのモジュールを利用して行います。
[関連モジュールの更新]
複数のモジュールで実行を行う場合、実行モジュールから参照している
複数のモジュールで実行を行う場合、実行モジュールから参照している
モジュールを変更して新しものに置き換えても、RAM上に展開されている
中身には反映されず、そのままではコードの変更状況の確認はできない様です。
そのための対応としてPCのPythonには"importlib"モジュールの"reload()"が
用意されていますが、MicrpPythonには該当するものが見つからず、次の
いずれかの方法で対応しました。
[コード類]
Code download URL :
Code download URL :