TTGO T-CameraをESP-IDF & Eclipseで動かす

まずカメラ Driverをインストールします。

GithubでEspressifが提供しているespressif/esp32-cameraがOV2640用ESP32互換ドライバーとあるのでこれをdesktop/esp-idf/componetsにクローンします。

このcomponentsフォルダーの下にesp32-cameraファルダーのようなライブラリープロジェクトがありそのフォルダーの下にCMakeLists.txtがあるとそのCMakeLists.txtを元にesp32-cameraライブラリー(libesp32-camera.a)を生成してプロジェクトに登録してくれるようです

続いてespressif/esp32-cameraのREADME.mdのInstallation Instructionsに書かれているようにPSRAMをEnableします。

PSRAMのEnableには先ほど開いたsdkconfigを再度開き、「Component config」→「ESP32-specific」タブの「Support for external, SPI-connected RAM」にチェックを入れてセーブします。

SDK Configuration Enable PSRAM

同様にREADME.mdに書かれているように#include “esp_camera.h”をmain.cの先頭に挿入します。

再buildすると「Archives」に”libesp32-camera.a”が追加されています。

libesp32-camera.a add

続けてREADME.mdの後半にExamplesがあるのでこれをコピーして使います。

とりあえず絵が出ればいいのでコピーするのはPIN Map、構造体 camera_config、camera_init()、jpg_httpd_handler()だけです。

PIN Map

PIN Mapは当然TTGO T-Cameraに合わせます。箱に絵があるのでこれに合わせます。

TTGO T-Camera Pin map

camera_config

camera_configはそのままでいいです。

camera_init() [camera_init2()]

camera_init()は他にあるので手抜きで単にcamera_init2()に名前を変えます。

またpinMode()、digitalWrite()もパスが通っておらずエラーするので手抜きでパスの通っている

gpio_Set_dirction()、giio_set_level()に変えます。

またTAGを使っているのでstatic const char *TAG = “example”;の後にcamera_init2()を配置します。

jpg_httpd_handler()

if(fb->format == PIXFORMAT_JPEG){ のelse句は必要ないのでコメントアウトします。

httpd_uri_t camera

httpd_uri_t helloを真似て/cameraにGETリクエストが来たらjpg_httpd_handlerが呼ばれるようにします。

あとapp_main()内にcamera_init2();を追加してカメラの初期化をします。

build/Launchしてエラーしなければhttp://192.168.1.65/cameraにアクセスすれば撮影画像が表示されるはずです。

JPEG capture

だいぶ手抜きをしましたが一応絵が撮れました。

今後、コードの整理やディスプレイ/人感センサーの使用とかするかも(笑)

プロジェクト全体はGitHubにあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です