PPiilloott kkoommppuutteerroowwyy - Elportal · specjalnego. Najpierw mikrokontroler sprawdza, czy...

3

Click here to load reader

Transcript of PPiilloott kkoommppuutteerroowwyy - Elportal · specjalnego. Najpierw mikrokontroler sprawdza, czy...

Page 1: PPiilloott kkoommppuutteerroowwyy - Elportal · specjalnego. Najpierw mikrokontroler sprawdza, czy pod adresem odpowiadaj ...

17E l ek t r on i ka d l a Wszys t k i ch

Czy ktokolwiek z Was, użytkownikówkomputera, nie odczuwał nigdy po−trzeby sterowania swoim PC−temz pewnej odległości, np. z łóżka czybiurka? Czy nigdy nie musieliście pod−chodzić do komputera tylko po to, że−by przełączyć słuchaną "empetrójkę"lub zmienić kanał TV? Przykładów za−stosowania pilota komputerowegomożna wymieniać wiele. Wykorzysta−cie go do różnych celów, aby sterowaćkomputerem za pomocą dowolnego pi−lota RC−5. Co ważne, jest to przystaw−ką, która nie zakłóca normalnej pracyklawiatury.

Opis układuOmawiane urządzenie jest dość nietypowe,mianowicie udaje klawiaturę po otrzymaniuodpowiednich instrukcji od pilota. Jak zwy−kle w przypadku stosowania techniki mikro−procesorowej, układ pod względem budowyjest bardzo prosty. Jego schemat ideowyprzedstawiony został na rysunku 1. Cała in−teligencja mieści się w głównym układzie

scalonym, którym jest mikrokontrolerAT89C2051. Układ zasilany jest z linii kla−wiatury, dzięki czemu nie potrzeba zewnętrz−nego zasilania. Serce układu (U1) komuniku−je się z pamięcią szeregową (U2) po szynieI2C, odbiera sygnały od scalonego odbiorni−ka podczerwieni (U3) oraz steruje czterematranzystorami (T1−T4) potrzebnymi przytransmisji i dwoma diodami (D1, D2) sygna−lizującymi, czy sygnał z pilota został zinter−pretowany, czy odrzucony.

Nasz układ to jednak nie wszystko, czegopotrzebować będziemy do sterowania kompu−terem. Niezbędny będzie jeszcze pilot. Nowłaśnie, pilot, ale jaki? Dowolny pilot RC−5lub "Minipilot RC5", kit AVT−2427 opisanyw EdW 9/2000 na stronie 77. Ma on wystar−czającą liczbę przycisków (16) i jest stosunko−wo tani. Poza tym dokładnie wiemy, jaki kododpowiada danemu przyciskowi (komendypodane zostały na rysunku 2, adres dla wszy−stkich przycisków równy jest 0), w przeci−wieństwie do fabrycznych pilotów uniwersal−nych, które potrafią zachowywać się różnie.

Po zaznajomieniu się ze schematem, zajmijmy się pracą układu "od kuchni".

Komenda odebrana od pilota za pośrednic−twem układu U3 wpisywana jest do pamięciszeregowej jako adres, z którego odczyty−wany jest bajt. Bajt ten nie jest niczym in−nym jak kodem odpowiadającym danemuprzyciskowi klawiatury, którego wciśnięcie

Rys. 2

Rys. 1

µµP−3007

PPPPiiii lllloooo tttt kkkkoooommmmppppuuuutttteeeerrrroooowwwwyyyy

Page 2: PPiilloott kkoommppuutteerroowwyy - Elportal · specjalnego. Najpierw mikrokontroler sprawdza, czy pod adresem odpowiadaj ...

18 E l ek t r on i ka d l a Wszys t k i ch

symulować miała obsługapilota. Właściwie wiemyjuż skąd układ zna kodklawisza, ale przecież nie−które przyciski (np."strzałki") są klawiszamispecjalnymi i aby je wy−wołać, trzeba przed ichkodem wysłać kompute−rowi poprzednik klawiszaspecjalnym (szesnastko−wo E0). Problem ten moż−na rozwiązać całkiem pro−sto. Ponieważ pilot możeprzesyłać komendy od 0−63, połowa pamięci U2 le−ży odłogiem. Nic nie stoina przeszkodzie, aby wy−korzystać tę część pamię−ci na rzecz klawiszy spe−cjalnych. W tym celu,w nieużywanej dotąd przestrzeni adresowejod 63 do 127, zapisujemy kody odpowiada−jące klawiszom specjalnym pod adresamibędącymi komendą powiększoną o 64. Roz−patrzmy teraz zachowanie układu, gdyotrzyma on komendę dotyczącą klawiszaspecjalnego. Najpierw mikrokontrolersprawdza, czy pod adresem odpowiadają−cym komendzie znajduje się jakiś kod. Kie−dy upewni się, że kodu nie ma (odczytałznak pusty − szesnastkowo FF), to spraw−dza, czy pod adresem o 64 wyższym cośjest. Jeśli jest, to już wie, że ma to być kla−wisz specjalny i najpierw przesyła kompute−rowi poprzednik klawisza specjalnego, a do−piero potem kod klawisza odczytany z dane−go adresu. Rysunek 3 przedstawia kodywszystkich klawiszy klawiatury, z którychmożemy wybrać potrzebne i wpisać do pa−mięci U2 według szablonu z rysunku 4 podadresy odpowiadające wybranym przyci−skom pilota. Jeśli jakiś przycisk ma być nie−używany, to w miejsce kodu klawisza musi−my wpisać szesnastkowo FF.

