BSW | Old Time Player

Old Time Player

Wielu z nas swoją przygodę z elektroniką rozpoczynała od układów audio. To ogromna satysfakcja słuchać muzyki z samodzielnie poskładanego wzmacniacza, na własnoręcznie zbudowanych kolumnach głośnikowych. Gdyby tak jeszcze odtwarzacz audio do kompletu też samemu skonstruować...

Urządzenie które pragnę zaprezentować łączy w sobie funkcję wzmacniacza i kolumny głośnikowej, ale przede wszystkim cyfrowego odtwarzacza plików muzycznych. A wszystko to w starej stylowej obudowie lampowego odbiornika radiowego. Model ten zbudowałem jako rozwiązanie zadania numer 163 Szkoły Konstruktorów, którego tematem było: "Wykorzystanie starego komputera". A stary komputer PC 486 jest zasadniczą częścią mojego odtwarzacza. Współpracując z modułem sterowania opartym na nieco młodszym procesorze od firmy Atmel tworzą razem zgrany duet.

Rozwiązania które zastosowałem są odrobinę nietypowe, ale mam nadzieję że zainspirują do działania niejednego czytelnika. Omawianie konstrukcji zacznę niejako od tyłu - od obudowy. A przechodząc przez wszystkie elementy dojdę do źródła... sygnału audio rzecz jasna :-). W drugiej części omówię w skrócie zastosowane przeze mnie oprogramowanie.

Konstrukcja urządzenia

Obudowa. Jakiś czas temu wszedłem w posiadanie resztek radioodbiornika Pionier, pochodzącego z lat 50-tych ubiegłego wieku. Obudowa była w bardzo złym stanie. Wewnątrz były resztki chasis i niekompletne gałki. Nie było głośnika. Zachowała się za to oryginalna szybka - ze stacją Stalinogród na skali! Obudowę odnowiłem - musiałem ją pokleić, poszpachlować, uzupełnić ubytki forniru i polakierować. W trakcie tej renowacji myślałem o wmontowaniu do środka jakiegoś radyjka, ale przy okazji tematu zadania szkoły konstruktorów wpadłem na bardziej szalony pomysł zbudowania stylowego odtwarzacza muzycznego.

Moduł sterowania. Odbiornik Pionier oryginalnie posiadał dwie gałki. Jedna do regulacji głośności druga do strojenia. W mojej konstrukcji pierwsza gałka pełni taką samą funkcję jak w oryginale czyli wyłącznik i regulacja głośności. Pozostała druga gałka to jednak za mało do sterowania odtwarzaczem. Zdecydowałem się dorobić dodatkową trzecią. Na fotografii 1 widoczne są szczegóły konstrukcji modułu sterowania, umieszczonego na dość dużej płytce drukowanej. Dolną część tej płytki zajmują przełączniki gałek. Ich konstrukcję w zbliżeniu prezentuje fotografia 2. Przełączniki są sterowane poprzez obrót wałków, wykonanych ze skróconych gwoździ. Na wałki te nałożyłem tuleje ze śrubkami (wyjąłem je z dużej elektrycznej kostki zaciskowej). Właśnie te śrubki naciskają na odpowiedni przełącznik przy obrocie osi w lewo lub w prawo. Ponadto wałki-gwoździe opierają się na mikroprzyciskach przylutowanych bezpośrednio do płytki modułu sterowania i załączają je po naciśnięciu. Wałki obracają się swobodnie w tulejkach wklejonych distalem w kawałek pleksi. A pleksi przykręciłem, poprzez tulejki dystansowe, do płytki - w pewnej odległości od niej.

Większy dylemat miałem z wyświetlaczem. Jak to zrobić, aby nie zepsuć oryginalnego wyglądu radioodbiornika? Na środku skali umieściłem obrotową wskazówkę - prawie jak w oryginale, a poniżej 8 sekcji wyświetlacza 7-segmentowego LED. Są one ukryte za maskownicą wykonaną z brązowego papieru. Gdy są wyłączone na skali widać tylko wskazówkę, gdy zaś są włączone - widać tylko aktywne czerwone segmenty, które ciekawie kontrastują z zielonymi napisami na skali i żółtawym podświetleniem (bo szybkę ze skalą podświetliłem - oczywiście żarówką).

