Chciałbym przedstawić dwie proste aplikacje audio bazujące na module ESP32.
ESP32 posiada wbudowany DAC, ale jakość dźwięku generowanego przez niego jest bardzo niska.
Po krótkim teście z użyciem wewnętrznego DAC podłączyłem zewnętrzny kodek PCM5102. ESP32 pozwala dowolnie mapować piny I2S - możliwe jest połączenie dwóch modułów bokami 1:1 przy użyciu 5 zworek albo jak na zdjęciu przy użyciu 1 dużej 8-krotnej zworki:
* D4 - BCK
* D2 - DIN
* D15 - LCK (LRCK / WS)
* GND - GND
* 3V3 - VIN
Ponieważ zegar master nie jest użyty, zworka na wierzchniej stronie modułu PCM5102 koło pinu SCK powinna być zwarta.
Pager RTP odbiera strumienie audio G.711.a/u oraz G.722. Nasłuchuje na porcie 4000, dołączając się też do grupy multicast 234.2.1.1.
Nadajnikiem RTP może być większość średniej klasy telefonów VoIP (funkcja opisana najczęściej jako "multicast paging", ale w telefonach które widziałem adresy unicastowe jako adresy docelowe są również akceptowane) lub softfon - tSIP.
Projekt Scream to wirtualna karta dźwiękowa emitująca nieskompresowane próbki PCM. Jakość dźwięku byłaby niezła gdyby nie widoczna - przynajmniej u mnie - utrata pakietów (w przypadku pagera RTP mniej odczuwalna, być może ze względu na dziesięciokrotnie mniejsze pasmo). Strumień audio domyślnie wysyłany jest na adres multicast 239.255.77.77:4010 (skonfigurowany też w firmware).
Programy przygotowane zostały z użyciem ESP-IDF w wersji 3.3. W archiwach są też projekty Code::Blocks, ale używane były tylko do edycji kodu i można je zupełnie zignorować.
Wszystkie wersje oprogramowania używają mechanizmu SmartConfig do ustalenia SSID i hasła sieci WiFi (konfiguracja wstępna przez aplikację androida kodującą te ustawienia jako długość pakietów). Ustawienia zapisywane są w pamięci FLASH (SPIFFS) jako plik JSON. Zwarcie podczas startu pinu GPIO27 do masy powoduje wyzerowanie ustawień i ponowne włączenie SmartConfig.
Orientacyjne koszty:
- moduł ESP32: ~$4
- moduł PCM5102: ~$3
Załączniki:
- firmware pagera RTP używające wbudowanego DAC
- firmware pagera RTP z PCM5102 w dwóch wersjach z różnymi długościami bufora
- firmware odbiornika wirtualnej karty dźwiękowej
Dodatkowy opis: http://tomeko.net/projects/esp32_rtp_pager/
ESP32 posiada wbudowany DAC, ale jakość dźwięku generowanego przez niego jest bardzo niska.

Po krótkim teście z użyciem wewnętrznego DAC podłączyłem zewnętrzny kodek PCM5102. ESP32 pozwala dowolnie mapować piny I2S - możliwe jest połączenie dwóch modułów bokami 1:1 przy użyciu 5 zworek albo jak na zdjęciu przy użyciu 1 dużej 8-krotnej zworki:

* D4 - BCK
* D2 - DIN
* D15 - LCK (LRCK / WS)
* GND - GND
* 3V3 - VIN
Ponieważ zegar master nie jest użyty, zworka na wierzchniej stronie modułu PCM5102 koło pinu SCK powinna być zwarta.
Pager RTP odbiera strumienie audio G.711.a/u oraz G.722. Nasłuchuje na porcie 4000, dołączając się też do grupy multicast 234.2.1.1.
Nadajnikiem RTP może być większość średniej klasy telefonów VoIP (funkcja opisana najczęściej jako "multicast paging", ale w telefonach które widziałem adresy unicastowe jako adresy docelowe są również akceptowane) lub softfon - tSIP.
Projekt Scream to wirtualna karta dźwiękowa emitująca nieskompresowane próbki PCM. Jakość dźwięku byłaby niezła gdyby nie widoczna - przynajmniej u mnie - utrata pakietów (w przypadku pagera RTP mniej odczuwalna, być może ze względu na dziesięciokrotnie mniejsze pasmo). Strumień audio domyślnie wysyłany jest na adres multicast 239.255.77.77:4010 (skonfigurowany też w firmware).

Programy przygotowane zostały z użyciem ESP-IDF w wersji 3.3. W archiwach są też projekty Code::Blocks, ale używane były tylko do edycji kodu i można je zupełnie zignorować.
Wszystkie wersje oprogramowania używają mechanizmu SmartConfig do ustalenia SSID i hasła sieci WiFi (konfiguracja wstępna przez aplikację androida kodującą te ustawienia jako długość pakietów). Ustawienia zapisywane są w pamięci FLASH (SPIFFS) jako plik JSON. Zwarcie podczas startu pinu GPIO27 do masy powoduje wyzerowanie ustawień i ponowne włączenie SmartConfig.
Orientacyjne koszty:
- moduł ESP32: ~$4
- moduł PCM5102: ~$3
Załączniki:
- firmware pagera RTP używające wbudowanego DAC
- firmware pagera RTP z PCM5102 w dwóch wersjach z różnymi długościami bufora
- firmware odbiornika wirtualnej karty dźwiękowej
Dodatkowy opis: http://tomeko.net/projects/esp32_rtp_pager/
Cool? Ranking DIY