ESP32など

電子工作してます

Unit CamのArduino IDEでのエラー

M5StackのUnit CamをArduino IDEでカメラを使おうとすると下記のエラーが出る。 最初カメラ壊れてんのかと勘違いして、もう一個買い直しちゃった。

OV2640搭載 Unit Cam Wi-Fi Camera

  • M5Burner/UIFlowだとカメラ使えてる。
  • サンプルのweb_cam.inoでエラー。
  • Timer Camera F/Xだとエラーにならない。

エラー内容

18:49:14.386 -> E (135) cam_hal: cam_dma_config(306): frame buffer malloc failed
18:49:14.386 -> E (136) cam_hal: cam_config(390): cam_dma_config failed
18:49:14.386 -> E (136) camera: Camera config failed with error 0xffffffff
18:49:14.386 -> Camera init failed with error 0xffffffff

原因

原因は2つ

  • (1) PSRAMを使う設定になっている
  • (2) 撮影画像サイズが大きすぎる
    • 外部PSRAMが無い場合、ESP32は内部RAMが実質100~200KB程度しか使えない

修正方法

camera_config_t configの設定内容を以下のように追記&修正する

  • (1) PSRAMを使わない設定を追加
+    config.fb_location = CAMERA_FB_IN_DRAM; // DRAMを使う(PSRAM使わない)
  • (2) 撮影画像サイズを小さくする
+    config.frame_size   = FRAMESIZE_QVGA; // 320x240
-    config.frame_size   = FRAMESIZE_UXGA; // 1600x1200

変更結果(camera_config_t config全体)

    camera_config_t config;
    config.ledc_channel = LEDC_CHANNEL_0;
    config.ledc_timer   = LEDC_TIMER_0;
    config.pin_d0       = Y2_GPIO_NUM;
    config.pin_d1       = Y3_GPIO_NUM;
    config.pin_d2       = Y4_GPIO_NUM;
    config.pin_d3       = Y5_GPIO_NUM;
    config.pin_d4       = Y6_GPIO_NUM;
    config.pin_d5       = Y7_GPIO_NUM;
    config.pin_d6       = Y8_GPIO_NUM;
    config.pin_d7       = Y9_GPIO_NUM;
    config.pin_xclk     = XCLK_GPIO_NUM;
    config.pin_pclk     = PCLK_GPIO_NUM;
    config.pin_vsync    = VSYNC_GPIO_NUM;
    config.pin_href     = HREF_GPIO_NUM;
    config.pin_sscb_sda = SIOD_GPIO_NUM;
    config.pin_sscb_scl = SIOC_GPIO_NUM;
    config.pin_pwdn     = PWDN_GPIO_NUM;
    config.pin_reset    = RESET_GPIO_NUM;
    config.xclk_freq_hz = 20000000;
    config.pixel_format = PIXFORMAT_JPEG;
    config.frame_size   = FRAMESIZE_QVGA; // 320x240
//    config.frame_size   = FRAMESIZE_UXGA; // 1600x1200
    config.jpeg_quality = 10;
    config.fb_count     = 2;
    config.fb_location = CAMERA_FB_IN_DRAM; // DRAMを使う(PSRAM使わない)
参考

community.m5stack.com