エントリー

ESP32-CAMの利用方法を模索

ESP32-CAMを動作させたのだけど,3セット(Amazon)もあるので利用できないか考えるため調べてみた

IMG_20230731_115244.jpg

ハードウェア
  • 既にモジュール化されているので大きな変更はできない
  • 接続I/Oはカメラ,microSDスロット,高輝度LEDである
  • CPUはESP32SでEPS32と同じと考えてよく,おそらくI2CとSPIには不具合があるかと思われる
  • GPIOはあるが全て使用済なので利用は困難でSPIに接続されている4ピンをSPI未使用にする(microSDは不可となる)ことでOUTPUTピンとして利用できそう
  • モジュールから高輝度LED以外は取り外すことは困難
ソフトウェア

モジュール構成からカメラ機能を主とした利用形態しかなく追加できるI/Oもかなり限定されそうだ

カメラ機能が主なので元となるスケッチはサンプルのCameraWebServerが優秀で良いためプログラムを調べてみるとHTML(camera_index.h)がgzip形式になっていることが判る

HTMLソースが編集できないと画面の変更追加ができないのでネットで情報を得てみると最終的にgzip形式に変換する方法は判った

しかしわざわざgzip形式にすることもないのでそのまま編集できるように改造

①まずはサンプルを動作させてブラウザでHTMLソースを退避しヘッダーファイル(index_ov2640.h等,以下のように)にする

const uint8_t index_ov2640_html[] = R"=====(<!doctype html>
<html>
<head>
<meta charset="utf-8">


(省略)

</body>
</html>)=====";

size_t index_ov2640_html_len = sizeof(index_ov2640_html)-1;

橙色部分が前後に追加したテキスト

index_ov2640なのはスケッチで使用されているESP32-CAMのカメラタイプ名だから

②app_httpd.cppのcamera_index.hを外しindex_ov2640.hを使用

③同じくapp_httpd.cppのesp_err_t index_handler()を編集

(旧)
static esp_err_t index_handler(httpd_req_t *req)
{
httpd_resp_set_type(req, "text/html");
httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
sensor_t *s = esp_camera_sensor_get();
if (s != NULL) {
if (s->id.PID == OV3660_PID) {
return httpd_resp_send(req, (const char *)index_ov3660_html_gz, index_ov3660_html_gz_len);
} else if (s->id.PID == OV5640_PID) {
return httpd_resp_send(req, (const char *)index_ov5640_html_gz, index_ov5640_html_gz_len);
} else {
return httpd_resp_send(req, (const char *)index_ov2640_html_gz, index_ov2640_html_gz_len);
}
} else {
log_e("Camera sensor not found");
return httpd_resp_send_500(req);
}
}

(新)
static esp_err_t index_handler(httpd_req_t *req)
{
httpd_resp_set_type(req, "text/html");
httpd_resp_set_hdr(req, "Content-Encoding", "identity");
sensor_t *s = esp_camera_sensor_get();
if (s != NULL && s->id.PID == OV2640_PID) {
return httpd_resp_send(req, (const char *)index_ov2640_html, index_ov2640_html_len);
}
log_e("Camera sensor not found");
return httpd_resp_send_500(req);
}

汎用ではないのでESP32-CAMのindex_ov2640_htmlだけとなる

まずはUI部の対策のみ施した

ページ移動

コメント

  • コメントはまだありません。

コメント登録

  • コメントを入力してください。
登録フォーム
名前
メールアドレス
URL
コメント
閲覧制限
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed