Keresés

Új hozzászólás Aktív témák

  • pelgrim_v1

    tag

    válasz Aryes #48444 üzenetére

    Huh ezt a notepadet nem akartam megosztani de végülis én még csak most tanulom és fedezem fel a dolgot, hátha észre vesztek hibát az elméletemben/matematikámban:

    1. Miért ESP-NOW?

    ESP-NOW az ESP32 saját protokollja. Nagyon gyors, WiFi kapcsolat felépítése nélkül működik. Broadcast üzemmód is van benne → nem kell egyesével minden vevőnek külön üzenetet küldeni. Kicsi késleltetés (2–10 ms egy csomag küldés). Stabil 50 méterig normál antennával (külső antennával még több). Akár 20-30 vevőt is stabilan elbír, ha az üzenet kicsi.

    Tehát: Broadcast üzemmódban egyetlen üzenet elküldésével minden vevő megkapja ugyanazt a jelet egyszerre.
    Ezért nem nő a processzor vagy hálózat terhelése a vevők számával (csak 1 üzenet megy ki).

    2. Miért kell tömöríteni a hangot?

    A mikrofonból érkező nyers audio adat:

    8 bit/sample, 8 kHz mintavételi frekvencia → 64 kbps nyers adatsebesség.

    ESP-NOW kb. 1-2 Mbps elméleti maximumot tud, de stabil adatküldéshez ajánlott max 100–150 kbps körül maradni.

    Szóval:

    A 64 kbps még belefér, DE a rádiócsatorna ütközések, újraküldések miatt jobb, ha tömörítjük. Kisebb adat → kisebb energiahasználat, kevesebb hibalehetőség, stabilabb kapcsolat.

    Tömörítési ötlet:

    Egyszerű ADPCM kódolás (Adaptive Differential Pulse-Code Modulation). Ezzel kb. 4:1 arányú tömörítés elérhető nagyon pici CPU igénnyel. Így lemegy az audio adat sebessége kb 16 kbps-re. Ez 30 eszközre broadcastban simán megy egy ESP32-ről.

    Matematikai alapon:

    8kHz × 8bit = 64kbps (nyers) ADPCM 4:1 → kb. 16kbps

    ESP-NOW:

    1 üzenetben maximum 250 byte adat lehet. 16kbps / 250 byte = kb. 80 üzenet/másodperc kell.

    ESP32 bír kb. 200-300 üzenetet másodpercenként → bőven elég.

    3. Program működési elve

    Adó (Guide Device):

    Mikrofon ADC-n → mintavételezés 8kHz-en. Minták → ADPCM tömörítés → bufferelés → 250 byte pakkokba rakás. ESP-NOW broadcast a 30 vevőnek. LED/Kijelző mutatja az akksi szintet. Gombok: On/Off, Reset, Mikrofon érzékenység.

    Minden gombnyomásra újraindíthatja a csatlakozási folyamatot, ha kell.

    Vevő (Listener Device):

    Bekapcsoláskor automatikusan elkezd hallgatni ESP-NOW broadcastot. Ha érkezik adat:
    ADPCM vissza-dekódolás → PCM stream. PCM stream lejátszása DAC kimeneten (vagy I2S audio kimenet, ha szebb minőséget akarunk).
    LED vagy kijelző mutatja a töltöttségi szintet. Gombok: On/Off, Hangerő állító, Reset.

    Nulla konfiguráció: csak bekapcsolják és működik.

    4. Erőforrás igény számítás (ESP32)

    Adó oldal:

    ADPCM tömörítés: kb. 10–15% CPU (80MHz-en). Mikrofon ADC olvasás: nagyon kicsi CPU (~2–3%). ESP-NOW küldés: kb. 20–30% CPU.

    Összesen: kb 50%-60% CPU használat → még marad bőven kapacitás!

    Vevő oldal:

    ESP-NOW fogadás: 5–10% CPU. ADPCM dekódolás: 10% CPU. PCM stream lejátszás: 15% CPU.

    Összesen: kb 30–35% CPU → nagyon laza terhelés.

    Ezért elég egy normál ESP32-WROOM-32 modul, nem kell semmi extrém gyors.

    5. Miért broadcast?

    Broadcast = minden csatlakoztatott vevő ugyanazt a csomagot kapja egyszerre. Így nem kell minden eszköznek külön küldeni. Ezért tudod stabilan 30 eszköznek is szórni az adatot egyszerre.

    6. Hálózati működés - hogyan indul el egy gombnyomásra?

    Bekapcsolási folyamat:

    Adó: Mikor bekapcsol → automatikusan elkezdi broadcastolni a hangot egy fix MAC-címes ESP-NOW üzenetként. Vevők: Bekapcsoláskor → automatikusan elkezdenek “hallgatni” ESP-NOW üzenetekre. Ha kapnak broadcast üzenetet az adótól → automatikusan csatlakoznak és elkezdik a hangot játszani.

    Nincs kézi párosítás, nincs konfiguráció → csak bekapcsolják mindkét oldalt, és pár másodperc múlva megy is.

Új hozzászólás Aktív témák