Esp32 S3 N16R8 avec cam micro et haut parleur

Bonjour tout le monde, j’ai commandé ça sur Ali :



Je viens juste de trouver cet article incroyable sur AliExpress. Jetez-y un coup d’œil !
23,19€ | ESP32 S3 Capture d’écran Haut-parleur Conseil de développement avec OV2640 N16R8 Wifi Caméra Tech Kit touristes MIC TF Slot CH340X USB Type-C ESP32-S3

J’ai pris la version avec les led ir 850Nm pour la vision de nuit.

Je voulais savoir si certains d’entre vous ont réussi à le configurer avec ESPHome?

Je souhaite m’en servir comme une sonnette vidéo.

Je vous souhaite une bonne journée :wink:

Bonjour,

Oui j’ai réussi à l’intégrer avec esphome et avec frigate sur la base de ce projet.
https://hackermagnet.com/night-vision-on-esp32-cam/
La vision nocture est opérationnelle mais pas assez puissante dans le jardin. Sinon tout fonctionne bien



C’est pas non plus une tuerie en résolution, mais ca fait le job. En service depuis des mois et résiste même à la bonne pluie bretonne :sweat_smile:

esphome:
  name: camerajardin
  friendly_name: Camera Jardin

esp32:
  board: esp32cam
  framework:
    type: arduino

# Enable logging
logger:

ota:
  - platform: esphome
    password: "XXXXXXXXX"

# Enable Home Assistant API
api:
  encryption:
    key: "XXXXXXXXXX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Optional manual IP
  manual_ip:
    static_ip: 192.168.1.127
    gateway: 192.168.1.1
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32Cam Fallback Hotspot"
    password: "XXXXXXX"

captive_portal:
  
web_server:
  port: 80

esp32_camera:
  name: camera_jardin
  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
  
# Image/Video settings, https://esphome.io/components/esp32_camera.html

  max_framerate: 5 fps    # default: 10 fps, max 60
  idle_framerate: 0.2 fps # default: 0.1 fps - framerate for 'picture' in HA dashboard
  resolution: 640x480
  jpeg_quality: 10
  vertical_flip: True
  horizontal_mirror: True
  contrast: 2 # default: 0, variable -2 to 2
  brightness: 2 # default: 0, variable -2 to 2
  saturation: 0 # default: 0, variable -2 to 2
  #aec_mode: MANUAL
  #aec_value: 100
  
# Server video/pictures, https://esphome.io/components/esp32_camera_web_server.html

esp32_camera_web_server:
  - port: 8080
    mode: stream
  - port: 8081
    mode: snapshot

time:
  - platform: homeassistant
    id: homeassistant_time

output:
  #flashlight
  - platform: gpio
    pin: GPIO4
    id: gpio_4

light:
  #flashlight
  - platform: binary
    output: gpio_4
    name: flash light

binary_sensor:
  - platform: homeassistant
    name: "Input Boolean Night Mode HA"
    entity_id: input_boolean.camera_jardin_night_mode
    on_press:
      then:
        - switch.turn_on: ir2
    on_release:
      then:
        - switch.turn_on: ir1

switch:
  - platform: gpio
    pin: GPIO2
    name: Camera jardin IR ON
    id: ir1
    on_turn_on:
      - delay: 100ms
      - switch.turn_off: ir1
    interlock: [ir2]
  - platform: gpio
    pin: GPIO14
    name: Camera jardin IR OFF
    id: ir2
    on_turn_on:
      - delay: 100ms
      - switch.turn_off: ir2
    interlock: [ir1]

Bonjour, ce n’est pas exactement le même model de ESP32 que j’ai acheté, et je ne souhaite pas en faire la même utilisation que la tienne.
Je viens d’obtenir les schémas électrique de l’ESP :


Yaurait il une personne qui pourrait m’aider à créer la config ESPhome qui va bien le transformer en sonnette video?

Je vous souhaites à tous une bonne journée :wink:

Bonjour, j’ai avancé un petit peu dans mon projet , j’ai trouvé une config qui fonctionne pour esphome pour faire fonctionner la caméra et gérer la petite led presente sur l’esp:

esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  framework:
    type: esp-idf
    version: recommended
    sdkconfig_options:
      CONFIG_ESP32_S3_BOX_BOARD: "y"

psram:
  mode: quad
  speed: 80MHz

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: 
  name: ESP32 Camera

  # Image settings
  aec2: True
  aec_mode: AUTO
  resolution: 800X600
  max_framerate: 30 fps
  idle_framerate: 0.1 fps
  jpeg_quality: 10
  wb_mode: home
  agc_gain_ceiling: 8x
  horizontal_mirror: False
  vertical_flip: false
  # ...