Zasadniczą rolę w module sterowania pełni mikrokontroler ATmega8. Odbiera on poprzez port szeregowy od komputera dane do wyświetlania. Do konwersji poziomu napięć interfejsu RS232 wykorzystałem prosty układ z tranzystorem i diodą Zenera - rozwiązanie takie stanowi alternatywę dla układu MAX232. Dzięki taktowaniu mikrokontrolera zegarem 11,0592MHz zminimalizowałem ryzyko błędów transmisji. Wyświetlacze LED są multipleksowane, a do sterowania anodami wyświetlacza wykorzystałem rejestr przesuwny - dla 8 sekcji wyświetlacza to oszczędność 6 portów procesora.

Widoczna na fotografii 1 biała plama to wklejona distalem rurka stanowiąca oś dla wspomnianej wcześniej, analogowej wskazówki. Do jej obracania wykorzystałem silnik krokowy, pochodzący ze starej stacji dyskietek 3,5cala. Ponieważ taki silniczek po wymontowaniu traci swoją geometrię, wyciąłem cały fragment napędu głowic ze stacji. Mechanizm ten przykręciłem na plecach dużej płytki. W miejsce głowicy stacji dyskietek przykręciłem popychacz (wygięty ze spinacza biurowego). Popychacz przesuwa wskazówkę za pomocą krzywki. Krzywka ta została przykręcona do osi wskazówki zaciskiem śrubowym - wydłubanym z małej elektrycznej kostki zaciskowej. Szczegóły tego rozwiązania są widoczne na fotografii 3. Mechanizm taki jest prosty i skuteczny. Dodatkowo na wyciętym fragmencie stacji dyskietek znajduje się oryginalny wyłącznik krańcowy - transoptor szczelinowy. Wykorzystałem go odczytując napięcie na jego fotoelemencie za pomocą przetwornika A/C mikrokontrolera.

Na płytce modułu sterowania zabrakło miejsca na sterowanie silnikiem krokowym. Sterownik ten, w moim wykonaniu, to dwa mostki H - razem 12 tranzystorów. Wraz z gniazdem programowania mikrokontrolera umieściłem go na osobnej płytce umieszczonej przy ściance bocznej. Ponadto na tej małej płytce umieściłem dwa układy LM317, umożliwiające regulację napięcia dla zasilania wentylatorów chłodzących krytyczne elementy we wnętrzu. Dzięki obniżeniu napięcia wentylatory pracują wolniej ale ciszej. Schemat ideowy modułu sterownika jest zaprezentowany na rysunku 1, a regulatora na rysunku 2.

Płytki drukowane zostały przeze mnie zaprojektowane w programie Eagle, wykonane metodą termotransferu, a po wytrawieniu zabezpieczone farbą IDEAvetro. Schemat montażowy sterownika przedstawiony jest na rysunku 3 a regulatora na rysunku 4.

Wnętrze skrzynki odtwarzacza. Na fotografii 4 widoczne jest wnętrze odtwarzacza. Obie zielone płytki modułu sterowania zostały omówione szczegółowo powyżej. W dolnej części sterownika przylutowana jest szara taśma, służąca do sterowania, jej drugi koniec podłączony jest do komputera. Czerwono-czarny przewód z kolei to magistrala szeregowa po której od komputera wędrują informacje do wyświetlenia. Nad płytką widoczna jest rurkowa żarówka samochodowa 12V5W oświetlająca skalę. Żarówka ta podłączona do 12V świeciła zbyt mocno a na 5V zbyt słabo. W rezultacie podłączyłem ją pomiędzy przewody 5V i 12V, a na powstałej różnicy napięć (7V) świeci idealnie. Na prawo od płytki sterownika znajduje się głośnik, przykręcony od środka do maskownicy.

Płytka pod głośnikiem to komputerowy zasilacz AT. Byłem zmuszony płytkę zasilacza wymontować z oryginalnej obudowy, bo inaczej nie zmieściłbym się we wnętrzu. Jednak nie zalecam takiego rozwiązania, ponieważ na płytce zasilacza panuje niebezpieczne napięcie sieciowe!

Z zasilacza kolorowe wiązki przewodów (oryginalne) rozprowadzają napięcia do wszystkich elementów systemu. Jednym z nich jest widoczny w prawym górnym rogu wzmacniacz audio - standardowa aplikacja na układzie TDA2030. Sygnał do niego jest doprowadzany z potencjometru znajdującego się we wcięciu dużej płytki sterownika. Jest to starego typu potencjometr z wyłącznikiem, który jednocześnie załącza napięcie sieciowe dla zasilacza. A sygnał na potencjometr trafia z karty muzycznej komputera...

