ESP32-S3 OV2640 Camera

My attempts to make it work failed so far. And I’d appreciate some help.
May be there is cooked YAML for it some were? I did not recognize complexity of the integration when purchase this for testing.
ESP32 Camera Component — ESPHome. I used this example for testing: Waveshare ESP32-S3 ETH + OV2640 camera
Thank you!
The camera: from Aliexpress. Silk screen on the flex PCB says WS-OV5640CSP-8225N-VC


https://www.aliexpress.us/item/3256807121725323.html?spm=a2g0o.order_list.order_list_main.99.65e3180272FuuI&gatewayAdapt=glo2usa

I got this warning from Log and looks like the board is not booting.

YAML

esp32_camera:
  external_clock:
    pin: GPIO3
    frequency: 20MHz
  i2c_pins:
    sda: GPIO48
    scl: GPIO47
  data_pins: [GPIO41, GPIO45, GPIO46, GPIO42, GPIO40, GPIO38, GPIO15, GPIO18]
  vsync_pin: GPIO1
  href_pin: GPIO2
  pixel_clock_pin: GPIO39
  power_down_pin: GPIO8

  # Image settings
  name: My Camera
  # ...

WIFI log

INFO ESPHome 2025.7.2
INFO Reading configuration /config/esphome/camera.yaml...
WARNING GPIO3 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
WARNING GPIO45 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
WARNING GPIO46 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
WARNING The `i2c_pins:` config option is deprecated. Use `i2c_id:` with a dedicated `i2c:` definition instead.
INFO Starting log output from camera.local using esphome API

Serial Log

[16:44:57]ESP-ROM:esp32s3-20210327
[16:44:57]Build:Mar 27 2021
[16:44:57]rst:0x1 (POWERON),boot:0x28 (SPI_FAST_FLASH_BOOT)
[16:44:57]SPIWP:0xee
[16:44:57]mode:DIO, clock div:1
[16:44:57]load:0x3fce2820,len:0x1188
[16:44:57]load:0x403c8700,len:0x4
[16:44:57]load:0x403c8704,len:0xbf0
[16:44:57]load:0x403cb700,len:0x30e4
[16:44:57]entry 0x403c88ac
[16:44:57]E (233) quad_psram: PSRAM ID read error: 0x00ffffff, PSRAM chip not found or not supported, or wrong PSRAM line mode
[16:44:57]E (237) esp_core_dump_flash: No core dump partition found!
[16:44:57]E (237) esp_core_dump_flash: No core dump partition found!
[16:44:57][    10][E][esp32-hal-psram.c:92] psramAddToHeap(): PSRAM not initialized!

Arduino sketch recognized this config. But it is overheating immediately and quit streaming even with sizable heat sink. May be if I select correct configuration it will generate less heat? if not - it’s a junk

(CAMERA_MODEL_ESP32S3_EYE)
PWDN_GPIO_NUM -1
RESET_GPIO_NUM -1
XCLK_GPIO_NUM 15
SIOD_GPIO_NUM 4
SIOC_GPIO_NUM 5
Y2_GPIO_NUM 11
Y3_GPIO_NUM 9
Y4_GPIO_NUM 8
Y5_GPIO_NUM 10
Y6_GPIO_NUM 12
Y7_GPIO_NUM 18
Y8_GPIO_NUM 17
Y9_GPIO_NUM 16
VSYNC_GPIO_NUM 6
HREF_GPIO_NUM 7
PCLK_GPIO_NUM 13

Hey there, although I’m not really a “specialist”, I’ve read a lot of available information out there about how to set up an esp camera.
One of the things that is mentioned about overheating is the following: “ * max_framerate (Optional, float): The maximum framerate the camera will generate images at. Up to 60Hz is possible (with reduced frame sizes), but beware of overheating. Defaults to 10fps.”
Since you said that the board powers down, I guess you have the correct pinout?

Hope that changing the framerate will solve your problem.

Had the same issues after the last update, but with this change in YAML i got my ESPCam back to work.
YAML OLD

captive_portal:

esp32_camera:
  name: "WZ Cam"
  external_clock:
    pin: GPIO0
    frequency: 20MHz
  i2c_pins:
    sda: GPIO26
    scl: GPIO27
  data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]
  vsync_pin: GPIO25
  href_pin: GPIO23
  pixel_clock_pin: GPIO22
  # power_down_pin: GPIO32
  max_framerate: 15 fps   
  idle_framerate: 0.05 fps 
  resolution: 1280X1024
  horizontal_mirror: False
  vertical_flip: False
  jpeg_quality: 13

YAML NEW

captive_portal:

i2c:
  sda: GPIO26
  scl: GPIO27
  scan: true
  id: bus_a

esp32_camera:
  name: "WZ Cam"
  external_clock:
    pin: GPIO0
    frequency: 20MHz
  i2c_id: bus_a
    
    
  data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]
  vsync_pin: GPIO25
  href_pin: GPIO23
  pixel_clock_pin: GPIO22
  # power_down_pin: GPIO32
  max_framerate: 15 fps   
  idle_framerate: 0.05 fps 
  resolution: 1280X1024
  horizontal_mirror: False
  vertical_flip: False
  jpeg_quality: 13

Hope this also works for you.

1 Like