ESP8266::MicroPython Websocket test
<MicroPythonでのWebSocket test>
ESP8266のボードでArduinoのIDEを使った時のWebSocketのテストを
以前行いましたが、今回は、MicroPythonを使ったものを検討して
見ました。ただし、Arduinoの場合と違って利用できるライブラリーの
種類が一つしか見つからず、しかも、そのままでは自宅の家庭の
WiFiでは利用できないものでした。その為、公開されているライブラリ
モジュールの修正から検討し、取り敢えずArduinoの場合と同等に
動かす事ができる様になりました。その様子が以下のものです。
[構成]
1.ESP8266のボードはWeMosD1-mini (クローン)を使用
2.表示は0.96"のOLED(ssd1306)を使用
3.ブラウザはiPhoneのSafariを使用
4.コントロールターゲットは次のものを用意
<ブラウザ ---> ボード>
- 赤色LEDのオン/オフ
- 緑色LEDの明るさ調整
- サーボコントロール(SG90)の制御
- メッセージの転送
<ボード ---> ブラウザ>
- スイッチの状態表示
- ポテンショメータのA/D変換値の表示
- Rangeセンサーの計測結果の表示
- 温度センサーの計測結果の表示
[動作状況]
<関連資料>
MicroPythonの公開先は次のURLです。
URL : https://micropython.org/
利用したMicroPythonのファームウェアは以下のものです。
esp8266-20190125-v1.10.bin
WebSocket モジュールライブラリは次のものを修正して利用しました。
URL : https://github.com/BetaRavener/upy-websocket-server
<開発環境>
[ライブラリモジュールの変更]
公開されているWebSocketで利用できそうなものは上記の
「upy-websocket-server」しか見つからず、しかもサンプルコードを
そのまま利用すると自宅のWiFi上では次の問題が発生して、利用
できない事が判明しました。
1.Clientのブラウザと非常に繋がりにくい。
2.一旦繋がっても、直ぐに接続がクローズの状態となる。
(サンプルでは、1回通信するのみなので問題なし)
3.ブラウザのページをリフレッシュすると3回目から繋がらなくなる。
4.上記の問題を解決して通信が継続する様にしても、時々動作が
停滞する事がある。
その為の対策として、次の様に処理を変更、追加しました。
1.壊れた接続データの確認の為、データ解析を行う為に、
タイムアウト付きの予備のデータ解析を付け加えた。
2.接続がクローズ時のステータスの値が違っていたので、
自宅のものに合わせた。
3.同じブラウザからの再接続をチェックし、再接続の時は
前のものと入れ替える様にした。
4.通信が時々停滞する問題に関しては、まだ未解決
具体的なコード修正箇所は次の様になります。
[WeMosD1-mini ピン割り付け]
WeMosD1-miniは基板上にArduino互換の番号が付けられており、
基板上のピン名とESP8266チップのピン割り付けの関連が次の
様になり、コードはこのESP8266のチップのピン割り付け番号を
利用する事になります。
[コードのダウンロードと実行]
コードのダウンロードと実行は次の様に、一つずつファイルを
ドラッグアンドドロップでチップ内にダウンロードして、
ダウンロードが終了したらREPLコマンドでCtrl+Dを打ち込んで
リブート実行させます。
[コード類]
Code download URL : https://www.dropbox.com/s/xjzg0usou9rxior/MicroPyton_WebSocket_test.zip?dl=0