ESP32-CAM Dokumentation

esp32cam.jpg

Übersicht

Das ESP32-CAM Board basiert auf dem ESP32-S Chip und bietet eine kostengünstige Lösung für Kameraanwendungen in IoT-Projekten. Es verfügt über einen OV2640 Kamerasensor und unterstützt verschiedene Betriebsmodi.

Hardware Eigenschaften

  • Mikrocontroller: ESP32-S
  • Kamera: OV2640 (2MP)
  • Flashlicht: Integrierte weiße LED
  • GPIO-Pins: Mehrere verfügbare Pins für Erweiterungen
  • Kommunikation: WLAN 2.4 GHz
  • Stromversorgung: 5V

Ersteinrichtung

Flashen des Boards

Das Board muss für die erste Programmierung in den Flash-Modus versetzt werden:

  1. Verbinden Sie das Board über einen USB-zu-TTL-Adapter (z.B. FTDI oder CP2102) mit Ihrem Computer
  2. Stellen Sie folgende Verbindungen her:
    • ESP32-CAM GND → Adapter GND
    • ESP32-CAM 5V/3.3V → Adapter 5V/3.3V (je nach Adapter)
    • ESP32-CAM U0R (RX) → Adapter TX
    • ESP32-CAM U0T (TX) → Adapter RX
  3. Verbinden Sie GPIO0 (IO0) mit GND, um den Flash-Modus zu aktivieren
  4. Drücken Sie kurz den RST-Button auf der Rückseite des Boards
  5. Führen Sie das Flashen mit Arduino IDE, ESPHome oder esptool durch
  6. Nach dem Flashen: Entfernen Sie die Verbindung zwischen GPIO0 und GND
  7. Drücken Sie erneut den RST-Button, um das Board neu zu starten

Integration in Home Assistant mit ESPHome

Basis-Konfiguration

substitutions:
  devicename: esp-cam
  upper_devicename: ESP32-Cam

esphome:
  name: $devicename
  friendly_name: $upper_devicename

esp32:
  board: esp32dev
  framework:
    type: arduino
 
# Aktiviere Logging
logger:
  level: WARN
 
# Externe Pakete einbinden
packages:
  wifi: !include packages/wifi.yaml
  mqtt: !include packages/mqtt.yaml
  ota:  !include packages/ota.yaml

Kamera-Konfiguration

esp32_camera:
  name: $upper_devicename
  id: my_camera
  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
  idle_framerate: 0.1fps
  max_framerate: 10fps
 
  # Bildeinstellungen
  contrast: 0
  special_effect: none
  # Belichtungseinstellungen
  aec_mode: auto
  aec2: false
  ae_level: 0
  aec_value: 300
  # Verstärkungseinstellungen
  agc_mode: auto
  agc_gain_ceiling: 2x
  agc_value: 0
  # Weißabgleich-Einstellung
  wb_mode: auto
  # Ausrichtung
  vertical_flip: False
  horizontal_mirror: False

Webserver und LED-Steuerung

# Kamera-Webserver
esp32_camera_web_server:
  - port: 80
    mode: stream
  - port: 81
    mode: snapshot

output:
  - platform: ledc
    pin: GPIO4
    id: gpio_4
    channel: 2
    frequency: 500Hz

light:
  # Für die weiße LED
  - platform: monochromatic
    output: gpio_4
    name: $upper_devicename Flash LED
  # Für die rote Status-LED
  - platform: status_led
    name: $upper_devicename Status LED
    id: cam_streaming
    pin:
      number: GPIO33
      inverted: true

WLAN-Konfiguration (Beispiel)

wifi:
  # Feste IP-Adresse (passen Sie diese an Ihr Netzwerk an)
  manual_ip:
    static_ip: 192.168.178.40
    gateway: 192.168.178.1
    subnet: 255.255.255.0
  # Alternative: Dynamische IP
  # ssid: "IHR_WLAN_NAME"
  # password: "IHR_WLAN_PASSWORT"

Kamera-Zugriff

Nach erfolgreicher Einrichtung können Sie auf die Kamera zugreifen:

Troubleshooting

Bekannte Probleme

  1. Niedrige Bildrate (FPS)
    • Mögliche Ursache: Interferenzen zwischen IO0 und der WLAN-Antenne
    • Lösung: Abschirmung des IO0-Pins mit antistatischer Folie oder durch Berührung
    • Alternativ: Positionierung des Boards entfernt von Störquellen
  2. Verbindungsprobleme
    • Überprüfen Sie die Stromversorgung (mindestens 5V/1A empfohlen)
    • Stellen Sie sicher, dass sich das Board in Reichweite des WLAN-Routers befindet
    • Versuchen Sie eine Firmware-Aktualisierung

Abschirmung des IO0-Pins mit antistatischer Folie