Od zarania dziejów człowiek próbował uła-
twiać sobie życie. Już pierwsza maczuga po-
zwalała na efektywniejsze przełożenie siły
mięśni na ruch obrotowy, czyli inaczej
mówiąc mocniejsze walenie w mamuty. Taka
epoka kamienia łupanego w elektronice to la-
ta 70., gdy najuniwersalniejszym pilotem do
supertelewizora (TVC RUBIN) była podręcz-
na szczotka, ewentualnie młodsza siostra.
O ile szczotka nie wymagała zasilania, o tyle
rodzeństwo jest bardzo cukierkożerne.
Obecnie wszystkie telewizory mają pilo-
ta, ale czy w dziedzinie zdalnej obsługi kom-
putera nadal musimy uganiać się za mamuta-
mi? Na szczęście nie, bo jest jeszcze
AT89c2051 i pakiet BASCOM, w nim to bo-
wiem powstał opisany pilot.
Projekt to połączenie dostępnych w Inter-
necie pluginów z możliwościami Bascoma.
Charakterystyka kodu
RC5
Każde polecenie wysyłane przez pilota pra-
cującego w kodzie RC5 składa się z następu-
jących fragmentów:
- bitów startu 1.5bits (2*logiczna 1),
- bit kontroli,
- pięciu bitów kodujących numer rodziny
rozkazów,
- sześciu bitów określających numer rozkazu.
Ramka polecenia kodu RC5 przedstawio-
na została na rysunku 1.
Transmisja danych opiera się na kluczo-
waniu (100% modulacji) fali nośnej z czę-
stotliwością 36kHz. Najprostszy system
transmisji, opierający się wprost na wysyła-
niu serii 0,1, tak jak wskazuje składnia pole-
cenia, nie jest najlepszym rozwiązaniem.
W wielu sytuacjach powodowałoby to za-
kłócenia transmisji. Wystarczy sobie wyo-
brazić taką sytuację - gdy na chwilę pojawi
się przebieg odpowiadający bitowi startu,
a następnie zanika, powodowałoby to wyko-
nywanie nieustannie polecenia o adresie
i kodzie 0. Dlatego też przy transmisji kodu
RC5 stosowane jest kodowanie fazowe. Stan
logiczny jest interpretowany na podstawie
zmian sygnału w pojedynczych przedziałach
czasowych.
Zasady kodowania fazowe-
go przedstawia rysunek 2.
5-bitowe kodowanie nume-
ru rodziny poleceń i 6-bitowe
pole na numer polecenia umoż-
liwia, teoretycznie, wysłanie
2048 różnych rozkazów. W rze-
czywistości wykorzystywane
są tylko niektóre polecenia. Ich
zestawienie zawiera tabela 1.
W poszczególnej rodzinie
dostępne są wszystkie 64 po-
lecenia. Ich znaczenie przed-
stawia tabela 2.
Powyższa tabela zawiera zestawienie
podstawowych funkcji przypisanych na stałe
dość często poprzez graficzne oznaczenia na
klawiszach pilotów. Nie oznacza to, że nie
występują inne zastosowania poszczególnych
kodów. Przykładem jest nasz pilot w którym
Forum Czytelników
56
Elektronika dla Wszystkich
PP
PP
ii
ii
ll
ll
oo
oo
tt
tt
dd
dd
oo
oo
W
W
W
W
ii
ii
nn
nn
aa
aa
m
m
m
m
pp
pp
aa
aa
zz
zz
w
w
w
w
yy
yy
kk
kk
oo
oo
rr
rr
zz
zz
yy
yy
ss
ss
tt
tt
aa
aa
nn
nn
ii
ii
ee
ee
m
m
m
m
kk
kk
oo
oo
dd
dd
uu
uu
RR
RR
CC
CC
55
55
Numer
rodziny
Zastosowanie
0
TV
1
TV2 (descrambler tuner)
2
Teletext
3
TV1 or TV2
(commands 0-63 or 64-127)
5
Video recorder
6
Video recorder 2
7
Do celów eksperymentalnych
16
wzmacniacze
17
receiver/tuner
18
tape/cassette recorder
19
Do celów eksperymentalnych
23
DAT
Numer
Znaczenie
0-9
Kanały 0 - 9
12
standby
13
mute
14
presents
16
Głośność +
17
Głośność -
18
brightness +
19
brightness -
20
Nasycenie kolorów +
21
Nasycenie kolorów -
22
bass +
23
bass -
24
treble +
25
treble -
26
balance prawo
27
balance lewo
48
pauza
50
Szybkie przewijanie w tył
52
Szybkie przewijanie w tył
53
Play
54
stop
54
record
63
System select
Rys. 1
Rys. 2
Tabela 1
Tabela 2
można dynamicznie zdefiniować funkcje re-
alizowane poprzez poszczególne kody.
Schemat ideowy analizatora przedstawio-
ny został na rysunku 3, a płytka drukowana
na rysunku 4.
Opis programu
Program można ściągnąć ze strony interneto-
wej EdW www.edw.com.pl z działu FTP.
Jedną z najważniejszych części składo-
wych urządzeń mikroprocesorowych jest sam
program zawarty w pamięci kontrolera. Układ
89C2051 posiada 2kB pamięci programu typu
EEPROM. Dostępny obszar wystarczył do za
implementowania wszystkich przewidzianych
funkcji dla pilota tj.:
- analizy kodu RC5,
- obsługi wyświetlacza alfanumerycznego,
- transmisji szeregowej z komputerem
według standardu złącza RS232,
- analizy i przetwarzania danych otrzymywa-
nych z programu „Winamp”.
57
Elektronika dla Wszystkich
Forum Czytelników
Listing 1
‘
———————————————————————————————————————-
‘
‘
pilot winampa przez RS 232
‘
kość: 89C2051
‘
‘———————————————————————————————————————-
Config Lcd = 16 * 2
‘definicja typu wyświetlacza
Dim Kod As Byte
Dim Numer As Byte
‘deklaracja wymaganych zmiennych
Dim Flaga As Bit
Dim Wart As Byte
Dim Pom1 As Byte
Dim Liczba As Byte
On Int0 Odbierz
Dim Tekst As String * 1
Cls
Reset Tcon.0
Enable Interrupts
‘zezwolenie na przerwanie
Enable Int0
Reset Flaga
P3 = 255
‘wpisanie wartości początkowych
Cursor Off
‘do zmiennych
Cls
‘początek głównej pętli programu
Do
If Flaga = 1 Then
Reset Flaga
If Kod = 0 Then
Restore Tablica
For Pom1 = 0 To Numer
‘wyszukiwanie kodu w tablicy
Read Liczba
Next Pom1
Print Liczba
‘wysłanie polecenia
End If
End If
‘pętla analizy danych
Tekst = Inkey()
‘przychodzących z portu RS
Wart = Asc(tekst)
If Wart > 0 Then
If Wart = 64 Then
‘po znaku: @ przejdź do nowej linii
Lowerline
Elseif Wart = 35 Then
‘po znaku: # wyczyść wyświetlacz
Cls
Else
Lcd Tekst
‘jeśli zwykły tekst to wyświetl
End If
End If
Loop
‘koniec głównej pętli
End
‘podprogram analizy kodu
Odbierz:
Cls
Getrc5(kod , Numer)
Flaga = 1
‘tablica wrtości kodowych
Return
Tablica:
Data 0 , 1 , 2 , 3 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 4 , 0 , 9 , 0 , 5 , 6
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 7 , 8 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 0 , , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Rys. 3 Schemat ideowy
Rys. 4 Schemat montażowy
Rys. 5
Rys. 6
Program został napisany i skompilowany
w środowisku BASCOM.
Konfiguracja „plugina”
do programu „Winamp”
Plik o nazwie gen_serialcontrol.dll należy
umieścić w folderze plugins, w katalogu
głównym Winampa (rysunek 5).
Następnie należy skonfigurować podpro-
gram (rysunek 6). Dostęp do konfiguracji
jest możliwy z okna preferences uaktywnia-
nego lewym klawiszem myszy na aktywnym
Winampie. Nasz plugin nazywa się
SerialControl Plug-In v1.14 i powinien
pojawić się w oknie, jeżeli wszystko przebie-
gało do tej pory pomyślnie. Następnie zaz-
naczamy nazwę plugina i przechodzimy do
konfiguracji. Dostępne są 4 zakładki, konfi-
guracja pierwszej z nich przedstawiona jest
na rysunku 7.
Następna zakładka (rysunek 8) pozwala
na naukę podstawowych poleceń. Przebiega
to następująco:
- zaznaczamy funkcję której chcemy nauczyć
program np. play,
- naciskamy przycisk, który ma wywoływać
funkcję play,
- układ potwierdza poprawność nauki
poprzez umieszczenie „parafki” przy uczonej
funkcji,
- przechodzimy do kolejnego polecenia.
Następna zakładka (rysunek 9) jest istot-
na, jeżeli przewidujemy komunikację dwu-
kierunkową. Nasz pilot zapewnia taki trans-
fer, a więc należy tę zakładkę także skonfigu-
rować. Znaczenie poszczególnych pól:
- output on – zezwolenie na wysyłanie
danych,
- output interval – odstępy czasu wysyłania
danych (powinno być 1...2),
- output format – co właściwie ma być
wysyłane (do wyboru z poniższej tabeli),
- initialization – tekst wysyłany przy pier-
wszym uruchomieniu.
W tekście polecenia pojawiły się dwa
znaczki:
- „#” – jest to dodatkowe polecenie
czyszczenia wyświetlacza,
- „@” – polecenie przejścia do nowej linii.
Polecenia te stanowią swoisty język
rozpoznawany przez naszego pilota.
Całe urządzenie posiada jednak pewne
ograniczenia. Pierwsze z nich wynika z faktu
akceptowania przez plugina pojedynczego zna-
ku jako polecenia, a kod RC5 zakłada istnienie
poleceń dwucyfrowych (czytaj dwuznako-
wych). Aktualny plugin zinterpretuje taki kod
jako dwa polecenia. I tak np. Vol+ to kod 16, dla
plugina będzie to polecenie 1, a zaraz potem 6.
Dlatego potrzebna była umieszczona
w programie tablica do zamiany kodów.
Proponowane ustawienia przedstawia fo-
tografia zamieszczona (wraz z programem)
na naszej stronie internetowej.
Zasilanie można „wyciągnąć” z RS-a.
Zastosowałem jednak dodatkowy zasilacz,
ponieważ wyświetlacz jest podświetlany,
co zresztą widać na fotografii 1 i 2.
Michał Stach
58
Elektronika dla Wszystkich
Forum Czytelników
Wykaz elementów
R1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100Ω
P1 . . . . . . . . . . . . .10kΩ potencjometr montażowy
C1-C4 . . . . . . . . . . . . . . . . . . . . . . . . . .10µF/9V
C5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1µF
C6 . . . . . . . . . . . . . . . . . . . . . . . . . . . .100µF/9V
C7,C8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33pF
U1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89C2051
U2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .TFMS5360
U3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .MAX232
X1 . . . . . . . . . . . . . . . . . . . .rezonator 11.059MHz
Z1 . . . . . . . . . . . . . . .złącze DB9 męskie do druku
Z2 . . . . . . . . . . . . . . . . . . . . . . . . . . .mikroswitch
DISP . . . . . . . . . . . . . .wyświetlacz alfanumeryczny
16*2 znaków
Fot. 1
Fot. 2
Rys. 9
Rys. 7
Rys. 8