M5StackとM5CameraでWiFi UDPで長時間安定して動画転送できた

M5StackとM5CameraでWiFi, UDPによる動画転送を長時間連続安定動作させる実験

記事公開日:2019年12月15日

こんばんは。

今回は前回記事のコードをいろいろ手を加えて改善し、M5StackとM5CameraのWiFi, UDP動画通信で、パケットロスが格段に少なくなりました。
しかも、パケットロスをあまり感じさせないように画像表示プログラムを修正し、そして、24時間以上の長時間連続WiFi, UDP通信でもESP32のCPUがフリーズしない安定した動作が実現できるようになりました。

スポンサーリンク

これで、M5StackやESP32のWiFiを長時間フルパワーで連続運転させた場合の、Arduino coreプログラミングの勘所や注意点がだんだん分かって来ました。

今回の実験は、正直、かなり辛かったです。
なぜなら、パソコンのUSBポートを占有され、24時間以上パソコンのシリアルモニターを動かし続けなければならなく、他の仕事がかなり制限されてしまったからです。
8時間経過直後にフリーズすることが多く、コードを修正してもう一度最初から実験やり直し、という状態が1か月近く続きました。
時々10時間後にフリーズということもありましたが、圧倒的に8時間がデッドラインだったのです。

いろいろ実験してみた結果、24時間経過すれば概ねプログラムには問題ないだろうという個人的結論に達しました。

今回のポイントは、WiFi UDPはCPU core 0で動かし、M5CameraのDMA ( Direct Memory Access )はCPU core 1で動かした方が良い結果だったということです。
それに伴い、フリーズを防ぐためにはウォッチドッグタイマ動作を有効にすべきだという結論にも達しました。

ただ、そうすると、M5CameraのDMA処理が間に合わないので、VSYNC(垂直同期)信号検知をポーリング処理から「割り込み」処理に変更するという結論に達しました。

それと、大事な事として、CPUとWiFiをフルパワーで長時間連続稼働させると、CPU温度がとんでもないことになってフリーズしたので、その解決策として、冷却ファンを使うというべきだという結論に達しました。

ということで、まずは以下の動画をご覧ください。

どうですか?
グレー色のM5StackのYahooニュース電光掲示板時計は以前のこちらの記事で作成したものです。

ウォッチドッグタイマ動作を有効にしているので、ループ内にdelay(1)相当が入っていますが、動画がなかなかスムースですよね。
そして、前回記事からブラッシュアップしたのは、WiFi UDP のパケットロスがあった場合、画像表示を一時ストップさせたことです。
それによって1フレーム画像は崩さずに変なノイズ画像が無くなったので、格段に見やすくなったと思います。
パケットロスは非力なWiFi機能ではどうしようもないので、パケットロスしながらも、これだけのスムースさで動画表示できれば、私的には充分満足ですね。
簡易的な監視カメラにも使えそうですね。
ほんとはもっと画面を大きくしたいのですが、いかんせんPSRAMを使っていないので、この大きさが限界です。
それについては今後の課題です。

では、これから今回の実験の報告をしてみます。
因みに、何度も言っていますが、私はアマチュア独学です。
誤ったり勘違いしているかもしれませんので、何かお気づきの点がありましたらコメント投稿でご連絡いただけると助かります。

Twitterで、@tnkmasayukiさんと@wakwak_kobaの情報から、CPU core 1 のloop()関数内は、デフォルトでウォッチドッグタイマ動作無効となっていることが判明しました。
ずーっとWDT有効と思い込んでいました。
大変失礼しました。
(2019/12/18)

 

このブログの維持運営にご支援いただけると助かります。
支援方法はこちらの記事をご覧ください。
(管理人:mgo-tec)

 

    【目次】

  1. 使ったもの
  2. 長時間連続稼働させるとフリーズする問題について
  3. ESP32同士でDMAやWiFi UDP送受信を長時間安定動作させる個人的解決方法
  4. M5StackとM5Cameraのブラッシュアップした長時間WiFi UDP画像転送スケッチ
  5. コンパイル書き込み実行
  6. 編集後記

使ったもの

M5Stack Basic

Espressif SystemsのWiFi BluetoothマイコンESP32を搭載し、micro SDカードスロット、LCDディスプレイ、ボタンスイッチ、Groveコネクタ、スピーカー、バッテリー等を搭載した全部入りモジュールです。

Amazon.co.jp
M5Stack Basic
スイッチサイエンス

M5Camera

これはスイッチサイエンスさんで購入できます。

https://www.switch-science.com/catalog/5207/

なぜかAmazonではまだ売っていませんでした。

M5Cameraについては以下のレビュー記事を参照してください。
M5Camera をレビューしてみた。分解したり、Arduino IDE でスマホに映したりする実験

小型冷却ファン

これについては、後で詳しく説明していますので、参照してみてください。

Amazon.co.jp
Amazon.co.jp

良質なUSBケーブル

USBケーブルは粗悪で安価な物や、細くて長いものを使ってしまうと、大電流による電圧降下でM5StackやM5CameraのCPUが誤動作しますので、出来るだけ良質で太くて短いものを使うことをお勧めします。
私は以下の物を使っています。
ただし、ケーブルが硬いので取り回しづらいです。

Amazon.co.jp

micro SDHCカード

M5StackのLCDに日本語表示させるためのフォントファイルを保存しておくために使います。
私は以下の物で問題無く動きました。
信頼ある大手メーカー製の使用をお勧めします。

Amazon.co.jp

Amazon.co.jp

Amazon.co.jp

良質なUSB電源(4ポート以上)

十分余裕のある出力(1.0A以上)で4ポート以上あるUSB電源があれば良いと思います。
M5CameraとM5Stackと冷却ファン2つを動かします。
パソコンで4ポート無ければ、別途外付けのUSB電源が必要です。


スポンサーリンク


「M5StackとM5CameraでWiFi, UDPによる動画転送を長時間連続安定動作させる実験」への2件のフィードバック

    1. macsbugさん

      コメントいただき、ありがとうございます。

      そのファンは以前Twitterで情報を頂いたんですが、その時は単体では売っていませんでした。
      今はもう単体で売っているんですね。
      私はAliexpressは使ったことが無いので、いつかAmazonかスイッチサイエンスさんで販売してほしいなぁ・・・と願って待っています。
      いつも有益な情報ありがとうございます。
      m(_ _)m

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください