ESP32 チュートリアル 42/55 - カメラで写真を撮影し、マイクロSDに保存 CAM-1 | SunFounder の ESP32 キット
このチュートリアルでは、ESP32マイクロコントローラーとSunFounderの拡張ボードを使用して、カメラで写真を撮影し、それを直接マイクロSDカードに保存します。このプロジェクトは、Wi-FiやBluetoothを含むESP32の内蔵機能を活用して、コンパクトな写真撮影デバイスを作成します。このチュートリアルの終わりまでに、画像を撮影して保存できる作業セットアップが完成し、その後コンピュータでアクセスできるようになります。
拡張ボードカメラ
ESP32エコシステムに不慣れな方のために、このキットはさまざまなプロジェクトに対応した多用途のプラットフォームを提供します。このプロジェクトで使用されるカメラはOV2640で、解像度は1600x1200ピクセルです。最新のスマートフォンと同等の品質ではないかもしれませんが、基本的な画像キャプチャ作業には十分です。手順を明確にするために、このチュートリアルに付随するビデオ(00:00のビデオ)を必ず確認してください。
20240103_163227858_iOS
ハードウェアの解説
このプロジェクトの主なコンポーネントには、ESP32マイクロコントローラー、カメラモジュール(OV2640)、およびストレージ用のマイクロSDカードが含まれます。ESP32は、Wi-FiおよびBluetooth機能を統合した強力なマイクロコントローラーで、IoTアプリケーションに最適です。カメラモジュールは画像をキャプチャし、それをESP32が処理します。
esp32-41-設定-3
マイクロSDカードは、キャプチャされた画像のストレージ媒体として機能します。この設定では、ESP32は特定のGPIOピンを使用してカメラモジュールと通信し、画像はSDカード上にJPEG形式で保存されます。これにより、後で写真を容易に取得して表示することができます。
- ESP32ボードに挿入する際は、カメラが正しく向いていることを確認してください。
- 互換性の問題を避けるためには、容量が32 GB以下のマイクロSDカードを使用してください。
- GPIO 0をGNDに接続してプログラミングモードにします。
- 電源に注意して、褐色化の問題を避けてください。
- 写真を撮る際は、カメラをしっかりと固定して、ぼやけた画像を避けてください。
配線指示書
ESP32カメラモジュールを配線するには、まずESP32の電源をオフにします。次に、以下のピンを使用してESP32にマイクロSDカードモジュールを接続します:接続するCSESP32のSDカードのピンにGPIO 5,MOSIにGPIO 23,MISOにGPIO 19, とSCKへGPIO 18次に、カメラモジュールのピンを以下のように接続します:PWDNへGPIO 32,XCLKへGPIO 0,SIODへGPIO 26, とSIOCへGPIO 27ピクセルデータピンY2へY9接続されるべきですGPIO 5通じてGPIO 39あなたのコードで定義されているように。
接地ピンと電源ピンを適切に接続してください。ESP32はキットに含まれているバッテリーで電源を供給できます。配線後、デバイスの電源を入れる前に接続が確実であることを確認してください。指示に従っていれば、コードをアップロードするとカメラが正しく初期化されるのが見えるはずです。
コード例とウォークスルー
esp32-41-設定-2
esp32-41-設定-1
コードでは、必要なライブラリをインクルードし、カメラピンの設定を定義するところから始めます。変数pictureNumber写真の枚数を追跡するために初期化されます。
int pictureNumber = 0;
void setup() {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); // Disable brownout detector
Serial.begin(115200);
camera_config_t config;
// Configuration settings for the camera
config.ledc_channel = LEDC_CHANNEL_0;
// Additional camera settings...
}
セットアップ関数はシリアル通信を初期化し、カメラ設定を構成します。構成には、次のようなパラメータが含まれます。ledc_channel,pin_d0, とxclk_freq_hz最適なパフォーマンスのために。
次に、ループを使用して複数の画像を撮影することで、画像キャプチャプロセスを処理します。画像データは、ファイル名に基づいてSDカードに保存されます。pictureNumber.
for (int shoot = 0; shoot < 5; shoot++) {
camera_fb_t *fb = esp_camera_fb_get(); // Take Picture
String path = "/picture" + String(pictureNumber) + ".jpg"; // File path
File file = fs.open(path.c_str(), FILE_WRITE); // Open file to write
// Write image data to file
file.write(fb->buf, fb->len);
// Update picture number in EEPROM
EEPROM.write(0, pictureNumber);
}
このループは最大5つの画像をキャプチャし、それぞれの画像はユニークなファイル名で保存されます。EEPROMを使用することで、プログラムは最後の画像番号を記憶し、新しい画像がユニークな識別子を持つことを保証します。
デモンストレーション / 予想されること
コードを実行すると、ESP32はカメラとSDカードを初期化します。ESP32のリセットボタンを押した後、EEPROMの値に基づいて、0から255まで連番で番号付けされた一連の画像を撮影します。画像をキャプチャした後は、マイクロSDカードを取り外して、コンピュータで写真を表示できます。
一般的な落とし穴には、マイクロSDカードが正しくフォーマットされ挿入されていることを確認することや、ぼやけた画像を避けるためにカメラの位置を安定させることが含まれます。カメラが画像をキャプチャしていない場合は、配線とコードに設定した構成を再確認してください(ビデオの06:45にて)。
ビデオのタイムスタンプ
- 00:00 開始
- 1:39 イントロダクション
- 5:19 ESP32カメラコードの説明
- 11:10 Arduino IDEでESP32ボードとCOMポートを選択する
- 12:52 室内外でのテスト写真を撮る
画像
esp32-41-setting-3
extension_bopard_camera
20240103_163227858_iOS
esp32-41-setting-1
esp32-41-setting-2
843-ESP32 Tutorial 42/55- Arduino code for taking photo and saving it
言語: C++