Komputer. Jako bazy do konstrukcji użyłem blaszanego elementu starej obudowy desktop PC. W obudowach tego typu podstawa płyty głównej i tylna ściana do przykręcania kart rozszerzeń tworzyły jedną całość. Wyciąłem fragment z takiej obudowy tak, aby utworzyć tylną ściankę mojego odtwarzacza. Do elementu tego przykręcona jest płyta główna z procesorem 486DX133. Do płyty włożyłem karty rozszerzeń: muzyczną, sieciową oraz - tylko dla potrzeb serwisowych - graficzną. Ponadto do jednego ze slotów ISA zamontowałem na kawałku laminatu dysk twardy. Komputerowa tylna ścianka zamontowana jest na stalowym gwintowanym pręcie który stanowi zawias. Odchylając w bok tylną ściankę uzyskuje się dostęp do elementów komputera oraz wnętrza skrzynki odbiornika. Konstrukcja taka z odchylanym chassis stosowana była w starych lampowych telewizorach. Szczegóły tego rozwiązania są widoczne na fotografii 5.

Działanie. Na przedniej ściance urządzenia znajdują się 3 gałki. Pierwsza z nich, największa, okrągła to potencjometr, który służy do włączania i regulacji głośności. Po włączeniu musi się załadować system operacyjny komputera. Ale już po niespełna 20 sekundach z głośnika zaczyna wydobywać się muzyka (cóż - radio lampowe też musiało się rozgrzać :-)). Prawa gałka służy do zmiany odtwarzanego utworu: w lewo - poprzedni, w prawo - następny. Ponadto naciśnięcie tej gałki wstrzymuje/wznawia odtwarzanie. Środkową gałką analogicznie można zmieniać albumy (katalogi). Natomiast naciśnięcie środkowej gałki służy do zmiany trybu działania wyświetlacza. Można wybrać sekwencyjnie następujące tryby:
TIME - wyświetla czas bieżący utworu,
TITLE - nazwa wykonawcy i tytuł utworu (z ID3tag),
ALBUM - tytuł albumu,
SONG NBR. - numer bieżącego utworu - i ilość wszystkich,
SILENT - w trybie tym sygnalizowana jest tylko zmiana utworu i albumu jednorazowym jej wyświetleniem,
DISP.OFF - wyświetlacz całkiem wyłączony (jest dostępne tylko wskazanie analogowe :-)).
Dłuższe przytrzymanie tego przycisku restartuje program odtwarzający muzykę.

Urządzenie zapamiętuje ostatnio wybrany tryb wyświetlania. Odczytywanie napisów przewijanych na takim wyświetlaczu wymaga pewnej wprawy, ale jest wystarczająco czytelne. Zajmująca centralną pozycję za szybką skali wskazówka pokazuje postęp słuchania - z każdym utworem przesuwa się w prawo, pokazując proporcjonalnie pozycję wśród odnalezionych na dysku plików audio.

Ale co zrobić, gdy muzyka z dysku się znudzi? Wystarczy podłączyć do wbudowanej karty sieciowej kabel Ethernet lokalnej sieci (lub skrosowany kabel do komputera) i połączyć się z urządzeniem za pomocą dowolnego klienta FTP. Wymiana plików może następować w trakcie odtwarzania. Odtwarzacz świetnie sobie radzi z wszelkimi typami plików audio (mp3, aac, flac, wav i wiele innych). I jeszcze jedna zaleta DOS-a - nie trzeba go zamykać. Zatem odtwarzacz wyłączamy przekręcając gałkę potencjometru/wyłącznika.

Oprogramowanie urządzenia

Oprogramowanie odtwarzacza PC. Istnieje mnóstwo programów do odtwarzania muzyki na PC np. WinAmp, Foobar. Niestety pracują one w systemie Windows, a ten niezbyt dobrze nadaje się do pracy bez myszy i klawiatury. Ponadto w Windows mamy małą kontrolę nad uruchomianymi procesami, co powoduje długi start i zamykanie systemu oraz konieczność częstych interwencji w przebieg pracy (np. niechciane wyskakujące okienka).

