AVT-936.pdf
(
998 KB
)
Pobierz
018-023_alarm_gsm.indd
Alarm samochodowy z telefonem GSM
Alarm samochodowy
z telefonem GSM
SIEMENS C/S/M35
AVT–xxx
Przedstawiamy sposób
podłączenia telefonu GSM do
systemu z mikrokontrolerem.
Napisany dla mikrokontrolera
program, to rodzaj alarmu
z powiadomieniem, który może
zostać zainstalowany na
przykład w samochodzie. Jednak
opisywaną aplikację należy
traktować bardziej jako pewną
sugestię, co do wykonania części
sprzętowej i interfejsu łączącego
mikrokontroler z telefonem GSM,
aniżeli gotowe do wykorzystania
urządzenie.
Rekomendacje
:
wykorzystanie w dzisiejszych
czasach telefonów i modemów
GSM jest bardzo powszechne.
Artykuł polecamy wszystkim,
którzy planują rozszerzenie
funkcjonalności budowanego
przez siebie sprzętu
o łączność bezprzewodową.
Przykładowy projekt alarmu
z powiadomieniem jest
znakomitym punktem startowym.
Funkcje realizowane przez mi-
krokontroler w prezentowanej apli-
kacji są następujące:
– wysyłanie przez SMS powiado-
mienia o załączeniu,
– wyłączenie alarmu przez identy-
fikację osoby dzwoniącej,
– możliwość odbioru SMS z ko-
mendami (nie zaimplementowa-
na, jednak obecna w bibliotekach
programowych).
Program sterujący napisany jest
w języku C dla mikrokontrolera
8051. Opisywane wyżej funkcje za-
implementowano w bibliotekach i są
one gotowe do wykorzystania. Wy-
magają jednak pewnej inwencji wła-
snej Czytelnika i ewentualnej para-
metryzacji. Jeszcze raz powtórzę, że
aplikację należy traktować jako przy-
kład połączenia mikrokontrolera z te-
lefonem GSM przy pomocy ogólnie
dostępnych podzespołów.
Aplikacja wykorzystuje ją jako bu-
for od odbioru komunikatów SMS
(zmienna UDBuf o rozmiarze 1 kB),
pozostawiając sporą jej część na
różne inne zmienne użytkownika.
Mikrokontroler AT89S8252 jest
zgodny ze standardowym INTEL
8052. Szyna danych ma długość 8
bitów, a szyna adresowa 16 bitów.
Ze zgodności tej wynika również
fakt, że młodszy bajt adresu urzą-
dzenia zewnętrznego oraz 8–bitowe
słowo danych są multipleksowa-
ne na wyprowadzeniach portu P0.
Jako pierwszy wyprowadzany jest
adres, później zmienia się stan li-
nii ALE z wysokiego na niski, a na-
stępnie odczytywane lub zapisywa-
ne jest słowo danych. Sekwencja
ta powtarza się dla każdej operacji
odczytu lub zapisu komórki pamię-
ci zewnętrznej. W związku z tym
adres musi zostać zapamiętany
w zewnętrznym przerzutniku. Rolę
tę pełni układ U2,z tj. 8–krotny
przerzutnik typu „D” 74LS373 (lub
74HCT373).
Na płytce brak jest dekodera
adresów rozróżniającego wybrane
komórki pamięci. Zakłada się, że
pamięć U3 (statyczny RAM typu
6264) pracuje zawsze, gdy linia
adresowa A13 ma stan niski. Kie-
runkiem przepływu danych (zapis/
odczyt) sterują sygnały RD (read)
i WR (write) wyprowadzane przez
PODSTAWOWE PARAMETRY
Opis układu
Na
rys.
1
przedstawiono sche-
mat układu sterownika alarmu. Ste-
rownik modelowy został zbudowany
przy wykorzystaniu mikrokontrolera
AT89S8252–24JI (w obudowie PLCC)
taktowanego kwarcem o częstotli-
wości 11,0592 MHz. Mikrokontroler
ma dołączoną zewnętrzną pamięć
RAM o pojemności 8 kB, która pra-
cuje w obszarze XDATA, wykorzy-
stując adresy od 0x0000 do 0x1FFF.
• Płytka o wymiarach 114 x 72 mm
• Zasilanie 12 VDC
• Telefon nie jest częścią projektu
• Sterowanie telefonu komendami AT
• Wysyłanie powiadomienia (SMS) o
włączeniu alarmu
• Możliwość odbioru SMS z komendami
(opcja)
• Zdalne wyłączanie alarmu
• Dwa przekaźniki do dowolnego
wykorzystania
18
Elektronika Praktyczna 7/2006
P R O J E K T Y
Alarm samochodowy z telefonem GSM
Rys. 1. Schemat układu alarmu samochodowego
Elektronika Praktyczna 7/2006
19
Alarm samochodowy z telefonem GSM
mikrokontroler, a zależne od reali-
zowanych przezeń rozkazów zapisu,
czy odczytu danych.
Funkcję interfejsu pomiędzy mi-
krokontrolerem, a telefonem GSM
pełni układ U7 typu MAX232 (lub
odpowiednik). Sygnały z wyprowa-
dzeń interfejsu UART mikrokontro-
lera, poprzez układ MAX, dopro-
wadzone są do złącza X14. Jest to
złącze 9–wyprowadzeniowe złącze
męskie typu DSUB, identyczne z za-
lecanym dla urządzeń DTE przez
standard EIA232 (to jest takie, jak
w komputerze PC). Do komunikacji
wykorzystywane są tylko dwa sygna-
ły – RXD i TXD. Inne doprowadze-
nie nie są podłączone, bądź służą
do doprowadzenia zasilania. Tu kil-
ka słów wyjaśnienia.
Oryginalnie, do połączenia płytki
z telefonem GSM, używane były ka-
ble do transmisji danych, przeznaczo-
ne dla telefonu ERICSSON T10 lub
SIEMENS C/S/M35, w zależności od
dołączonego modelu aparatu. Cechą
charakterystyczną tych kabli jest fakt,
że czerpią one zasilanie z nieużywa-
nych wyprowadzeń interfejsu RS232.
W związku z tym, wymagane było do-
łączenie napięcia zasilającego do od-
powiednich wyprowadzeń złącza. Na-
pięcie zasilające płytkę, to jest +5 V,
okazało się do tego celu zupełnie
wystarczające. Oczywiście nie jest to
zgodne ze standardem wyprowadzeń
sygnałów i w przypadku użycia ze-
wnętrznego modemu GSM podłącza-
nego przy pomocy kabla do transmi-
sji szeregowej, należy te doprowadze-
nia napięcia zasilania odciąć.
Rozwiązanie takie ma swoje za-
lety, mimo swojej dosyć wysokiej
ceny: za układ MAX trzeba zapła-
cić kilka złotych, a za kabel kilka-
naście. Zyskuje się jednak w ten
sposób możliwość testowania i uru-
chomienia płytki przy pomocy kom-
putera PC i programu terminalowego
(komendy wysyłane są jako łańcu-
chy znaków i mogą być obserwo-
wane na ekranie PC, natomiast od-
powiedzi telefonu można wpisywać
ręcznie), a dodatkowo każdy firmo-
wy kabel jest wyposażony w odpo-
wiednie złącze do telefonu. Odpada
więc problem z jego zakupem i uni-
ka się sytuacji uszkodzenia aparatu
przez różne „samoróbki”.
Niestety nie rozwiązuje to pro-
blemu zasilania telefonu. Oczywi-
ście każdy aparat telefoniczny GSM
wyposażony jest w lepszy lub gor-
szy akumulator. Wymaga on jed-
nak okresowego ładowania, którego
częstość zależy od jakości i stopnia
zużycia akumulatora. Akumulatora
nie można jednak ładować prądem
„wprost”, co oznacza, że ładowarka
powinna być „inteligentna” i dosto-
sowywać ilość dostarczanej energii
do stanu naładowania akumulato-
ra. I tu można napotkać pewien
problem: niektóre telefony mają tę
„inteligencję” wbudowaną, inne wy-
magają wykonania odpowiedniego
układu ładowania. Używany przeze
mnie w testach telefon SIEMENS
C35 został przez producenta wypo-
sażony w układ sterowania ładowa-
niem akumulatora i jest do zastoso-
wania w systemach embedded wręcz
idealny. Nie dosyć, że do popraw-
nej pracy wystarcza doprowadzenie
napięcia +5 V (maksymalnie do
8 V) podanego pomiędzy doprowa-
dzenia 1 oraz 2 i 3 złącza (opis
złącza telefonu SIEMENS C/S/M35
można znaleźć w rozdziale 1.4), to
jeszcze na dodatek sterowanie te-
lefonem jest proste i bezproblemo-
we. Praktycznie niemal wszystkie
funkcje telefonu mogą być załącza-
ne z użyciem komend AT i prostej
transmisji szeregowej przez interfejs
UART. Niestety w celu doprowadze-
nia zasilania, wtyczka oryginalnego
kabla musi być rozebrana, a napię-
cie doprowadzone indywidualnie.
Prezentowana aplikacja nie opisuje,
w jaki sposób ma to być zrobio-
ne. Można to jednak wydedukować
w prosty sposób z lektury wcześniej-
szych rozdziałów.
Sygnały z czujników zewnętrz-
nych są odizolowane przy pomocy
transoptorów. Napięcie doprowa-
dzane jest pomiędzy anodę i kato-
dę diody LED sterując załączaniem
odpowiedniego tranzystora. Napięcie
z kolektora doprowadzane jest na
wejście układu multipleksera typu
74LS157 (lub 74HCT157) wybiera-
jącego jedno z dwóch wejść, w za-
leżności od stanu doprowadzonego
na wejście sterujące A/B (nóżka 1
układu 74LS157).
Użycie jednego z dwóch układów:
multipleksera lub bufora szyny da-
nych wybieranego przez odpowied-
ni adres obecny na szynie adreso-
wej było konieczne ze względu na
ograniczenie liczby wyprowadzeń.
Jako układ wykonawczy pracuje
ULN2003A sterujący pracą przekaź-
ników oraz zasilaniem brzęczka.
Ostatnim elementem wymagają-
cym omówienia jest układ produkcji
Texas Instruments, TL7705. Należy
on do grupy układów, tak zwanych
nadzorców napięcia zasilającego (
vol-
tage supervisors
) i w tej aplikacji służy
do wypracowania sygnału zerującego
mikrokontroler
reset
. Układ pracu-
je, o ile doprowadzenie RIN znajduje
się w stanie wysokim oraz napięcie
doprowadzone do wejścia pomiaro-
wego SEN ma odpowiednią wartość.
W związku z tym, że wejście pomiaro-
we jest dołączone wprost do napięcia
zasilającego mikrokontroler, pełni ono
funkcję wyłącznie pomiarową. Inaczej
jest w przypadku wejścia RIN. Jest
ono doprowadzone do złącza interfej-
su SPI umożliwiając programowanie
mikrokontrolera w układzie. Obecny
na tym doprowadzeniu stan niski
umożliwia przejście w tryb zapisu pa-
mięci wewnętrznej Flash (wymagany
jest dla tego trybu aktywny sygnał
zerowania mikrokontrolera
reset
).
Aktywnym sygnałem wyjściowym
TL7705 może być stan niski (wy-
prowadzenie 5) lub wysoki (wypro-
wadzenie 6). Sygnały wyjściowe do-
prowadzone są do zworek JP1 i JP2.
Uwaga: może być wlutowana tylko
jedna z nich.
Umożliwia to wyko-
rzystanie w płytce mikrokontrolera
AT89S8252 (należy wlutować zworkę
JP1) lub zgodnego z nim pod wzglę-
dem wyprowadzeń mikrokontrolera
AVR, na przykład AT90S8515 wy-
magającego, aby stanem aktywnym
sygnału
reset
był stan niski.
Płytka jest przystosowana do za-
silania napięciem +12 V pochodzą-
cym z zewnętrznego źródła napięcia
zasilającego. Wartość napięcia to nie
tyle wymóg przetwornicy zasilającej
(ta pracuje poprawnie w zakresie od
+7 do +35 V) ile użytych prze-
kaźników. Zasila ono wprost cew-
ki przekaźników oraz prosty układ
przetwornicy
step–down
zbudowanej
z użyciem układu typu LM2575–T5.0
produkcji firmy National Semicon-
ductors. Mimo, iż na płytce przewi-
dziano miejsce na radiator, w nor-
malnych warunkach pracy nie musi
on być instalowany.
Montaż i użytkowanie
Układ został zmontowany na
płytce dwustronnej z metalizacją
otworów. Montaż jest mieszany,
to jest do konstrukcji urządzenia
wykorzystano zarówno elementy
do montażu przewlekanego (dioda
LED, podstawka mikrokontrolera,
rezonator kwarcowy, układy scalone
i transoptory, dławik i dioda, termi-
natory itp.), jak i do montażu po-
wierzchniowego (niemal wszystkie
elementy R i C z wyjątkiem kon-
20
Elektronika Praktyczna 7/2006
Alarm samochodowy z telefonem GSM
densatorów elektrolitycznych). Nie
ma szczególnych zaleceń kolejności
montażu – ta może być dowolna.
Moim zdaniem osoby nie mające
doświadczenia z aplikacjami prze-
twornic napięcia zasilania, powinny
zacząć od wlutowania elementów
przetwornicy zasilającej, doprowa-
dzenia napięcia +12 V oraz po-
miaru napięcia wyjściowego. Uchro-
ni to układ mikrokontrolera przed
uszkodzeniem w przypadku, gdy po-
pełnione zostaną błędy montażowe.
Napięcie wyjściowe najlepiej jest
mierzyć przy pomocy oscyloskopu,
który umożliwi również obserwację
jego kształtu. Pozwoli to uniknąć
problemów nie tylko z zasilaniem
układów TTL, czy mikrokontrolera,
ale również z przypadkowymi załą-
czeniami sygnału
reset
na wyjściu
TL7705.
Jako aktywny uważany jest stan
wysoki napięcia doprowadzonego
do złącza X2..X9. Musi być ono na
tyle duże, aby zaświecić diodę LED
znajdującą się wewnątrz struktury
transoptora. W związku z tym rezy-
story R4...R11 należy dobrać w za-
leżności o przewidywanej wartości
napięcia pochodzącego z czujników.
Wykorzystując transoptory PC849
lub ich odpowiedniki LT849 (o nie-
co wyższym prądzie załączenia
i gorszym współczynniku przeno-
szenia) wartość rezystancji R4...R11
można obliczyć jako:
W przypadku doprowadzenia
z aplikacją sterującą (w tym przypad-
ku jest to liczba 9861), albo skom-
pilowanie programu z inną stałą. Jej
deklarację zawiera plik nagłówkowy
„
VARIABLES35.H
” i tam może być
ona zmieniona. Jest to o tyle waż-
ne, że po wprowadzeniu kodu PIN
aplikacja sterująca bada odpowiedź
telefonu i jeśli zwracany komunikat
jest różny od „OK”, to program za-
sygnalizuje błąd komunikacji z tele-
fonem i praktycznie zakończy pra-
cę. Będzie o tym mowa dalej, przy
omawianiu szczegółów związanych
z cechami aplikacji sterującej.
Sygnały z czujników alarmowych
muszą być doprowadzone do złącz
X2...X9 z tym, że złącze X2 do-
datkowo służy do załączania trybu
czuwania alarmu. Podanie na wej-
ście X2 napięcia (zgodnie z zasa-
dami opisywanymi dla czujników)
przez czas około 1 sekundy, powo-
duje zmianę trybu z nieaktywnego
na czuwania. Po tej zmianie po-
nowne podanie sygnału (już znacz-
nie krótszego, około 200 ms) na X2
spowoduje załączenie alarmu. Wej-
ście to funkcjonuje identycznie, jak
na X3..X9.
Płytka jest wyposażona w dwa,
niezależnie załączane przekaźniki.
Mogą być one użyte w zupełnie
dowolny sposób, zgodnie z inwen-
cją użytkownika. Można na przy-
kład wyposażyć aplikację w prosty
interpreter poleceń, który będzie
sterował przekaźnikami. W tym mo-
mencie, po załączeniu alarmu, RL1
pracuje w sposób przerywany, a RL2,
załączany jest na stałe. Pierwszy
może być na przykład użyty do
sygnalizacji wizualnej przy pomocy
mrugających świateł kierunkowska-
zów, drugi do załączenia sygnaliza-
cji dźwiękowej, przerwania obwodu
zapłonu itp.
Alarm jest wyłączany dzięki
identyfikacji osoby dzwoniącej. Nu-
mer telefonu próbującego nawiązać
połączenie jest rozpoznawany i jeśli
jest to telefon zapisany w parame-
trach programu jako zarządzający,
alarm jest wyłączany. Połączenie
przychodzące jest rozłączane po
sprawdzeniu numeru telefonu, toteż
jego przeprowadzenie nie pociąga za
sobą praktycznie żadnych kosztów.
Alarm nie posiada dołączonego
wyświetlacza, nie korzysta również
z wyświetlacza telefonu. Komunika-
cja z użytkownikiem przeprowadzana
jest za pomocą diody LED oraz ko-
munikatów SMS. Bufor komunikatów
(pamięć) jest na tyle duży, że można
alarm wyposażyć w interpreter pole-
ceń przesyłanych za pomocą SMS–
–ów. Układ jest w stanie bez żad-
nych problemów odbierać je, jednak
praktyczną realizację tego zagadnienia
pozostawiono inwencji użytkownika.
Aplikacja sterująca
Można zaryzykować twierdzenie,
że najważniejszą funkcją aplikacji
sterującej jest ta inicjująca pracę
i nastawy telefonu komórkowego.
Nosi ona nazwę
initgsm()
i została
predefiniowana w bibliotece „
SIE-
MENS35.C
”. Przyjrzyjmy się reali-
zowanym przez nią nastawom. Na
list. 1
umieszczono tę funkcję wraz
z fragmentem pliku nagłówkowego
VARIABLES35.H
zawierającego defi-
nicje zmiennych i stałych przezna-
czonych do wykorzystania przez
różne funkcje obsługi komunikacji
z aparatem GSM.
Wszystkie komendy AT prze-
syłane są do telefonu przez inter-
fejs UART za pomocą standardo-
wej funkcji
printf()
predefiniowanej
przez producenta kompilatora w bi-
bliotece
stdio.h
, w którą wyposażony
R
=
Uwe
−
1
V
]
[
Ω
]
0
012
[
A
]
zewnętrznego napięcia o wartości
12 V, zalecane jest użycie rezysto-
rów o wartości 1...1,2 kV. Oczy-
wiście rezysto
ry mogą być różn
e
dla różnych wejść (uwaga: złącze
X2 przeznaczone jest do dołącze-
nia prz
ycisku załącza
jącego alarm!).
Podobnie wymagane jest dobranie
wartości rezystora R12 w zależności
od posiadanego buzzer’a:
Program sterujący został skom-
List. 1. Funkcja initgsm()
code char CPIN[] = „AT+CPIN=9861”; //wprowadzenie numeru PIN
code char ECHOOFF[] = „ATE0”; //wyłączenie echa komendy AT
code char SETNOTICE[] = „AT+CNMI=1,1,0,2”; //ustawienie sposobu powiadamiania
code char SETCLIP[] = „AT+CLIP=1”; //ustawienie sposobu powiadamiania funkcji CLIP
//wysłanie numeru PIN do telefonu, ustawienie sposobu powiadamiania
bit initgsm()
{
idata char temp[8];
R
12
=
12
V
]
−
Uzas
.
buzz
.
[
Ω
]
Izas
.
buzz
.
pilowany wraz z kodem PIN zapa-
miętanym jako stała. Kod PIN jest
wprowadzany do telefonu tuż po
załączeniu zasilania i jest to pierw-
sze przesyłane przez program po-
lecenie do aparatu GSM. Oczywi-
ście numer ten może być inny dla
każdej karty PIN i w związku z tym
możliwe są dwa rozwiązania: albo
zmiana numeru PIN na zgodny
printf(“%s\n”,CPIN); //wprowadzenie numeru pin
gets(&temp); //jako pierwsze wysyłane jest 0D+0A
gets(&temp); //jeśli PIN był poprawny, to komunikat „OK”+0D+0A
//jeśli komunikat <>OK, funkcja zwraca 0 i kończy pracę
if (strncmp(temp, „OK”, 2) != 0) return(0);
printf(“%s\n”,ECHOOFF); //wyłączenie echa rozkazu
gets(&temp);
gets(&temp);
printf(“%s\n”,SETNOTICE); //ustawienie trybu powiadomienia o sms
gets(&temp);
gets(&temp);
printf(“%s\n”,SETCLIP); //ustawienie trybu powiadomienia funkcji CLIP
gets(&temp);
gets(&temp);
return(1);
}
Elektronika Praktyczna 7/2006
21
[
Alarm samochodowy z telefonem GSM
Rys. 2. Schemat montażowy płytki drukowanej
podejmowaniem odpowiedniej ak-
cji, w zależności od stanu zmiennej
czujnika oraz statusu alarmu.
Program jest prosty, jego analiza
nie powinna nastręczać trudności.
Omówienia być może wymaga je-
den drobny szczegół.
Po załączeniu alarmu, konieczne
jest wykonywanie akcji związanej
z obsługą załączenia przekaźników
RL1 i RL2. Również w stanie czu-
wania, wykonywana jest funkcja
odczytu stanu czujników alarmu.
W związku z ich realizacją wykony-
wane są kolejne nieskończone pętle,
które – zgodnie z założeniem, że
identyfikacja numeru aparatu dzwo-
niącego wyłącza alarm – muszą
sprawdzać komunikaty docierające
z dołączonego telefonu GSM. Nie-
stety nie nadają się do tego celu
standardowe funkcje scanf(), czy
gets(), ponieważ z założenia ocze-
kują one na odbiór całego łańcu-
cha znaków zakończonego na doda-
tek przy pomocy sekwencji CR–LF
(0x0A–0x0D). Użycie standardowych
funkcji przerwałoby, więc funkcjo-
nowanie pętli, a tym samym sygna-
lizację stanu załączenia. W związku
z tym, do obsługi odbioru komu-
nikatu używane jest przerwanie
UART. Jego obsługa jest załączana
na czas obsługi funkcji załączenia
sygnalizacji alarmon(). Znak docie-
rający do UART powoduje ustawie-
nie flagi RI, atym samym przejście
do obsługi przerwania.
Format wysyłanego przez aparat
GSM komunikatu CLIP jest następu-
jący (znaki „białe” tj. nie wyświetla-
ne przez program monitora, zastąpio-
no ich kodami szesnastkowymi!):
0x0D 0x0A
RING 0x0D 0x0A
0x0D 0x0A
+CLIP: 0603630461 0x0D 0x0A
Łatwo zauważyć, że znaki no-
wej linii oraz znaki powrotu ka-
retki wysyłane są 4–krotnie. Wła-
ściwość tę wykorzystałem przy od-
biorze komunikatu. Zmienna
unsi-
gned char OxOA_CNT
pełni rolę
licznika odebranych znaków końca
linii. Jeśli funkcja odbioru odbierze
4 takie znaki, komunikat jest inter-
pretowany, tzn. funkcja porównuje
numer telefonu odebranego z tym
zapamiętanym w zmiennej SPHONE
i w przypadku zgodności alarm jest
wyłączany lub jest zerowany in-
deks bufora odbioru i program kon-
tynuuje sygnalizację oczekując na
następny komunikat. Podobnie jest
w trybie czuwania.
jest praktycznie każdy kompilator
języka C. Funkcja przesyła łańcuch
znaków (%s) kończąc go znakiem
nowej linii (\n).
Jako pierwszy, przy pomocy ko-
mendy AT+CPIN=<kod pin> jest
przesyłany kod PIN do telefonu.
Wprowadzenie poprawnego nume-
ru PIN jest warunkiem załączenia
telefonu i realizacji przez niego ja-
kichkolwiek innych komend wyko-
rzystywanych przez układ alarmu.
Poprawne wprowadzenie kodu PIN
kończy komunikat OK. Po jego
przesłaniu telefon loguje się do sie-
ci. Aplikacja nie sprawdza jakości
sygnału.
Jako następne przesyłane są na-
stępujące polecenia:
– Wyłączenie echa komendy:
ATE0.
– Ustawienie sposobu powiadamia-
nia o odebranym przez aparat
komunikacie SMS: AT+CNMI-
=1,1,0,2 (przypomnijmy: na sku-
tek realizacji tego polecenia po-
wiadomienie będzie miało postać
+CMTI: <pamięć>, <numer lo-
kalizacji> na przykład +CMTI:
”SM”, 3)
– ustawienie sposobu funkcjono-
wania powiadomienia o przycho-
dzącym połączeniu: AT+CLIP=1
(połączenie przychodzące skut-
kuje pojawieniem się komunika-
tów: RING oraz +CLIP: <numer
telefonu>, <numer funkcji> np.
RING +CLIP: 0603630461, 129.
Po wykonaniu nastaw sposobu
komunikacji z telefonem GSM, rola
aplikacji sterującej sprowadza się do
sprawdzania i dekodowania rozma-
itych komunikatów tekstowych wy-
syłanych przez telefon oraz testowa-
nia stanu czujników. Niestety – ope-
racje na łańcuchach tekstowych są
stosunkowo trudne do wykonania,
jeśli porównać je do operacji na
liczbach. Sprawiają one trudność
nie tylko programiście, ale także
mikrokontrolerowi pochłaniając gro
czasu CPU. Operacje te są również
głównym powodem, dla którego do-
wolny program realizujący interfejs
pomiędzy użytkownikiem, a aparatem
GSM jest bardzo obszerny i trudny
do analizy, a jego implementacja po-
chłania mnóstwo czasu zużytego na
uruchomienie i usuwanie błędów,
mimo iż nie realizuje zbyt skompli-
kowanych funkcji.
Początek programu głównego za-
wiera inicjalizację stanów portów
wyjściowych, zerowanie rejestru
licznika układu Watchdog oraz po-
branie statusu alarmu z wewnętrz-
nej pamięci EEPROM mikrokontro-
lera. W przypadku, gdy komórka
pamięci zawiera same wartości lo-
giczne „1”, to jest bajt o warto-
ści 0xFF, program interpretując tę
sytuację „uważa”, że procesor nie
był jeszcze używany (stan po za-
pisie pamięci Flash). Do komórki
pamięci EEPROM jest zapisywana
wartość oznaczająca stan wyłącze-
nia alarmu. Później wykonywana
jest funkcja inicjalizacji telefonu,
opisywana wyżej i umieszczona na
list. 1. W przypadku, gdy inicjali-
zacja przebiegła pomyślnie (funkcja
initgsm()
zwróciła wartość
true
),
program przechodzi do wykonywa-
nia pętli nieskończonej, sterującej
22
Elektronika Praktyczna 7/2006
Plik z chomika:
balart
Inne pliki z tego folderu:
AVT434.pdf
(354 KB)
AVT5375.pdf
(10227 KB)
AVT-1633.pdf
(5967 KB)
AVT-5118_cz1.pdf
(4814 KB)
AVT1525.pdf
(3791 KB)
Inne foldery tego chomika:
Katalog tranzystorów biopolarnych
Projekty
Zgłoś jeśli
naruszono regulamin