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

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

記事公開日:2019年11月1日

こんばんは。

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

スポンサーリンク

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

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

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

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

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

 

    【目次】

  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社が製造しています。
日本の電波法をクリアした技適取得済みです。
なお、2019/10/31時点でAmazonではスイッチサイエンスさん販売のM5Stack BasicやGrayが販売されていません。
今のところ在庫があるのはFireです。
FireはPSRAM付きです。

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

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

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

M5Camera

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

m5stack_m5camera_udp001.jpg


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

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

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

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

micro SDHC カード

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

Amazon.co.jp
Amazon.co.jp

M5Stack用電池モジュール

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

Amazon.co.jp
M5Stack用電池モジュール
スイッチサイエンス

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

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

Amazon.co.jp

その他パソコン等

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


スポンサーリンク


コメントを残す

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

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