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

M5Camera00 M5Stack

M5Camera をザッと分解してみる

ある程度 Web に情報はあるのですが、こんなコンパクトなものはどうやって基板を構成しているのか知りたいので、やっぱり分解しちゃいました。
パッと見た目は、あまりにもネジが少ないので、ボディが接着剤で固定してあるのかと思いましたが、六角レンチでネジ2本を外してみると、意外と外せそうな予感がしたので、思い切って分解してみました。
※ただしちょっとでも無理をすると破損しますので、自己責任で分解して下さい。
当方では一切責任を負いません。)

まず、下図の様に 1.5mm の六角レンチでネジを2本外します。

次がドキドキだったのですが、下図の様に精密のマイナスドライバーで徐々にこじ開けるようにやっていくと、最終的にふとした拍子でパカッと空きます。
ここはくれぐれも慎重に!

すると、下図の様になっていて、ケースのはめ込み具合が分かると思います。
よく考えられていますね。

LEGO のアームを外すには、基本的に引っ張れば外れますが、破損しそうな予感がしたので、私は下図のようにマイナスドライバーで狭めながら引っこ抜きました。

引っこ抜いた LEGO のアーム側はこんな感じです。

次に、下図のように、コネクタ側の基板の端を精密マイナスドライバーで慎重に浮かせていくと、段々と基板が外れていきます。

こんな感じで今回は無事、破損も無く外すことができました。

下図の様にカメラはフラットケーブルだけで接続されていて、基板からは浮いていました。両面テープとかでさえも固定されていませんでした。
ですからケースが外し易かったです。

こちら側の面は ESP32 WROVER で埋め尽くされています。
スペースを効率よく使っている感じです。

技適マークは ESP32 WROVER には付いていませんね。
でも、M5Camere のケースシールに付いているので問題ありません。

今回は虫眼鏡で見ても、ICチップパーツは何を使っているのか良く分かりませんでした。

そして、裏側はこんな感じです。

今回は USB シリアルの定番チップ CP2104 と、カメラの OV2640 以外のパーツは良く分かりませんでした。
詳しくは M5Stack の GitHub ページに回路図があるので、そちらを参考にしてみて下さい。

https://github.com/m5stack/M5-Schematic/tree/master/Units/m5camera/schematic

とにかく、ギリギリの基板スペースを効率よく使っているように見受けられ、M5Stack社の努力が見て分かりますね。
自分もこういうものを作れるようになりたいと思ってしまいました。
とにかくスバラシイ!!!

M5Camera をクイックスタートで使ってみる

では、M5Camera をクイックスタートで使ってみます。
下図の様に、同梱されている取説にクイックスタートが書いてあるので、それを見ながら進めていきます。

クイックスタートは Wi-Fi ルーター不要です。
M5Camera 自身が Wi-Fi ルーターになっています。

まず、USB 電源を接続すると、下図の様に赤色の LED が点灯します。

しばらくすると、スマホの Wi-Fi アクセスポイント一覧に「M5Cam」が現れてくるので、それを選択して、Google Chrome などのブラウザで、
http://192.168.4.1
と入力します。
http:// を入れないと、ブラウザによっては、https でアクセスしてしまい、接続できませんので注意してください。
以下の動画のように表示されればOKです。

どうでしょうか?
動画の 02:18 あたりでフリーズしている様子が分かると思います。
でも、M5Camera のリセットボタンを押せばすぐ復帰します。

さすがに ESP32 WROVER の soft AP モードでは市販のルーターに比べて能力が劣るので、通信速度が遅いですね。
動画の途中で、タッチペンを振っていますが、映像の追従性もあまりよくありませんね。
でも、それなりに表示できているので、実用性は十分あると思います。

消費電流値も 140mA ~ 170mA というところで、ESP32 を普通に Wi-Fi 通信している時とそれほど変わりありませんでした。
でも、長時間使うと結構熱くなり、排熱が心配なので、短時間に済ませておいた方が良いですね。