Szukając oprogramowania do odtwarzania muzyki trafiłem na freeware'owy program Mpxplay. To konsolowy odtwarzacz rozmaitych plików audio. Posiada wbudowaną obsługę sprzętowych rozszerzeń jak wyświetlacze LCD, odbiorniki podczerwieni, czy klawiatury podłączane poprze porty LPT, RS232 czy port joystick'a. Program ten posiada wersję skompilowaną pod Win32 (tekstowa konsola systemu Windows), ale jego podstawowym systemem operacyjnym jest DOS.

DOS (ang. Disk Operation System) kojarzy się z prymitywnym systemem operacyjnym, który już dawno wyszedł z użycia, zastąpiony przez nowocześniejsze, wielozadaniowe, graficzne systemy operacyjne. Oryginalny MS-DOS powstał prawie 30 lat temu w firmie Microsoft. W międzyczasie powstało jednak wiele jego alternatywnych implementacji, a systemy te nadal są używane w specyficznych zastosowaniach. Jedną z jego wersji jest darmowy FreeDOS. Posiada on wiele innowacji których nie ma w oryginalnym DOS m in. obsługę FAT32, długich nazw plików, portu USB i sieci TCP/IP. Mpxplay posiada wbudowany serwer FTP zatem urządzenie zbudowane w oparciu o FreeDOS/Mpxplay można spróbować nazwać mianem "serwer muzyczny".

System DOS. Jedną z podstawowych zalet systemu DOS są jego niskie wymagania sprzętowe. Do budowy systemu takiego jak mój wystarczy już jakieś stare Pentium 133 lub nawet 486. Instalacja i konfiguracja systemu DOS nie jest tak prosta jak Windowsa ale jeśli wiemy co i jak robić - trwa krócej :-).

System FreeDOS jest rozpowszechniany w internecie jako obraz płyty instalacyjnej CD lub dyskietki. Ja wybrałem tę drugą opcję - ale wymaga ona posiadania komputera ze stacją dyskietek, co może być problematyczne. Ponadto praca w czystym DOS polegająca na mozolnym wklepywaniu poleceń nie jest przyjemna. Ale od czego są menedżery plików? Ja używam klona programu Norton Commander o nazwie Volkov Commander w wersji 5 (a właściwie 4.99). To mały i zgrabny programik, który ma ponadto obsługę długich nazw plików (co nie jest typowe dla większości programów dla DOS). FreeDOS którego użyłem w moim urządzeniu został sporo okrojony. Zawartość mojego dysku C:\ wraz z opisem przedstawiam w tabeli 1. Pliki konfiguracyjne zawierają listing 1 - CONFIG.SYS oraz listing 2 - AUTOEXEC.BAT (komentarze zaczynają się słowem REM).

Program MPXPLAY. Program mpxplay posiada quasi-graficzny interfejs użytkownika. Ale do moich potrzeb byłby zbędny. Dlatego uruchamiam go z parametrami przełączającymi go w tryb uproszczony. Dla poprawnej współpracy mpxplay z modułem sterowania niezbędne są zmiany w pliku konfiguracyjnym MPXPLAY.INI. Na listingu 3 przedstawiam fragment zawierający najważniejsze ustawienia.

Program dla modułu sterowania. Program napisałem w języku C, wykorzystując środowisko WinAVR. Ma on dość prostą budowę. W funkcji głównej main() następuje konfigurowanie rejestrów procesora (porty, timery itd.) W pętli głównej tej funkcji obsługiwany jest jedynie przycisk do zmiany formatu wyświetlania. Najważniejsze operacje wykonują się w przerwaniach:
SIG_UART_RECV
Przerwanie wywoływane odbiorem znaku poprzez port szeregowy. Dane z PC są przesyłane w konsolowym formacie VT100. W formacie tym przesyłane są tylko informacje wymagające zmiany w stosunku do poprzednio odebranych. Dlatego wszystkie odebrane dane są buforowane w pamięci i modyfikowane fragmentami w razie potrzeby. Kluczowym znakiem jest #27 (ESC) który oznacza początek nowej sekwencji danych.
SIG_OVERFLOW0
Przerwanie od timera 0 służy do multipleksowania wyświetlacza LED. Dla dłuższych napisów obsługuje też ich przesuwanie. Samo wyświetlanie napisów na wyświetlaczu 7-segmentowym obarczone jest kompromisem. O ile część liter jak "A" "b" "h" czy "P" są raczej proste do przedstawienia, o tyle "K" "T" czy "Y" jest problematyczne. Ale jakoś sobie poradziłem. Wzorce liter zawarłem w pamięci programu: prog_uint8_t g_Digit[48].
SIG_OVERFLOW1
Przerwanie od timera 1 jest wykorzystywane do sterowania silnikiem krokowym. Zastosowałem sterowanie półkrokowe - jeden cykl pracy składa się z 8 kroków. Wzorce sekwencji sterujących zapisałem w pamięci programu: prog_uint8_t g_Steps[9].
SIG_ADC
Przerwanie od przetwornika A/C. Po uruchomieniu programu silnik krokowy zaczyna obracać wskazówką w lewo aż do zadziałania wyłącznika krańcowego - zasłonięciu szczeliny transoptora. Moment ten wykrywa przetwornik A/C mikrokontrolera. Od tej chwili program pamięta bieżącą pozycję wskazówki. Ponieważ wyłącznik krańcowy jest tylko z jednej strony, maksymalne położenie wskazówki w prawo ustaliłem empirycznie i zapisałem jako stałą w programie, który pilnuje aby jej nie przekroczyć. Kompletny kod źródłowy jest dostępny do zciągnięcia na elportalu - wraz z innymi materiałami.

