No description
Find a file
2026-09-24 00:02:27 +02:00
.gitignore minimal besser 2026-09-24 00:02:27 +02:00
birdnet-mic.yaml minimal besser 2026-09-24 00:02:27 +02:00
README.md readme 2026-09-22 19:27:32 +02:00
RTSPMicesp32c6.ino minimal besser 2026-09-24 00:02:27 +02:00

ESP32-C6 RTSP Audio Streamer für BirdNET-Go

Dieses Repository enthält die Firmware für einen autarken RTSP-Audiostreamer auf Basis des Seeed Studio XIAO ESP32-C6 und eines I2S-MEMS-Mikrofons (ICS-43434).

Der Streamer erfasst Audio mit 48 kHz / 16 Bit Mono und stellt es als standardkonformen RTSP/RTP-Stream bereit, der direkt von BirdNET-Go (z. B. im Docker-Container auf einem NAS) oder VLC verarbeitet werden kann.


Features

  • Direktes I2S-DMA-Sampling: Nutzt den Treiber driver/i2s_std.h (ESP-IDF 5.x) für unterbrechungsfreie Audioaufnahme ohne CPU-Spikes.
  • RFC 3550 L16 Standard: Skalierung von 32-Bit-I2S-Rohdaten auf 16-Bit-PCM inklusive Konvertierung in Big-Endian (Network Byte Order).
  • TCP-Interleaved RTP: Erzwingt RTSP-Streaming über TCP (Port 8554), wodurch Verbindungsprobleme durch Docker-NAT-Bridges oder blockierte UDP-Ports umgangen werden.
  • Low-Latency Wi-Fi: Deaktivierter Modem-Sleep (WiFi.setSleep(false)) verhindert zyklische Ping-Latenzen und Pufferüberläufe.

Hardware & Pinbelegung

Komponenten

  • MCU: Seeed Studio XIAO ESP32-C6 (mit externer 2,4-GHz-Stabantenne)
  • Mikrofon: TDK InvenSense ICS-43434 (I2S MEMS, Bottom-Port)

Verdrahtung

Mikrofon XIAO ESP32-C6 Pin GPIO Beschreibung
VDD 3V3 – Versorgungsspannung (3,3 V – niemals an 5 V!)
GND GND – Masse
L/R GND – Kanalwahl (GND = linker Slot / I2S_STD_SLOT_LEFT)
SCK / BCLK D0 GPIO 0 I2S Bit Clock
WS / LRCLK D1 GPIO 1 I2S Word Select (Sample-Takt 48 kHz)
SD / DOUT D2 GPIO 2 I2S Serial Data Out -> DIN

Wichtig: Die externe 2,4-GHz-Antenne am U.FL-Anschluss des XIAO ESP32-C6 muss zwingend aufgesteckt sein, um Paketverlust und Verbindungsabbrüche im WLAN zu vermeiden.


Konfiguration & Flashen

Voraussetzungen

  • Arduino IDE (mit installiertem ESP32-Boardpaket >= 3.0.0) oder PlatformIO
  • Boardauswahl: Seeed Studio XIAO ESP32-C6 (oder ESP32C6 Dev Module)
  • USB-CDC On Boot: Aktiviert (Enabled)

Anpassung

Passe vor dem Kompilieren in main.cpp die WLAN-Zugangsdaten an:

const char* ssid     = "DEINE_SSID";
const char* password = "DEIN_WLAN_PASSWORT";

Nach dem erfolgreichen Flashen gibt der serielle Monitor (115200 Baud) die RTSP-URL aus:

RTSP URL: rtsp://<ESP32-IP>:8554/stream

Einbindung in BirdNET-Go

  1. Web-Dashboard von BirdNET-Go öffnen (http://<NAS-IP>:5069).
  2. Unter Settings -> Audio / Input einen neuen Stream anlegen:
    • Stream-Name: ESP32-C6 Mikrofon
    • Stream-URL: rtsp://<ESP32-IP>:8554/stream
    • Stream-Typ: RTSP
    • Protokoll: TCP
  3. Auf Stream testen klicken und speichern.

Lokaler Test (VLC Media Player)

Um den Stream unabhängig von BirdNET-Go zu verifizieren:

  1. VLC öffnen -> Strg + N (Netzwerkstream öffnen).
  2. URL eingeben: rtsp://<ESP32-IP>:8554/stream.
  3. Auf Wiedergabe klicken. Das Mikrofon überträgt die Umgebungsgeräusche in Echtzeit.