M5Cameraの動画をM5StackへWiFi, UDPで送信する実験

M5Cameraの動画をM5StackへWiFi,,UDP送信する実験 M5Stack

こんばんは。

今回は我ながらスゴイですよ。
M5Cameraのイメージセンサ映像をWiFi, UDPでM5Stackへ送信する実験をしてみました。
しかも、リアルタイムで動画を無線で送ることができたんです。
そして、M5Stackからのボタン操作でM5Cameraをコントロールする双方向リアルタイム通信もできたんです。

スポンサーリンク

前回のWiFi, UDP双方向通信実験記事と、前々回のESP32-Cameraライブラリ解読記事のプログラミングを組み合わせて実現しました。

ただ、パケットロスが頻繁にあって、画像が部分的に乱れます。
これは私のプログラミングが未熟なのと、ESP32のWiFi送受信能力が追い付かないのかな? と思っています。

そして、6時間以上連続動作させていると、M5Cameraからの映像送信が停止してしまいます。
シリアルモニターには何もエラー表示が出ないので、原因不明です。
その場合、M5Stack側のボタン操作で送信元のM5Cameraを強制リセットできるようにしました。

最新の以下の記事では、24時間以上連続動作できるようになりました。
是非、合わせて参照してみてください。
M5StackとM5CameraでWiFi, UDPによる動画転送を長時間連続安定動作させる実験
(2019/12/18)

 

これで、M5Camera側から通信が途絶えても、M5Stack側から離れた位置のM5Cameraをリセット操作して新たに通信開始できるので、個人的にはほぼ文句ない無線WiFiリモートデジカメができたと勝手に宣言しちゃいます。
自作なのでパケットロスなんてぜんぜん許せちゃいます。
逆にUDP通信の様子をじっくり観察することができて面白いですね。

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

どうですか?
結構頻繁にパケットロスしていますね。
でも、動画のようにM5Stackのボタン操作でUDPを一時停止して通信再開すると、画像が復帰します。
これは多分、通信トラフィックが解消されたからだと想像しています。
ボタン操作しなくても、そのまま放ってしばらく経つとトラフィックが改善されて画像が正常になったりします。
いずれにしても、パケットロスしていない箇所はこれだけスムースな動画が映せるなんてかなりスゴイと思いました。

そして、ボタン操作で離れたところのM5Cameraを制御できちゃうのは、我ながらよく作ったと思いました。
まぁ、結局のところ他人の作ったライブラリを利用させていただいているだけですが、Arduino IDEプログラミングでここまでできると、自分で全部作った気になっちゃいますね。
自作IoTでやりたいことはほぼできて大満足ですね。

因みに、M5StackのLCDディスプレイ表示は私の自作ライブラリを使っていますが、前回前々回記事にあるように、M5Camera側のイメージセンサ制御やWiFi, UDPライブラリはArduino core for the ESP32標準ライブラリだけ使っています。
最初はESP32-Cameraライブラリを使おうと試してみたのですが、UDPで画像を転送するときにタイミング制御が難しかったのでESP-Cameraライブラリを独自に解体してプログラミングしました。
後で述べていますが、所々delayを入れて、できるだけパケットロスしない様にしてみました。

ところで、パケットロスは電波の見通しが悪くなったりすると起きるようです。
あと、USBの電流供給が悪かったりするとパケットロスしているような気がします。
これについては後で述べます。

また、今回も例のごとくPSRAMは一切使っていません。
私の素人プログラミング能力では、フレームサイズが 200 x 148 pixel で限界でした。
これ以上の画像サイズはPSRAMを使った方が良いと思います。

また、この動画のM5Cameraはモバイルバッテリーで動作させていますが、30分程度で電源が自動OFFになってしまいます。
勝手に自動OFFさせないためにはいろいろ方法があるようです。
これも後で説明します。

では、今回の方法を説明したいと思います。

    【目次】

  1. 使ったもの
  2. Arduino core for the ESP32 のインストール
  3. 自作ライブラリESP32_mgo_tecのインストールおよびフォントファイル設定、Timeライブラリのインストール
  4. M5Camera側のスケッチ入力(SoftAPモード)
  5. M5Stack側のスケッチ入力
  6. コンパイル書込み実行
  7. バッテリー、モバイルバッテリーの使用について
  8. パケットロスについて
  9. 編集後記

使ったもの

今回使ったものは以下です。

M5Stack

Espressif Systems社のWiFi & BluetoothマイコンESP32を搭載し、LCDディスプレイ、micro SDカードスロット、バッテリー、スピーカー、ボタンスイッチ、GROVEコネクタ等を搭載した全部入りモジュールです。
M5Stack社が製造しています。
日本の電波法をクリアした技適取得済みです。
主に以下の種類のどれでも同じように使えます。
M5Stack FireはPSRAM付きでちょっとお高いです。

(追記)
M5Stack Basicは、この記事を書いた当時より格段にバージョンアップしております。
以下のスイッチサイエンスさんの公式サイトをご参照ください。
https://www.switch-science.com/collections/%E5%85%A8%E5%95%86%E5%93%81/products/9010

※M5Stack Gray(9軸IMU搭載)現在は販売終了しております

 

M5Stack FIRE
スイッチサイエンス

M5Stack初めての方は以下の記事を参照してください。

M5Stackを分解したり電源を入れてみて、いろいろ思ったこと

M5Camera

同じく、M5Stack社が製造した、ESP32-WROVER搭載、イメージセンサOV2640、GROVEコネクタを搭載したWiFi & Bluetoothマイコンカメラモジュールです。
これも技適を取得しています。

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

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

M5Cameraについては以下のレビュー記事を参照してください。

M5Camera をレビューしてみた。分解したり、Arduino IDE でスマホに映したりする実験

micro SDHC カード

M5StackのLCDに日本語漢字を表示させるため、フォントファイル等をmicor SDHCカードに保存して使用します。
micro SDHCカードは可能な限り大手メーカー製をお勧めします。
私は以下のものを使っています。

M5Stack用電池モジュール

バッテリー電源のみでM5Stackを動作させたい場合、M5Stack純正バッテリーでは電源供給無しだと数十分程度しか持ちませんので、オプションバッテリーを使うと便利です。
最近発売されたものは700mAhのLiPoバッテリーです。
旧製品は800mAhでした。
容量ダウンしましたが、厚さが薄いのでケースに収めやすいかと思います。

(※2021年11月時点では、バッテリー容量は750 mAhになっています)
M5Stack用電池モジュール

良質で太く短いUSBケーブル

パソコンから電源を供給したり、バッテリーから電源を供給したりする場合、できるだけ良質で太く短いUSBケーブルを使って下さい。
WiFi, UDP通信で画像転送すると、瞬間的に大電流が流れるので、質の悪いケーブルだと電圧降下でCPUが誤動作するので要注意です。

その他パソコン等

では、次の節ではライブラリ等のインストールを説明します。

コメント

  1. Şeyh Müslüm İncedal (TURKEY-Istanbul) より:

    I would appreciate it if you fit with ESP32 Camera and ili9341

タイトルとURLをコピーしました