Zakończenie

Zastosowanie tak starego komputera jak 486 oraz systemu operacyjnego DOS może się wydawać anachroniczne. Uważam jednak że DOS świetnie nadaje się do zabawy w łączenie komputera z elektroniką. Stare komputery posiadają komplet bardzo prostych w obsłudze portów (zarówno szeregowe jak i równoległy). Porty te w DOS dostępne są jako komórki pamięci komputera, dzięki czemu samodzielne ich oprogramowanie jest bardzo proste. Wbrew pozorom w sieci nie brakuje dokumentacji, ani gotowego oprogramowania. Np. program Mpxplay jest nieustannie rozwijany. Ja użyłem wersji 1.56, ale w chwili pisania tego artykułu (kwiecień 2010) dostępna była już beta wersji 1.57 z nowymi funkcjami (m.in. odtwarzanie plików z sieci). Gdyby ktoś chiał zbudować podobne urządzenie zalecam jednak trochę mocniejszy procesor, bo mój 486 ma problemy z plikami o większym bitrate. Zalecam procesor co najmniej Pentium 133. Nie od rzeczy jest też dobra karta muzyczna np. Sound Blaster Live. W takim zestawieniu odtwarzacz pod względem brzmienia bije na głowę większość tanich mp-trójek, miniwież czy odtwarzaczy dvd. Jak pisałem we wstępie - mam nadzieję że zainspirowałem do działania nie tylko siebie. Bo ja, zachęcony działaniem opisanej powyżej konstrukcji buduję sobie - tym razem rasowy - serwer muzyczny. Wyposażony będzie m.in. w wyświetlacz LCD, pilot IR, złącze USB, CD-ROM z możliwością odtwarzania i ripowania płyt CD, oraz możliwość odtwarzania plików z sieci. I tym razem w obudowie slim, pasującej do wieży audio. Oczywiście z FreeDOS i MpxPlay na pokładzie. Jego moduł sterowania będzie się kontaktował z komputerem wyłącznie poprzez port RS232 wykorzystując terminalowy protokół VT100. Ale to temat na inny artykuł...

Linki
Odtwarzacz mpxplay - http://mpxplay.sourceforge.net/
System operacyjny FreeDOS - http://www.freedos.org/

Uwaga! Podczas użytkowania urządzenia w jego obwodach występują napięcia groźne dla życia i zdrowia.
Osoby niedoświadczone i niepełnoletnie mogą wykonać je wyłącznie pod kierunkiem wykwalifikowanego opiekuna, na przykład nauczyciela.



Powyższy artykuł ukazał się w czasopiśmie "Elektronika dla Wszystkich" w numerze 7/2010

Materiały dodatkowe:

Listingi, tabele, wykaz elementów

Do pobrania z elportalu:

 Old Time Player - płytki drukowane w formatach Eagle i PDF, oprogramowanie (ZIP, 390kB)

Film prezentujący urządzenie w działaniu:

  
Niestety z uwagi na prawa autorskie zmuszony byłem usunąć z filmu oryginalną ścieżkę dźwiękową...


Artykuł ten jeszcze przed ukazaniem się wzbudził kontrowersje o czym traktuje list napisany do redakcji czasopisma EdW przez jednego z oburzonych czytelników i opublikowany w tym samym numerze.