趣味のマイコンいじり

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

ESP8266::MicroPython Websocket test

<MicroPythonでのWebSocket test>
     ESP8266のボードでArduinoIDEを使った時のWebSocketのテストを
     以前行いましたが、今回は、MicroPythonを使ったものを検討して
     見ました。ただし、Arduinoの場合と違って利用できるライブラリーの
     種類が一つしか見つからず、しかも、そのままでは自宅の家庭の
     WiFiでは利用できないものでした。その為、公開されているライブラリ
     モジュールの修正から検討し、取り敢えずArduinoの場合と同等に
     動かす事ができる様になりました。その様子が以下のものです。

 [構成]
     f:id:I_Satoh:20191023102054p:plain

      f:id:I_Satoh:20191023102253p:plain

     1.ESP8266のボードはWeMosD1-mini (クローン)を使用
     2.表示は0.96"のOLED(ssd1306)を使用
     3.ブラウザはiPhoneSafariを使用
     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.通信が時々停滞する問題に関しては、まだ未解決

       具体的なコード修正箇所は次の様になります。

       f:id:I_Satoh:20191023103241p:plain

       f:id:I_Satoh:20191023103419p:plain

 [WeMosD1-mini ピン割り付け]
      WeMosD1-miniは基板上にArduino互換の番号が付けられており、
      基板上のピン名とESP8266チップのピン割り付けの関連が次の
      様になり、コードはこのESP8266のチップのピン割り付け番号を
      利用する事になります。     

      f:id:I_Satoh:20191023104026p:plain

 [コードのダウンロードと実行]
      コードのダウンロードと実行は次の様に、一つずつファイルを
      ドラッグアンドドロップでチップ内にダウンロードして、
      ダウンロードが終了したらREPLコマンドでCtrl+Dを打ち込んで
      リブート実行させます。

       f:id:I_Satoh:20191023104243p:plain

[コード類]
Code download URL : https://www.dropbox.com/s/xjzg0usou9rxior/MicroPyton_WebSocket_test.zip?dl=0