Mając pewne pojęcie na temat identyfi−kacji klawisza, możemy przyjrzeć się bliżejtransmisji. Jak już wcześniej wspomniałem,mikrokontroler steruje kilkoma tranzystora−mi. To one właśnie zarządzają szyną danych(DTA) i zegara (CLK) komputera, którymizwykle "zajmuje się" klawiatura. Można po−wiedzieć, że nasze urządzenie wtrąca się po−między klawiaturę i komputer. Takie brutal−ne działanie jest nieuniknione, ponieważ li−nia klawiatury przystosowana jest tylko dojednego odbiornika i jednego nadajnika. Jakw takim razie przystosować transmisję donaszych potrzeb? Całkiem prosto! Szerego−wo w linie musimy włączyć rezystory o nie−dużej oporności (R1 i R2). Teraz wystarczyjuż tylko po stronie klawiatury "podcią−gnąć" linię do napięcia zasilania (T1, T2),a po stronie komputera, w takt transmisji,zwierać końcówkę rezystora do masy (T3,

T4). Ale czy aby na pewno taki zabieg jestkonieczny? Przecież te linie sterowane są zapomocą bramek typu otwarty kolektor, więcczy nie można po prostu zwierać danej liniido masy? Odpowiedz na to pytanie i trochęwięcej szczegółów dotyczących transmisji(potrzebnych do napisania programu) zna−leźć można w EdW 1/2001 na stronie 25.Żeby się zbytnio nie powtarzać, przypomnęjedynie, że linia klawiatury jest linią dwu−kierunkową. Wynika z tego, że równieżkomputer może przesyłać rozkazy klawiatu−rze (np. załącz/ wyłącz kontrolkę CapsLock) i dlatego, jeśli strona klawiatury niezostałaby podciągnięta do zasilania, opróczkomputera, również klawiatura mogłaby od−czytać transmisję jako rozkaz dla niej. W ta−kim przypadku nasz rozkaz zostałby za−kłócony przez klawiaturę i z transmisji by−łyby nici.

Teoretycznie wiemy już jak układ powi−nien działać. Brakuje jeszcze tylko programuobsługującego mikroprocesor. W artykuleznajdziecie jego listing w języku BASCOM.Program ten z powodzeniem obsługiwał mójmodel, więc prawdopodobnie będzie działaći u Was. Ze względu na ograniczenia doty−czące artykułu, obcięte zostały komentarze.Podobnie jak w przypadku "Maszyny do pi−sania", zachęcam jednak do napisania pro−gramu samemu i traktowanie mojego listingujedynie jako działający punkt odniesienia.Jeśli jednak ktoś nie ma ochoty tracić czasunawet na przepisywanie, z pomocą przycho−dzi Internet. Ci, którzy mają do niego dostęp,mogą zassać program oraz zawartości pa−mięci szeregowych do sterowania różnymiprogramami spod adresu www.edw.com.pllub http://www.bloknet.pl/~rufus/pilot.zip,a ci, którzy dobrodziejstwa Internetu nie za−znali, zadowolić się muszą napisaniem pro−gramu samemu lub jego bezmyślnym (?) przepisaniem, ale w końcu pisanie wBASCOM−ie to przyjemność!

Rys. 3

Rys. 4

PPrrooggrraamm mmiikkrroopprroocceessoorroowwyy::

$crystal = 11059200

Dim Nowy As Bit : Dim E As Bit : Dim P As BitDim Com As Byte : Dim Adr As ByteDim K As Byte : Dim X As Byte : Dim A As Byte

Ziel Alias P1.0 : Czerw Alias P1.1 : Dta Alias P1.2Clk Alias P1.3 : Blk Alias P3.5

Config Sda = P3.0 : Config Scl = P3.1Config I2cdelay = 1

Reset Tcon.0 : On Int0 Rc5Enable Int0 : Enable Interrupts

DoBitwait Nowy , SetDisable Int0 : Reset NowyI2cstart : I2cwbyte 160 : I2cwbyte ComI2cstart : I2cwbyte 161 : I2crbyte K , Nack : I2cstopIf K = &HFF Then

