I finally managed to get this chip and camera working and into HA. Working on on all the control now.
esphome:
name: ${name}
friendly_name: ${friendly_name}
name_add_mac_suffix: false
platformio_options:
board_build.mcu: esp32s3
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio
# https://wiki.seeedstudio.com/XIAO_ESP32S3_esphome/
project:
name: esphome.web
version: '1.0'
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
version: latest
substitutions:
name: esphome-web-20c368
friendly_name: Seeed Xaio w/Camera 20C368
# Pin definitions
camera_sda_pin: GPIO40
camera_scl_pin: GPIO39
camera_data_pins: GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48
camera_vsync_pin: GPIO38
camera_href_pin: GPIO47
camera_pclk_pin: GPIO13
camera_xclk_pin: GPIO10 #External clock
camera_power_pin: GPIO1 #use to turn camera on an off?
user_led_pin: GPIO21
camera_max_framerate: '15fps'
camera_jpeg_quality: '10'
camera_vertical_flip: 'true'
camera_horizontal_mirror: 'true'
camera_contrast: '0'
camera_brightness: '0'
camera_saturation: '0'
camera_special_effect: 'none'
camera_aec_mode: 'auto'
camera_aec2: 'false'
camera_ae_level: '0'
camera_aec_value: '300'
camera_agc_mode: 'auto'
camera_agc_value: '0'
camera_agc_ceiling: '2x'
camera_white_balance: 'auto'
# Camera configuration
esp32_camera:
name: "Seeed XIAO ESP32-S3 Camera"
id: seeed_camera
#connection options
data_pins:
- GPIO15
- GPIO17
- GPIO18
- GPIO16
- GPIO14
- GPIO12
- GPIO11
- GPIO48
vsync_pin: ${camera_vsync_pin}
href_pin: ${camera_href_pin}
pixel_clock_pin: ${camera_pclk_pin}
external_clock:
pin: ${camera_xclk_pin}
frequency: 12MHz
i2c_pins:
sda: ${camera_sda_pin}
scl: ${camera_scl_pin}
#power_down_pin: !!! done by software switch GPIO1
#frame settings
max_framerate: ${camera_max_framerate}
idle_framerate: 0.1fps #default
#Image Settings
resolution: 1280X1024
jpeg_quality: ${camera_jpeg_quality}
vertical_flip: ${camera_vertical_flip}
horizontal_mirror: ${camera_horizontal_mirror}
brightness: ${camera_brightness}
contrast: ${camera_contrast}
saturation: ${camera_saturation}
special_effect: ${camera_special_effect}
#Exposure settings
aec_mode: ${camera_aec_mode}
aec2: ${camera_aec2}
ae_level: ${camera_ae_level}
aec_value: ${camera_ae_level}
#Sensor gain settings
agc_mode: ${camera_aec_mode}
agc_gain_ceiling: ${camera_agc_ceiling}
agc_value: ${camera_agc_value}
#White balance settings
wb_mode: ${camera_white_balance}
web_server:
packages:
device_base: !include soup_device_base.yaml
camera_config: !include z_config_ov5640_camera.yaml
switch:
- platform: template
name: "Camera Control"
id: camera_control_template
optimistic: True
turn_on_action:
then:
- switch.turn_on: camera_power_output
turn_off_action:
then:
- switch.turn_off: camera_power_output
- platform: restart
id: seecd_restart
name: "Camera Restart"
- platform: gpio
pin: ${camera_power_pin}
id: camera_power_output
name: "camera output"
- platform: template
name: "Reset Camera"
id: reset_camera_settings
turn_on_action: # Reset values to default
- lambda: |-
// Set camera to default values using substitutions and proper conversions
id(seeed_camera).set_contrast(0);
id(seeed_camera).set_brightness(0);
- switch.turn_off: reset_camera_settings # Ensure the switch is momentary
light:
- platform: monochromatic
output: onboard_user_led
name: "Onboard LED"
id: onboard_led
output:
- platform: ledc
pin: ${user_led_pin}
id: onboard_user_led
frequency: 5000
inverted: true #aligns switch and LED
sensor:
- platform: homeassistant
id: camera_jpeg_quality
entity_id: input_number.camera_jpeg_quality
- platform: homeassistant
id: camera_vertical_flip
entity_id: input_boolean.camera_vertical_flip
- platform: homeassistant
id: camera_horizontal_mirror
entity_id: input_boolean.camera_horizontal_mirror
- platform: homeassistant
id: camera_brightness
entity_id: input_number.camera_brightness
- platform: homeassistant
id: camera_contrast
entity_id: input_number.camera_contrast
- platform: homeassistant
id: camera_saturation
entity_id: input_number.camera_saturation
- platform: homeassistant
id: camera_special_effect
entity_id: input_select.camera_special_effect
- platform: homeassistant
id: camera_aec_mode
entity_id: input_select.camera_aec_mode
- platform: homeassistant
id: camera_aec2
entity_id: input_boolean.camera_aec2
- platform: homeassistant
id: camera_ae_level
entity_id: input_number.camera_ae_level
- platform: homeassistant
id: camera_ae_value
entity_id: input_number.camera_ae_value
- platform: homeassistant
id: camera_agc_mode
entity_id: input_select.camera_agc_mode
- platform: homeassistant
id: camera_agc_ceiling
entity_id: input_number.camera_agc_ceiling
- platform: homeassistant
id: camera_agc_value
entity_id: input_number.camera_agc_value
- platform: homeassistant
id: camera_white_balance
entity_id: input_select.camera_white_balance