esp32_camera_web_server:
  - port: 8080
    mode: stream
  - port: 8081
    mode: snapshot
  
light:
  - platform: esp32_rmt_led_strip
    id: my_light  
    rgb_order: GRB
    pin: GPIO21
    num_leds: 1
    rmt_channel: 0
    chipset: ws2812
    name: "My Light"
    effects:
      - pulse:
          transition_length: 550ms
          update_interval: 550ms

Par contre je n’arrive pas a intégrer le micro ainsi que le haut parler via les I2S audio…

Bonsoir, j’ai moi aussi commander cette petite camera, j’ai recuperer les sources du programmes originel. Cela m’a permis de revoir tout le pinout pour esphome et inclure les bons pins, si ca peu aider voici mon code:

esphome:
  name: camerajardin
  friendly_name: Camera Jardin
  platformio_options:
    build_flags: -DBOARD_HAS_PSRAM
    board_build.arduino.memory_type: qio_opi
    board_build.f_flash: 80000000L
    board_build.flash_mode: qio
  on_boot:
    priority: -100
    then:
      - switch.turn_on: amp_enable
      - delay: 200ms
esp32:
  board: esp32-s3-devkitc-1
  flash_size: 16MB
  partitions: partitions_16mb_ota.csv
  framework:
    type: esp-idf

logger:

ota:
  - platform: esphome
    password: 03051978

api:
  encryption:
    key: "!secret encryption"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  manual_ip:
    static_ip: 192.168.10.127
    gateway: 192.168.10.1
    subnet: 255.255.255.0

  ap:
    ssid: "Esp32Cam Fallback Hotspot"
    password: "12345678"

captive_portal:

web_server:
  port: 80

time:
  - platform: homeassistant
    id: homeassistant_time

mqtt:
  broker: 192.168.10.21
  port: 1883
  username: camera_jardin
  password: camera_jardin!!
  discovery: true
# ESPHome 2026.x: la camera exige psram:
psram:
  mode: quad
  speed: 80MHz

# --------------------------
# LED statut (GPIO2)
# --------------------------
status_led:
  pin:
    number: GPIO2
    inverted: true

# --------------------------
# LED RGBW WS2812 (GPIO21)
# --------------------------
light:
  - platform: esp32_rmt_led_strip
    id: led_rgb
    name: "LED RGB (WS2812 GPIO21)"
    pin: GPIO21
    num_leds: 1
    chipset: WS2812
    rgb_order: GRB
    restore_mode: RESTORE_DEFAULT_OFF

# --------------------------
# IR ON/OFF (GPIO13 / GPIO14)
# --------------------------
switch:
  - platform: gpio
    pin: GPIO13
    name: "Camera jardin IR ON"
    id: ir_on
    on_turn_on:
      - delay: 100ms
      - switch.turn_off: ir_on
    interlock: [ir_off]

  - platform: gpio
    pin: GPIO14
    name: "Camera jardin IR OFF"
    id: ir_off
    on_turn_on:
      - delay: 100ms
      - switch.turn_off: ir_off
    interlock: [ir_on]
  
  - platform: output
    name: "Amplifier Enable (NS4168)"
    output: pa_ctrl
    id: amp_enable
    restore_mode: RESTORE_DEFAULT_ON

binary_sensor:
  - platform: homeassistant
    name: "Input Boolean Night Mode HA"
    entity_id: input_boolean.camera_jardin_night_mode
    on_press:
      then:
        - switch.turn_on: ir_off
    on_release:
      then:
        - switch.turn_on: ir_on

# --------------------------
# CAMERA (pins EXACTS du firmware d'origine)
# --------------------------
i2c:
  - id: cam_i2c
    sda: GPIO37
    scl: GPIO36
    frequency: 100kHz

esp32_camera:
  name: camera_jardin

  # XCLK = GPIO33 (firmware d'origine)
  external_clock:
    pin: GPIO33
    frequency: 20MHz

  i2c_id: cam_i2c

  # data_pins DOIT être D0..D7 dans l'ordre
  data_pins: [GPIO7, GPIO5, GPIO4, GPIO6, GPIO8, GPIO42, GPIO48, GPIO47]
  vsync_pin: GPIO35
  href_pin: GPIO34

  # PCLK = GPIO41 (firmware d'origine)
  pixel_clock_pin: GPIO41

  resolution: 640x480
  jpeg_quality: 12
  max_framerate: 5 fps
  idle_framerate: 0.2 fps

  vertical_flip: false
  horizontal_mirror: false
  contrast: 2
  brightness: 2
  saturation: 0

