You are on page 1of 35

Jzyk C Pasja programowania

mikrokontrolerw 8-bitowych
Mirosaw Karda
Niniejsza darmowa publikacja zawiera jedynie fragment penej wersji
caej publikacji.
Aby przeczyta ten tytu w penej wersji kliknij tutaj.
Niniejsza publikacja moe by kopiowana, oraz dowolnie rozprowadzana tylko i wycznie w formie
dostarczonej przez Wydawnictwo ATNEL. Zabronione s jakiekolwiek zmiany w zawartoci publikacji
bez pisemnej zgody Wydawnictwa ATNEL - wydawcy niniejszej publikacji. Zabrania si jej odsprzeday.
Pena wersja niniejszej publikacji jest do nabycia w sklepie
internetowym
www.witmir.pl
WYDAWNICTWO
ATNEL
JZYK C
PASJA PROGRAMOWANIA
MIKROKONTROLERW 8-BITOWYCH
Mirosaw Karda
Atnel 2012
Ksika jest kontynuacj publikacji Mikrokontrolery AVR. Jzyk C. Podstawy programowania.
Tym razem mamy do czynienia z szeregiem ciekawych projektw, poniewa caa ksika sta-
nowi cz warsztatow oraz praktyk programowania. Przeznaczona jest przede wszyst-
kim dla pasjonatw mikrokontrolerw, hobbystw, amatorw, a take pocztkujcych, ktrzy
mieli okazj przeczyta pierwsz cz. Praktyczne sposoby programowania s przekazane
na przykadach tworzenia przernych bibliotek programowych potrzebnych do obsugi wie-
lu interesujcych ukadw peryferyjnych. S tu take aplikacje testowe, ktre przybliaj spo-
soby korzystania z omawianych bibliotek we wasnych projektach. Cao oprogramowania
tworzona jest przy wykorzystaniu zaawansowanych technik opierajcych si na: zdarzeniach
(events), timerach programowych oraz programowaniu wielowtkowym.
Korekta: Krystyna Pawlikowska
Opracowanie graczne: Karolina Karda
Wydawnictwo Atnel
70-777 Szczecin, ul. Jasna 15/33
tel. 91 463 56 83
fax 91 882 10 99
e-mail: biuro@atnel.pl
www.atnel.pl
Wydanie I
ISBN 978-83-931797-1-8
Copyright by Wydawnictwo Atnel
Szczecin 2012
Wszystkie znaki wystpujce w tekcie s zastrzeonymi znakami rmowymi bd towarowymi ich wacicieli. Autor
oraz Wydawnictwo Atnel dooyli wszelkich stara, by publikowane tu informacje byy kompletne i rzetelne. Nie bior
jednak adnej odpowiedzialnoci ani za ich wykorzystanie, ani za zwizane z tym ewentualne naruszenie praw pa-
tentowych lub autorskich. Autor oraz Wydawnictwo Atnel nie ponosz take adnej odpowiedzialnoci za ewentual-
ne szkody wynike z wykorzystania informacji zawartych w ksice. Wszelkie prawa zastrzeone. Nieautoryzowane
rozpowszechnianie caoci lub fragmentw niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywa-
nie kopii caoci lub fragmentw ksiki bd doczonej pyty DVD metod kserograczn, fotograczn, a take ko-
piowanie ksiki lub pyty DVD na nonikach lmowych, magnetycznych, elektronicznych lub na nieautoryzowanych
stronach internetowych powoduje naruszenie praw autorskich niniejszej publikacji.
Ksik t dedykuj Panu Ryszardowi ozowskiemu.
Wspaniay czowiek, wybitny specjalista w dziedzinie
telewizji analogowej, twrca urzdze, ktre wyprzedzay
jego epok. Pasjonat elektroniki i mechaniki precyzyjnej,
swoj pasj zaraa wszystkich wotoczeniu, podobnie jak
spokojem ipogod ducha. Kocha ycie. Juniedokoczy
swoich planw, a mia ich wiele, w tym udoskonalenie
urzdze medycznych sucych dorehabilitacji pourazo-
wej. Wczeniejsze ich wersje, skonstruowane przez niego od
podstaw, dodzisiaj pracuj wwielu sanatoriach na terenie
Polski.
Miaem szczcie i zaszczyt spotka Pana Ryszarda na
swojej drodze. Kady dzie, ktry znim spdziem, abyo
ich niestety tylko 200, zapamitam do koca ycia. Myl,
e nie bdzie naduyciem, jeli powiem, e by moim przyjacielem. Od Niego bardzo duo
si nauczyem idziki Niemu nabraem pokory wobec codziennych kopotw, zktrymi
on tak dobrze sobie radzi. Wpracy wyznawa dewiz, e nie ma rzeczy, ktrych nie da
si zrobi, nie narzeka, poprostu mierzy si zproblemami irozwizywa je wsposb
niespotykany wdzisiejszych czasach. Ztego powodu kady, kto znim wsppracowa,
mia okazj uczy si nie tylko elektroniki, aletakepodejcia do ycia.
Mirosaw Karda
Spis treci
Przedmowa 6
Wstp 9
1. Podczerwie praktyczne zastosowania 12
1.1. Kodowanie typu Pulse 17
1.2. Kodowanie typu Space 18
1.3. Rnice midzy protokoami 19
1.4. Analiza dokumentacji zwitryny lirc.org 21
1.5. Mechanizm Virtual Toggle Bit 24
1.6. Zdarzenia (events) obsuga podczerwieni 29
1.7. Puapki programowe adekoder graczny 49
1.8. Uniwersalna biblioteka dla rnych pilotw 59
1.9. Nadajnik podczerwieni wasne piloty 63
1.10. Transmisja wasnych danych wpodczerwieni 70
2. Transmisja radiowa 433/868 MHz i 2,4 GHz 83
2.1. Transcievery komunikacja 123
2.2. Transcievery rmy Hoperf typu RFMxx 137
2.2.1. RFM12(B) 433MHz/868MHz 139
2.2.2. RFM70 2,4 GHz 167
2.2.3. Cyfrowa iradiowa transmisja dwiku RFM70 181
3. Odtwarzanie plikw dwikowych WAV zkart pamici SD/MMC 194
4. Wywietlacze graczne TFT LCD 215
4.1. Sterowanie sprztowe TFT LCD 220
4.1.1. Obsuga graki 231
4.1.1.1. Nieudokumentowane opcje sterownika SSD1963 241
4.1.2. Obsuga fontw 249
4.1.3. Arduino czy warto? 291
5. Obsuga panelu dotykowego I2C STMPE811 294
5.1. Inicjalizacja rejestrw STMPE811 296
5.2. Obsuga wprzerwaniach 300
5.2.1. Zastosowanie biblioteki STMPE811 wprogramie 304
6. PetitFS zapis danych do duych plikw 313
7. Stos pod kontrol programowe ujarzmienie 325
8. LCD hd44780 + projekt wielozadaniowy 337
9. TDA1543 AVR AUDIO PLAYER I2S 375
10. UART zdarzenia, parsowanie danych 396
Zakoczenie 434
1. Podczerwie praktyczne zastosowania
Na pocztku przyznam, e zagadnienia zwizane z zastosowaniem kodowania
i dekodowania w podczerwieni s moim ulubionym tematem. Wynika to gw-
nie ztego, e wbardzo wielu moich projektach wmniejszym lub wikszym zakresie
wykorzystuj podczerwie. Temat nie jest nowy ani odkrywczy, jednak wikszo lu-
dzi kojarzy go na pierwszym miejscu z typow obsug popularnych pilotw pod-
czerwieni do sterowania rnych urzdze. Rzeczywicie tak jest, e technologia ta
zyskaa szerokie zastosowanie dziki znanym urzdzeniom, jak telewizory, pniej ma-
gnetowidy itp. W dzisiejszych czasach trudno wrcz spotka popularne urzdzenia
przetwarzajce obraz czy dwik bez zdalnego sterowania wpodczerwieni. Kamery,
aparaty fotograczne, odtwarzacze DVD Dlaczego piloty ciesz si tak popular-
noci? Czy tylko lenistwo leao u podstaw stworzenia tej technologii? W poczt-
kowym okresie rozwoju (pierwsze piloty zdalnego sterowania wykorzystyway ultra-
dwiki zamiast podczerwieni) pilot zdalnego sterowania mia niewiele moliwoci
iklawiszy funkcyjnych. Jego zadaniem byo rzeczywicie zdalne wczenie lub wy-
czenie urzdzenia, dziki czemu uytkownik nie musia wstawa zfotela. Wikszo
pozostaych funkcji regulacyjnych trzeba byo i tak wykonywa rcznie, manipu-
lujc gak lub klikajc przyciski znajdujce si na urzdzeniu. W miar rozwoju
technologii i w chwili wejcia w ycie mikrokontrolerw sytuacja zmienia si dia-
metralnie. Teraz zdalnie sterowane urzdzenie posiada tylko kilka przyciskw wypro-
wadzonych na zewntrz obudowy, ktre zawiaduj podstawowymi funkcjami. Caa
reszta moliwoci konguracyjnych, regulacji itp. zostaa przeniesiona do pilotw.
Niejednokrotnie tani odtwarzacz DVD, gdy jego uytkownik zgubi albo zniszczy przy-
padkowo pilota, staje si wrcz bezuytecznym przedmiotem. Zatem miao mona
stwierdzi, e wdzisiejszych czasach pilot zdalnego sterowania nie jest ju dodawany
do urzdzenia wcelu zaspokojenia lenistwa uytkownika. Co jest gwnym powodem
takiego stanu rzeczy? Prbowae kiedy si nad tym zastanowi? Jeli chwil pomy-
le, to oczywiste staje si, e ograniczenie liczby klawiszy sprztowych umieszczonych
wobudowie urzdzenia zostao podyktowane:
zwikszeniem ergonomii urzdze iminiaturyzacj ich obudw. (Wyobraasz so-
bie dzisiejsze paskie telewizory zwskim obramowaniem? Czy mona wprowa-
dzi tam klawiatur do obsugi caoci?);
wikszymi kosztami zwizanymi ze stosowaniem trwaych klawiatur lub nawet po-
jedynczych klawiszy. Klawiatur wpostaci zewntrznego pilota jest stosunkowo
atwo iniedrogo wymieni na now. Nie potrzeba do tego nawet wzywa serwi-
su. Wystarczy kupi oryginalny pilot lub zamiennik. Natomiast uszkodzenie wbu-
dowanej klawiatury bywa jednoznaczne zkoniecznoci oddania do serwisu ca-
ego urzdzenia;
Podczerwie praktyczne zastosowania 13
uproszczeniem systemu transmisji danych oraz ich odbioru/dekodowania wpod-
czerwieni;
moliwoci wprowadzania olbrzymiej liczby funkcji przy jednoczenie niskim
koszcie produkcji pilota zdalnego sterowania.
Biorc to pod uwag, bardzo czsto jestem zdziwiony, dlaczego tak spora liczba osb,
ktre uywaj mikrokontrolerw w swoich hobbystycznych lub komercyjnych pro-
jektach, tak rzadko korzysta zzalet omawianej technologii. Bardzo czsto nawet na
etapie prototypowania swojego projektu, gdy jest on realizowany jeszcze na pytce
stykowej bd w zestawie uruchomieniowym, dostrzegam przedziwn dla mnie
praktyk zaopatrywania si w przernej wysokoci klawisze typu microswitch.
Podobnie ich liczba na niektrych zestawach uruchomieniowych bardzo mnie dziwi.
Owszem, obsuga sprztowa klawiszy podczanych bezporednio do mikrokontro-
lera to take podstawa. Jednak wiele osb nie zdaje sobie sprawy nie tylko z efektu
drga stykw, ktry trzeba wyeliminowa, ale take ze sposobw praktycznego inie-
blokujcego oprogramowania takich pojedynczych klawiszy lub klawiatur. Efekty tego
mona spotka na przykad podczas prezentacji amatorskich projektw na rnych
forach internetowych lub wpostaci lmw na serwisie youtube.com. Prezentowane
urzdzenia, ich koncepcje czsto s bardzo ciekawe, ale obsuga ich przez uytkow-
nika pozostawia wiele do yczenia. Zdarzaj si nawet sytuacje humorystycznie, na
przykad gdy na materiale lmowym wida wielki niezdarny palec prbujcy pstry-
ka malekimi klawiszami microswitch. A przy okazji wida jak na doni, e pre-
zentowana obsuga jakiego menu co chwil przeskakuje do innej opcji, trzeba si
cofn znowu, starajc si klikn maleki klawisz. Zwykle bywa to efektem zej
obsugi programowej iniewyeliminowania drga stykw.
Reasumujc, zbudowanie nawet prostej klawiatury, skadajcej si choby zkilku kla-
wiszy, staje si najwiksz bolczk na etapie projektowania. Ale nie tylko projekto-
wania. Czsto bowiem powstaje najpierw projekt urzdzenia amatorskiego, adopiero
wpniejszym czasie konstruktor czy projektant stara si dopasowa do niego obu-
dow. Wtedy dochodzi do powaniejszych trudnoci zwizanych zdoborem idopa-
sowaniem obudowy. Na kocu tej drogi moe okaza si, e urzdzenie nie znajdzie
praktycznego zastosowania zpowodu braku obudowy albo zpowodu jej wtpli-
wej estetyki. Trudno wwczas wymaga akceptacji przez potencjalnych odbiorcw,
klientw itp.
Wtakich sytuacjach zwykle zastanawiam si, dlaczego tak rzadko wykorzystywana jest
podczerwie ibardzo wygodne klawiatury znajdujce si na pilotach zdalnego sterowa-
nia. Domylam si, e by moe powodem jest niech do konstruowania we wasnym
zakresie pilota zdalnego sterowania, gdy to rwnie jest spore wyzwanie, moe nawet
wiksze ni wykonanie obudowy iklawiatury pilota. Uwaam jednak, e jest to bdne
podejcie. Wystarczy si rozejrze wokoo. Obecnie mamy do dyspozycji setki, jak nie
tysice przernych gotowych pilotw zdalnego sterowania, posiadajcych nawet cie-
kawe pod wzgldem designu obudowy, majcych od kilku do kilkunastu klawiszy. Co
wicej, piloty posiadajce wicej klawiszy maj cenn zalet znaszego punktu widzenia,
jeli chodzi ociekawe pomysy na ich praktyczne zastosowanie. Zwykle jest to zorga-
Jzyk C. Pasja programowania mikrokontrolerw 8-bitowych 14
nizowana iwydzielona klawiatura numeryczna (klawisze 09). Pisz otym, poniewa
wiele razy spotkaem si zbrakiem pomysu na to, aby zastosowa tak klawiatur do
wasnych potrzeb wzamian za rozbudow klawiatury sprztowej wsamym urzdzeniu.
Wielu twrcw amatorw ma te obawy ztego powodu, e to niezbyt elegancko wy-
glda, gdy do wasnego urzdzenia wykorzystuje si jaki tam pilot od telewizora czy
magnetowidu. Tymczasem to znowu tylko brak wyobrani narzuca takie ograniczenia
wpomysach. Spotkae si zapewne zwieloma ju rodzajami pilotw zdalnego stero-
wania na podczerwie, tzw. no name. Bez nazwy typu iproducenta, anawet ztakim
opisem czy symbolami klawiszy funkcyjnych (poza czci numeryczn), e nie spo-
sb stwierdzi, czy jest to pilot do TV, czy do VCR, czy moe do wasnego urzdzenia.
Dlaczego nie? Niektrych pedantw moe nadal martwi jednak sposb opisu klawiszy
funkcyjnych. Nie zechc zastosowa gotowego pilota tylko dlatego, e jeli ju miaoby
to nastpi, to musiayby by na nim wasne opisy, aztym ju gorzej, bo czsto nama-
lowane s one wprost na plastikowej obudowie, wic zmiana ich we wasnym zakresie
moe wyj rwnie nieelegancko, albo igorzej, jak wykonanie wasnej klawiatury sprz-
towej. Ale ja ina to mam rad. Wystarczy powici nieco wicej czasu na poszukanie
takiej wersji pilota, ktry opisy ma wykonane nie bezporednio na obudowie, lecz na
specjalnej laminowanej okleinie, ktr co ciekawe, mona wdosy prosty sposb pod-
mieni na swoj wasn, drukujc uprzednio opisy na zwykej drukarce laserowej ipo
zalaminowaniu wymieni oryginaln oklein. Wefekcie kocowym mona bardzo ta-
nio uzyska zdecydowanie lepszy ekwiwalent takiej klawiaturki sprztowej, przy caej
gamie zalet, jakie zostay wymienione wpunktach na pocztku rozdziau. Na rysunku
1 przedstawione s dwa piloty zrnymi obudowami, ktre daj moliwo wymiany
okleiny na swoj wasn. Nie jest to moe pomys, ktry nadaje si dozastosowania na
szerok skal, ale przy maoseryjnej produkcji moe by opacalny. Zastosowanie ta-
kiego pilota moe przynie wymierne korzyci nie tylko klientowi, lecz take samemu
programicie, ktry przy takiej okazji zyska wiele nowych moliwoci. Niewspomn
ju tutaj oczysto hobbystycznych rozwizaniach, wktrych obnianie kosztw wyko-
nania projektw, ale iestetyka powinny sta zawsze na najwyszym miejscu.
A B
Rysunek 1. A pilot wpeni zgodny ze standardem RC5 (moliwo zmiany opisw kla-
wiszy). B pilot uniwersalny, nadajcy wwielu rnych standardach do wy-
boru za pomoc konguracji (RC5, Sony, Daewoo itp.). Piloty dostpne na:
www.sklep.atnel.pl
Podczerwie praktyczne zastosowania 15
Wbrew pozorom piloty tego typu s bardzo tanie, adodatkowo maj moliwo pracy
wpopularnym standardzie RC5, zktrym s wpeni zgodne.
Dlatego jeszcze raz bardzo ci zachcam do szerszego korzystania ztego typu goto-
wych klawiatur, ito klawiatur na podczerwie. By moe jest to okrelenie nieco na
wyrost, ale nie do koca. Chodzi tutaj przecie o najzwyklejsz wygod uytkowa-
nia, oprogramowania, jak iestetyk wykonania caego projektu. Cay rozdzia na te-
mat podczerwieni ma na celu pokazanie, e wykorzystanie praktycznie kadego, wrcz
dowolnego pilota podczerwieni, nawet gdy nie znasz jego producenta i danych na
temat jego standardu, bdzie mona wprosty sposb wykorzysta do swoich potrzeb.
Niewane, wjakim standardzie nadaje, iczy jest to pilot Sony, Philips, JVC czy wspo-
mniany wyej no name.
Wyobra sobie take, e obsuga kadego z nich, podkrelam kadego, bdzie
zawsze taka sama zpunktu widzenia twojego programu. Sprbujmy zatem przyjrze
si wszczegach, co tak naprawd odstrcza wiele osb woprogramowaniu pilotw.
Ja mgbym to wymieni wkilku punktach:
1. Przewiadczenie, e obsuga pilota wjzyku C sprowadza si zawsze do pisania
prawie od pocztku caej implementacji jego obsugi.
2. Brak jednoznacznych standardw korzystania wsposb uniwersalny zrnych pi-
lotw.
3. Przewiadczenie graniczce zpewnoci, e prba uycia innego pilota ni RC5
bdzie si wizaa ztak ogromnym nakadem pracy, e od razu lepiej przej do
budowy klawiatury na mikroprzecznikach.
4. Brak dostpnych uniwersalnych bibliotek zuwagi na setki, awrcz tysice rnych
sposobw kodowania dla rnych pilotw.
5. Zniechcenie do tej technologii po kilku nieudanych prbach opanowania jej za
pomoc wasnego lub cudzego programu.
Po zapoznaniu si zprzyczynami najczstszych niepowodze zwizanych zpomysa-
mi praktycznego wykorzystania podczerwieni, warto okreli zaoenia, jakie powinna
spenia wasna izarazem uniwersalna biblioteka do obsugi pilotw IR. Mowa tu oczy-
wicie oszerokim zastosowaniu pilotw jako najprostszych form klawiatur. Zapoznanie
si ze szczegami zagadnie ztym zwizanych pozwoli take tobie pomyle oin-
nych jeszcze zastosowaniach podczerwieni. Mona bowiem wykorzysta j wniekt-
rych przypadkach do zwykej transmisji danych pomidzy kilkoma urzdzeniami, oile
znajduj si wzasigu wzroku zich punktu widzenia. Podczerwie to take czujniki
odlegoci, bariery optyczne itp. Poniej kilka najwaniejszych zaoe, jakie bdzie-
my chcieli uzyska podczas wykorzystania zdalnych klawiatur:
1. Jedna biblioteka zmoliwoci konguracji parametrw pracy jeszcze przed kom-
pilacj za pomoc pliku konguracyjnego typu *.h.
2. Moliwo korzystania ztej samej biblioteki na rnych mikrokontrolerach AVR.
3. Uniezalenienie pracy biblioteki od czstotliwoci taktowania mikrokontrolera.
4. Zawsze taka sama obsuga wprogramach od strony uytkownika nowy standard.
5. Moliwo obsugi co najmniej kilku rodzajw pilotw wybieranych na etapie kon-
guracji przed kompilacj.
Jzyk C. Pasja programowania mikrokontrolerw 8-bitowych 16
6. Dziaanie wsposb nieblokujcy pracy ptli gwnej oparte na zdarzeniach.
7. Jak najmniejsze zuycie zasobw sprztowych mikrokontrolera.
8. Prostota pod wzgldem wprowadzania wasnych modykacji.
9. Minimalne obcienie procesora (praca wtle).
Wystarczy. Sam przyznasz, e gdyby udao si speni powysze zaoenia, to
nagle zaczyna si rodzi wgowie coraz wicej pomysw na zastosowania praktycz-
ne. Poczekaj jednak jeszcze chwil, a przyblione zostan techniczne szczegy obsu-
gi imoliwoci. To otworzy ci jeszcze szersze pole do popisu wyobrani.
Jak sobie zapewne przypominasz, standard RC5 to inaczej kodowanie bifazowe
znane take pod nazw kodowania Manchester. W mojej poprzedniej publikacji
Mikrokontrolery AVR. Jzyk C. Podstawy programowania w rozdziale dotycz-
cym odbioru i dekodowania kodw pilota w tym standardzie uyem sprztowego
przerwania ICP, wykorzystujc do tego modu 16-bitowego timera nr 1. Tutaj take
skupi si na takim pisaniu procedur dla obsugi innych standardw/protokow, ktre
zapewni eliminacj bdnych/uszkodzonych ramek, zwikszajc przez to niezawod-
no. Uszkodzenia ramek mog wynika zkilku powodw. Najbardziej trywialnym jest
prawdopodobiestwo odbicia emitowanej wizki podczerwieni od cian lub przed-
miotw, ktre spowoduje (co awo wyobrazi sobie), e na kocu do odbiornika moe
nadlecie zmodykowany izakcony sygna. Trzeba poradzi sobie zjego odrzuce-
niem, podobnie jak wprzypadku zakce spowodowanych midzy innymi wietlw-
kami, ktre emituj spore iloci podczerwieni na przykad podczas wczania. Take
niekorzystne mog by zakcenia spowodowane innymi rodzajami pilotw. Zapewne
nie chciaby zrobi urzdzenia sterowanego wasnym pilotem inawet wasnym pro-
tokoem wpodczerwieni wtaki sposb, eby ramki zcakiem innego pilota spowo-
doway nieprzewidziane reakcje, odbierajc przypadkowe wartoci polece. atwo
sobie wyobrazi na przykad wasnego robota startujcego w zawodach, gdy nagle
tracisz z nim kontakt z powodu emisji przez sonary podczerwieni przeciwnika na
ringu.
Przed przystpieniem do pisania programu, warto si zapozna, przynajmniej
w podstawowym zakresie, z pozostaymi standardami kodowania w podczerwieni.
Wyrnibym trzy podstawowe rodzaje, zktrymi bdziesz spotyka si najczciej:
RC5 (znane ju kodowanie bifazowe lub kodowanie Manchester),
kodowanie typu Pulse wykorzystywane na przykad przez Sony (wprotokole
SIRCS),
kodowanie typu Space wykorzystywane na przykad przez rm JVC.
Podstawy dziaania RC5 przedstawiem dokadnie wmojej poprzedniej ksice, teraz
omwi krtko dwa kolejne standardy. Dodam tylko, e bardzo czsto zarwno Pulse, jak
iSpace okrelane s jednym mianem, tylko Space. Spotkasz si ztakim prostym podzia-
em na witrynie www.lirc.org/remotes/, serwujcej dokadne opisy standardw nadawa-
nia setek, jeli nie tysicy najrniejszych pilotw podczerwieni zcaego wiata. Strona ta
bdzie take dla nas nieocenionym rdem informacji podczas dalszych prac.
Kodowanie typu Pulse 17
1.1. Kodowanie typu Pulse
Na rysunku 2 w czci A przedstawiem charakterystyk nadawania pojedynczych
bitw wtym standardzie, awczci B kompletny widok przesyanej ramki danych.
Kodowanie typu Pulse zwizane jest ztym, e wystpuje tu regulacja szerokoci impulsu
(nonej) przy zachowaniu staego czasu przerwy w ramach jednego bitu. Na rysun-
ku widzisz przykadowy protok SIRCS (Sony), wktrym niezmienny czas przerwy
wystpujcy wkadym bicie rwna si T=600s. Bit prezentujcy warto 1 skada si
zatem znonej emitowanej wczasie 2T=1200s oraz wspomnianej przerwy T=600s.
Natomiast bit prezentujcy warto 0 skada si znonej emitowanej wczasie T=600s
oraz przerwy oczasie rwnym take T=600s. Dla uatwienia przedstawiem widok
emisji pojedynczych bitw od strony nadajnika, atake po stronie odbiornika.
Rysunek 2. Kodowanie Pulse
Wida, e sygna odwrcony jest wfazie. Inne protokoy nadajce wtym standardzie
rni si przede wszystkim czasem trwania przerwy, ktra wcale nie musi wynosi
600s, jakrwnie czasem trwania nonej wtrakcie pierwszej czci bitu ozmiennej
dugoci. Wiesz ju zatem, jak wyglda pojedynczy bit. Na rysunku 2 wczci B, zgodnie
ztym, co powiedzielimy, mamy rozrysowany widok ju kompletnej ramki. Jak ju na-
pisaem wMikrokontrolerach AVR. Jzyk C. Podstawy programowania, wstandardzie
RC5 mielimy do czynienia z2 bitami startowymi, ktre miay zazadanie pomc wsyn-
chronizacji odbiornika, ale take pomc wodrnieniu standardu ramki. Stanowiy one
swego rodzaju stay nagwek ramki. Wprzypadku kadego protokou mamy podobn
sytuacj. Na pocztku pojawia si nagwek, ztym, e tutaj jest on zwykle odmienny
ni w standardzie RC5. Jak widzisz na rysunku, w protokole SIRCS nagwek skada
si zdwch czci, przy czym pierwsza to nona emitowana przez czas 4T=2400s,
adruga to przerwa oczasie trwania T=600s. Podczas dekodowania sygnaw tego
typu rozpoznanie charakterystycznych dugoci nagwka decyduje otym, zjakim pro-
tokoem mamy do czynienia. Wdalszej czci, ju po nagwku, emitowane s kolejne
bity. Ta cz ramki take mocno zaley od protokou, a nawet od konkretnej wersji
pilota nadajcego wtakim samym protokole. Naprzykad piloty nadajce wstandar-
dzie SIRCS mog emitowa od 12 do 16 bitw wjednej ramce. Najczciej spotykany jest
Jzyk C. Pasja programowania mikrokontrolerw 8-bitowych 20
Rysunek 4. Ramka pilota rmy Samsung
zwanych pre_data. Posiadaj one zawsze sta iniezmienn warto, ktra dodat-
kowo, poza samym nagwkiem, charakteryzuje wybrany wrcz model pilota/urzdze-
nia. Wpewnym sensie to jakby odpowiednik pola address zpoprzednich protoko-
w, tyle e nie zmienia si on wnadawanych ramkach, nawet jeli ten sam pilot ma
klawisze suce do sterowania zarwno urzdzeniem TV, jak iVCR. Wdalszej cz-
ci ramki mamy 2 kolejne pene bajty, czyli 16 bitw. Wbrew pozorom nie oznacza to
jednak, e wystpuje tutaj wiksza liczba kombinacji ni 256, jaka dostpna na jed-
nym bajcie. Zwr uwag na to, e drugi bajt onazwie DATA ma poziom kresk nad
nazw. To oznacza, e jest on po prostu zanegowan wartoci wczeniejszego bajtu
DATA. Wszystkie te zabiegi zwizane s ze zwikszeniem niezawodnoci przesyanych
ramek, tak aby nie zdarzay si przypadkowe wartoci. Ztego te powodu zawsze na-
ley sprawdza warto tych dwch odebranych bajtw. Na dole rysunku podano tak-
e dokadn czstotliwo nonej oraz, co wane, take stosunek wypenienia uywa-
ny wtym konkretnym protokole. Rzadko jednak bdziemy mieli do dyspozycji tak do-
kadne instrukcje dotyczce interesujcych nas protokow. Bdzie si mona posiko-
wa najczciej danymi prezentowanymi na witrynie lirc.org. Zagadnienie to jest sze-
rzej omwione wnastpnym podrozdziale.
Analiza dokumentacji zwitryny lirc.org 21
1.4. Analiza dokumentacji zwitryny lirc.org
Jak zapewne zauwaye, wju kilkakrotnie powoywaem si na dokumentacj do prze-
rnych pilotw podczerwieni, jaka znajduje si wwitrynie www.lirc.org/remotes/ (lub
http://lirc.sourceforge.net/remotes/). Niestety, wramach tej dokumentacji wystpuje kil-
ka niecisoci. Dotycz one przede wszystkim tego, e:
zarwno standard PULSE, jak iSPACE opisywany jest tylko za pomoc okrele-
nia space,
impuls PTRAIL jest nieraz zbdnie podany (nie powinno go by),
brak rozgraniczenia ramki na command, address lub data, wzamian podane s
tylko wartoci HEX dla poszczeglnych klawiszy pilota zapisane wobydwu bajtach,
nie dowiemy si nic na temat czstotliwoci nonej.
Zanim napisz wicej na ten temat, warto przyjrze si najpierw przykadowym opi-
som kilku pilotw. Cakowicie rne ich typy wybraem przypadkowo, jednak zwr-
ciem uwag, aby wystpowaa rnorodno wkwestii przedstawianych parametrw.
Na pierwszy rzut oka opisy protokow bardzo rni si od siebie. Pomimo to my-
l, e po wczeniejszych wyjanieniach nie bdziesz ju mia problemw zrozpozna-
niem samych standardw kodowania. Mam na myli te typowe, jak: RC5, Space oraz
Pulse. Jedynie przykady oznaczone numerami 3 oraz 4 mog wyda ci si nieznajo-
me. Nie wtpi, e na podstawie podanych informacji sam ju poradzisz sobie zprzy-
kadem numer 3, prezentujcym standard RC6 (nastpca RC5), ale wprzypadku przy-
kadu numer 4 naley ci si kilka sw wyjanienia.
Rysunek 5. Przykady opisw zlirc.org
Jzyk C. Pasja programowania mikrokontrolerw 8-bitowych 22
Opis numer 5 na rysunku 5 nie zawiera typowych informacji, jak header, one, zero itp.
Spotykamy si za to zokreleniem Raw codes:
gap 99594
begin raw_codes
name shutter
2069 27761 483 1464 484 3413 565
name shutter2
2189 27719 628 1396 625 3405 553
C to oznacza? Czyby jaki nowy standard? Nie. Tak prezentowane s informacje, gdy
nie wystpuje aden znany standard nadawania. Podane s kolejno czasy, jakie zostay
zmierzone dla nadlatujcych zpilota impulsw. Wida nazwy shutter, shutter2 itd. Czy
to s kody klawiszy na pilocie? Nie. To s powtrzone wielokrotnie czasy dla tej samej
ramki (tego samego klawisza), przy czym za kadym razem pomiar wykazuje mini-
malne rnice pomidzy poszczeglnymi odcinkami. Oznacza to tylko to, e wystpuje
tutaj dosy spora tolerancja. Wrzeczywistoci ten pilot do aparatu fotogracznego Nikon
posiada zycznie tylko jeden klawisz do wyzwalania migawki. Gdybymy chcieli wyko-
na we wasnym zakresie takiego pilota naleaoby wygenerowa nastpujc sekwencj:
Nona - czas ok. 2 100 s
Przerwa - czas ok. 27 730 s
Nona - czas ok. 550 s
Przerwa - czas ok. 1 430 s
Nona - czas ok. 550 s
Przerwa - czas ok. 3 409 s
Nona - czas ok. 550 s
Przerwa midzy ramkami GAP - czas ok. 99 594 s
Wten prosty sposb mamy gotowy pilot do aparatu. Pozostanie jeszcze kwestia doboru
czstotliwoci nonej, poniewa szczeglnie w przypadku aparatw moe zachodzi
potrzeba uzyskania jak najwikszego zasigu. Warto zacz od nonej 36kHz ispraw-
dzi maksymalny zasig przy tym samym prdzie diody nadawczej. Nastpnie zwik-
szy czstotliwo do 38kHz, nastpnie do 40kHz itp. Jeli przy jednej zczstotli woci
uzyskasz najwikszy zasig, to sam empirycznie sprawdzisz, jaki to zakres. Zwykle cz-
stotliwoci none nie s mniejsze ni 32 kHz i nie wiksze ni 45 kHz. Zatem masz
nieduy zakres do sprawdzenia. Ja bym go jednak ograniczy do 3640kHz.
Wracajc do rysunku 5, wprzykadach numer 1 oraz 2 mamy do czynienia zkodowa-
niem typu Space, awprzykadzie numer 5 zkodowaniem Pulse. Po czym mona to
rozpozna na podstawie prezentowanych opisw? Spjrz, prosz, na dwa fragmenty
opisw zprzykadu numer 1 i5 (tabela 1).
Tabela 1. Kodowanie Space iPulse
Nazwa Nona Przerwa
header 4630 | 4372
one 659 | 1602
zero 659 | 458
ptrail 657 |
repeat 669 | 1582
Nazwa Nona Przerwa
header 2461 | 555
one 1243 | 554
zero 643 | 554
ptrail 644 |
gap 45024
Jzyk C. Pasja programowania mikrokontrolerw 8-bitowych 30
Rysunek 6. Schemat pocze do wiczenia podczerwieni wzestawie ATB
nagwka oraz bitw wraz zimpulsem PTRAIL. Poniewa sami zrobimy odbir kodw,
na razie nie interesuje nas kwestia odstpu midzy ramkami gap. Najpierw wykorzy-
stane zostanie, podobnie jak wksice Mikrokontrolery AVR. Jzyk C, przerwanie
ICP, 16-bitowego timera. Cao zostanie uruchomiona wmoim przypadku na zestawie
uruchomieniowym rmy ATNEL, osymbolu ATB rev:1.02 (to wiczenie mona take
wykona na bliniaczym zestawie ATB rev:1.01). Uyj procesora ATmega32. Schemat
pocze wtym przypadku jest banalnie prosty. Cay port Amikrokontrolera wyko-
rzystam do podczenia wywietlacza LCD wraz zpodwietleniem wtakim porzdku,
e sygnay RS, RW oraz E bd sterowane kolejno przez PA0, PA1 oraz PA2. Nastpnie
od PA3 do PA4 podcz 4-bitow szyn danych D3-D7. Natomiast podwietlenie LCD
podcz do PA7. Na rysunku6 przedstawiony jest pogldowy schemat pocze do-
konanych za pomoc przewodw poczeniowych na zestawie. Wykorzystaem 8 sztuk
przewodw, natomiast sam odbiornik podczerwieni mona wygodnie podcza do
wejcia ICP mikrokontrolera za pomoc jednej zworki, oznaczonej IR_ICP, znajduj-
cej si tu obok odbiornika TFMS. Wywietlacz LCD ma zaoon domylnie zwork
umoliwiajc podczanie pinu R/Wdo mikrokontrolera. Poniewa wpoprzedniej
publikacji udao nam si razem wypracowa dosy dobrze dziaajc bibliotek do ob-
sugi LCD, to wtej lekcji zostanie ona rwnie uyta. Przed kompilacj zajmiemy si
tylko skongurowaniem pinw wpliku nagwkowym *.h wfolderze LCD.
Zdarzenia (events) obsuga podczerwieni 31
Tym razem, jako e chcemy poczy przyjemne (poznanie IR od podszewki) zpoy-
tecznym (kontynuacja nauki jzyka C dla AVR), przygotujemy cao, opierajc si na
prawdziwym mechanizmie zdarze. Wprawdzie od tego blisko ju do jzyka C++, my
jednak pozostaniemy jeszcze przy samym jzyku C. Zaczn od przedstawienia iom-
wienia pliku nagwkowego ir_sony.h, ktry naley przygotowa tak, aby pniej korzy-
sta zobsugi protokou Sony jak zbiblioteki. Bdzie wnim wida jak na doni, czego
albo jakich waciwoci moemy si spodziewa po takiej bibliotece oraz co ijak mo-
emy ustawia/kongurowa wedug wasnych biecych potrzeb:
#ifndef IR_SONY_H_
#define IR_SONY_H_
/* **** KONFIGURACJA **** */
/* **** USTAWIENIA UYTKOWNIKA **** */
#define IR_PIN (1<<PD6) // numer pinu wejcia ICP
#define IR_DIR DDRD
#define IR_PORT PORTD
// podajemy wartoc 1, jeli chcemy uyc Virtual Toggle Bit, lub 0 jeli nie
#define VIRTUAL_TOGGLE 1
// podajemy wartoc 1, jeli chcemy przemapowac najwaniejsze klawisze na
standard RC5
// lub wartoc 0, jeli chcemy oryginalne kody SONY
#define KEYS_REMAP 0
/* **** USTAWIAMY WARTOCI SPECYFICZNE DLA SONY SIRCS **** */
// makro przeliczajce czasy w s w zalenoci od F_CPU (automatycznie)
#define ir_micro_s(num) ((num)*(F_CPU/1000000UL)/8)
// czas pierwszej charakterystycznej czci naglwka (headera)
#define SONY_HEADER ir_micro_s(2440)
// czas trwania bitu o wartoci = 1
#define SONY_BIT_HIGH_MID ir_micro_s(1240)
// 2/3 czasu trwania pierwszej polowy bitu o wartoci = 1
#define SONY_BIT_HIGH_MID ir_micro_s(925)
// czas trwania pierwszej polowy bitu o wartoci = 0
#define SONY_BIT_LOW ir_micro_s(650)
// toleracja, jak przyjmiemy dla naszego pilota. Jeli bdzie za dua
#define SONY_TOLERANCE ir_micro_s(150)
// ta procedura moe zaczc odbierac niechccy czasem dziwne kody
// z pilotw innych producentw; jeli bdzie za mala, to moe si
// zmniejszyc zasig pilota albo bdzie gorzej dzialal z odbicia np. od cian itp.
// optymalne wartoci zwykle zawieraj si w granicach 100-250
/* **** KONIEC USTAWIE UYTKOWNIKA **** */
// komunikaty na temat stanu ramki w trakcie jej dekodowania
#define FRAME_RESTART 0
Jzyk C. Pasja programowania mikrokontrolerw 8-bitowych 70
st eliminacj drga stykw iwygenerowanie dwch rnych kodw klawiszy (com-
mand). Zmienna address posiada sta warto = 1, ale moesz to zmienia wedug
uznania, jeli sam wykonujesz odbiornik. Kompilujemy program, uruchamiamy ipro-
sz bardzo. Zjednej strony program reaguje na fabryczny pilot, wywietlajc poprzez
funkcj moja() na LCD address, command oraz nawet key_time, gdy za-
czyem mechanizm Virtual Toggle Bit. (naley pamita tylko, e Timer0 zajty jest tu-
taj na potrzeby generowania nonej, wic wkonguracji biblioteki podczerwieni wy-
braem Timera2 do obsugi Virtual Toggle).
Okazuje si, e wszystko dziaa wymienicie. Mam nadziej, e przerobienie takiego
nadajnika na potrzeby na przykad pilota Samsung, nadajcego wstandardzie Space,
nie bdzie dla ciebie trudne. Funkcja nadajca ramk bdzie si tylko nieco rnia.
Do zmiennej data wpiszemy do modszego bajtu kod argumentu adr, natomiast
do starszego zanegowan warto bajtu adr. Nastpnie po wygenerowaniu nagw-
ka konieczne bdzie wygenerowanie 16 bitw pre_data. Mona sobie utworzy do-
datkow zmienn 16-bitow, do ktrej uoymy podane na lirc.org bity. Wdalszej ko-
lejnoci pozostanie nam ju tylko wygenerowa ca 16-bitow ramk iewentualnie
sprawdzi, czy bdzie konieczne wygenerowanie impulsu PTRAIL. Podobny sposb
postpowania bdzie obowizywa zkadym pilotem. Chyba e bdzie to co wrodza-
ju Pentaxa, ktrego ramki pokazaem wyej. Wtakim przypadku wystarczy wprost po
kolei wkrtkiej ptli wygenerowa kolejne impulsy, pobierajc nawet ich czasy na przy-
kad ze zmiennej tablicowej typu uint16_t, ktr uprzednio przygotujemy iwpisze-
my wszystkie czasy zrysunkw. To znaczy po jednej tabeli dla kadego klawisza. To jest
chyba najprostszy sposb wygenerowania takich bardzo nietypowych ramek, ktre nie
s zwizane zadnym standardem.
1.10. Transmisja wasnych danych wpodczerwieni
Kolejnym ciekawym zastosowaniem podczerwieni we wasnych projektach moe oka-
za si transmisja rnego rodzaju danych pomidzy rnymi urzdzeniami. Tyle e
tym razem bdziemy musieli we wasnym zakresie nauczy si tworzy ramki danych.
Opracowa wasne standardy, zamiast korzysta zgotowych, jakie oferowane s wpi-
lotach omwionych wyej. Wpierwszej kolejnoci trzeba bdzie rozway to, jaki stan-
dard kodowania wybra. Moim zdaniem najlepszy bdzie tu popularny RC5, ponie-
wa mamy ju opanowane zarwno nadawanie, jak iodbir. Dodatkowo wykorzysta-
my zalet sprztowego bitu Toggle. (Sposb nadawania ramek RC5 szczegowo opisa-
em wmojej poprzedniej ksice Mikrokontrolery AVR. Jzyk C. Podstawy progra-
mowania, wic nie bd go tu przytacza, za to na pewno bd si powoywa na wie-
dz tam przekazan).
Przymierzajc si do tego zadania, najpierw musimy ustali oglne zaoenia odnonie
do potrzeb isposobu przesyu danych. Wiadomo, e nie bdziemy korzystali ztrans-
misji UART, jednak wrwnie wygodny sposb, bo wprzerwaniach, bdziemy wstanie
odbiera nasze dane. Dobre pytanie na pocztek naszych rozwaa jest takie: jak due
iloci danych/bajtw chcemy przesya oraz jak przepustowo? Wydaje mi si, e to
Transmisja wasnych danych wpodczerwieni 71
bardzo mocno zaley od faktycznych potrzeb biecych, wic na pewno nie bdziemy
dy tutaj do zorganizowania transmisji, ktra zpowodzeniem zastpi nam USART.
Do porozumiewania si t drog zczujnikami temperatury, do sterowania silnikami
wurzdzeniach oraz do wielu innych tego typu zagadnie wystarczy przesyanie pro-
stych ramek danych zawierajcych przynajmniej dwa pene bajty. Nasze zaoenia nie
bd nastawione na uzyskiwanie duych prdkoci. Za to pokusimy si oprzygotowa-
nie komunikacji dwustronnej typu half duplex (moliwo albo nadawania, albo od-
bioru wjednym czasie). Naley pamita rwnie, e skoro mowa otransmisji wpod-
czerwieni, to zastosowania ograniczaj si tylko do komunikacji pomidzy urzdzenia-
mi znajdujcymi si wzasigu wzroku, bez adnych przeszkd pomidzy nimi oraz do
niewielkich odlegoci (od kilku do kilkunastu metrw). Dodam jeszcze jeden powd,
dla ktrego decydujemy si na standard kodowania RC5 (Manchester). Dziki niemu
mona maksymalnie skrci czas trwania przesyanych ramek danych. Wszystkie cza-
sy kolejnych impulsw s praktycznie rwne, podczas gdy winnych standardach mamy
do czynienia zbardzo dugimi nagwkami, aprzez to wystpuje konieczno stoso-
wania owiele duszych przerw midzy ramkami. Biblioteka, ktr stworzymy, nie b-
dzie by moe najbardziej zoptymalizowana. Ma ona jednak na celu pokazanie jednej
zmetod stworzenia wasnego standardu komunikacji.
Podstawowe zaoenia:
1. moliwo przesyania minimalnie pojedynczych ramek skadajcych si zdwch
penych bajtw danych oraz bitu Toggle;
2. moliwo przesyania krtkich acuchw tekstowych (stringw), maks. dugo
16 bajtw;
3. dwustronna komunikacja;
4. prosta obsuga zmoliwoci dowolnej modykacji;
5. odbir oparty na przerwaniu ICP (Timer1);
6. nadawanie oparte na nonej generowanej przez Timer0 (wyjcie OC0) lub Timer2
(wyjcie OC2).
Na pocztek przyjrzyjmy si moliwociom naszej nowej biblioteki, zagldajc do pli-
ku nagwkowego ir_man.h.
#ifndef IR_MAN_H_
#define IR_MAN_H_
/* **** K O N F I G U R A C J A ***** */
/* **** U S T A W I E N I A U Y T K O W N I K A **** */
// Wybr timera 8-bitowego do generowania nonej
// Timer0 - wyjcie OC0
// Timer2 - wyjcie OC2
#define TIMER_NR 2
#define IR_PIN (1<<PD6) // numer pinu wejcia ICP
#define IR_DIR DDRD
#define IR_PORT PORTD
2. Transmisja radiowa 433/868 MHz i 2,4 GHz
Wspominaem wczeniej, e przejcie ztematyki nadawania/kodowania wpodczerwie-
ni do nadawania/kodowania drog radiow wpopularnych pasmach 433/868 MH b-
dzie pynne. Sporo ju wiesz na temat podstawowych sposobw kodowania sygnaw, kt-
re musi zapewni eliminacj bdw podczas transmisji. Mam tu na myli kodowanie typu
Manchester. To wanie na nim oprzemy si podczas omawiania tych zagadnie. Istnieje
jednak podstawowa rnica wnaszym podejciu do kodowania bifazowego, jeli mamy
uy nadajnika iodbiornika pracujcego na pamie na przykad 433 MHz od tego, co byo
wpodczerwieni. Poprzednio, jak dobrze pamitasz, musielimy zadba sami oczstotliwo
non, ktr po prostu modulowalimy, chcc przesya pojedyncze bity. Wtym przypadku
czstotliwo non (433 MHz/868 MHz) zapewniaj nam ju zmarszu komplety nadaj-
nik/odbiornik lub transcievery (transciever, czyli odbiornik inadajnik wjednym module).
Zanim przejd dalej, poinformuj tylko, e wramach omawianego tematu bierzemy pod
uwag tylko takie nadajniki/odbiorniki, ktre maj proste wejcia/wyjcia suce do klu-
czowania naszego sygnau, ktry chcemy transmitowa, oraz wyjcie, ktre zachowuje si
podobnie jak wyjcie odbiornika podczerwieni typu TFMS. Nie s to zatem moduy maj-
ce na pokadzie wasne mikrokontrolery, ktre zapewniaj nam podstawowe mechanizmy
kodowania/dekodowania, ale za to wzamian pozwalajce na prostsz transmisj zwyko-
rzystaniem ju znanych ci protokow transmisji, jak RS232, SPI oraz I2C. Dlaczego wta-
kim razie zdecydowaem si opisa te, jakby si mogo wydawa, trudniejsze rozwizania?
Tutaj zaprotestowabym, e s to trudniejsze rozwizania. Kady rodzaj moduw do zre-
alizowania transmisji radiowych ma swoje wady izalety. Jest ich caa masa dostpnych na
rynku, wielu producentw oraz mnstwo rozwiza dla uytkownikw. Otym, jaki modu
wybierzemy, nie zawsze decyduje cena, cho jest to bardzo wany parametr.
Myl, e dokonujc wyboru, warto pozna chocia pobienie sposoby dziaania kilku r-
nych moduw isprbowa okreli kilka czynnikw, jak: stopie skomplikowania proce-
dur nadawczo-odbiorczych, cena za komplet lub transciever, liczba elementw zewntrz-
nych potrzebnych do ich uruchomienia, sposb doboru iskutecznoci anteny, atake
zasigi i stopie komplikacji, jeli chodzi oinicjalizacj programow moduw (gdy jest
wymagana). Ale ichyba najwaniejszym zagadnieniem s potrzeby, gdy nie kady rodzaj
komunikacji nadaje si wprost do pewnych zastosowa.
Dlatego wymieni tu wpewnej kolejnoci kilka rnych moduw ije scharakteryzuj
(bdzie to bardzo uproszczona charakterystyka, majca na celu wycznie to, aby mg
si jak najszybciej zorientowa, wjakim kierunku i podczas tworzenia prototypu, ana-
wet wfazie powstawania idei prototypu):
1. komunikacja Bluetooth oraz znane moduy BTM-222 lub BTM-112 (pasmo 2,4 GHz),
2. komunikacja WiFi bezprzewodowe moduy kart sieciowych (pasmo 2,4 GHz),
Jzyk C. Pasja programowania mikrokontrolerw 8-bitowych 84
3. scalone dwukierunkowe transcievery zapewniajce komunikacj poprzez standar-
dowe cza typu: RS232, SPI, I2C (pasma od 433 MHz do 2,4 GHz),
4. najprostsze nadajniki/odbiorniki pracujce z modulacj AM/FM, posiadajce
jedno wejcie kluczujce wnadajniku oraz jedno wyjcie kluczowanego sygnau
wodbiorniku.
Nie bez powodu umieciem moduy Bluetooth na pierwszym miejscu. Rzeczywicie
posugiwanie si nimi od strony praktycznej to pestka. Jeli chcemy pracowa na do-
mylnie ustawionych parametrach, to wzasadzie niczego nie trzeba kongurowa ani
ustawia. Moduy dziaaj po prostu jak zwyky kabel RS232, tyle e bezprzewodowy.
Jeli za chcemy zmieni ich konguracj, na przykad nada inn nazw wotoczeniu
sieciowym lub zmieni prdko RS232, to konguracji takiej dokonujemy jednora-
zowo iwcale nie potrzebny jest nam do tego mikrokontroler. Wystarczy zwyka przej-
ciwka USB/RS232 lub na ukadzie MAX232 ica konguracj dokonujemy zpozio-
mu terminala wkomputerze PC. Jest ona zapamitywana na stae wpamici EEPROM
moduu. Ich ogromn zalet jest to, e mamy do dyspozycji wpeni dwustronn komu-
nikacj ito nawet wjednym czasie (full duplex), najbardziej naturalny ipospolity stan-
dard komunikacji RS232, ado tego do wyboru prawie dowolne prdkoci. Czeg wic
jeszcze oczekiwa? Agdy dodamy do tego, e wcelu komunikacji zkomputerem nie
musimy dokonywa zakupu dwch takich moduw (wystarczy tylko jeden), poniewa
wkomputerze mona uy albo wbudowanej (na przykad wlaptopach) przejciwki
USB/BT, albo dokupi tak przejciwk za poow ceny moduu BTM, to wydawa by
si mogo, e to idealne rozwizanie do kadego celu. Niestety, komunikacja tego typu
pomimo szeregu zalet wogle nie nadaje si do niektrych zastosowa. Ma wrcz po-
wane wady zpunktu widzenia prb zastosowania jej do zbudowania sieci czujnikw,
ktre mogyby porozumiewa si zukadem nadrzdnym typu Master wsposb po-
dobny do sieci RS485. Kolejna wada to dosy spory pobr prdu, co od razu eliminu-
je dugi szereg rozwiza bateryjnych, na przykad pilotw zdalnego sterowania. Przy
czym jeli chodzi opomys wykorzystania ich wpilotach, to kolejn wad byoby to, e
czas negocjacji ipierwszego nawizania poczenia ze sob dwch moduw (bo tylko
tak mog pracowa poczenie jeden do jednego) stawiaby pod znakiem zapyta-
nia wykorzystanie pilota na przykad do zamykania lub otwierania bramy garaowej.
Kolejna wada wporwnaniu zinnymi moduami radiowymi to zasig. Tylko, prosz,
dobrze mnie zrozum. Sabszy zasig jako taki nie jest adn wad woglnym rozumie-
niu. Wprzypadku typowych zastosowa Bluetootha bywa to wrcz zalet, dlatego te
spotkasz si zmoduami pracujcymi wstandardzie Class1 (zasig do 100 m) na przy-
kad BTM-222, ale take zmoduami pracujcymi wstandardzie Class2 (zasig tylko
do 10 m). Po c bowiem taka na przykad myszka BT miaaby rozsiewa swoje infor-
macje na 100 m izakca prac ew. innych urzdze pracujcych wtym samym pa-
mie. Jeli jednak wemiemy pod uwag komunikacj choby maej stacji meteo, znaj-
dujcej si wodlegoci, powiedzmy, 150200 m od miejsca centrali, gdzie po drodze
nie ma adnych zabudowa, przeszkd terenowych, to ju moduy BT si nie przyda-
dz. Na pewno trzeba bdzie sign po kolejne rodzaje moduw zlisty podanej wyej.
Punkt drugi obejmuje wszelkiego rodzaju moduy kart sieciowych WiFi, ktre nadaj
si do wykorzystania wniewielkich wbudowanych systemach opartych na maych mi-
Transmisja radiowa 433/868 MHz i 2,4 GHz 85
krokontrolerach. Przytocz tu przykad jednego zczytelnikw, ktry napisa do mnie
we-mailu, e do poczenia bezprzewodowo swoich dwch urzdze na mikrokon-
trolerach uy wanie tego typu karty. Wydawao mu si, e jej obsuga, jeli chodzi
okomunikacj pomidzy urzdzeniami albo pomidzy komputerem PC, sprowadzi
si do przesania kilku interesujcych go bajtw. Jakie byo jego zdziwienie, gdy do-
wiedzia si, e do tego celu musiaby zaimplementowa wswoim mikrokontrolerze
jeszcze spor cz stosu TCP, wogle zapozna si ztak implementacj, atake na-
pisa wasne drivery do karty sieciowej istosu TCP po to aby na kocu nauczy si
przesya informacje za pomoc jednej zwarstw stosu czy te wyszych protokow,
jak UDP, http lub TCP.
Reasumujc, rozwizania takie s oczywicie wspaniae, wystpuj nawet karty zju wbu-
dowanym stosem TCP lub moliwoci jego obsugi za pomoc polece AT, tak jak to ma
miejsce na przykad wmodemach GSM przy wykorzystaniu cznoci GPRS. Nadal jed-
nak jest to duo bardziej skomplikowane zagadnienie ni wykorzystanie najprostszych
nadajnikw. Irwnie wtym przypadku coraz nisze ceny lub co waniejsze niesamo-
wicie niski pobr prdu wstanie bezczynnoci nie s wyznacznikiem tego, e wkadym
przypadku opacalne jest uycie takiego rozwizania. Poruszamy si zatem wd listy.
Punkt trzeci obejmuje moduy, ktre mog si wydawa na pierwszy rzut oka proste
imao skomplikowane wuyciu. Wtej klasie ceny bywaj chyba najnisze zmoliwych,
jeli spojrzymy na moduy transcieverew typu RFMxx rmy Hoperf. Akurat te modele
najczciej zapewniaj komunikacj za pomoc cza SPI. Zatem mamy tu: bardzo ni-
sk cen, niski pobr prdu idobre zasigi do 200300 m wterenie otwartym. Gdzie
wic tutaj s wady, czy wogle takie rozwizanie ma wady? Wspomn take omodu-
ach typu CC100 rmy Chipcon. Tu znowu mamy podobn sytuacj. Oile jednak ich
konguracja programowa iprzygotowanie do pracy, atake sama transmisja s niepo-
rwnywalnie prostsze od obsugi moduw kart WiFi, to jednak nadal pozostaje kil-
ka kwestii, ktre powoduj, e start wtej dziedzinie bez znajomoci zasad komunika-
cji radiowej tak oglnie bywa bardzo trudny. Przyznam, e wybierajc pomidzy aku-
rat tymi dwoma rodzajami moduw, wol ten drugi, zuwagi na prozaiczn rzecz, kt-
ra nabiera nieraz niebagatelnie wielkiego znaczenia. Chodzi mianowicie odokumen-
tacj producenta. Przypadek rmy Hoperef wedug mnie jest przykadem, jak nie na-
ley postpowa zklientem oraz jak nie naley przygotowywa dokumentacji tech-
nicznej pozwalajcej na proste, atwe iszybkie skorzystanie zmoduw przez kade-
go. Nie do, e oryginalne noty PDF, przynajmniej te dotyczce moduw RFM12/B,
zawieray ichyba nadal zawieraj bdy, to na stronach producenta trudno uzyska
jakiekolwiek wsparcie techniczne czy te inne wersje dokumentacji, przykadw im-
plementacji itd. Nie chc przez to powiedzie, e s one bezwartociowe, ani wsensie
ceny, ani przydatnoci, wrcz odwrotnie czasem warto si pokusi oich kupno, ana-
stpnie powici kilka dugich zimowych wieczorw na walk zdokumentacj, wa-
sne prby, testy itd. Moduy tego typu charakteryzuj si tym, e trzeba je prawidowo
zainicjalizowa przed przystpieniem do pracy. Przy czym producent daje bardzo wie-
le wariantw ustawie. Bywa to niestety dla mniej wtajemniczonych adeptw elektro-
niki cyfrowej jedn znajwikszych bolczek. By wybrn ztakiej sytuacji, przeszuku-
j fora internetowe wcelu znalezienia gotowca, ktry mogliby zaadaptowa bez wni-
Jzyk C. Pasja programowania mikrokontrolerw 8-bitowych 86
kania wszczegy dziaania. Koczy si to zwykle niepowodzeniem izraeniem si do
tego typu le udokumentowanych rozwiza.
Wreszcie czwarty punkt. Mamy tu do czynienia znajprostszymi nadajnikami, odbior-
nikami itranscieverami, ktre nie wymagaj od uytkownika wykonywania adnych
ustawie, maj cile zdeniowane parametry pracy. Ich obsuga sprowadza si do po-
dania na jeden pin wejciowy wnadajniku gotowego sygnau, ktry chcemy przesya,
natomiast po stronie odbiornika do dyspozycji dostajemy pin, na ktrym ten sygna
si pojawia wniezmienionej postaci. Przynajmniej wzaoeniach. Mogoby si wyda-
wa, e to idealne rozwizanie. Teoretycznie wystarczy bowiem poda stan wysoki na
wejcie nadajnika, aby na jego wyjciu uzyska taki sam stan wysoki, iprzeciwnie, na
wejcie poda stan niski, aby uzyska take stan niski na wyjciu odbiornika. Niestety,
wtym miejscu nastpuje zwykle ogromne rozczarowanie. Wprawdzie wprzypadku
podania stanu wysokiego wnadajniku otrzymamy taki sam stan na wyjciu odbiorni-
ka, to wprzypadku podania stanu niskiego, na wyjciu odbiornika, jeli podczymy
oscyloskop, zobaczymy ogromne iloci szumw, przebiegw, szpilek, po prostu jakie
rne czstotliwoci nakadajce si jakby na siebie. Jak zatem mona cokolwiek prze-
sa tak drog? Okazuje si, e najpierw trzeba zapozna si zprost specyk dziaa-
nia tego typu moduw, awszystko stanie si jasne. Dla przykadu podam nazwy kil-
ku kompletw nadajnikw/odbiornikw oraz transcievera tego typu (rysunki 2224).
Rysunek 22. Firma Aurel: nadajnik TX-FM-MID oraz odbiornik RX-4M50FM60SF
Rysunek 23. Firma Telecontrolli: nadajnik RTFQ2-433MHz-R, odbiornik RRFQ1-433MHz
Transmisja radiowa 433/868 MHz i 2,4 GHz 87
Rysunek 24. Firma Aurel, transciever RTX-MID, wersje zasilania +3,3V lub +5V
Wybraem te trzy typy nie dlatego, e s najlepsze spord wszystkich moliwych do-
stpnych na rynku rozwiza radiowych. Jak wspominaem po prostu nie ma najlep-
szych, uniwersalnych, s tylko takie, ktre najlepiej nadaj si do konkretnego rozwi-
zania, ktre realizujemy. Myl, e omwienie komunikacji na trzech wymienionych
przykadach pozwoli Ci ju samodzielnie decydowa si, jaki modu wybra spord
setek dostpnych na rynku. Chciabym jak najszybciej przybliy ci podstawy komu-
nikacji t metod, aby mg zastosowa j wpraktyce.
Prbujc zatem wybra co dla siebie, nie majc dowiadczenia wtej dziedzinie, war-
to wiedzie, na jakie parametry naley zwrci uwag. Wtabeli 2 przedstawiam przy-
kadowy modu zparametrami pracy.
Tabela 2. Dane na temat moduu znoty PDF
Zakadajc, e naszym celem bdzie wykorzystanie takich moduw do prostych zada
wpostaci pilotw radiowych lub transmisji danych zczujnikw rozmieszczonych wpo-
mieszczeniu(-ach) do ukadu nadrzdnego, to jednym znajwaniejszych parametrw
bdzie (szczeglnie po stronie nadajnika) zakres napicia zasilajcego. Czsto bo-
wiem wpilotach stosuje si wcelu miniaturyzacji baterie onapiciu 3 V. Dlatego te
spora cz nadajnikw ma szerszy zakres napicia lub wystpuje wdwch wersjach,
Jzyk C. Pasja programowania mikrokontrolerw 8-bitowych 88
tzn. zasilanych napiciem +3,3 V lub +5 V. To jest dosy oczywiste izapewne zdajesz
sobie ztego dobrze spraw. Myl e podobnie podszedby do parametru, jakim jest
pobr prdu, szczeglnie przez nadajnik zarwno wtrakcie dziaania, jak iupienia.
Dobierzesz sobie wic nadajnik bez problemw pod tym wzgldem. Oczywist rzecz
jest nie tylko to, e nadajnik iodbiornik musz dziaa na tej samej czstotliwoci, ale
trzeba jeszcze skompletowa (zakupi) je pod ktem rodzaju modulacji, jakiej uywaj
obie strony. Wbogatej ofercie wielu sklepw internetowych nie zawsze prezentowane
moduy dobierane s wpary. Dlatego musisz zwrci uwag na rodzaj modulacji, czy
jest typu AM, czy moe FM. Ale to, co najbardziej bdzie nas interesowa, to przepu-
stowo. Dziki temu parametrowi bdziemy wstanie oszacowa prdkoci, zjakimi
bdziemy mogli przesya dane. Wtym miejscu zaznacz, e tego typu rozwizania nie
s przeznaczone do transmisji duej iloci danych. Najczciej stosuje si je wanie do
rnego rodzaju pilotw, aby przesa kody klawiszy lub krtkie informacje zdanymi
zczujnikw, albo do sterowania prac innych urzdze/moduw.
Wracajc jednak do konkretnych moduw podanych wyej, przyznam, e nie grze-
sz one najniszymi cenami wporwnaniu chociaby ztranscieverami rmy Hoperf,
ktre mona naby ju za kilkanacie zotych. Komplet nadajnik/odbiornik albo sama
para transcieverw zwykle kosztuje kilkadziesit zotych (od 40 z do 60 z). Niemniej
jednak, jak si przekonasz, prostota ich wykorzystania moe spowodowa, e taki wy-
datek warto ponie. Jednoczenie uwaam, e sposb komunikacji, ktry moemy
ustandaryzowa dokadnie tak jak wprzypadku podczerwieni, zachowujc przy tym
spore zasigi, umoliwia bardzo atw implementacj tego typu nadajnikw/odbiorni-
kw wdowolnych urzdzeniach.
Przejdmy teraz do wyjanienia, dlaczego prby nadawania przez tego typu komplety
zwykych ramek RS232 kocz si zwykle niepowodzeniem albo wnajlepszym przy-
padku znacznym zmniejszeniem zasigu wtrakcie przesyania danych. Dlaczego tak
si dzieje? Aby sobie na to pytanie odpowiedzie, spjrzmy najpierw na wyjcie takie-
go odbiornika, ktre podczamy ju do mikrokontrolera wtrakcie, gdy nic nie nada-
jemy albo gdy nadajnik jest wyczony (rysunek 25).
Rysunek 25. Szumy na wyjciu odbiornika
Transcievery komunikacja 123
wanym wsadem odbiornika. Ich wysyaniem zajmuje si omawiana wczeniej funkcja
do przesyania caej ramki zacuchem tekstowym.
Cz przykadowego kodu programu ma te elementy, ktre wymieniem tu przed
przedstawieniem powyszego kodu. Wida wic deklaracj naszych dwch funkcji
do odbioru tekstw iwywietlania ich na LCD oraz funkcj do prezentacji cyklicznie
odbieranych ramek binarnych. Ato, co najwaniejsze, czyli korzystanie ze zdarzenia,
sprowadza si jak zwykle do:
// **** ptla nieskoczona
while(1) {
MAN_EVENT(); // **** ZDARZENIE OBSLUGI ODBIORU
// dalsza czc wlasnego programu..
}
Mam nadziej, e podobnie jak mnie, korzystanie ztego typu sposobw tworzenia wa-
snych bibliotek cho na pierwszy rzut oka mog si wydawa zbyt skomplikowane
przypadnie ci do gustu. Aszczegln uwag przykuje prostota posugiwania si tymi
bibliotekami. Zachcam wic do przeprowadzenia wasnych wicze imodykacji. Na
pycie DVD postaram si umieci krciutki materia wideo prezentujcy dziaanie opi-
sanego tutaj kodu wnadajniku iodbiorniku podczas prawdziwej, zycznej komunikacji.
2.1. Transcievery komunikacja
Aby trzyma si konwencji stopniowego ipynnego przechodzenia pomidzy omawia-
nymi tematami, powic teraz kilka sw transcieverom rmy Aurel, oktrych wspo-
mniaem na pocztku tego rozdziau, prezentujc jeden model wtabelce. Niewtpliw
zalet tych moduw jest przede wszystkim moliwo uzyskania dwustronnej komu-
nikacji, ale take niska cena. By moe nadal nie a tak niska jak transcieverw r-
my Hoperf (typu RFM12B), jednak prostota ich stanowi tu niewtpliwie przewag.
Transcievery oparte s na ukadzie scalonym rmy Maxim 7030AH. Wzasadzie apli-
kacja ukadu jest na tyle prosta, e przy odrobinie wysiku mona byoby we wasnym
zakresie budowa sobie tego typu transcieverki. Wzwizku zpowyszym wszystkie in-
formacje zawarte wnocie aplikacyjnej transcieverw RTX-MID odpowiadaj wwik-
szoci informacjom zawartym wnocie aplikacyjnej samego chipu. Najwaniejsze zna-
szego, czysto uytkowego punktu widzenia s informacje opodstawowych wyprowa-
dzeniach moduu, ich funkcjach, atake ospecycznym sposobie przeczania moduu
bd to wtryb nadawania, bd odbioru. Wystpuj tu bowiem proste zalenoci cza-
sowe, ktre wystarczy zachowa wprogramie podczas sterowania pinami wejciowy-
mi moduu, takimi jak TX/RX oraz ENABLE. Wprzypadku tych moduw jest jedna
ciekawostka techniczna, chodzi omoliwo blokady szumw na wyjciu odbiornika
wtrakcie, gdy nic nie jest nadawane iodbierane. Mechanizm ten to opcja Squelch (blo-
kada szumw), dziaajca podobnie jak ta, zktrej korzystaj krtkofalowcy. Wkrt-
kofalarstwie ma ona za zadanie uchroni uszy przed obrbk zbdnego szumu, nato-
miast tutaj ma uchroni mikrokontroler przed nadmiern iniepotrzebn prac, ktrej
celem jest analizowanie szumw iprba doszukania si wnich waciwych ramek da-
Jzyk C. Pasja programowania mikrokontrolerw 8-bitowych 124
nych. Otakim zjawisku wspominaem ju wpoprzednim podrozdziale, tzn. oszumie
biaym, ktry powoduje, e przerwanie ICP mikrokontrolera tak naprawd reaguje na
kady impuls, prbujc dekodowa ramk danych. Niestety, zwykle po kilku pierw-
szych sygnaach ramka zostaje odrzucana iproces rozpoczyna si od nowa przez cay
czas, gdy nadajnik nie nadaje adnych danych lub samej nonej.
Zjakiego powodu blokada nie zostaa wbudowana do moduu na stae. Producent jedy-
nie daje nam moliwo skorzystania zniej iostrzega oskutkach ubocznych. Skutkiem
ubocznym wprowadzania ukadu Squelch jest zmniejszenie czuoci odbiornika o3 dB
inieco opniony czas reakcji na nadlatujce ramki. Idlatego wnocie PDF znajdziemy
informacj, e jeli nie zaley nam na wysokiej jakoci toru nadawczo-odbiorczego, aco
za tym idzie na jak najwikszym zasigu oraz czuoci irozdzielczoci, to moemy sko-
rzysta zproponowanego ukadu blokady szumw. Jak widzisz, co za co. Wpraktyce
moe si rzeczywicie zdarzy itak, e transmisja bdzie potrzebna wramach na przy-
kad jednego duego pomieszczenia, wic nie bdzie ci zaleao na duych zasigach
Moe si za to okaza, e wany zacznie by czas, ktry jest marnowany wprzerwaniu na
analiz szumu biaego, wtedy to wykorzystasz ukad Squelch. Winnych przypadkach po-
miniesz go. Atak naprawd nasze funkcje obsugi dekodowania ramek s skonstruowane
na tyle optymalnie, e nie tracimy zbyt duo czasu wprzerwaniu ICP podczas prb de-
kodowania szumu iodrzucania ramek zych lub uszkodzonych zpunktu widzenia pro-
gramu. Oczywicie naley mie na uwadze, e pojcie nie tracimy zbyt duo czasu jest
wzgldne itak naprawd wduym stopniu zaley od indywidualnego projektu. Trudno
to oceni, jeli si dopiero zaczyna przygod ztakimi zagadnieniami, dlatego majc ju
jak tam praktyk wtym zakresie, podpowiem ci bardzo oglnie, e wzdecydowanej
wikszoci swoich pierwszych projektw okrelenie to bdzie prawdziwe inie narazisz
procesora na due obcienie, realizujc swoje projekty zwplecion obsug takich mo-
duw czy samych odbiornikw.
Cay ukad skada si zaledwie zdwch rezystorw ijednego kondensatora. czy si to
wszystko pomidzy wejciem Enable oraz wyjciem analogowym zmoduu (wuprosz-
czeniu mwic) wedug schematu podanego na rysunku 35.
Zasada dziaania polega na wprowadzeniu dodatkowego ltru dolnoprzepustowego na
wyjciu analogowym, zktrego dalej czerpie sygna tzw. Data Slicer, czyli ukad odpowie-
dzialny za formowanie ju waciwego sygnau cyfrowego na wyjciu zsamego moduu.
Dziaanie ukadu polega na podaniu napicia okoo 1,6 V na wyjcie ANALOG-OUT, kt-
re uzyskujemy zdzielnika rezystorowego R1 oraz R2 wtrakcie, gdy odbiornik jest aktyw-
ny. Na wejciu Enable panuje wtedy stan wysoki. Na schemacie podane s wartoci rezy-
storw dla napicia zasilania 3,3V, adla napicia zasilania 5V wida tylko skrt TBD. Jest
on dosy tajemniczy, tym bardziej e wcaej nocie PDF nie znajdziemy wtej sprawie ani
sowa wyjanienia. To skrt angielskiego terminu To Be Dened, co znaczy do ustalenia.
Zatem tak napraw naley samemu sobie ustali, krtko mwic, dobra sobie dzielnik tak,
aby uzyska na wyjciu napicie wpodanych wyej granicach przy zaoeniu, e stan wy-
soki bdzie odpowiada napiciu zasilania VCC=+5V. Nie jest to chyba aden problem.
Transcievery komunikacja 125
Rysunek 35. Transciever Aurel
Ja testowaem ogranicznik szumw zwartociami rezystorw: R1=33 K oraz R2=15K.
Atake zinnymi wartociami inieco wyszym napiciem ni 1,7V. Oczywicie efekt
przy napiciu 1,5V nie by zachwycajcy, gdy obserwowaem biay szum na oscylo-
skopie. Ale ju przy wartoci 2,2V znika cakowicie, przy czym zmieniaa si wog-
le faza sygnau wstanie spoczynku. Natomiast poniej 1,9V faza bya taka sama jak
przed wczeniem ukadu blokady szumw. Wstanie spoczynku nadal na wyjciu by
stan wysoki. Dobr tego napicia ma, jak wida, wpyw na dwie rzeczy: zbyt niska war-
to doprowadzi do zbyt niskiej eliminacji szumw, nadal bd wystpoway, zkolei
zbyt wysoka warto odwrci faz sygnau, ale tylko wstanie spoczynku. Czy odwrce-
nie tej fazy moe mie jakie znaczenie dla nas? Jeli bdziemy korzystali zkodowania
Manchester, to nie ma to adnego znaczenia. Jeli za chcielibymy skorzysta ztrans-
misji poprzez UART/RS232, to jak si domylasz, moe to ju mie spore znaczenie.
Wspominam otransmisji UART, poniewa producent, czyli rma Aurel, na pocztku
noty PDF zapewnia nas, e jest to moliwe inie ma powodw do obaw opojawianie
si zakce wtrakcie nadawania bajtw, wktrych wystpuje sporo bitw owartoci 0
lub 1, nastpujcych jeden po drugim. Ato wszystko przy prdkoci 9600bps. Niestety,
wdalszej czci noty, przy opisie moduu Data Slicer, spotkamy informacj: istnie-
je moliwo bezporedniej transmisji RS232, jednake naley zadba oto, aby wra-
mach bajtu pojawia si przynajmniej jeden raz rnica stanw, czyli przynajmniej je-
den bit owartoci = 1, jeli pozostae s = 0, iodwrotnie: przynajmniej jeden bit owar-
toci = 0, jeli pozostae s = 1.
Jak widzisz, takie zastrzeenie nieco ogranicza nam moliwoci czystej transmisji bi-
narnej. Wpraktyce nie jest tak le, gdy nawet przy wczonym ukadzie Squelch uda-
wao si bez problemu transmitowa dane za pomoc RS232 wobie strony przy za-
chowaniu rygorw czasowych zwizanych zustalaniem kierunku nadawania. Nie byy
to jednak oszaamiajce odlegoci/zasigi wporwnaniu ztymi, ktre pozwalaj wy-
Transcievery rmy Hoperf typu RFMxx 143
nej przeszkody. Chciabym raz na zawsze wykluczy spekulacje, e niektre typy mo-
duw RFM12 mog ze sob nie wsppracowa. Ot zpen odpowiedzialnoci po-
twierdzam (bdziesz to mg sam empirycznie stwierdzi), e mona nawiza po-
czenie nawet pomidzy moduem zakupionym na czstotliwo 433MHz adrugim za-
kupionym na 868MHz! Tak, kady znich mona zaprogramowa na dowoln czsto-
tliwo pracy, ale zuwagi na dobr elementw wyjciowych RF, jak mona si domy-
li, zasig pomidzy nimi spadnie drastycznie. Nigdy jednak to nie spowoduje, e nie
uda ci si uruchomi komunikacji midzy nimi.
Rysunek 41. Przykad moliwoci komunikacji pomidzy rnymi typami moduw
Na rysunku 41 pokazuj wic bardzo schematycznie rne kombinacje pocze, ja-
kie mona zestawi midzy rnymi wersjami moduw RFM12. Prosz tylko pami-
ta, e jeli pokazana jest para 868MHz oraz 433MHz, to znaczy, e obydwa zostan
zaprogramowane na jedn ztych dwch czstotliwoci.
Zdjcie 4. Modu RFM podczony do zestawu uruchomieniowego ATB za pomoc kabelka
3. Odtwarzanie plikw dwikowych WAV zkart
pamici SD/MMC
Poniewa w poprzednim rozdziale mielimy ju do czynienia z dwikiem, dlate-
go kolejne zagadnienie, ktre omwi, take bdzie dotyczyo dwiku. Jak zapowie-
dziaem wtytule rozdziau, zajmiemy si odtwarzaniem plikw dwikowych typu
*.wav zapisanych na dowolnej karcie pamici typu SD/MMC. Znasz ju bowiem za-
gadnienia zwizane zgenerowaniem dwiku za pomoc mikrokontrolera AVR. Poza
tym poruszymy takie tematy, jak wykorzystanie znanych ju zpierwszej czci ksi-
ki bibliotek do obsugi kart pamici PetitFat oraz format nagwka idanych plikw
dwikowych wav. Przy okazji podam informacj do istotn dla wszystkich uyt-
kownikw bibliotek PetitFat, ale take FatFS obsuguj one bez najmniejszych pro-
blemw najnowsze karty SDHC o pojemnociach wikszych ni 2 GB. Ja do prze-
prowadzenia tego wiczenia wykorzystuj kart SDHC 8GB (szsta klasa prdkoci).
Zdecydowanie polecam korzystanie zkart pamici posiadajcych wanie minimal-
nie szst klas prdkoci.
Jako projekt wyjciowy do realizacji naszego zadania posuy projekt ze wspomnianej
ju strony elm-chan.org. Jego autor przygotowa oprogramowanie dla niewielkich mi-
krokontrolerw AVR, takich jak np. ATtiny85. Wefekcie udao si maksymalnie zmi-
niaturyzowa tego typu odtwarzacz plikw wav. Niestety, autor zosta niejako zmu-
szony do napisania czci kodu wjzyku asembler, ato dlatego, e postawi sobie za
cel odtwarzanie nawet plikw wav zmaksymaln czstotliwoci prbkowania na-
wet 48kHz. Ztego powodu wstawki asemblerowe dotycz a dwch aspektw dziaa-
nia programu.
Podstawowym zaoeniem autora byo zorganizowanie bufora cyklicznego, ktry po-
suy do strumieniowego pobierania danych za pomoc funkcji bibliotek PetitFat.
Efektem tego bya konieczno do znacznej modykacji pliku mmc.c, odpowiedzial-
nego za komunikacj warstwy sprztowej tej biblioteki zkart pamici. Dlatego te jej
funkcja pf_read() odwouje si wewntrz do wstawki asemblerowej, ktra zosta-
a umieszczona wjednym wsplnym pliku zpozostaymi wstawkami asemblerowymi.
Tymczasem te pozostae wstawki nie dotycz ju bezporednio bibliotek, lecz funkcji
programu gwnego. Itak kolejna wana wstawka to pena obsuga przerwania timera
sprztowego odpowiedzialnego za samplowanie. Nie wspomn ju opozostaych drob-
niejszych wstawkach asm odpowiedzialnych za komunikacj SPI.
Zalet tych niewielkich mikrokontrolerw jest rwnie to, i mona skorzysta ztak-
towania 16MHz na potrzeby procesora, atake zjeszcze wikszego, bo a 64MHz, na
Odtwarzanie plikw dwikowych WAV zkart pamici SD/MMC 195
potrzeby moduw sprztowych, jak np. Timer1. Takie podejcie umoliwia zjednej
strony wraz ze wstawkami asemblerowymi du prdko dziaania programu iprze-
rwa, zdrugiej za daje do dyspozycji bardzo wysok czstotliwo na potrzeby gene-
rowanego sygnau PWM.
Sam ju wiesz zpoprzedniego rozdziau, e im wiksza wtym przypadku czstotliwo
PWM, tym lepsze efekty kocowe, jeli chodzi ojako odtwarzanego dwiku. Skoro
zatem taki projekt zpowodzeniem odtwarza wszystkie dostpne odmiany plikw wav,
to dlaczego miabym tutaj powiela taki opis? Niestety, wpewnych aspektach projekt
ten ma wady. Wtym rzecz. Bodaje najwiksz wad dla wikszoci osb, ktre chc
woparciu oten projekt stworzy wasne tego typu urzdzenie, jest stopie skompliko-
wania itrudno przeportowania (przeniesienia) caoci na inne rodzaje mikrokon-
trolerw. Inie chodzi tylko oto, e same mikrokontrolery ATtiny85 czy ATtiny861 s
trudno dostpne, bo nie jest wtym zakresie tak le. Po prostu autor zuwagi na stopie
trudnoci oprogramowania caego zagadnienia zmuszony by maksymalnie optymali-
zowa cay kod, tak aby sprosta cikim wymaganiom.
Kolejn wad tego rozwizania, jeli wykonamy tylko jego kopi bez modykacji kodu
rdowego, jest to, e nie uda nam si odtwarza plikw dwikowych wav zbardzo
niskimi czstotliwociami samplowania, np. 6kHz. Zastanowisz si moe wtym miej-
scu, jaka to wada? Ikto bdzie korzysta ztak niskiej czstotliwoci, skoro cay projekt
zosta stworzony do odtwarzania dwikw jak najwyszej jakoci? We pod uwag, e
pliki wav nie s skompresowane, zatem te przechowujce prbki dwikowe najwy-
szej jakoci zajmuj dziesitki megabajtw. Moe si kiedy okaza, e wjakim wa-
snym projekcie bdziesz potrzebowa np. tylko kilku prostych dwikw kosztem na-
wet jakoci, gdy najwyszym priorytetem bdzie ich rozmiar. Warto wiedzie, e mo-
na je umieci albo ich cz bez nagwka wprost wpamici Flash samego mikrokon-
trolera, albo wpamici EEPROM/FRAM itp. Wtedy im nisza czstotliwo prbko-
wania idwik monofoniczny, tym mniejszy rozmiar pliku, ju rzdu kilobajtw, anie
megabajtw. Wszystko zaley od potrzeb.
Ja postanowiem nieco inaczej podej do tematu. Wemy pod uwag podstawowy fakt,
e autor omawianego projektu wykonuje konwersj dwikw zapisanych zrozdziel-
czoci 16-bitow na rozdzielczo 8-bitow. Zatem ju chociaby ztego powodu, jak
si domylasz, traci si nieco na jakoci odtwarzanego dwiku. Nie stanowi to jednak
duego problemu wtego typu projektach/rozwizaniach, gdy nie maj one na celu
zastpienia popularnych odtwarzaczy MP3, lecz jedynie umoliwienie realizacji wielu
rnych ciekawych inietypowych wasnych projektw/konstrukcji, wktrych odtwa-
rzanie wczeniej nagranych dwikw byoby bardzo podane. Wystarczy pomyle
ornego rodzaju zabawkach iurzdzeniach, ktre maj generowa proste komunika-
ty gosowe albo nietypowe sygnay dwikowe, anawet prostych odtwarzaczach mu-
zyki do zegarw, centralek telefonicznych itp.
Wzwizku zpowyszym mio byoby mie moliwo wykonania takiego projektu
wpeni we wasnym zakresie idokadnie wedug wasnych zaoe. Szczeglnie gdy
sami moemy zdecydowa si np. na obnienie jakoci dwiku kosztem miejsca wpa-
mici. Poza tym odtwarzanie niszych czstotliwoci prbkowania bdzie umoliwia-
Jzyk C. Pasja programowania mikrokontrolerw 8-bitowych 196
o zastosowanie niszego taktowania mikrokontrolera, co z kolei pozytywnie moe
si przeoy na zastosowania bateryjne iobnienie poboru prdu wduszym czasie.
Postawiem sobie zatem pytanie, czy prba zminiaturyzowania takiego urzdzenia
musi si koniecznie wiza zwykorzystaniem tak maych mikrokontrolerw jak 8-n-
kowe ATtiny? Myl, e zdecydowanie nie. Mona bowiem skorzysta zpiknej inie-
samowicie przydatnej na co dzie wkadym warsztacie elektronika, linii mikrokon-
trolerw: ATmega88 ATmega168 ATmega328. Gdy wybierzemy obudow SMD
TQFP, okae si, e wraz zgniazdem na karty pamici Micro SD uzyskamy bez naj-
mniejszych problemw rwnie niewielkie rozmiary, jak prototyp urzdzenia ze stro-
ny elm-chan.org. Oczywicie teraz do celw testowych wykorzystam zestaw urucho-
mieniowy ATB zmikrokontrolerem ATmega32 na pokadzie. Dlatego te zuwagi na
wiksz liczb wyprowadze postaramy si przygotowa ioprogramowa dodatkowe
gadety. Zaprzgniemy zatem do pracy wywietlacz LCD, ktry bdzie nam prezento-
wa nazw odtwarzanego pliku dwikowego, stan aktywnoci: PLAY, NEXT, INSERT
CARD, czas trwania utworu dokadnie wsekundach iminutach. Poza tym przygotu-
jemy prosty wskanik wysterowania na omiu diodach LED. Dodatkowo ukad b-
dzie obsugiwa trzy przyciski. Jeden do zmiany utworu na nastpny, adwa kolejne do
zmiany prostych efektw dwikowych (obrbki dwiku na ywo). Myl, e wanym
rozwiniciem projektu bdzie take moliwo wykrywania obecnoci karty pamici
wczytniku, dziki czemu przygotujemy ukad, ktry nie bdzie wymaga cigego re-
setowania po przypadkowym wyjciu iwoeniu karty. Zestaw uruchomieniowy ATB
ju od wersji 1.02 ma jeszcze jedn ciekaw moliwo pozwala kontrolowa wspo-
sb cakowicie programowy zasilanie karty SD. Moemy zatem jeden pin mikrokon-
trolera przeznaczy do tego celu. Czy rozwizanie takie daje jakie szczeglne moli-
woci? Owszem, daje. Sam zauwaye zapewne, e czasem karta pamici wwyniku np.
bdnego dziaania programu lub winnych nieprzewidzianych okolicznociach potra-
si po prostu zawiesi. wtakiej sytuacji pomaga zwykle dopiero wyjcie jej iponow-
ne woenie do czytnika. Oznacza to tak naprawd wyczenie iwczenie jej zasila-
nia (zupeny reset). Wefekcie jeli zastosujemy taki mechanizm jak ten przedstawio-
ny na schemacie zestawu uruchomieniowego ATB we wasnych rozwizaniach, mo-
emy tworzy jeszcze bardziej niezawodne urzdzenia pod tym wzgldem. Schematy
zestaww ATB dostpne s take na pycie DVD doczonej do ksiki, warto wic
wesprze si nieraz sprawdzonymi rozwizaniami. Dodam jeszcze, e nawet standar-
dowe biblioteki FatFS do obsugi kart pamici wprzykadowych rozwizaniach om-
wionych wmojej pierwszej ksice korzystaj ztych dwch mechanizmw. Mowa tu
owykorzystaniu jednej linii mikrokontrolera do detekcji obecnoci karty wslocie, ale
take drugiej linii do wyczania iwczania zasilania caej karty. Ztym, e do czasu,
kiedy pojawia si wersja 1.02 pyty PCB, zestawy ATB nie byy wyposaone sprzto-
wo wtakie moliwoci.
Przejd teraz do najwaniejszych zaoe programistycznych odnonie do tego pro-
jektu. Chciabym uzyska nie tylko wszystkie moliwoci, jakie oferowane s wpro-
jekcie autora z elm-chan.org, ale take poszerzy je o dodatkowe, opisane wyej.
Najwaniejsze jest jednak to, e poszukiwaem drogi, aby tak dobra sprzt ina tyle
zoptymalizowa kod programu wC, aby nie byy potrzebne nawet najmniejsze wstaw-
Odtwarzanie plikw dwikowych WAV zkart pamici SD/MMC 197
ki wasemblerze. Mam nadziej, e to bdzie istotna informacja dla wszystkich, ktrzy
ywo zainteresowani s takim rozwizaniem. Szczeglnie e dziki temu kady bdzie
mia moliwo przeportowania takiego kodu programu nie tylko na dowolny procesor
zrodziny AVR8, ale take na kad inn platform, obojtnie czy to bd take 8-bito-
we mikrokontrolery PIC, czy moe 32-bitowe mikrokontrolery ARM/STM.
Wspomniaem ju, e bdzie konieczne odpowiednie dobranie/zaprojektowanie
czci sprztowej. Dlatego bdziemy musieli zaopatrzy nasz mikrokontroler wze-
wntrzny rezonator kwarcowy odo wysokiej czstotliwoci, oile bdziemy chcieli
skorzysta znajlepszych efektw. Wprzypadku mikrokontrolerw nie stanowi adne-
go problemu zastosowanie maksymalnych czstotliwoci taktowania, poniewa bd
one pracoway zpenym powodzeniem, jeli zechcemy je nawet delikatnie przetak-
towa. Przetaktowanie nie bdzie jednak konieczne wkadym przypadku. Jeli za-
stosujemy tak wersj mikrokontrolera ATmega, ktra standardowo moe by tak-
towana maksymaln czstotliwoci 20MHz, to przetaktowanie bdzie niepotrzeb-
ne. Jeli za posiadasz np. tak jak ja do obecnych wicze mikrokontroler ATmega32
zmaksymaln dopuszczaln czstotliwoci taktowania 16MHz, to spokojnie ibez
obaw moesz uy rezonatora nie tylko 20MHz. Ja testowaem zpenym powodze-
niem taktowanie na nim: 24, 25, anawet 27MHz. Wadnym wypadku mikrokon-
troler nie odmwi posuszestwa, jeli chodzi onormaln prac. By moe mogy-
by si pojawi problemy zzapisem do pamici EEPROM, ale nie testowaem go pod
tym wzgldem. Mj procesor, i to nie jeden egzemplarz, pracowa przez wiele dni
inocy zkwarcem 27MHz.
Nie zrozum mnie jednak le. Nie twierdz, e naley tak projektowa profesjonalne
ikomercyjne ukady. Zawsze rozsdniej jest trzyma si jednak wtym zakresie zalece
producenta. Natomiast jeli chodzi owasne amatorskie rozwizania mona sobie na
to pozwoli bez adnego wahania.
Zreszt zastanwmy si, kiedy bdzie nam potrzebne maksymalne taktowanie? Ot
tylko wprzypadku gdy zechcemy wtrakcie odtwarzania korzysta dodatkowo np. zwy-
wietlacza LCD, wskanika wysterowania lub innych gadetw przy jednoczesnym od-
twarzaniu plikw dwikowych najwyszej jakoci DAT 48kHz! Myl jednak, e rzad-
ko kiedy do wasnych prostych zastosowa bdziesz chcia pokusi si ote wszystkie
dodatki. Mog si one okaza wrcz niepotrzebne. Wyczajc je zatem zkodu progra-
mu, moesz miao zmniejsza taktowanie mikrokontrolera ju np. do 16MHz przy
prbkowaniu (samplowaniu 22,05kHz!). Jeli za uznasz, e wystarczy ci nawet nisze
prbkowanie, np. na poziomie 11kHz albo jeszcze nisze, 8kHz lub 6kHz, to moesz
pokusi si ozmian taktowania do wartoci np. 12MHz.
Wtym miejscu chciabym zwrci uwag na pewn wan rzecz. Jeli ju zechcesz
robi prby zoryginalnym kodem, anie masz zestawu uruchomieniowego ATB, to
poza zmianami wprogramie dotyczcymi dodatkowych linii sterowania karty SD mu-
sisz zwrci uwag na jeszcze jedn spraw ot wikszo zestaww konkurencyj-
nych (wzasadzie prawie wszystkie, inie wiem dlaczego tak jest), jeli ju ma wywie-
tlacz LCD na pokadzie, ma take podczony (projektanci na si uszczliwiaj klien-
tw) pin RW tego wywietlacza do GND. Co powoduje, e caa obsuga wywietlacza
Sterowanie sprztowe TFT LCD 241
iwyprbowa zkodu zawartego na pycie DVD. Dodam, e zaczony kod nie zawiera
tylko goych bibliotek, ale rwnie gwn funkcj main(), czyli jaki przykadowy
program, ktry po kolei wywietla co nam na ekranie, przy okazji korzystajc zr-
nych funkcji bibliotecznych, tak aby mia wygodne przykady ich praktycznego uyt-
kowania.
4.1.1.1. Nieudokumentowane opcje sterownika SSD1963
Nadszed moment, wktrym mog przej do opisu iprezentacji pewnej nie do ko-
ca udokumentowanej opcji sterownika SSD1963. Wspominaem otym na pocztku
rozdziau, achodzi tu omoliwo wykorzystania pamici RAM sterownika na bufo-
rowanie dodatkowych obrazw, ktre mog by wczytane wtle, asamo ich wywie-
tlenie moe odby si po prostu byskawicznie. Zwizane jest to znietypowym zasto-
sowaniem komend przeznaczonych, zgodnie z not katalogow PDF, do przesuwa-
nia zawartoci ekranu, tzw. scrolowanie. Ale po kolei. Zaczn od tego, e przypomn
oczywist rzecz, ktr mona wyczyta wdokumentacji, e sterownik SSD1963 po-
zwala na obsug ekranw LCD ornej przektnej, aco za tym idzie rnej rozdziel-
czoci. Zwizane jest to bezporednio ziloci dostpnej pamici RAM do buforowa-
nia obrazu. Maksymalna dostpna rozdzielczo to a 864 x 480 pikseli przy 24-bito-
wej rozdzielczoci kolorw. atwo sobie przeliczy nawet, e wzwizku ztym dostp-
na pami RAM posiada: 864 x 480 x 3 = 1 244 160 bajtw (1,215 MB). Zatem przy
obsudze tak duego ekranu LCD bdzie ona wykorzystana wcaoci ina pewno nie
uda si zastosowa pewnego triku oktrym chc tu napisa. Wziwszy pod uwag to,
e do naszych celw uyjemy dwch rodzajw wywietlaczy LCD TFT, oprzektnych
ekranu 3,5 oraz 4,3, ktre maj rozdzielczo 320 x 240 pikseli oraz 480 x 272 pikse-
li, okae si, e na pewno caa pami RAM sterownika nie bdzie wnormalnych wa-
runkach wykorzystywana. Przecie ten oprzektnej 3,5 zuyje jej tylko 320 x 240 x 3
= 230 400 bajtw (225 kB), natomiast ten oprzektnej 4,3 tylko 480 x 272 x 3 = 391
680 bajtw (382,5 kB).
Zgadza si, tak byoby gdyby nie fakt, e my nie pozwolimy, by sterownik si za bar-
dzo nudzi, aspora cz pamici bufora leaa odogiem. Postaramy si j zagospoda-
rowa prawie wcaoci idziki temu uzyska bardzo ciekawe efekty, ktre bd szcze-
glnie przydatne przy zastosowaniu tak maych mikrokontrolerw jak 8-bitowe AVR.
Podejrzewam, e po zastosowaniu tych nieudokumentowanych funkcji zaskoczysz nie-
jednego znajomego efektami, ktre wnormalnych warunkach mona byoby uzyska
programowo dopiero przy zastosowaniu duo wikszych mikrokontrolerw, np. ARM,
ito taktowanych duo wyszymi czstotliwociami.
Wrmy do zagadnienia pamici. Skoro cao pamici RAM jest rwna 1,215 MB,
to oznacza, e moglibymy zmieci w takim buforze a 5,4 obrazu z wywietlacza
oprzektnej 3,5, atake a 3,1 obrazu zwywietlacza oprzektnej 4,3. Naturalnie
czci uamkowe nas wtym przypadku nie interesuj, ale pewnie ju wiesz, oco cho-
dzi. Mona bowiem doprowadzi do takiej sytuacji, e jeli np. tworzymy przykado-
w ramk zdjciow, azaley nam, aby przeczanie pomidzy wywietlanymi obraz-
Jzyk C Pasja programowania
mikrokontrolerw 8-bitowych
Mirosaw Karda
Niniejsza darmowa publikacja zawiera jedynie fragment penej wersji
caej publikacji.
Aby przeczyta ten tytu w penej wersji kliknij tutaj.
Niniejsza publikacja moe by kopiowana, oraz dowolnie rozprowadzana tylko i wycznie w formie
dostarczonej przez Wydawnictwo ATNEL. Zabronione s jakiekolwiek zmiany w zawartoci publikacji
bez pisemnej zgody Wydawnictwa ATNEL - wydawcy niniejszej publikacji. Zabrania si jej odsprzeday.
Pena wersja niniejszej publikacji jest do nabycia w sklepie
internetowym
www.witmir.pl