ESP32-S3-CAM dev board on aliexpress?

Has anyone managed to get ESPHome working on this dev board?

https://www.aliexpress.com/item/1005006881646670.html

I’ll admit I grabbed one to toy with without much thought, and it doesn’t seem to even run.

Not that specific board. I have an ESP32-S3-CAM from Seeed and that works fine, with a bit different setup than those listed on esphome.io.

Are you not able to get it working with a basic ESP32-S3 config in ESPHome?

Yes. Do not use. It overheats.

Get the Freenove ESP32 cam instead.

This is what I tried, and it neither showed up on my wifi nor gave me any console output.

esphome:
  name: esp32-s3-cam

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino
  variant: esp32s3

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "<snip>"

wifi:
  ssid: <snip>
  password: <snip>

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Camera Fallback Hotspot"
    password: "<snip>"

captive_portal:

Maybe I got a lemon?

I did notice it got very very warm when it just booted up and started playing some music. Darn, that’s a shame. I quite liked that it had support for microphone and speakers built-in.

On the paper it looks like a nice little board, but from what @Rudd-O posted and your own experience, it seems like you’re better of just binning it and count yourself lucky it was cheap.

For reference; this is what the head of my ESP32-S3-Cam config looks like:


esphome:
  name: esp32-cam-1
  friendly_name: "ESP32-CAM-1"
  platformio_options:
    build_flags: -DBOARD_HAS_PSRAM
    board_build.arduino.memory_type: qio_opi
    board_build.f_flash: 80000000L
    board_build.flash_mode: qio
    
esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino
2 Likes

Thanks. I gave that a try and still no joy.

I’ll leave this open a little longer but might have to do as you suggest, I suspect. Always figured it was the risk I was taking, so it’s no big surprise.

Do you happen to know how feasible it would be to hook up an I2S mic and speaker to it while retaining the camera functionality? Looking at the pinout it seems a lot of them are taken.

If you don’t use the camera pins, I bet you could reuse them with extremely advanced soldering skills on a ribbon cable.

Or bin it and use another device.

I meant on the Freenove ESP32 cam (or maybe the Freenove ESP32-S3-WROOM CAM).

The more I look around, the more it seems like I might want two ESP32s. One for video and one for mic and speaker.

I think the Freenove should be able to do I2S and camera simultaneously. Don’t expect gaming framerates tho.

1 Like

So, an update on this. I actually managed to get these boards running, sort of. It seems they use the PSRAM pins for the camera. Here’s my YAML:

esphome:
  name: esp-s3-cam-test
  friendly_name: esp-s3-cam-test

# Commented out because it prevents the camera detecting
  # platformio_options:
  #   build_flags: -DBOARD_HAS_PSRAM
  #   board_build.arduino.memory_type: qio_opi
  #   board_build.f_flash: 80000000L
  #   board_build.flash_mode: qio

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
#snip

ota:
# snip

wifi:
# snip

captive_portal:

esp32_camera:
  external_clock:
    pin: GPIO33
    frequency: 20MHz
  i2c_pins:
    sda: GPIO37
    scl: GPIO36
  data_pins: [GPIO7, GPIO5, GPIO4, GPIO6, GPIO8, GPIO42, GPIO48, GPIO47]
  vsync_pin: GPIO35
  href_pin: GPIO34
  pixel_clock_pin: GPIO41
  #power_down_pin: 
  # Image settings
  name: ESP32 Camera

esp32_camera_web_server:
  - port: 8080
    mode: stream

This works, though I’m concerned about the PSRAM being disabled or conflicting with the camera. There is a diagram for the wiring of all parts on the seller’s site, but it’s hard to read, and I’m not sure how I’d go about telling ESPHome to use different pins for the PSRAM.

Interestingly, now that it’s running ESPHome properly the chip doesn’t seem to be getting particularly hot.

Log dump, in case it’s useful:

