-
Data: 2022-09-13 10:38:43
Temat: Radio internetowe DIY - dziwne zrywanie dźwięku
Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Korzystając z chwili wolnego wróciłem do jednego ze swoich starych
projektów edukacyjnych - sprzętowego radia Internetowego. Projekt zaczął
powstawać jakiś czas temu w wyniku frustracji faktem, że komercyjnie
dostępne wieże stereo z funkcją "radia internetowego" często są zależne
od zewnętrznego serwera. Postanowiłem więc złożyć coś podobnego, gdzie
mógłbym po prostu sam ustawiać linki do streamów.
Konfiguracja sprzętowa urządzenia wygląda następująco:
- Mikrokontroler PIC32MX795F512 pracujący na taktowaniu 80 MHz
- Łączność sieciową zapewnia wbudowany w MCU moduł MAC, z zewnętrznym
PHY DP83848, mamy więc do dyspozycji Fast Ethernet.
- Dekodowanie streamów bierze na siebie VS1053, chociaż pewnie sam
mikrokontroler poradziłby sobie z tym programowo.
- Dostępne nośniki pamięci to karta microSD (po SPI), pendrive oraz
niewielki (bodajże 2MB) chip pamięci SPI Flash.
- Wszystko zamontowane na dwustronnej płytce, wykonanej samodzielnie
metodą termotransferu. To chyba najbardziej szczegółowa i skomplikowana
płytka jaką wykonałem w domowych warunkach.
Od strony programowej wykorzystuję raczej standardowe komponenty, m.in.
bibliotekę TCP/IP MLA od Microchipa oraz FATFS. Znaleziony na GitHubie
kod do obsługi VS1053 musiałem nieco rozbudować, tworząc maszynę stanów
skończonych, odpowiedzialną za odtwarzanie pojedynczych plików, całych
katalogów oraz streamów HTTP/ICY z sieci.
Odtwarzanie funkcjonuje w ten sposób, że mam dwuczęściowy bufor (w tej
chwili 2x8 kB). Gdy jednak połówka zasila danymi chip VS1053, druga jest
wypełniana danymi odczytywanymi z pliku lub przychodzącymi z serwera.
Gdy dane się skończą, następuje podmiana. Oczywiście do tego dochodzi
jeszcze bufor odbiorczy gniazda sieciowego (4 kB).
Kod odpowiedzialny za połączenie posiada pewne zabezpieczenia. Jeśli
dane przestaną przychodzić zostanie wywołany timeout i połączenie z
serwerem zostanie zamknięte i zainicjowane ponownie. To samo stanie się
w przypadku wykrycia utraty połączenia.
Wszystko to działa dość sprawnie. Tak naprawdę działało nawet na
mniejszych buforach (2x4 kB). Jakość dźwięku jest dobra, przycięcia
zdarzają się rzadko. Jednak już kilka razy zauważyłem dziwny objaw,
który nieco mnie zaintrygował.
Mianowicie pojawiła się sytuacja, kiedy dźwięk zaczął zrywać w sposób
przypominający zaciętą płytę gramofonową. Zupełnie jakby nowe dane
przestały przychodzić, albo przychodziły w zbyt wolnym tempie. Zazwyczaj
występuje też wtedy zrywanie połączenia albo timeout spowodowany brakiem
nowych danych. Do tej pory sytuacja wystąpiła kilka razy, zawsze po
wielu godzinach pracy urządzenia, jednak mógł to być tylko przypadek.
Co w tym takiego intrygującego?
- Gdy sytuacja wystąpi, dotyczy wszystkich streamów, nadawanych z
różnych serwerów
- Reset płytki nie pomaga, nawet przez chwilowe odłączenie zasilania
- W tym czasie zupełnie normalnie odtwarzane są pliki z nośników
lokalnych, więc to nie problem ze sprzętowym dekoderem
- Po chwili problem mija sam
- Na komputerze podpiętym do tego samego routera i switcha nie
doświadczam w tym momencie żadnych problemów z dostępem do Internetu
- Podczas występowania problemu mogę pingować płytkę i odczytywać dane z
prostego serwera HTTP, odpalonego na niej. Nie jest więc tak, że traci
ona połączenie zupełnie. Zresztą kolejne połączenia z serwerami są
inicjowane poprawnie (200 OK) ale zrywanie występuje nadal.
Ktoś ma jakiś pomysł co może być nie tak? Fakt, że reset płytki nie
pomaga wskazywałby na jakiś problem z moją infrastrukturą, chwilowo nie
mam jednak pomysłów...
Następne wpisy z tego wątku
- 13.09.22 15:03 adam13lat
- 13.09.22 19:04 Mirek
- 14.09.22 10:38 Atlantis
- 14.09.22 10:58 Atlantis
- 14.09.22 11:09 ptoki (ptoki)
- 14.09.22 16:07 adam13lat
- 15.09.22 09:03 Atlantis
- 15.09.22 09:23 Marek
- 15.09.22 09:35 Atlantis
- 15.09.22 09:58 SW3
- 15.09.22 09:58 Arnold Ziffel
- 15.09.22 10:09 adam13lat
- 15.09.22 15:44 Atlantis
- 15.09.22 18:04 adam13lat
- 15.09.22 18:14 Marek
Najnowsze wątki z tej grupy
- System operacyjny dla 6800?
- Przyłączenie działki do sieci elektrycznej
- Działalność nierejestrowana/definicja sprzętu elektronicznego/misie i kolejki
- Smukły, długi ściągacz izolacji do kynaru
- rezystor 3 omy 400W
- [newbie] Jaki multimetr za 2-4 stówy?
- szafka sieciowa
- Raspberry Pi 5 + dyski SATA
- lutownica na węgiel
- Znów czary (albo niewiedza) - tym razem fotowoltaika
- Chess
- Vitruvian Man - parts 7-11a
- przeźroczyste koszulki
- Re: Win 10/11 nie lubi OKI
- Programator czasowy TUYA.
Najnowsze wątki
- 2024-05-18 Warszawa => Mid PHP Developer (Laravel) <=
- 2024-05-18 Warszawa => Software .Net Developer <=
- 2024-05-18 Warszawa => Mid/Senior QA Engineer <=
- 2024-05-18 Ulm => Solution Architect (sichere Kommunikation und IoT-Loesungen <=
- 2024-05-18 Katowice => Head of Virtualization Platform Management and Operating S
- 2024-05-18 Warszawa => SAP WM Consultant / Execution <=
- 2024-05-18 Wrocław => Consultant/Implementer Comarch ERP XL <=
- 2024-05-18 Gdańsk => Head of International Freight Forwarding Department <=
- 2024-05-18 Warszawa => Account Manager (Recruitment Services) <=
- 2024-05-18 Łódź => Salesperson - CRM Systems <=
- 2024-05-18 Łódź => Handlowiec - Systemy CRM <=
- 2024-05-17 ZŁOMNIK o pracy w TVN TURBO, nowych przepisach i współczesnej motoryzacji. Turbo Taryfa!
- 2024-05-17 Białystok => DevOps Engineer Conexa First (Contractor) <=
- 2024-05-17 Warszawa => Starszy inżynier oprogramowania (Rust) <=
- 2024-05-17 Zabrze => Junior HelpDesk <=