Möchtest du dein Smart Home mit einer Prise Entspannung und moderner Technologie aufwerten? In diesem Tutorial zeige ich dir, wie du eine smarte „Zwitscherbox“ baust – ein DIY-Gerät, das automatisch beruhigende Klänge wie Vogelgezwitscher oder Dschungel-Atmosphäre abspielt, sobald es deine Anwesenheit erkennt. Mithilfe eines mmWave-Präsenzsensors und der nahtlosen Integration in Home Assistant bietet dieses Projekt präzise Bewegungs- und Präsenz-Erkennung sowie vielseitige Automatisierungsmöglichkeiten für jeden Raum in deinem Zuhause. Egal, ob du neu in der Welt der DIY-Elektronik bist oder bereits Erfahrung hast, diese Schritt-für-Schritt-Anleitung hilft dir, deine eigene smarte „Zwitscherbox“ zu bauen und mühelos die perfekte Atmosphäre zu schaffen.

Hier das Video zum Tutorial (Hinweis: Video nur auf Englisch verfügbar):

Benötigte Komponenten

Um dieses Projekt zu starten, benötigen wir die folgenden Komponenten:

  • Ein ESP32-Entwicklungsboard, zum Beispiel ein D1 Mini ESP32
  • Einen LD2420 mmWave-Präsenzsensor
  • Einen MAX9857A-Verstärker
  • Einen 5W-Lautsprecher
  • Ein 5V-Netzteil und ein USB-Kabel
  • Einige Jumper-Kabel
  • Einen 3D-Drucker + Filament ODER einen 3D-Druckservice

Schaltplan

Das ESP32-Entwicklungsboard ist das Herzstück der Architektur. Es verbindet sich mit dem LD2420-Präsenzsensor und dem MAX98573A-Verstärker. Der LD2420 erkennt Anwesenheit, und sobald eine Anwesenheit festgestellt wird, wird über den MAX98573A-Verstärker der Ton auf dem Lautsprecher abgespielt.

ESPHome YAML Code

Nachdem wir alles verkabelt haben, müssen wir die Software für das ESP32-Entwicklungsboard vorbereiten, kompilieren und flashen. Dafür verwenden wir ESPHome, das eine sehr einfache Konfiguration nur mit YAML-Dateien ermöglicht. Um zu verstehen, wie du ESPHome-Code für das ESP32-Entwicklungsboard kompilieren und flashen kannst, folge bitte den offiziellen Dokumentationen. Im folgenden Listing findest du den ESPHome-YAML-Code.

Es wird davon ausgegangen, dass du alles genau wie oben gezeigt verkabelt hast, sodass alle GPIOs übereinstimmen. Beachte bitte, dass YOUR_ENCRYPTION_KEY, YOUR_OTA_PASSWORD und YOUR_AP_PASSWORD nur Platzhalter sind, da diese Schlüssel/Passwörter normalerweise von ESPHome automatisch generiert werden. Bitte ersetze YOUR_FILE_URL durch die URL deiner Audiodatei.

esphome:
  name: smart-twitterbox
  friendly_name: smart-twitterbox

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: YOUR_ENCRYPTION_KEY

ota:
  - platform: esphome
    password: YOUR_OTA_PASSWORD

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Smart-Twitterbox"
    password: YOUR_AP_PASSWORD

captive_portal:

uart:
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 115200
    
ld2420:

text_sensor:
  - platform: ld2420
    fw_version:
      name: LD2420 Firmware

sensor:
  - platform: ld2420
    moving_distance:
      name : Moving Distance

binary_sensor:
  - platform: ld2420
    has_target:
      name: Presence
      on_press: 
        - media_player.play_media: 'https://YOUR_NABU_CASA_ID.ui.nabu.casa/local/bird_twitter.mp3' 

select:
  - platform: ld2420
    operating_mode:
      name: Operating Mode

number:
  - platform: ld2420
    presence_timeout:
      name: Detection Presence Timeout
    min_gate_distance:
      name: Detection Gate Minimum
    max_gate_distance:
      name: Detection Gate Maximum
    gate_select:
      name: Select Gate to Set
    still_threshold:
      name: Set Still Threshold Value
    move_threshold:
      name: Set Move Threshold Value

button:
  - platform: ld2420
    apply_config:
      name: Apply Config
    factory_reset:
      name: Factory Reset
    restart_module:
      name: Restart Module
    revert_config:
      name: Undo Edits

i2s_audio:
  - id: i2s_in
    i2s_lrclk_pin: GPIO27
    i2s_bclk_pin: GPIO26
  - id: i2s_out
    i2s_lrclk_pin: GPIO25
    i2s_bclk_pin: GPIO14

media_player:
  - platform: i2s_audio
    name: "Twitterbox Mediaplayer"
    i2s_audio_id: i2s_out
    id: speaker_i2s
    dac_type: external
    i2s_dout_pin: GPIO32
    mode: mono

switch:
  - platform: template
    name: "Play sound"
    id: "play_sound"
    turn_on_action:
      - media_player.play_media: YOUR_FILE_URL
      - switch.turn_off: play_sound

Gehäuse drucken

Der nächste Schritt ist es, das Gehäuse mittels 3D Drucker zu drucken oder über einen Online 3D Druck Service drucken zu lassen. Die erforderlichen STL Dateien kannst Du hier herunterladen:

https://www.printables.com/de/model/1000815-diy-twitterbox-box-plays-sound-when-person-present

Probiere es aus!

Nachdem du alles verkabelt hast, kannst du mit dem Gerät herumspielen. Es sollte die definierte Audiodatei (YOUR_FILE_URL) abspielen, sobald eine Person anwesend ist.

Comments are closed