Com = Com + 64 I2cstart : I2cwbyte 160 : I2cwbyte ComI2cstart : I2cwbyte 161 : I2crbyte K , Nack : I2cstopIf K <> &HFF Then : Set EElse : Reset Czerw : Waitms 240 : Set CzerwEnd If

End IfIf K <> &HFF Then

While Clk = 0 : Waitms 2 : Wend : Reset BlkIf E = 1 Then

Reset EX = &HE0 : Gosub PrzeslijX = K : Gosub PrzeslijX = &HE0 : Gosub PrzeslijX = &HF0 : Gosub PrzeslijX = K : Gosub Przeslij

ElseX = K : Gosub PrzeslijX = &HF0 : Gosub PrzeslijX = K : Gosub Przeslij

End IfSet Blk : Reset Ziel : Waitms 240 : Set Ziel

End IfEnable Int0

Loop

Przeslij:A = 0If X.0 = 1 Then : A = A + 1 : End If If X.1 = 1 Then : A = A + 1 : End IfIf X.2 = 1 Then : A = A + 1 : End If If X.3 = 1 Then : A = A + 1 : End If If X.4 = 1 Then : A = A + 1 : End IfIf X.5 = 1 Then : A = A + 1 : End IfIf X.6 = 1 Then : A = A + 1 : End IfIf X.7 = 1 Then : A = A + 1 : End IfA = A Mod 2If A = 0 Then : Set P : Else : Reset P : End IfDta = 0 : Delay : Clk = 0 : DelayDta = X.0 : Clk = 1 : Delay : Clk = 0 : DelayDta = X.1 : Clk = 1 : Delay : Clk = 0 : DelayDta = X.2 : Clk = 1 : Delay : Clk = 0 : DelayDta = X.3 : Clk = 1 : Delay : Clk = 0 : DelayDta = X.4 : Clk = 1 : Delay : Clk = 0 : DelayDta = X.5 : Clk = 1 : Delay : Clk = 0 : DelayDta = X.6 : Clk = 1 : Delay : Clk = 0 : DelayDta = X.7 : Clk = 1 : Delay : Clk = 0 : DelayDta = P : Clk = 1 : Delay : Clk = 0 : DelayDta = 1 : Clk = 1 : Delay : Clk = 0 : Delay : Clk = 1

Return

Rc5:Getrc5(adr , Com)If Adr = 0 Then : Set NowyElse

Reset NowyReset Czerw : Waitms 240 : Set Czerw

End IfReturn

Page 3: PPiilloott kkoommppuutteerroowwyy - Elportal · specjalnego. Najpierw mikrokontroler sprawdza, czy pod adresem odpowiadaj ...

19E l ek t r on i ka d l a Wszys t k i ch

Montaż i uruchomienieUkład jest bardzo prosty, więc montaż niewymaga dużej uwagi. Należy zwrócić uwagęjedynie na to, aby kable łączące urządzeniez klawiaturą i komputerem nie były zbyt dłu−gie. Do obudowania urządzenia nadaje się,po małej obróbce, obudowa Z6. Przedniąściankę zastąpić można prostokątem z ciem−nego, półprzezroczystego pleksi.

Ponieważ nasz układ udaje klawiaturę,nie będą potrzebne żadne sterowniki, abygo uruchomić. Jest to główna różnica po−między tym urządzeniem a jego fabryczny−mi odpowiednikami, które komunikują się

z komputerem przez port szeregowy. Dzię−ki temu nie będziemy musieli walczyćz niekompatybilnym systemem, który nigdynie chce współpracować. Jedyne co trzebazrobić to połączyć układ z komputeremi klawiaturą. Będzie działać pod każdymsystemem i zawsze. To się dopiero nazywa"Plug and Play"!

Rafał Baranowskie−mail: [email protected]

Wykaz elementów

RReezzyyssttoorryy::

RR11,,RR22 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..556600ΩΩ

RR33−RR66 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..2222kkΩΩ

RR77,,RR88 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..11kkΩΩ

RR99,,RR1100 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..33,,33kkΩΩ

RR1111 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..222200ΩΩ

KKoonnddeennssaattoorryy::

CC11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..110000nnFF

CC22,,CC66 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..110000µµFF//1166VV

CC33 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..1100µµFF//1166VV

CC44,,CC55 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..3333ppFF

PPóółłpprrzzeewwooddnniikkii::

UU11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..AATT8899CC22005511

UU22 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..AATT2244CC0011

UU33 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..TTFFMMSS55336600

TT11−TT44 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..BBCC555577

DD11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..LLEEDD zziieelloonnaa

DD22 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..LLEEDD cczzeerrwwoonnaa

PPoozzoossttaałłee::

XX11 .. .. .. .. .. .. .. .. .. .. .. ..rreezzoonnaattoorr cceerraammiicczznnyy 1111,,00559922MMHHzz

WW11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..ggnniiaazzddoo 55 ppiinn DDIINN lluubb PPSS//22

WW22 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..wwttyykk 55 ppiinn DDIINN lluubb PPSS//22