14_20.pdf

(282 KB) Pobierz
Centrala alarmowa z powiadomieniem GSM. AVT-526
Centrala alarmowa z powiadomieniem GSM
Centrala alarmowa
z powiadomieniem GSM
AVT−526
Centralki alarmowe s¹
bardzo czÍsto wyposaøane
w†rÛønego rodzaju
sygnalizacjÍ w³amania.
Najprostszym sposobem
sygnalizacji jest w³¹czenie
sygna³u düwiÍkowego lub
optycznego. Centralki
bardziej†zaawansowane
konstrukcyjnie potrafi¹
informowaÊ o†w³amaniu przez
Internet lub telefon.
Prezentowany w†tym
artykule system alarmowy jest
amatorskim rozwi¹zaniem,
jednak moøe przes³aÊ
informacjÍ tekstow¹
o†w³amaniu
za pomoc¹ modu³u GSM,
czyli popularny SMS.
Rekomendacje: nowoczesne
i bardzo skuteczne
rozwi¹zanie zdalnej ochrony
mienia, dziÍki ktÛremu
informacja o w³amaniu dotrze
do Ciebie w dowolnym
miejscu úwiata.
W†egzemplarzu modelowym
wykorzysta³em modem GSM fir-
my Wavecom ( fot. 1 ), jednak
w†jego miejsce moøna uøyÊ do-
wolnego telefonu komÛrkowego.
ByÊ moøe wykorzystanie innego
modemu bÍdzie wymaga³o roz-
wi¹zania problemu zasilania oraz
sposobu kodowania SMS, jednak
jest to moøliwe i†wykonalne
w†warunkach warsztatu elektroni-
ka-amatora.
Prezentowana centralka alar-
mowa jest jednym z†urz¹dzeÒ
elektronicznych, ktÛrych podsta-
wowa wartoúÊ skupia siÍ na
odpowiednio napisanym oprog-
ramowaniu. Uk³ad elektryczny
jest prosty ( rys. 2 ), a p³ytka
przypomina nieco p³ytkÍ proto-
typow¹ przeznaczon¹ do projek-
towania uk³adÛw z†mikrokontro-
lerami. Jednostk¹ steruj¹c¹ jest
mikrokontroler AT90S2313 takto-
wany wewnÍtrznym generatorem
o†czÍstotliwoúci stabilizowanej
kwarcem 7,3728 MHz. Mikrokon-
troler ten ma 15 linii wejúcia/
wyjúcia. Dwie z†nich wykorzys-
tywane s¹ przez UART (RXD -
2, TXD - 3), pozosta³e trzynaúcie
steruje prac¹ uk³adÛw†peryferyj-
nych lub s³uøy do komunikacji
mikrokontrolera z†otoczeniem.
Port B†ustawiany jest przez pro-
gram jako wyjúciowy z†za³¹czo-
nymi rezystorami pull-up
(DDRB=0xFF). Tryb ten nie ulega
zmianie podczas pracy progra-
mu, mimo iø czasami przez ten
port wyprowadzane s¹ dane,
a†czasami s³uøy on do ich od-
czytu. Jest to pewna szczegÛlna
cecha mikrokontrolera AVR, wrÛ-
cimy jeszcze do niej w†artykule.
Podobnie jest w†przypadku portu
D, chociaø tutaj czÍúÊ linii jest
liniami wyjúciowymi (TXD, DIR),
a†czÍúÊ wejúciowymi (RXD i†bity
2†do 5). Raz ustawiony tryb
pracy nie jest zmieniany podczas
dzia³ania centralki alarmowej.
Jak wspomnia³em, mikrokontro-
ler AT90S2313 posiada 15 linii
portÛw wejúcia-wyjúcia. Potrzeby
uk³adu alarmu s¹ jednak znacznie
wiÍksze. Posiada on 8†wejúÊ prze-
znaczonych dla czujnikÛw,
a†wyúwietlacz i†klawiatura wyma-
gaj¹ uøycia odpowiednio co naj-
mniej 6†i†7†wyprowadzeÒ portÛw.
To tylko podstawowe uk³ady oto-
czenia. Dodajmy do tego jeszcze
co najmniej 1†liniÍ do sterowania
uk³adem sygnalizacji alarmu
i†otrzymamy liczbÍ 22 wyprowa-
dzeÒ portÛw niezbÍdnych do pra-
wid³owego funkcjonowania uk³adu
alarmu. Konieczna wiÍc by³a albo
zmiana mikrokontrolera na posia-
daj¹cy wiÍksz¹ liczbÍ portÛw, albo
zastosowanie dodatkowych uk³a-
14
Elektronika Praktyczna 9/2003
P R O J E K T Y
32643977.028.png 32643977.029.png
Centrala alarmowa z powiadomieniem GSM
dÛw†scalonych. Zdecydowa³em siÍ
na to drugie rozwi¹zanie.
Sygna³ z†czujnikÛw alarmo-
wych jest podawany na doprowa-
dzenia diody transoptora. Trans-
optor zapewnia izolacjÍ galwa-
niczn¹ czujnika od centralki oraz
eliminuje czÍúÊ niskonapiÍcio-
wych zak³ÛceÒ, ktÛre mog¹ poja-
wiÊ siÍ na linii doprowadzaj¹cej
sygna³ z†czujnika. Uøy³em 2†ele-
mentÛw firmy SHARP o†symbolu
PC849 (odpowiednik funkcjonalny
produkowany jest przez firmÍ LI-
TEON pod oznaczeniem LTV849).
W†obudowie zawarto 4 transopto-
ry sk³adaj¹ce siÍ z†fototranzystora
i†diody. Szeregowo po³¹czone
z†diodami rezystory R1...R8 nale-
øy dobraÊ do parametrÛw czujni-
kÛw. Stosowane przeze mnie re-
zystory o†wartoúci 1†k
Tab. 1. Opis funkcji realizowanych przez wyprowadzenia mikrokontrolera
AT90S2313 w centrali alarmowej
Wyprowadzenie mikrokontrolera
Opis funkcji
Nazwa
Numer
Oznaczenie sygna³u
(obudowa DIL20)
na schemacie
!"#
$
%
%
$ !"#
&
&
!"#
$' %
(
(
!"#
&
)*
)*+),#*"#-
!" !"#
%.'* (
'
/" !"#
&.*' 0
1
2324!5! 61
!" $ !"#
(*/
7
1
11+#32
4-
)8
)8
9!#:3;)<
!!#"
dobrane
zosta³y dla napiÍcia steruj¹cego
o†wartoúci 9...12 V.
Osiem wejúÊ czujnikÛw do³¹-
czonych jest do uk³adu multiplek-
sera, ktÛry w†zaleønoúci od stanu
logicznego sygna³u przy³oøonego
na wejúcie A/B (wyprowadzenie
1) podaje na wyjúcia 1Y...4Y
odpowiednio stany logiczne
z†wejúÊ 1A...4A lub 1B...4B.
Umoøliwia to 4-bitowemu porto-
wi mikrokontrolera odczyt 8-bi-
towych danych w†dwÛch ìpor-
cjachî po 4†bity. Wyborem
4†wejúÊ, z†ktÛrych odczytywany
jest stan, steruje wyprowadzenie
6†portu D†mikrokontrolera.
NiektÛre z†portÛw mikrokont-
rolera pe³ni¹ podwÛjn¹ rolÍ. Op-
rÛcz tego, øe s¹ wyjúciowymi, np.
dla modu³u wyúwietlacza LCD, to
s¹ rÛwnieø wejúciowymi dla wier-
szy klawiatury.
Zacznijmy opis od wyúwietla-
cza. W†swoim uk³adzie uøy³em
<8
$
<8
3!#:3;)<
!!#"
<
&
=
>3? , 3! 6#3
+8 8%-
$<
(
=
>3? , 3! 6#3
+8 8&-
<
0
=
>3? , 3! 6#3
+8$ 8(-
%<
7
=
>3? , 3! 6#3
+8 80-
&
)
*#93?@"#4"!
+;-
modu³u LCD (2†linie po 20 zna-
kÛw w†kaødej). Wyúwietlacz pra-
cuje w†trybie z interfejsem 4-
bitowym z wykorzystaniem linii
portu PB0...PB3 jako linii danych,
PB4 jako linii wyboru rejestru RS
i†linii PB7 jako ENABLE. Wszyst-
kie linie portÛw oprÛcz ENABLE
s¹ wykorzystywane podwÛjnie: ja-
ko steruj¹ce wyúwietlaczem oraz
prac¹ klawiatury. Wykorzystywa-
ny jest fakt, øe†podczas trwania
poziomu niskiego na linii ENAB-
LE do rejestrÛw wyúwietlacza nie
s¹ zapisywane øadne dane. Umoø-
liwia to zmiany stanÛw pozosta-
³ych linii bez zak³Ûcania pracy
modu³u.
Typowo, na wyprowadze-
nie 3†z³¹cza wyúwietlacza jest
podane napiÍcie z†suwaka po-
tencjometru s³uø¹ce do regu-
lacji kontrastu, a†pomiÍdzy 15
i†16 doprowadzone jest napiÍ-
cie dla podúwietlenia t³a (oko-
³o 4,3†V). Uk³ad moøna uproú-
ciÊ, zwieraj¹c napiÍcie regulacji
kontrastu do masy. Dla wiÍkszoúci
wyúwietlaczy LCD jest to wystar-
czaj¹ce.
Klawiatura sk³ada siÍ z†12
przyciskÛw i†zosta³a zbudowana
jako matryca 3†kolumn i†4†wier-
szy. Trzy bity portu B†(4, 5†i†6)
pracuj¹ jako wyjúciowe, cztery
pozosta³e jako wejúciowe. Wszyst-
kie linie maj¹ za³¹czone we-
wnÍtrznie rezystory pull-up . Wy-
j¹tkowo bity 0†i†1 wymagaj¹ ze-
wnÍtrznych rezystorÛw podci¹ga-
j¹cych. Kierunek pracy portu nie
jest zmieniany przez program ste-
ruj¹cy. Linie pracuj¹ zawsze jako
wyjúciowe, a†w†razie potrzeby ich
stan sprawdzany jest przez odczyt
rejestru PIN. W†architekturze mik-
rokontrolera AVR rejestr PIN za-
wiera adres, przy odczycie ktÛre-
go wyprowadzenie portu za³¹cza-
ne jest przez specjalny bufor
trÛjstanowy do wewnÍtrznej ma-
gistrali danych mikrokontrolera.
RolÍ uk³adu dopasowuj¹cego
poziomy napiÍÊ interfejsu UART
mikrokontrolera do RS232 pe³ni
uk³ad MAX232. Wykorzystane s¹
tylko 2†drivery znajduj¹ce siÍ
w†strukturze uk³adu. Sygna³ inter-
fejsu doprowadzony jest na
mÍskie, 9-stykowe z³¹cze DB.
Fot. 1. Modem GSM firmy
Wavecom
Elektronika Praktyczna 9/2003
15
Wyprowadzenie mikrokontrolera
32643977.030.png
Centrala alarmowa z powiadomieniem GSM
Uk³adu MAX moøna nie wluto-
wywaÊ lub nie wykorzystywaÊ.
Zworki JP1 i†JP2 znajduj¹ce siÍ na
p³ytce umoøliwiaj¹ od³¹czenie syg-
na³Ûw RXD i†TXD mikrokontrolera
od uk³adu MAX i†doprowadzenie
ich do inwerterÛw 74HCT14. Jest
to uk³ad dopasowuj¹cy poziomy
do wymagaÒ telefonu GSM (Sie-
mens C35). Rezystory R20 i†R21,
tworz¹ce dzielnik napiÍcia, s¹ tak
dobrane, aby napiÍcie wyjúciowe
nie przekracza³o 3,3†V na pozio-
mie wysokim. Bramka 74HCT14
pracuj¹ca jako odbiornik posiada
w†strukturze przerzutnik Schmit-
ta, ktÛry powoduje, øe napiÍcie
powyøej 2,4 V traktowane jest
jako wysokie. Zaznaczam jednak,
øe alarm testowany by³ wy³¹cznie
z†modemami firmy Siemens
(M20T) oraz Wavecom (WMOD2),
a†interfejs dla telefonu GSM nie
by³ wykorzystywany. Z³¹cze dla
ìzwyk³egoî telefonu GSM ozna-
czone jest jako X14, a†dla mode-
mu GSM - X12.
Bramki uk³adu inwertera pra-
cuj¹ rÛwnieø jako uk³ady wyjúcio-
we steruj¹ce prac¹ przekaünika
oraz diody LED.
Uk³ad jest zasilany napiÍciem
5†V z†umieszczonego na p³ytce
uk³adu stabilizatora 7805 (U3). Do
poprawnej pracy wymaga on po-
dania co najmniej 7†V†na zaciski
z³¹cza X10 (uwaga na polaryza-
cjÍ!). Kondensatory C9...C12 pe³-
ni¹ rolÍ filtrowania napiÍcia za-
silaj¹cego. Kondensatory C10 i†C11
powinny byÊ umieszczone jak
najbliøej wyprowadzeÒ stabilizato-
ra. Rezystor R11 i†kondensator
C4 to obwÛd RC wytwarzaj¹cy po
w³¹czeniu sygna³ zeruj¹cy dla
mikrokontrolera.
Elementem wykonawczym alar-
mu jest przekaünik RL1. Na do-
prowadzeniach jego cewki znajdu-
je siÍ dioda D3 maj¹ca za zadania
eliminowanie przepiÍÊ powstaj¹-
cych w†czasie za³¹czania i†wy-
³¹czania cewki. Jak wspomnia³em,
rolÍ uk³adu dopasowuj¹cego pe³-
ni¹ bramki inwertera po³¹czone
rÛwnolegle w†celu zapewnienia
wiÍkszej wydajnoúci pr¹dowej.
Przekaünik sterowany jest wspÛl-
nie z†diod¹ LED. Za³¹czenie prze-
kaünika jest sygnalizowane za-
úwieceniem tej diody.
W†pewnych momentach pracy
uk³adu dioda LED jest wykorzys-
tywana rÛwnieø do sygnalizacji.
WÛwczas jednak jej b³yski s¹ na
tyle krÛtkie, øe nie powoduj¹
za³¹czenia przekaünika. RÛwnieø
w†czasie przegl¹dania wierszy kla-
wiatury stara³em siÍ dobraÊ czasy
na tyle krÛtkie, aby nie powodo-
waÊ za³¹czania urz¹dzeÒ zewnÍ-
trznych.
wiÍkszych od 0x20 (32 dziesiÍt-
nie, kod znaku odstÍpu), a†koÒczy
siÍ znakiem o†kodzie 0x00. Po-
dobnie jest z†ci¹gami znakÛw wy-
sy³anych do modemu, ale podle-
gaj¹cych przetwarzaniu przed ich
wys³aniem. Na przyk³ad polecenie
zapisuj¹ce kod PIN zawiera czÍúÊ
sta³¹ AT+CPIN= oraz zmienny -
zaleøny od karty SIM - poufny
kod PIN. Inaczej jest z†polecenia-
mi przesy³anymi wprost do mo-
demu. Te koÒczy sekwencja ko-
dÛw CR (powrÛt kursora do po-
cz¹tku linii, 0x0A) oraz LF (nowa
linia, 0x0C).
Reasumuj¹c - kaødy tekst wy-
úwietlany lub przetwarzany koÒ-
czy kod 0x00, a†kaødy tekst prze-
sy³any do modemu koÒcz¹†kody
CR-LF. Ten sposÛb zapamiÍtywa-
nia danych stosowany jest kon-
sekwentnie w†ca³ym programie
z†wyj¹tkiem przechowywania ko-
du za³¹czenia i†wy³¹czenia alarmu
oraz kodu PIN.
Program g³Ûwny jest bardzo
krÛtki. Na pocz¹tku ustawiane s¹
tryby pracy portÛw B†i†D. Do
rejestru DDRB wpisywana jest
wartoúÊ 0xFF, co oznacza, øe
wszystkie wyjúcia maj¹ za³¹czone
rezystory pull-up i†pracuj¹ jako
wyjúciowe. Do rejestru DDRD wpi-
sywana jest wartoúÊ 0xC0, ktÛra
ustawia bity 6†i†7†portu D†jako
wyjúciowe, a†pozosta³e jako wej-
úciowe. Linia TXD portu C†(bit 1)
pracuje jako wyjúciowa, jednak
wpisanie do rejestru DDRD ì1î na
pozycjÍ odpowiedni¹ dla tego bitu
powoduje, øe pracuje ona jako
zwyk³y port wyjúciowy i†traci
swoj¹ funkcjÍ jako TXD. Aby linia
ta pracowa³a poprawnie jako
wyjúcie interfejsu UART, naleøy
do DDRD na pozycji 1†wpisaÊ ì0î
lub pozostawiÊ stan taki, jaki jest
po za³¹czeniu zasilania.
NastÍpne linie programu usta-
laj¹ czÍstotliwoúÊ, z†jak¹ wywo³y-
wane bÍd¹ przerwania TimerÛw 0
i†1. Pierwszy to licznik 8-bitowy
generuj¹cy przerwanie po zlicze-
niu 255 impulsÛw. Kolejny, 256
impuls zegarowy ustawia flagÍ
przepe³nienia OVF0 i†powoduje
przejúcie do obs³ugi przerwania.
Przy czÍstotliwoúci rezonatora
kwarcowego 7,3728 MHz, preska-
lerze ustawionym na wartoúÊ 1024
oraz pocz¹tkowej wartoúci liczni-
ka 0†(licznik Timera 0†liczy w†gÛ-
rÍ), przerwania bÍd¹ wywo³ywane
Opis programu
steruj¹cego
Pocz¹tkowo zamierza³em napi-
saÊ program steruj¹cy prac¹ alar-
mu w†jÍzyku Bascom lub GCC.
Okaza³o siÍ jednak, øe mikrokon-
troler AT90S2313 ze swoimi 2†kB
pamiÍci programu jest zbyt ìskrom-
nyî jak na wymagania kompilatora
jÍzyka wysokiego poziomu.
Zupe³nie zaskoczy³ mnie kom-
pilator GCC. Przenios³em do niego
bibliotekÍ funkcji, napisan¹ co
prawda dla 8051, lecz po drob-
nych modyfikacjach kompilator
GCC przetworzy³ ürÛd³o na kod
wynikowy bez wiÍkszego proble-
mu. Jednak rozmiar tego kodu by³
dla mnie zupe³nym zaskoczeniem!
Wykona³em wy³¹cznie procedury
obs³ugi LCD w†jÍzyku C i†te po
kompilacji zajͳy 3†kB! Dla po-
rÛwnania analogiczny funkcjonal-
nie program wykonany w†Bascom
AVR zaj¹³ jedynie ok. 500 bajtÛw,
podobnie zreszt¹ jak w†RC-51.
ByÊ moøe nie umia³em w³¹czyÊ
jakiejú opcji optymalizacji.
Tak wiÍc 2†kB to za ma³o
pamiÍci do wykonania tego typu
aplikacji w†jÍzyku wysokiego po-
ziomu. Musia³em napisaÊ program
steruj¹cy w†asemblerze. Przy uru-
chamianiu i†testowaniu programu
pos³ugiwa³em siÍ AVR Studio 4
firmy Atmel.
Aby omÛwiÊ dzia³anie progra-
mu, muszÍ wyjaúniÊ kilka podsta-
wowych regu³, ktÛrymi kierujÍ siÍ
przy pisaniu tego rodzaju aplika-
cji. Dotycz¹ one g³Ûwnie sta³ych
i†zmiennych oraz sposobu ich
interpretacji przez funkcje. Zacz-
nijmy od liczb. Zgodnie z†notacj¹
przyjÍt¹ przez firmÍ Atmel, kaød¹
liczbÍ rozpoczyna bajt mniej zna-
cz¹cy, a†koÒczy bardziej znacz¹cy.
Jeúli liczba jest 4-bajtow¹ umiesz-
czon¹ w†rejestrach R0 - R01 - R02
- R03, to najmniej znacz¹cy bajt
jest zawarty w rejestrze R0, a†naj-
bardziej znacz¹cy w R03.
Kaødy ³aÒcuch tekstowy wysy-
³any na wyúwietlacz zawiera tylko
kody znakÛw ASCII o wartoúciach
16
Elektronika Praktyczna 9/2003
 
Centrala alarmowa z powiadomieniem GSM
Rys. 2. Schemat elektryczny centrali
Elektronika Praktyczna 9/2003
17
32643977.001.png 32643977.002.png 32643977.003.png 32643977.004.png 32643977.005.png 32643977.006.png 32643977.007.png 32643977.008.png 32643977.009.png 32643977.010.png 32643977.011.png 32643977.012.png 32643977.013.png 32643977.014.png 32643977.015.png 32643977.016.png 32643977.017.png 32643977.018.png 32643977.019.png 32643977.020.png 32643977.021.png 32643977.022.png 32643977.023.png 32643977.024.png 32643977.025.png 32643977.026.png 32643977.027.png
Centrala alarmowa z powiadomieniem GSM
z†czÍstotliwoúci¹ 7372800: 1024:
256 = 28,125 Hz. Timer 1†rÛwnieø
ma preskaler ustawiony na war-
toúÊ 1024, jednak do rejest-
rÛw†wpisywana jest wartoúÊ ini-
cjuj¹ca, od ktÛrej Timer zlicza
impulsy zegarowe w†gÛrÍ, aø do
przepe³nienia. Timer 1†w†odrÛø-
nieniu od Timera 0 jest 16-
bitowy, toteø liczy do wartoúci
65535. Impuls numer 65536 po-
woduje przepe³nienie, ustawienie
flagi OVF1 i†przejúcie do pro-
cedury obs³ugi przerwania. Tu
przerwanie wywo³ywane jest
z†czÍstotliwoúci¹ 7372800: 1024:
(65535 - 58335) = 1†Hz. Przerwa-
nia s¹ zablokowane po urucho-
mieniu mikrokontrolera, jednak
pozostawiony (ìna wszelki wypa-
dekî) rozkaz CLI wy³¹cza je i†blo-
kuje aø do momentu, gdy koniecz-
ne bÍdzie ich uøycie. Zostawmy
na razie procedury obs³ugi prze-
rwaÒ - bÍdzie jeszcze okazja do
nich wrÛciÊ.
Od etykiety STATUS_CHECK
rozpoczyna siÍ czÍúÊ programu
maj¹ca za zadanie rozpoznanie
trybu, w†ktÛrym znajdowa³ siÍ
mikrokontroler przed wy³¹czeniem
napiÍcia zasilania. Wywo³ywana
zostaje funkcja odczytuj¹ca bajt
spod adresu 0x00 w†pamiÍci EEP-
ROM. WartoúÊ tego bajtu odpo-
wiada statusowi urz¹dzenia. Jeúli
komÛrka ta zawiera wartoúÊ rÛø-
n¹ od 0xF0 lub 0x0F, to program
uznaje, øe†jest to pierwsze za³¹-
czenie alarmu i†zaø¹da wykona-
nia wszystkich niezbÍdnych na-
staw, to jest: podania kodu za-
³¹czenia i†wy³¹czenia, podania
kodu PIN dla uøywanej karty
SIM, wprowadzenia numeru te-
lefonu oraz opisÛw†dla lokalizacji
alarmu i†wejúÊ czujnikÛw. Wybra-
na metoda sprawdzenia statusu
urz¹dzenia jest o†tyle pewna, øe
kaødy zapis programu do pamiÍci
Flash mikrokontrolera AT90S2313
powoduje usuniÍcie zawartoúci
EEPROM (ca³y†EEPROM zostaje
zapisany wartoúci¹ 0xFF). Po
wprowadzeniu nastaw do komÛrki
STATUS zostaje zapisana wartoúÊ
odpowiednia dla stanu wy³¹cze-
nia alarmu.
PoúwiÍÊmy teraz kilka chwil
wysy³anym do modemu rozkazom
i†ich znaczeniu. Interfejs UART
pracuje z†szybkoúci¹ 9600 bitÛw
na sekundÍ. Identyczn¹ prÍdkoúÊ
powinniúmy ustawiÊ w†posiada-
nym telefonie czy modemie. Aby
dokonaÊ niezbÍdnych nastaw, na-
leøy za pomoc¹ dowolnego pro-
gramu terminala nawi¹zaÊ po³¹-
czenie z†modemem i†wydaÊ pole-
cenie AT+IPR=9600;&W . Ustawi
ono i†zapisze w†pamiÍci konfigu-
racji modemu parametr prÍdkoúci
transmisji. W†przypadku uøycia
telefonu GSM moøe siÍ okazaÊ, øe
nie zaakceptuje powyøszej komen-
dy. WÛwczas prawdopodobnie ³at-
wiej bÍdzie nam zmieniÊ prÍd-
koúÊ z†jak¹ pracuje UART mikro-
kontrolera aniøeli telefonu. Moøna
to zrobiÊ, poprawiaj¹c funkcjÍ
uart_init , a†konkretnie wartoúÊ
wpisywan¹ do rejestru UBRR. Na-
leøy†dobraÊ j¹ w†zaleønoúci od
uøywanego rezonatora i†wymaga-
nej prÍdkoúci transmisji. Gotowe
przyk³ady moøna znaleüÊ w†no-
tach aplikacyjnych na stronie pro-
ducenta http://www.atmel.com lub
wyliczyÊ samodzielnie na podsta-
wie wzorÛw znajduj¹cych siÍ
w†kartach katalogowych mikrokon-
trolerÛw AVR. Gdy sprawdzimy,
øe modem (telefon) gotowy jest do
pracy i†komunikuje siÍ poprawnie
uøywaj¹c prÍdkoúci 9600 bd, mo-
øemy pod³¹czyÊ go do naszego
uk³adu.
Program steruj¹cy wysy³a jako
pierwsz¹ komendÍ ATZ . Powodu-
je ona ustawienie domyúlnego
trybu pracy - przywrÛcone zostaj¹
rÛwnieø wszystkie te parametry,
ktÛre nie zosta³y zapamiÍtane na
sta³e jako domyúlne. NastÍpny
rozkaz wprowadza numer PIN
w³aúciwy dla karty, na przyk³ad:
AT+CPIN=9889 . Jako kolejne wy-
sy³ane s¹ polecenia ATE0 wy³¹-
czaj¹ce tzw. echo komendy oraz
AT+CPMS=SM ustawiaj¹ce miejs-
ce przechowywania wiadomoúci
SMS na kartÍ SIM. Jednoczeúnie
z†przyjmowaniem tych poleceÒ
modem w³¹cza siÍ do sieci.
W†przypadku modemu Wavecom
gotowoúÊ do pracy sygnalizowana
jest przez migocz¹c¹ z†czÍstotli-
woúci¹ oko³o 1†Hz diodÍ LED.
W†przypadku Siemens MT20 jest
inaczej - dioda LED úwieci siÍ
stale.
Po kaødym poleceniu wys³a-
nym do modemu wywo³ywana
jest funkcja gets odbieraj¹ca ci¹g
znakÛw z†UART. Oczekiwane jest,
øe modem odpowie, wysy³aj¹c (co
najmniej) kody CR i†LF. W†przy-
padku braku odpowiedzi od mo-
demu program przestanie praco-
waÊ juø w†fazie inicjacji. Moøna
w†ten sposÛb ³atwo stwierdziÊ, øe
brak jest poprawnej ³¹cznoúci
z†modemem. Niestety, nie wyko-
na³em w†programie detekcji od³¹-
czenia modemu. W†przypadku,
gdy modem zostanie od³¹czony
tuø przed wys³aniem SMS z†po-
wiadomieniem o†za³¹czeniu alar-
mu, alarm zostanie w³¹czony,
a†nastÍpnie program bÍdzie ocze-
kiwa³ na po³¹czenie z†modemem
i†odpowiedü na przes³ane polece-
nia. Jeúli jej nie otrzyma - zawiesi
siÍ sprawdzaj¹c w†nieskoÒczonoúÊ
stan flagi gotowoúci do odbioru
znaku (bajtu) z†UART.
Od etykiety main rozpoczyna
siÍ g³Ûwna pÍtla programu. Na jej
pocz¹tku ponownie odczytywany
jest bajt statusu i†w†zaleønoúci od
jego wartoúci podejmowana jest
odpowiednia akcja. Polega ona
b¹dü to na wywo³aniu procedury
obs³ugi alarmu w†stanie czuwa-
nia, b¹dü to obs³ugi alarmu w†sta-
nie wy³¹czenia.
Stan wy³¹czenia
Za jego obs³ugÍ odpowiedzial-
na jest funkcja alarm_off . Po jej
wywo³aniu czyszczony jest ekran
wyúwietlacza LCD, a†nastÍpnie
wyúwietlona zostaje informacja
z†pamiÍci ROM umieszczona
w†niej pod nazwami symbolicz-
nymi whenoff oraz set_1 . Pierw-
sza umieszczona zostaje
w†pierwszej linii ekranu - ja
zadeklarowa³em j¹ jako ALARM
WY£•CZONY , ta druga umiesz-
czona w†drugiej linii LCD. Zade-
klarowa³em j¹ jako Kod wy³¹cze-
nia? PÛüniej zmiennej visible na-
dana zostaje wartoúÊ UCANTSEE
a†zmiennej sensors wartoúÊ SEN-
SOROFF . Po tych operacjach wy-
wo³ywana jest funkcja odczytu
kodu wprowadzanego za pomoc¹
klawiatury. Kod jest zawsze 4-
cyfrowy. Wynik funkcji zwracany
jest w†rejestrach o†nazwach sym-
bolicznych cchar1 do cchar4 .
Uwaga! Kod za³¹czenia musi byÊ
inny niø ì0000î. Jest on zarezer-
wowany do wprowadzenia urz¹-
dzenia w†tryb serwisowy!
Funkcja compare_codes porÛw-
nuje 4†bajty pobrane z†pamiÍci
EEPROM spod adresu podanego
w†rejestrze eeaddr z†odczytanymi
z†klawiatury. Jeúli wprowadzony
kod jest identyczny z†zapamiÍta-
18
Elektronika Praktyczna 9/2003
 
Zgłoś jeśli naruszono regulamin