Moduly GSM w praktyce cz1, ARTYKUŁY - ELEKTRYKA, ARTYKUŁY ELEKTRYKA - 3
[ Pobierz całość w formacie PDF ]
KURS
Moduły GSM w praktyce,
część 1
Typową konfigurację syste-
mu wykorzystującego moduł GSM
przedstawiono na
rys. 1
. Moduł
pełni tu rolę zwykłego modemu,
sterowanego przez zewnętrzny mi-
krokontroler stanowiący serce ca-
łego urządzenia. Takie podejście
zapewnia dużą elastyczność, po-
nieważ możemy wybrać najbardziej
dla nas odpowiedni mikrokontroler.
Również oprogramowanie możemy
tworzyć wykorzystując posiadane
dla niego biblioteki i własne do-
świadczenie. Zastosowanie mi-
krokontrolera oraz oddzielnego
modułu GSM, o ile jest w miarę
wygodne, o tyle nie zawsze jest
uzasadnione ekonomicznie. Decy-
duje o tym często konieczność za-
stosowania wielu dodatkowych ele-
mentów. Wydaje się oczywiste, że
w każdym module GSM znajduje
się mikrokontroler sterujący, po-
siadający dość dużą moc oblicze-
niową. Nasuwa się więc pytanie,
czy nie dałoby się z tej mocy sko-
rzystać na cele własnej aplikacji?
W standardowych modułach, a tym
bardziej w telefonach GSM nie jest
to praktycznie możliwe, chociażby
z powodu braku odpowiednich linii
IO nadających się do sterowania
zewnętrznymi urządzeniami. Także
oprogramowanie modułu najczęściej
nie pozwala na wykonanie kodu
użytkownika. Producenci modułów
GSM szybko dostrzegli jednak za-
potrzebowanie rynku i jak grzy-
by po deszczu zaczęły powstawać
rozwiązania modułów GSM umoż-
liwiających wykonywanie programu
Telefonia GSM w układach automatyki i telemetrii już od kilkunastu
lat jest powszechnie wykorzystywana na szeroką skalę. Na
łamach Elektroniki Praktycznej wielokrotnie publikowano projekty
wykorzystujące do komunikacji telefon lub moduł GSM. We
wszystkich spotykanych do tej pory rozwiązaniach rolę układu
sterującego najczęściej pełnił niezależny mikrokontroler komunikujący
się z telefonem/modułem GSM przez port szeregowy wykorzystując
odpowiednie komendy AT.
użytkownika. Dodatkowo zostały
wyposażone w porty IO i magistrale
spotykane w standardowych mikro-
kontrolerach, takie jak: I
2
C, SPI,
UART itp. Wykorzystanie takiego
modułu umożliwia realizację więk-
szości najczęściej spotykanych za-
dań przez sam moduł bez koniecz-
ności używania dodatkowego mikro-
kontrolera. Po prostu moduł GSM
pełni rolę mikrokontrolera sterują-
cego całym urządzeniem. W związ-
ku z tym dla tego typu modułów
zwykło się używać określenia „Wi-
reless CPU”, czyli bezprzewodowy
procesor. Wykorzystanie modułu do
wykonywania własnego programu
wiąże się z koniecznością dostoso-
wania programu do systemu ope-
racyjnego wbudowanego w moduł
GSM. Musimy w takim przypadku
pamiętać, że zadaniem procesora
modułu jest przede wszystkim wy-
konywanie swoich własnych zadań,
jak np. obsługa stosu GSM. Do
tworzenia oprogramowania zgodnie
z powyższą koncepcją konieczne
jest korzystanie z oprogramowania
SDK (
Software Development Kit
)
dostarczanego przez producenta
modułu. W zależ-
ności od modułu
najczęściej uży-
wane języki pro-
gramowania to:
Java (Motorola),
Python (TELIC),
C (WaveCom).
Dwa pierwsze
języki są bar-
dzo wygodne
dla programisty,
ponieważ za-
pewniają wiele
mechanizmów
i bibliotek, uwalniając programi-
stę od troszczenia się o szczegóły.
Jednak są one stosunkowo wolne,
ponieważ Python jest językiem in-
terpretowanym, natomiast Java jest
kompilowana do kodu bajtowego
i wykonywana przez maszynę wir-
tualną. Największą wydajność na-
turalnie pozwala uzyskać rozwiąza-
nie wykorzystujące język C, który
jest kompilowany bezpośrednio do
kodu maszynowego procesora mo-
dułu. Jednak również i w tym przy-
padku nie uzyskujemy maksymal-
nej wydajności aplikacji z uwagi na
dzielenie czasu procesora pomiędzy
naszą aplikacją, a obsługą zadań
systemowych modułu. W prostych
zastosowaniach nie jest jednak po-
trzebna duża wydajność, natomiast
liczy się wygoda oraz szybkość
tworzenia aplikacji.
W niniejszym cyklu będziemy
się opierać na module GSM Wave-
Com Q2686
,
umożliwiającym two-
rzenie własnych rozwiązań aplika-
cyjnych bazujących na samym mo-
dule oraz dodatkowych układach
peryferyjnych. Moduł ten można
programować z wykorzystaniem
środowiska OpenAT bezpośrednio
w języku C, a zastosowany w mo-
dule mikroprocesor ARM9 umożli-
wia wydajne wykonywanie własne-
go programu.
Na wstępie zapoznamy się
z charakterystyką i możliwościami
modułu, a następnie ze specyfikacją
elektryczną oraz sposobem projekto-
wania własnego układu wykorzystu-
jącego moduł WaveCom. Następnie
poznamy sposób instalacji środowi-
ska OpenAT oraz metody wgrywa-
nia oraz uruchamiania oprogramo-
wania do modułu OpenAT. Na za-
Rys. 1. Typowa konfiguracja systemu wykorzystującego
moduł GSM
60
Elektronika Praktyczna 7/2008
KURS
Elektronika Praktyczna 7/2008
61
KURS
Rys. 2. Budowa wewnętrzna modułu Q2668
korzystywany tak, jak klasyczny
interfejs RS232 w zwykłych modu-
łach GSM, czyli za jego pośredni-
ctwem można wydawać komendy
AT do modułu. Interfejs ten jest
również wykorzystywany do wgry-
wania oraz uruchamiania własnych
aplikacji. Jedno z wejść dźwięku
analogowego umożliwia dołączenie
za pośrednictwem kilkunastu ele-
mentów mikrofonu elektretowego
oraz głośnika, umożliwiając w ten
sposób bezpośrednią realizację po-
łączeń głosowych. Interfejsy SPI
i I
2
C powszechne w typowych mi-
krokontrolerach, takich jak AVR
czy LPC2000 w znaczący sposób
ułatwiają komunikację z różnymi
układami zewnętrznymi. Wszystkie
wymienione wyżej elementy spra-
wiają, że moduły WaveCom mogą
zastąpić niemal dowolny mikrokon-
troler.
Moduł WaveCom jest przysto-
sowany do pracy w 4 pasmach
850/900/1800/1900 MHz, tak więc
może być bez problemów wyko-
rzystywany zarówno w krajach eu-
ropejskich jak i w Stanach Zjedno-
czonych. Q2686 zapewnia cyfrową
transmisję danych CSD z prędkością
14,4 kbps oraz pakietową transmi-
sję danych GPRS w klasie 10, co
w najbardziej sprzyjających warun-
kach pozwala uzyskać prędkości
transmisji na poziomie 80 kbps
podczas odbioru oraz 40 kbps pod-
czas nadawania danych. Jak więc
widzimy, moduł jest pełnym termi-
nalem GSM, który oprócz możliwo-
ści wykonywania wcześniej wspo-
mnianych programów użytkownika
może być wykorzystywany jak kla-
syczny moduł GSM sterowany za
pomocą odpowiednich komend AT
wysyłanych poprzez pierwszy port
szeregowy. Moduł posiada bardzo
małe wymiary 40x32,2x4 mm i wa-
ży tylko 9 g, może więc być wy-
korzystywany nawet w urządzeniach
o bardzo niewielkich wymiarach.
Znamy już podstawowe moż-
liwości sprzętowe modułu, jed-
nak sam sprzęt to nie wszystko.
Aby uruchomić własną aplikację
musimy mieć przygotowany pro-
gram, który następnie trzeba ja-
koś wgrać do modułu. Producent
modułu WaveCom dostarcza zin-
tegrowane środowisko programi-
styczne OpenAT, które umożliwia
wygodne pisanie oprogramowania
w języku C. W większej części śro-
dowisko OpenAT jest zbudowane
kończenie napiszemy kilka przykła-
dowych programów zapoznających
Czytelnika ze środowiskiem. Na
początek będzie to prosty program
zapalający diody LED, następnie
pokażemy, w jaki sposób możemy
tworzyć własne komendy AT oraz
przykładową aplikację umożliwiają-
cą sterowanie za pomocą SMS–ów.
Po zapoznaniu się z całością ma-
teriałów zainteresowani Czytelnicy
będą mogli bardziej szczegółowo
zgłębić tajniki środowiska OpenAT,
co pozwoli im pisać bardziej za-
awansowane programy.
Aby moduł mógł być wykorzystany
do sterowania różnymi urządzenia-
mi peryferyjnymi konieczne stało
się wyprowadzenie odpowiednich
portów IO. Budowę wewnętrzną
modułu przedstawiono na
rys.
2
.
Moduł wyposażono w szereg
układów peryferyjnych ułatwia-
jących komunikację z otoczeniem
oraz tworzenie własnych aplikacji.
Posiada on 36 linii wejścia–wyjścia
(IO) ogólnego przeznaczenia, do
których można podłączyć dowolne
sygnały. Zaimplementowano w nim
również szereg sprzętowych inter-
fejsów, które są obsługiwane całko-
wicie sprzętowo. Są to:
– interfejs USB Device w wersji
1.1,
– 2 porty szeregowe UART,
– interfejs dźwięku cyfrowego
DAI,
– 2 interfejsy dźwięku analogowego,
– wyjście sygnalizatora dźwiękowe-
go (buzzera),
– 2 wejścia przerwań,
– sprzętowy interfejs klawiatury
5x5,
– interfejs karty SIM w standardzie
1,8 V lub 3 V,
– interfejs I
2
C,
– 2 interfejsy SPI,
– 10–bitowy przetwornik A/C,
– 10–bitowy przetwornik C/A,
– zegar czasu rzeczywistego RTC.
Należy tutaj zaznaczyć, że
pierwszy port szeregowy jest wy-
Charakterystyka modułu
WaveCom Q2668 oraz
środowiska OpenAT
Procesor zastosowany w module
Q2668 to ARM946E–S taktowany
zegarem 100 MHz, zapewniający
dużą moc obliczeniową zarówno
dla aplikacji użytkownika, jak i sy-
stemu operacyjnego. W zależności
od wersji moduł jest wyposażony
w 4 lub 8 MB pamięci Flash oraz
2 lub 4 MB pamięci RAM. Zapew-
nia to odpowiednią ilość pamięci
nawet dla bardzo zaawansowanych
aplikacji użytkownika. Oczywiście
część pamięci Flash i RAM jest za-
rezerwowana dla systemu operacyj-
nego WaveCom OS w wersji 6.60,
tak więc do dyspozycji aplikacji
użytkownika pozostaje 832 kB pa-
mięci Flash i 256 KB pamięci RAM.
62
Elektronika Praktyczna 7/2008
KURS
Elektronika Praktyczna 7/2008
63
KURS
Rys. 3. Prąd zasilania pobierany przez moduł Q2668
w trakcie pracy
Parametry
elektryczne –
moduł Q2668 we
własnym układzie
aplikacyjnym
Jak już wspo-
mniano na wstę-
pie, moduł Q2668
dzięki szeregowi portów IO oraz
innych urządzeń peryferyjnych po-
zwala zrezygnować z dodatkowego
mikrokontrolera w urządzeniu. Aby
można było skorzystać ze wszyst-
kich sygnałów, potrzebne jest do-
datkowe złącze zewnętrzne. Do
wyprowadzenia sygnałów z modu-
łu służy 100–pinowe złącze NAIS
AXK600354J, które posiada raster
wyprowadzeń 0,5 mm, co nie po-
winno stwarzać problemów nawet
przy ręcznym montażu. Moduł po-
siada osobne złącze U.FL służące
do podłączenia anteny GSM pod
spodem modułu.
Jeżeli nie mamy odpowiedniego
złącza lub złącze anteny chcemy
wyprowadzić na zewnątrz obudo-
wy urządzenia, to kabel antenowy
(RG178) możemy również podłą-
czyć do pola lutowniczego znajdu-
jącego się na górnej stronie modu-
łu.
nie jak ma to miejsce w przypad-
ku klasycznych mikrokontrolerów.
Pewnym utrudnieniem w przypad-
ku stosowaniu modułu może być
fakt, że niektóre porty modułu
pracują w standardzie 2,8 V, nato-
miast druga część posiada porty
w standardzie 1,8 V. W niektórych
przypadkach jest to dość kłopotli-
we i wymaga stosowania układów
pośredniczących – przesuwników
poziomów (
level–shifters
). Przekro-
czenie napięcia ponad określony
standard może bowiem spowodo-
wać uszkodzenie portów. Wszystkie
porty IO są w pełni symetryczne
i ich wydajność prądowa zarówno
w stanie wysokim, jak i niskim wy-
nosi 4 mA, tak więc w większości
przypadków dołączenie np. diody
LED będzie wymagało zastosowa-
nia dodatkowego układu, podobnie
jak np. mikrokontrolerach 8051.
W
tab.
1
przedstawiono wszystkie
sygnały dostępne na złączu modu-
łu Q2686 wraz z ich krótką funk-
cją oraz opisem.
Poszczególne porty IO różnią
się pełnionymi funkcjami. Niektóre
z nich mogą być skonfigurowane
tylko jako linie wejściowe, inne
mogą pracować tylko jako wyjścia.
Do prawidłowego działania, oprócz
zasilania i anteny, moduł wymaga
podłączania karty SIM, która nie
jest dostępna w module. Dlate-
go gniazdo takiej karty musi być
umieszczone na płytce projektowa-
nego urządzenia. Na
rys.
4
przed-
stawiono sposób dołączenia gniaz-
da karty SIM do modułu.
Do poszczególnych linii dołą-
czono specjalne diody zabezpie-
czające moduł przed przepięcia-
mi elektrostatycznymi. Układ ten
może współpracować zarówno
z kartami zasilanymi napięciem
3 V, jak i kartami na napięcie
1,8 V. Możliwe jest zatem używa-
nie dowolnych karty SIM, jakie są
dostarczane obecnie przez operato-
rów. Aby móc programować i uru-
chamiać własne programy, musimy
jeszcze obowiązkowo do pierw-
szego portu szeregowego dołączyć
układ dopasowujący sygnały modu-
łu do standardu RS232. Ponieważ
do poprawnej transmisji potrzebny
jest pełny interfejs RS232, musimy
zastosować układ posiadający wię-
cej linii niż klasyczny MAX2323.
Przykładowy interfejs dopasowują-
cy dla pierwszego portu szerego-
wego przedstawiono na
rys.
5
.
w oparciu o oprogramowanie Open
Source, na które składa się kom-
pilator GCC dla mikrokontrolerów
ARM oraz środowisko IDE Eclip-
se. Pozostałe elementy, takie jak
biblioteki systemowe oraz auto-
matyczne kreatory projektów sta-
nowią rozwiązania autorskie firmy
WaveCom. Niestety, pomimo iż
środowisko korzysta z programów
Open Source, to działa ono tylko
w systemie Windows i producent
nie dostarcza oficjalnie wersji
przeznaczonej dla Linuxa. Jednak
mam dobrą wiadomość: wykorzy-
stując kompilator GCC oraz Eclip-
se w wersji dla Linuxa, po prze-
niesieniu plików nagłówkowych
i bibliotek oraz wykorzystując śro-
dowisko emulacji Windows Wine
do uruchamiania kreatorów Open
AT, możemy również bezproble-
mowo tworzyć oprogramowanie
dla Modułów WaveCom pod Linu-
xem. Środowisko OpenAT wspie-
ra pisanie oprogramowania w IDE
Eclipse tylko w sposób opcjonalny
i jest ono nastawione głównie na
wykorzystywanie IDE Microsoft
Visual Studio. Możliwe jest tu
pełne debugowanie i praca kroko-
wa, jednak nie każda firma, czy
tym bardziej osoba zajmująca się
tematem hobbystycznie, ma ocho-
tę płacić niemałe pieniądze firmie
z Redmond na zakup środowiska
Microsoft Visual Studio, tylko po
to, żeby można było jednym klik-
nięciem uruchamiać i debugować
aplikację OpenAT. Ponadto, tak
naprawdę cała kompilacja i tak
przebiega z wykorzystaniem Open
Source’owego kompilatora. Dalsza
część praktyczna artykułu będzie
więc bazowała na wykorzystywa-
niu alternatywnego, otwartego śro-
dowiska IDE Eclipse. Samo wgry-
wanie i uruchamianie skompilowa-
nego programu w module Q2668
jest niezależne od platformy, po-
nieważ moduł możemy programo-
wać poprzez pierwszy port szere-
gowy w standardowym protokole
X–Modem, wykorzystując dowolny
program terminalowy, np. Mini-
com czy Hyperterminal.
Moduł powinien być zasila-
ny napięciem nominalnym 3,6 V
(3,2...4,8 V), przy czym maksy-
malny pobór prądu w impulsie
podczas nadawania może wynosić
aż 1,8 A, o czym należy pamiętać
projektując obwód zasilania. Śred-
ni pobór prądu podczas nadawa-
nia wynosi jednak tylko kilkaset
mA, ponieważ ma on charakter
impulsowy. Impuls w zależności
od rodzaju transmisji trwa 577 ms
lub 1154 ms na 4,615 ms przerwy
(
rys.
3
). W związku z powyższym
nie musimy stosować stabilizatora
napięcia o dużej wydajności prądo-
wej, wystarczy zespół kondensato-
rów o dużej pojemności znajdujący
się jak najbliżej modułu. Świetnie
do tego celu nadają się konden-
satory CAP–X posiadające dużą
pojemność oraz bardzo małą rezy-
stancję szeregową. Należy również
pamiętać o prawidłowym zaprojek-
towaniu płytki drukowanej PCB, ze
szczególnym uwzględnieniem odpo-
wiednich grubości ścieżek. W ukła-
dzie będą bowiem płynąć prądy
impulsowe o dużej wartości. Porty
IO modułu Q2686 są współdzie-
lone z układami peryferyjnymi na
przykład UART, czy SPI, podob-
64
Elektronika Praktyczna 7/2008
[ Pobierz całość w formacie PDF ]