I’m trying to integrate my XIAO esp32s3 camera feed through ESPhome in to Home Assistant.
Based on the pin docs from Seeed pinout sheet
but is doesn’t work.
This is my ESPhome config:
# my camconfig
esp32_camera:
name: My Camera
external_clock:
pin: GPIO10
frequency: 20MHz
i2c_pins:
sda: GPIO40
scl: GPIO39
data_pins: [GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48]
vsync_pin: GPIO38
href_pin: GPIO47
pixel_clock_pin: GPIO13
# reset_pin: GPIO48
resolution: 640x480
jpeg_quality: 10
Any idea how to get this to work?
Not sure if you have figured this out yet, but I have it working with esphome with the following yaml:
esphome:
name: #####
friendly_name: #####
platformio_options:
board_build.flash_mode: dio
board_build.mcu: esp32s3
board_build.extra_flags:
- "-DARDUINO_HW_CDC_ON_BOOT=0"
i2c:
sda: GPIO40
scl: GPIO39
scan: True
esp32:
board: seeed_xiao_esp32s3
variant: esp32s3
framework:
type: arduino
version: latest
platform_version: 6.3.2
esp32_camera_web_server:
- port: 8080
mode: stream
- port: 8081
mode: snapshot
esp32_camera:
name: Lounge Camera
external_clock:
pin: GPIO10
frequency: 20MHz
i2c_pins:
sda: GPIO40
scl: GPIO39
data_pins: [GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48]
vsync_pin: GPIO38
href_pin: GPIO47
pixel_clock_pin: GPIO13
resolution: 640x480
2 Likes
install works, but I cant get a picture or video in Home Assistant in the Generic Camera component.
What should the settings look like?
TCP/UDP/Multicast/HTTP?
Basic or Digest authentication?
is SSL needed/supported?
Also rtsp://192.168.178.75:8080 doesn’t work in VLC (rtsp://camtest.local:8080)
esp32_camera_web_server:
- port: 8080
mode: stream
- port: 8081
mode: snapshot
the web server code is included, so you may access through HTTP://IP:8080
Hello !
Do you know if we could configure the microphone with esphome to get sound from Home Assistant interface when we get the video stream ?
Thanks for your help
Regards
Ben
1 Like
Citric
December 12, 2023, 8:27am
6
I’d like to know the answer too.
1 Like
You can try this code, just change wifi code .Finally I used Camera and LED successful
esphome:
name: xiao-cam
# friendly_name: xiao-cam
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "Fabc3YZ2bYG7x8WhupncrCMPqZuPMwxyeCPsgrbQIAI="
ota:
password: "412c844a7b10765fcd89954e7587e5af"
wifi:
ssid: "J09 502"
password: "qwertyuiop111"
# use_address: elkontrol1
# use_address: elkontrol1.local
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Xiao Fallback Hotspot1"
password: "YpeK5OYS4Xej"
captive_portal:
# Example configuration entry
external_components:
- source:
type: git
url: https://github.com/MichaKersloot/esphome_custom_components
components: [ esp32_camera ]
esp32_camera:
external_clock:
pin: GPIO10
frequency: 20MHz
i2c_pins:
sda: GPIO40
scl: GPIO39
data_pins: [GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48]
vsync_pin: GPIO38
href_pin: GPIO47
pixel_clock_pin: GPIO13
# Image settings
name: My Camera
# ...
switch:
- platform: gpio
name: "User_led1"
pin: 21
1 Like
how are you able to use GPIO40 and GPIO39 twice in this config. doesnt seem like it works.
however below worked for me. a combo of a few of these
esphome:
name: xiao-cam
platformio_options:
board_build.flash_mode: dio
board_build.mcu: esp32s3
board_build.extra_flags:
- "-DARDUINO_HW_CDC_ON_BOOT=0"
esp32:
board: seeed_xiao_esp32s3
variant: esp32s3
framework:
type: arduino
version: latest
platform_version: 6.3.2
# Enable logging
logger:
level: VERBOSE
tx_buffer_size: 256
# Enable Home Assistant API
api:
encryption:
key: "="
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
power_save_mode: none
manual_ip:
static_ip:
gateway:
subnet:
dns1:
dns2: 8.8.8.8
ota:
- platform: esphome
password: ""
esp32_camera_web_server:
- port: 8080
mode: stream
- port: 8081
mode: snapshot
esp32_camera:
external_clock:
pin: GPIO10
frequency: 20MHz
i2c_pins:
sda: GPIO40
scl: GPIO39
data_pins: [GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48]
vsync_pin: GPIO38
href_pin: GPIO47
pixel_clock_pin: GPIO13
# Image settings
name: My Camera
switch:
- platform: gpio
name: "User_led1"
pin: 21
output:
# white LED
- platform: ledc
channel: 2
pin: GPIO4
id: espcam
# red status light
- platform: gpio
pin:
number: GPIO33
inverted: True
id: gpio_33
light:
- platform: monochromatic
output: espcam
name: esp-cam light
- platform: binary
output: gpio_33
name: esp-cam led
drill
September 21, 2025, 7:49am
9
I just came across the same issue, trying to include the S3 Sense into my home assistant (via ESP Home)
However, none of the above solutions seem to work.
Is there a solution to stream video and sound at the same time when opening the video in home assistant?
The main issue is usually mismatched pin mapping between the OV2640 (camera module) and the ESP32-S3. On the Seeed Studio XIAO ESP32S3 Sense, the pin mapping is not the same as ESP32-CAM modules, and ESPhome doesn’t auto-detect.
According to Seeed’s documentation and other working configs, the correct mapping should be:
esp32_camera:
name: my_camera
external_clock:
pin: GPIO10
frequency: 20MHz
i2c_pins:
sda: GPIO40
scl: GPIO39
data_pins:
- GPIO15
- GPIO17
- GPIO18
- GPIO16
- GPIO14
- GPIO12
- GPIO11
- GPIO48
vsync_pin: GPIO38
href_pin: GPIO47
pixel_clock_pin: GPIO13
power_down_pin: GPIO21
reset_pin: GPIO1
resolution: 640x480
jpeg_quality: 10
max_framerate: 15 fps
reset_pin
should be GPIO1
(you had it commented out / wrong).
power_down_pin
required on this board, GPIO21
. Without it, the OV2640 often won’t initialize.
The rest of your pins (D0–D7, XCLK, PCLK, VSYNC, HREF, SCCB) look correct from the datasheet.
Try the config above and watch the ESPHome logs (esphome logs my_camera.yaml
). You should see lines like I (12345) camera: Detected OV2640 camera
.
If you get initialization errors, double-check that your board has the camera firmly clicked into the Sense expansion board. A loose fit can cause weird failures.
Try to lower the resolution to 320x240
at first — some boards brown out at high resolution without enough current.
Here is a XIAO ESP32-S3 sense based project that you may find interesting. VisionFlow: Smart Glasses with Camera, Mic, and Motion Sense - Share Project - PCBWay
1 Like