では、次では M5Camera を Arduino IDE のサンプルスケッチを使って、STAモードで高速ストリーミングさせてみます。

コメント

  1. akai より:

    camera init failed with error 0x20001 となって、IPアドレスが出ません。何か対処法をお教え願いませんでしょうか?

    • mgo-tec mgo-tec より:

      akai さん

      記事をご覧いただき、ありがとうございます。

      まず、お聞きしたいのは、どのような環境でコンパイルされましたでしょうか?
      この記事では、古いバージョンを紹介していますが、
      私は、最新バージョン
      Arduino IDE 1.8.9
      Arduino core for the ESP32 stable 1.0.2
      でも動作OKでした。

  2. akai より:

    バージョンは、Arduino1.8.9です、コンパイルは、できていて、シリアルモニターを見ながらカメラのリセットボタンを押したら、WiHiコネクトの前まではこの記事と同じなのですが、そのあとが、上記レポート文のようになりIPアドレスが出てきません。しかし2回ほどIPアドレスが出たことがありましたが、映像を見る前にWiHiが切れました。そのあとは、camera init failed with error 0x20001が出るだけです。電圧が不安定なのでしょうか?
    エラーの意味が分からずお便りさせていただきました。よろしくご教示願います。

  3. akai より:

    esp32 byEspressf system のことでしょうか? 102となっています。それと、シリアルモニターですが、一部ですが映してみました。
    entry 0x400806a8
    E camera.c:1249 camera probe(): detected camera not supported.
    E camera.c:1249 esp_camera_init(): camera probe failed with error 0x20004
    となっています。

    • mgo-tec mgo-tec より:

      akaiさん

      ありがとうございます。
      それですね。
      esp32 by Espressf system は別名 Arduino core for the ESP32 です。
      そのバージョンが大切です。
      まともに動かないバージョンがあるので要注意です。
      1.0.2 ということですね。
      それと、そのエラーメッセージを送って頂きありがとうございます。
      その情報が無いと、私も原因は全く分かりませんので。

      さて、そのエラーメッセージから、M5camera のマイコン ESP32-WROVER とカメラモジュールOV2640との通信ができていないようです。

      実は、今、気付いたのですが、Arduino core for the ESP32 が stable 1.0.1 と 1.0.2 では、「スケッチ例」にあるサンプルスケッチの構成が変わっていました。
      ですから、1.0.2用にスケッチを描き替えねばなりません。

      まず、メインスケッチのタブの10行目をコメントアウトし、12行目のコメント記号を削除して、
      #define CAMERA_MODEL_M5STACK_PSRAM
      とします。
      そして、18-19行目のSSIDとパスワードをご自分のルーターに合わせて書き換えます。
      そして、そのスケッチのcamera_pins.hタブを開き、44行目を
      #define SIOD_GPIO_NUM 22
      とし、そして55行目を
      #define VSYNC_GPIO_NUM 25
      と変更してください。
      その後、コンパイル書き込み実行してみてください。

      あるいは、この記事に載せてあるコードをコピペして、メインスケッチのタブを書き換えて、SSIDとパスワードを書き換えても動作すると思います。

  4. akai より:

    まずもって、早速の対応ありがとうございます。stable 1.0.2版をご用意いただき大変感謝しております。しかしながらエラーが次のようになっています。
    E camera.c:1049 camera_probe():Detected camera not supported. E camera.c:1249 esp_camera_init(): camera probe failed with error 0x20004
    また、自分なりに最初の#defineをそれぞれ入れ替えて試しましたが、結果は同じでした。それと気になる事が2つあります。
    1つは、私の5Mは、アマゾンにある中華番であること。2つ目は、ケーブルをジョイントで変換して使っていることです。
    この2つがこれらのエラーに影響しているのではと危惧しております。せっかくの10連休に御手間を取らせてしまって恐縮している次第です。因みにコンパイルは、できています。

    • mgo-tec mgo-tec より:

      akaiさん

      なるほど。
      まず、M5Camera が M5Stack社のものでなければ、私にもちゃんと動作するかどうか分かりません。
      そもそも GPIO のピンアサインが全く異なると思います。

      それと、USBケーブルはジョイントしてあっても良いのですが、短く良質なケーブルを使うことです。
      安物のケーブルはおそらくエラーが出ると思います。
      それと、M5Stack社純正のM5Camera付属のType-Cケーブルは、Type-Cのコネクタの挿す方向が上下で異なっており、挿す方向を上下入れ換えるとコンパイルが通るということがあります。
      以上、私が言えることはここまでです。
      とりあえず、M5Stack社純正のM5Cameraに替えてみることですかね。
      そもそも、M5Stack社自体が中国メーカーです。
      ただ、M5CameraはAmazon Japanにはまだ販売されていなかったと思います。
      スイッチサイエンスさんから購入できます。

      • akai より:

        いろいろお手数おかけしました。とても安く売ってあったのでつい購入しました。初期設定では簡単に映像が出ましたが、反転画像で車のバックカメラとしては使えそうなのですが、監視用としては反転しているのでプログラムの変更を試みた次第です。
        一度スイッチサイエンスさんのM5を購入しようと思います。
        いろいろと勉強になりましたありごとうございました。 akai

  5. nash68 より:

    Hi,
    After weeks of trying to find a good tutorial to make my m5camera working, I finally find your website !
    I was followinf step by step your explaination, and… tadaaaa ! It works 🙂

    Big thanks (as a french user, I also need to glad google traduction).

  6. しおじゃけ より:

    しおじゃけといいます。
    このページにはとてもお世話になっております。
    特に、M5カメラのPin配列の変更の部分は。
    あまりにお世話になっているので、お礼もしないといけないと思い、コメントさせていただきました。本来であれば、ドネーションをするべきだとは思いますが、申し訳ありません。そこはご勘弁を。
    M5cameraFを使って、ARマーカの読み取りをしてなんてことを妄想しております。
    これからもよろしくお願いします。

    • mgo-tec mgo-tec より:

      しおじゃけさん

      記事をご覧いただき、ありがとうございます。
      良いですよ!
      ドネーションなんて、そのお気持ちだけで充分でーす。
      記事をご覧いただくだけで感謝です。
      ARマーカの読み取り、できるとイイですね!

  7. hiroshi ushiroda より:

    hiroshiと申します。
    スイッチサイエンスで、M5cameraを購入しました。
    その後、このHPを見てさっそく試しました。
    コンパイルと書き込みは無事できました。
    Iphoneにメニュー画面は出ます。「get still」「start stream」をクリックすると、シリアルモニタに次のメッセージが出て、Iphoneに画像や映像が映りません。あと一歩だと思うのですが、何をしてもダメです。
    ご助言いただけると幸いです。

    WiFi connected
    starting web server on port:80
    starting stream server on port:81
    camera readdy use http://192.168.0.23 to connect

    [E][camera.c:1344] esp_camera_fb_get():failed to get the frame on time
    camera capture failed

    • mgo-tec mgo-tec より:

      hiroshiさん

      記事をご覧いただきありがとうございます。

      まず、私の手持ちのM5CameraはiPadで正常に動作しました。
      動作環境は以下です。

      iOS ver 12.4.6
      Safari使用
      M5Camera Model B
      Arduino IDE 1.8.12 (Windows 10)
      Arduino core for the ESP32 ver 1.0.4

      そこで、今気付いたのですが、M5CameraにはModel A と Model B があるみたいですね。
      以下のM5Stackのサイトをご覧ください。
      https://docs.m5stack.com/#/ja/unit/m5camera

      私が購入した時にはこんなの無かったのですが、最近変わったかもしれませんね。
      これによると、SIODピンとVSYNCピンがテレコになっているみたいです。
      これで試してみてはいかがでしょうか?

      因みに、正常に動作すると、「Start Stream」ボタンを押した後、私のiPadでは、画面の左側に出ていて、ぱっと見気付きませんでした。
      画面を右へスワイプすると正常に動画が見られました。

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