INFO ESPHome 2024.5.5
INFO Reading configuration /config/esphome/esp-s3-cam-test.yaml...
WARNING GPIO33 is used by the PSRAM interface on ESP32-S3R8 / ESP32-S3R8V and should be avoided on these models
WARNING GPIO37 is used by the PSRAM interface on ESP32-S3R8 / ESP32-S3R8V and should be avoided on these models
WARNING GPIO36 is used by the PSRAM interface on ESP32-S3R8 / ESP32-S3R8V and should be avoided on these models
WARNING GPIO35 is used by the PSRAM interface on ESP32-S3R8 / ESP32-S3R8V and should be avoided on these models
WARNING GPIO34 is used by the PSRAM interface on ESP32-S3R8 / ESP32-S3R8V and should be avoided on these models
INFO Starting log output from 10.0.2.63 using esphome API
INFO Successfully connected to esp-s3-cam-test @ 10.0.2.63 in 0.160s
INFO Successful handshake with esp-s3-cam-test @ 10.0.2.63 in 0.054s
[16:57:43][I][app:100]: ESPHome version 2024.5.5 compiled on Jun 14 2024, 16:44:07
[16:57:43][C][wifi:580]: WiFi:
[16:57:43][C][wifi:408]:   Local MAC: 74:4D:BD:AF:34:14
[16:57:43][C][wifi:413]:   SSID: [redacted]
[16:57:43][C][wifi:416]:   IP Address: 10.0.2.63
[16:57:43][C][wifi:420]:   BSSID: [redacted]
[16:57:43][C][wifi:421]:   Hostname: 'esp-s3-cam-test'
[16:57:43][C][wifi:423]:   Signal strength: -41 dB ▂▄▆█
[16:57:43][C][wifi:427]:   Channel: 1
[16:57:43][C][wifi:428]:   Subnet: 255.255.0.0
[16:57:43][C][wifi:429]:   Gateway: 10.0.0.1
[16:57:43][C][wifi:430]:   DNS1: 10.0.0.1
[16:57:43][C][wifi:431]:   DNS2: 0.0.0.0
[16:57:43][C][logger:185]: Logger:
[16:57:43][C][logger:186]:   Level: DEBUG
[16:57:43][C][logger:188]:   Log Baud Rate: 115200
[16:57:43][C][logger:189]:   Hardware UART: USB_CDC
[16:57:43][C][esp32_camera:048]: ESP32 Camera:
[16:57:43][C][esp32_camera:049]:   Name: ESP32 Camera
[16:57:43][C][esp32_camera:050]:   Internal: NO
[16:57:43][C][esp32_camera:052]:   Data Pins: D0:7 D1:5 D2:4 D3:6 D4:8 D5:42 D6:48 D7:47
[16:57:43][C][esp32_camera:053]:   VSYNC Pin: 35
[16:57:43][C][esp32_camera:054]:   HREF Pin: 34
[16:57:43][C][esp32_camera:055]:   Pixel Clock Pin: 41
[16:57:43][C][esp32_camera:056]:   External Clock: Pin:33 Frequency:20000000
[16:57:43][C][esp32_camera:060]:   I2C Pins: SDA:37 SCL:36
[16:57:43][C][esp32_camera:062]:   Reset Pin: -1
[16:57:43][C][esp32_camera:080]:   Resolution: 640x480 (VGA)
[16:57:43][C][esp32_camera:129]:   JPEG Quality: 10
[16:57:43][C][esp32_camera:131]:   Contrast: 0
[16:57:43][C][esp32_camera:132]:   Brightness: 0
[16:57:43][C][esp32_camera:133]:   Saturation: 0
[16:57:43][C][esp32_camera:134]:   Vertical Flip: ON
[16:57:43][C][esp32_camera:135]:   Horizontal Mirror: ON
[16:57:43][C][esp32_camera:136]:   Special Effect: 0
[16:57:43][C][esp32_camera:137]:   White Balance Mode: 0
[16:57:43][C][esp32_camera:140]:   Auto Exposure Control: 1
[16:57:43][C][esp32_camera:141]:   Auto Exposure Control 2: 0
[16:57:43][C][esp32_camera:142]:   Auto Exposure Level: 0
[16:57:43][C][esp32_camera:143]:   Auto Exposure Value: 300
[16:57:43][C][esp32_camera:144]:   AGC: 1
[16:57:43][C][esp32_camera:145]:   AGC Gain: 0
[16:57:43][C][esp32_camera:146]:   Gain Ceiling: 0
[16:57:43][C][esp32_camera:152]:   Test Pattern: NO
[16:57:43][C][psram:020]: PSRAM:
[16:57:43][C][psram:021]:   Available: YES
[16:57:43][C][psram:024]:   Size: 8191 KB
[16:57:43][C][captive_portal:088]: Captive Portal:
[16:57:43][C][mdns:115]: mDNS:
[16:57:43][C][mdns:116]:   Hostname: esp-s3-cam-test
[16:57:43][C][ota:096]: Over-The-Air Updates:
[16:57:43][C][ota:097]:   Address: esp-s3-cam-test.local:3232
[16:57:43][C][ota:100]:   Using Password.
[16:57:43][C][ota:103]:   OTA version: 2.
[16:57:43][C][api:139]: API Server:
[16:57:43][C][api:140]:   Address: esp-s3-cam-test.local:6053
[16:57:43][C][api:142]:   Using noise encryption: YES
[16:57:43][C][esp32_camera_web_server:088]: ESP32 Camera Web Server:
[16:57:43][C][esp32_camera_web_server:089]:   Port: 8080
[16:57:43][C][esp32_camera_web_server:091]:   Mode: stream
[16:57:49][D][esp32_camera:196]: Got Image: len=19258
[16:57:59][D][esp32_camera:196]: Got Image: len=19293

Interestingly, it says that the PSRAM is available…

It uses this microphone msm261s4030h0 with the following settings:
I2s:
GPIO38 as SCK (input)
GPIO39 as SD (output)
GPIO40 as WS (serial data-word select for I2S)
No pin AFAICT is assigned to enabling or disabling the microphone so prob is always on hardware wise
Here is the datasheet for the microphones
microphone datasheet

it uses this speaker ns4168 with the following settings:
I2s:
GPIO9 as I2S ADC SDOUT
GPIO10 as I2S MCLK
GPIO45 as I2S LRCK
GPIO46 as PA CTRL
maybe someone who can speak chinese can help with this datasheet
speaker datasheet

My knowledge in programming unfortunately doesnt translate as far as i would like to continue this on my own