ESP32S3とOV2640でカメラをつくる(LANモデル)

最初に:
    このHPでは ESP32を使ってどうやってカメラを作ったかを紹介するものですが、
    これを書いている当人は とても説明下手で説明になっているかとても不安です。
    できれば、「ここを説明して」などとコメントをいただければ、HPのなかで
    加筆していきたいとおもいます。参考もしくはたたき台としてお使いいただければ
    と思っております。

ESP32S3とOV2640を使って、実際に使用に耐える基板を試作してみました。
特徴は
1.WiFi環境下のLANモデルとして動作する。
2.外部RTCを実装し、ネットにつながなくても時刻を管理できる。
3.画像は ブラウザからも、ブラウザなしでも定時間隔でメディアに保存できる。
4.温度、湿度センサー(DHT20)を実装し、1日単位でグラフ表示する。
といったものです。
ケースにもいれて外観はこんな感じです。

市販の基板では、欲しい機能がなかったりしますので オリジナルの基板を設計、実装もしたうえで
ファームウェアを実装しています(回路図、ファームウェアを公開)。
何かの参考に、たたき台、踏み台として使っていただければ幸いです。

回路設計

回路設計は基板設計もふくめて QUADCEPT というCADを使用しています。
このCADでは 回路図と基板設計を同時にできるので、重宝しております。有料ですが、手放せないですね。
  回路図(PDF)(こちらをクリックするとダウンロードできます)

回路の特徴ですが、
  1.電源は5V~12Vまで(USBマイクロコネクタから供給します)を入力し、
  2.DCDCコンバータにて3.3Vを作っています。
  3.カメラ電源は さらに2.8Vと1.2Vが必要なので、こちらはシリーズレギュレータで。
  4.ESP32S3の内部RTCは使わず、外部RTC(RV8263)で時刻を管理
  5.温度湿度センサー(DHT20)で、測定
  6.メディアカードアダプタを実装、温度湿度、画像をメディアに保存
  7.残り少ないESP32S3の空きピンを外部コネクタにだし、拡張性を残す。
とにかく、回路も自分で決めますので、例えば OV2640のノイズが気になったらそれらしい場所に
フィルターをいれたり、効果を試しながら基板をバージョンアップできます。

ファームウェア

ファームウェアは ArduinoIDEを使って制作しています。
カメラとして使うので、参考(コピーしてそこから編集しました)としたスケッチは 
   CameraWebServer
です。
このスケッチは カメラの機能ほとんどをWEB上から変更できたりするのですが、
機能がありすぎて、そこまでいらんかなと思われるものをバサバサと切り捨てて
必要が部分のみをのこして、いろんな用途につかえるべく、シンプルにして使用しています。
特に、WEB上のHTML,JS言語のところは ソースがなかったので、ブラウザを開いたときに
表示できるソースの言語をとりこみ、必要な部分のみを残して使用しています。
(この手法は許されるものかは不明ですが)
ソースファイルは
   atiotcamera_lan.inoとapp_httpd.cpp
からなります。index.html,index.js,config.html,config.jsファイルは app_httpd.cpp に
埋め込んで使用しています。この埋め込み手法は
   HtmlToCodeプログラムの説明
で、確認してください。
また、ファームウェアは 下記からダウンロードできます。
   ATIotCamera_LANファームウェア(html,jsファイルを含む)

使用方法の説明動画

Favicon.icoについて

ブラウザで開くと左上にちいさなアイコンが表示されます。最初はなんのことかわかりませんでしたが、これ favicon.ico という名称のファイルで、URL毎 用意されているようです。
chromeの検証でみていると、要求されて、提出できなくて失敗しても害はなさそうですが、一応またされるといったことはあるようで、スケッチでもそれを用意した方がいいかということで組み込んでみました。下記の画面の左上の赤丸で囲んだアイコンです。


組み込み方は どうにかして favicon.ico を作ります(そんなサイトがありますので、ここでは省略)
ファイルはバイナリにして、1150バイトほどです。これをテキストに変換してスケッチに組み込みます。

で、それを 要求がきたときに返送してあげるといった作法です。