esp32_camera_web_server:
  - port: 8080
    mode: stream
  - port: 8081
    mode: snapshot

# --------------------------
# AUDIO (selon ton schéma précédent)
# - Micro MSM261S4030 : WS=GPIO40, BCLK=GPIO39, DIN=GPIO38
# - Ampli NS4168 : PA_CTRL=GPIO46, LRCLK=GPIO45, BCLK=GPIO10, DOUT=GPIO9
# --------------------------

output:
  - platform: gpio
    pin: GPIO46
    id: pa_ctrl

i2s_audio:
  - id: i2s_in
    i2s_lrclk_pin: GPIO40
    i2s_bclk_pin: GPIO39

  - id: i2s_out
    i2s_lrclk_pin: GPIO45
    i2s_bclk_pin: GPIO10

microphone:
  - platform: i2s_audio
    id: mic
    i2s_audio_id: i2s_in
    adc_type: external
    i2s_din_pin: GPIO38
    pdm: false

speaker:
  - platform: i2s_audio
    id: spk
    i2s_audio_id: i2s_out
    dac_type: external
    i2s_dout_pin: GPIO9
    i2s_mode: primary

media_player:
  - platform: speaker
    name: "Camera Jardin Speaker"
    id: mp
    announcement_pipeline:
      speaker: spk
      format: WAV
      sample_rate: 16000
      num_channels: 1

alors ATTENTION!!! il y a des Avertissements lors de la compilation, cependant cela reste normal car la camera utilise des pins de la PSRAM, je vais bosser encore sur l’optimisation du code.

voici le code de la partition pour 16m de flash: a mettre dans un fichier “partitions_16mb_ota.csv”

#Name,   Type, SubType, Offset,   Size

nvs,      data, nvs,     0x9000,   0x5000
otadata,  data, ota,     0xE000,   0x2000
app0,     app,  ota_0,   0x10000,  0x700000
app1,     app,  ota_1,   0x710000, 0x700000
spiffs,   data, spiffs,  0xE10000, 0x1F0000

Pour info c’est la meme carte que celle de @silvhino
Fonctionnel:

  • cam
  • led + la rgb
  • haut parleur
  • micro
  • bouton mais je doit clarifier ce point
  • je passe par go2rtc pour frigate

J’ai prévu d’adjoindre à ce petit hardware déjà relativement bien fourni :

  • 2 leds IR 940nm de 3W ( suffisant pour une sonnette )
  • 1 driver led à courant constant de 700mA dimmable ( ce genre de led chauffe donc il faut un radiateur et allumer lorsque nécessaire )
  • 1 autre bouton
  • 1 détecteur de présence mais je ne sais pas encore lequel qui servirai plus pour « réveiller » la sonnette.

Je vais tenter de modéliser une boîte pour intégrer tout ça avec son haut parleur.

Par contre elle se situera à plus de 35m de la maison donc fort possible que le wifi ne serra pas très performant et si c’est le cas possible que je passe sur un modèle POE, je mettrais ça sur un autre sujet.

EDIT: conception du boitier en cours surement des petits details a corrigé, mais la on a deja la camera, le haut parleur, des petits conduit pour les micros, un trou pour les gouttes d’eau ( utile?? ), et 2 emplacements pour led IR 940nm.
Il me reste le support du bouton qui permettra de verouiller l’esp32 en place mais aussi de renforcer a cet endroit la au cas ou ce sont des bourrins qui appuis…

Slt , Ta réponse va au delà des mes espérances :smiley: tu as du bosser comme un dingue pour trouver tout ca, merci vraiment beaucoup pour ta réponse, je vais le ressortir le matos pour tester ta solution :smiley:

Salut, pour le moment c’est en pause, car j’ai eu des soucis avec un de mes disques dur, j’ai perdu beaucoup de données, du coup une grosse partie de mes modélisations et programmes sont perdu. Je doit refaire pas mal de choses donc j’ai mis le truc de côté. Mais je penses reprendre dans quelques temps pour ce qui est du design.

Sinon pour ce qui est des 3 boutons d’origine pas possible de les utiliser donc il faut ajouter un bouton supplémentaire.

En ce qui concerne le driver led infrarouge il est un peu gros donc je dois regarder comment l’intégrer.