2MのカメラOV2640がついて、amazonで1,300円もしないで買えるESP32-camが玄関のドアカメラに使えないかとポチったところ、なぜかトラブッてしまったので、書きます。
購入したのはこれです。ケースがついたM5Stackではありません。
1.配線接続
ESP32-camは安いせいもあるのか、USBインターフェースがついていないので、何か用意する必要があります。
私は秋月電子で買ったFT234Xモジュール基板(秋月品番M-08461)を使いました。
配線は、このようになります。電源+5V、GND、TX,、RXの4本を接続します。TXとRXは、それぞれの基板のTXとRXが対になるように接続します。
IO0ピンはプログラムを書き込むときだけGNDに接続します。実行させるときはオープンにします。
2.プログラム
Arduino IDEに組み込むようにして使います。Arduino IDEの「ファイル」の「環境設定」を開き、「設定」タブの「追加のボードマネージャのURL」に
https://dl.espressif.com/dl/package_esp32_index.json
を追加します。
「ツール」の「ボード」の「ボードマネージャ」から「ESP32」をインストールします。※いろいろ調べていたら「最新の1.0.2は問題あるから1.0.1を使ってね」という情報がありましたが、「顔認識をするなら1.0.1を使ってください」ということのようです。
「ツール」の「ボード」他の設定は下記のとおりとします。「ファイル」の「スケッチ例」から「ESP32」、「camera」、「CameraWebServer」を選択します。
CameraWebServerのプログラムの下記を修正します。
// Select camera model //#define CAMERA_MODEL_WROVER_KIT ←コメントアウト //#define CAMERA_MODEL_ESP_EYE //#define CAMERA_MODEL_M5STACK_PSRAM //#define CAMERA_MODEL_M5STACK_WIDE #define CAMERA_MODEL_AI_THINKER// ←コメントアウトを外す
実際に使用するwifiのssidとpasswordを書きます。
const char* ssid = "*********"; // ←記入する const char* password = "*********";// 記入する
ボードへの書き込みをします。
Leaving... Hard resetting via RTS pin...
と出たら、書き込み終了です。
シリアルモニタを開いて、通信レートを115200bpsにします。
IO0のGNDとの接続を外して、オープンにします。
リセットボタンを押すと、起動するはずですが、、、。
[E][camera.c:1049] camera_probe(): Detected camera not supported. [E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004
カメラが検出されません、というエラーが出てしまいました。
3.トラブルシュート
最初、カメラが正しく接続されていないか、カメラがOV2640でない、もしくはカメラが壊れているというような想定で進めていたのですが、電源の問題であることがわかりました。
秋月電子のFT234Xモジュールには、+5V電源に過電流保護のためのヒューズが入っており(下図の矢印)、100mA以上は流すことができません。ESP32の起動時にこれより多くの電流が必要となります。
下の図は起動時の+3.3V電源の電圧波形です。
安定化電源で電流を170mAに制限した場合のですが、50msecくらいの間、電圧が2.3Vまで低下してしまっています。カメラの電源部の回路図を示します。カメラ部には+2.8Vと+1.2Vが供給されているので、+3.3Vの電源が2.3Vに低下した際にU1のレギュレータは動作しなくなり、カメラICは、おそらくリセットされます。そのために「カメラが見つからない」というエラーが発生すると思われます。
安定化電源の供給電流量を200mAまで上げると、正常に起動しました。
マージンを見た場合、供給電流は250mA程度と考えられます(このプログラムで動作させた場合。ESP32の動作によっては、もっと電流を消費する可能性はあります)。
※データシートを見るとActive Mode(RF working)で160~260mAとあるので妥当な数値かもしれません。ごく短い時間にもっと電流が必要な場合は、モジュール内のパスコンで供給されると思われます。
結局、FT234Xモジュールの使用は断念して、CP2103のモジュール(Aitendo製)に乗り換えました。ハードウェアでフロー制御を行なっている場合にハングしてしまわないように、CTSとRTSは接続しておきます。
(FT234Xのモジュールでは基板内で接続されていました)