前回の3つの対応をそれぞれやって見ました。
1.本体をESP32に変える
ESP32CAMのCPU部をESP-WROOM-32に付け替えるやつです。3つの対応では最も簡単に出来ると思っていましたが、惨敗です。とてもハンダゴテのみでは取れません。取り敢えずESP32CAMのCPU部を取り外したのですが、基板のプリントパターンは剥がれ使えない状態になりました。余りに悲惨な状態になったので写真を取る前に捨ててしまいました。 一番可能性が高い方法と思っていたので残念です。ヒートガンがあれば簡単にとれるのでしょうか。
2.フレキコネクターのピッチを変更してESP32へ
コネクターピッチの変換、追加回路が必要と今回の対応の中で最難関な方法です。コネクターピッチの変換はコネクターのパッドにワイヤーをハンダ付けしてこの様に行いました。

パッドのハンダ部はワイヤーが取れやすいので接着剤で固めています。
追加回路として、PSRAM。2.8V,1.2Vレギュレーター。は絶対必要です。これらは対応”1”で失敗したESP32CAMの基板から取ってESP32の基板に新たに追加しました。各レギュレータから2.8V,1.2Vが出ていることを確認してトライしたのですが、結果は動きませんでした。

実行時のエラーメッセージは、”カメラが認識出来ません”でした。ちなみに、カメラを接続しないでスケッチを実行しても同じエラーメッセージが出るので多分フレキのコネクター部のハンダ付けミスが原因と思われます。でもPSRAMの初期化でエラーが出なかったのでPSRAMのハンダ付けは正しく出来た様です。
3.他のカメラを使用
最後となったこの対応ですが結論から言うと成功しました。先ずは回路の説明

- OV2640:
- 正しくは、XD-95 OV2640 Camera Moduleです。
- ESP32CAMでの、PCLK、HSYNC,ピンがカメラの出力ピンに見当たらず、PCLK->DCLK, HSYNC->HCHKで配線しています。
- PSRAM:
- ESP32CAMに載っていた素子に、”IPS6404LSQ”と有り。
- Webで調べるとここが見つかりましたー>AliExpress
- Banggoodみたいな所?値段的には安い気がします。
- 今回はESP32CAMから素子を外して使用しました。
- PWDN端子:
- これはESP32CAMの回路図ではGPIO32に振られていましたが、実際には配線されておらず、PullUpされていました。
- 今回はこのピンをGPIO4に配線しています。
ESP32CAMのサンプルスケッチを動かす為には最低限このハードが必要です。

(この写真には回路図に無い素子が写っています。それらの詳細は次回説明します。)
サンプルスケッチ
Arduino IDEを上げて、ファイルー>スケッチの例ー>ESP32ー>Cameraー>CameraWebServeを選んでサンプルスケッチを読み込んで下さい。
今回は、PWDN端子をGPIO4に繋いでいるので、Setupの最初でその端子の設定を行います。PWDN端子は、LOWのでカメラが有効に成るため、下記の様に24,25行で端子をLOWに設定しています。後は18,19行に自分のルーターのSSIDとパスワードを入力してスケッチはOKです。
#include "esp_camera.h"
#include <WiFi.h>
//
// WARNING!!! Make sure that you have either selected ESP32 Wrover Module,
// or another board which has PSRAM enabled
//
// 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
#include "camera_pins.h"
const char* ssid = "*********";
const char* password = "*********";
void startCameraServer();
void setup() {
pinMode(4, OUTPUT);
digitalWrite(4, LOW);
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println();
ボードの設定ですが、本来のESP32DevModuleではコンパイル出来ませんでした。そこでをAlThinkerESP32-CAMにしたらコンパイル出来ました。
シリアルモニタを上げてスケッチを実行すると、モニタにサーバーのIPアドレスが表示されるので、そのアドレスをパソコンのブラウザーに入力して下さい。

ちゃんと動きました。ESP32CAMではピントが自動でしたが、このカメラは手動です。レンズの部分にネジネジが有り回してピントを調整する必要が有ります。
最後に
2つ失敗した後の最後の一つ。実は一番期待していなかった方法でカメラが動いたので、正直とても嬉しいです。次回は更にESP32CAMに近づけかつTimeLaps用に変更して行きたいと思います。