
Das ESP32Cam Modul hat noch ein paar freie Pins, wenn man die integrierte SD-Karte nicht verwendet. Mit zwei einfachen kleinen Servos und einer kleinen Platine wird daraus schnell eine Quadhac, eine Quick And Dirty Home Assistant Camera. Nicht schön, aber funktionabel. Mit ihr kann man über ESPHome die Kamera aus allen Teilen der Welt zu Hause steuern, um das Heim immer schön im Focus zu behalten. Alle Druckdateien und Gerber-Files gibt es hier.
Druckdateien:
Für die Steuerung kann in Home Assistant über ESPHome eine Steuerung erstellt werden. Den Code dafür gibt es unten. Dieser wird in einer *.yaml Datei gespeichert und kann z.B. über das ESPHome Programm in der Kommandozeile erstellt werden. Dazu sind folgende Befehle hilfreich, wenn man sich im Ordner der *.yaml Datei befindet:
Zum Kompilieren der Datei –> esphome compile dateiname.yaml
Zum Hochladen der Datei –> esphome upload dateiname.yaml
Wenn alles geklappt hat, kann man es über die ESPHome Einstellung in Home Assistant einbinden. Dann kann es z.B. so aussehen:

Hier der Code für die ESPHome Umgebung:
esphome: # Name der Kamera an diversen Stellen von cam04 anpassen. name: cam04 esp32: board: esp32cam framework: type: arduino api: password: "*****" # Ein beliebiges PW für die Anmeldung in Home Assistent ota: - platform: esphome password: "*****" # PW für den Zugang zu "Over The Air" wifi: ssid: "*****" # Eigener Netzwerkname password: "*****" # Eigenes PW fast_connect: false ap: ssid: "cam04 Fallback Hotspot" password: "*****" # PW vom Notfallhotspot, falls die Anmeldung nicht klappt # manual_ip: # Das Auskommentierte ist nur notwendig, wenn man keine feste IP vom Router bekommt # static_ip: 192.168.0.222 # gateway: 192.168.1.1 # subnet: 255.255.255.0 reboot_timeout: 60s # statt 15s oder 20s captive_portal: esp32_camera: name: cam04 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 resolution: 640x480 # vertical_flip: False # horizontal_mirror: True esp32_camera_web_server: - port: 8080 mode: stream - port: 8081 mode: snapshot output: # Hier werden die Pins für die Servos belegt. - platform: ledc id: servo_h pin: GPIO14 frequency: 50 Hz - platform: ledc id: servo_v pin: GPIO13 frequency: 50 Hz - platform: gpio pin: GPIO4 id: led_flash servo: - id: horizontal_servo output: servo_h min_level: 2.5% max_level: 12.5% - id: vertical_servo output: servo_v min_level: 2.5% max_level: 12.5% # Option 1: Kontrolle über Home Assistant number: - platform: template name: "Servo Horizontal cam04" min_value: 0 max_value: 180 step: 1 set_action: then: - servo.write: id: horizontal_servo level: !lambda return (x - 90) / 90; - platform: template name: "Servo Vertikal cam04" min_value: 0 max_value: 180 step: 1 set_action: then: - servo.write: id: vertical_servo level: !lambda return (x - 90) / 90; light: - platform: binary name: "Kamera-LED cam04" output: led_flash logger: level: DEBUG