Samowystarczalne moduły GSM. Sterowanie modemami GSM nie tylko komendami AT
Poniedziałek, 01 Marzec 2010
W standardowych aplikacjach pracą modułu GSM steruje
zewnętrzny mikrokontroler za pomocą komend AT, przesyłanych
między modemem a mikrokontrolerem. Jednak w wielu przypadkach
zadania mikrokontrolera zewnętrznego, takie jak odczytywanie
wyników pomiarów, ich przetwarzanie czy sterowanie zewnętrznymi
urządzeniami, może być z powodzeniem przejęte przez sam
modem. Jest to możliwe gdyż w modułach GSM są mikrokontrolery
o możliwościach przekraczających potrzeby komunikacji GSM.
62 ELEKTRONIKA PRAKTYCZNA 3/2010
Notatnik konstruktora
codu na etapie uruchamiania programu, albo
wcześniej (pliki z rozszerzeniem *.pyc). Pliki
z rozszerzeniem *.pyc są tworzone z reguły
po każdej zmianie pliku źródłowego *.py.
Kod programu w postaci bytecodu jest prze-
nośny i może być uruchamiany na różnych
platformach sprzętowo-programowych.
Python nie wymusza ścisłego stylu pro-
gramowania i programy w nim pisane mogą
być zarówno obiektowe, jak również struk-
turalne (np. Java jest językiem wyłącznie
obiektowym). Python jest oprogramowaniem
typu Open-Source i może być bezpłatnie sto-
sowany w aplikacjach komercyjnych.
Do zalet Pythona można zaliczyć niezwy-
kle przejrzystą i prostą składnię. Do mini-
mum zmniejszono liczbę elementów składni
języka, np. bloki kodu są definiowane przez
odpowiednie wcięcie w kodzie źródłowym
w odróżnieniu od m.in. języka C, w którym
używane są nawiasy klamrowe. Dane mają
dynamiczne typy, tzn. rodzaj danych definiuje
typ, a nie deklaracja słowem kluczowym (np.
int, char). Zaletą Pythona jest również bogata
biblioteka standardowa, szereg bezpłatnych
bibliotek dodatkowych oraz łatwość integra-
cji z oprogramowaniem pisanym w języku C/
C++. Przykładowy kod programu w języku
Python przedstawiono na list. 1.
Moduły programowane w języku Python
produkuje m.in. firma Telit. Jest ona produ-
Komendy AT
Komendy AT zostały opracowane do
sterowania pracą modemów analogowych.
Wprowadzono je, aby ujednolicić sposób ko-
munikacji ze sprzętem, z którym miał komu-
nikować się komputer. Zostały również za-
adaptowane do sterowania modemami wbu-
dowanymi w telefony komórkowe. Obecnie
wszystkie moduły GSM są sterowane za po-
mocą tych komend z użyciem wbudowanego
interpretera. Komendy AT zostały wyspecyfi-
kowane w odpowiednich normach przezna-
czonych dla telefonów komórkowych.
W programowalnych modułach GSM
jest także możliwość zdefiniowania wła-
snych komend AT. Zastosowanie niestan-
dardowych komend zwiększa poziom bez-
pieczeństwa takiego modułu. Komunikacja
standardowego modułu z mikrokontrolerem
zarządzającym może zostać podsłuchana
i szybko rozszyfrowana. Przy stosowaniu
niestandardowych komend osoba niepowo-
łana nie może w prosty sposób rozszyfrować
algorytmu działania urządzenia.
Moduły GSM są zazwyczaj kojarzone
z prostymi modemami, które mogą wyłącz-
nie pracować jako urządzenie podrzędne
głównego mikrokontrolera. Proste moduły
GSM są sterowane poprzez komendy AT.
Mikrokontroler zarządza funkcjami aplika-
cji, a moduł jest odpowiedzialny wyłącznie
za komunikację bezprzewodową GSM.
Jednak obsługę układu radiowego w mo-
dule GSM za pomocą komend AT może re-
alizować wbudowany mikrokontroler, czę-
sto o sporych możliwościach. Stosowane
w modułach mikrokontrolery rzadko mają
wykorzystywaną swoją moc obliczeniową,
często wystarczającą aby przejąć część za-
dań głównego mikrokontrolera systemu.
Możliwość zrezygnowania z dodatkowego
mikrokontrolera jest nie do przecenienia.
Zmniejsza się liczba elementów oraz po-
wierzchnia płytki PCB. Czas odpowiedzi,
np. obsługi przychodzącej wiadomości
SMS, ulega skróceniu, gdyż nie ma potrzeby
komunikacji z zewnętrznym układem.
Modemów, których mikrokontrolery
mogą wykonywać aplikacje użytkownika
jest na rynku bardzo dużo. Nie ma jednak
uniwersalnego języka ich programowania,
tak jak jest to w przypadku sterowania ko-
mendami AT. W zależności od producenta,
są one zazwyczaj programowane w różnych
językach, zarówno w skryptowych, jak uru-
chamianych w specjalnym interpreterze
albo tzw. maszynie wirtualnej (np. Lua, Py-
thon oraz Java), a także w języku C. Jednakże
niezależnie od platformy programistycznej,
programowalne moduły GSM mogą być
również sterowane standardowymi komen-
dami AT.
Sterowanie modemami GSM
nie tylko komendami AT
Samowystarczalne
moduły GSM
W standardowych aplikacjach pracą modułu GSM steruje
zewnętrzny mikrokontroler za pomocą komend AT, przesyłanych
między modemem a mikrokontrolerem. Jednak w wielu przypadkach
zadania mikrokontrolera zewnętrznego, takie jak odczytywanie
wyników pomiarów, ich przetwarzanie czy sterowanie zewnętrznymi
urządzeniami, może być z powodzeniem przejęte przez sam
modem. Jest to możliwe gdyż w modułach GSM są mikrokontrolery
o możliwościach przekraczających potrzeby komunikacji GSM.
List. 1. Przykładowy kod źródłowy
napisany w języku a) Python i b) C
a)
def maksimum(x, y):
if x > y:
return x
else:
return y
b)
int maksimum(int x, int y) {
if (x > y) return x;
else return y;
}
//lub
int maksimum(int x, int y) {
if (x > y)
{
return x;
}
else
{
return y;
}
}
Python
Python jest interpretowanym językiem
programistycznym. Do jego uruchomienia
potrzebny jest specjalny interpreter z kompi-
latorem, który kod źródłowy programu prze-
twarza do postaci bytecodu i uruchamianego
na wirtualnej maszynie Pythona (PVM). Kod
źródłowy Pythona (pliki z rozszerzeniem
*.py) mogą być albo kompilowane do byte-
63ELEKTRONIKA PRAKTYCZNA 3/2010
Sterowanie modemami GSM nie tylko komendami AT
* IIC ? programowy port I2
C, który może
korzystać z dowolnych końcówek GPIO.
* SPI ? programowy port SPI.
* GPS ? interfejs łączący skrypt Pythona
z wewnętrznym odbiornikiem GPS. Ko-
munikacja jest bezpośrednia, tzn. bez
użycia żadnych dedykowanych komend
AT.
Java
Java jest nowoczesnym obiektowym ję-
zykiem programistycznym opracowanym
przez programistów Sun Microsystems
(obecnie należącej do firmy Oracle). Kod
programu napisanego w Javie jest urucha-
miany na tzw. maszynie wirtualnej. Maszyna
wirtualna interpretuje kod wynikowy z kom-
pilatora Javy ? bytecode, dzięki czemu (teore-
tycznie) raz skompilowany program można
uruchomić na różnych platformach sprzę-
towych. MIDlet, czyli program Javy, można
uruchamiać i testować na komputerze PC,
a następnie wgrać go do modemu.
Wadą takiego rozwiązania jest mniejsza
wydajność przetwarzania kodu interpreto-
wanego przez maszynę wirtualną, niż kodu
napisanego bezpośrednio na dany procesor,
np. w języku C. Tu z pomocą przychodzą mi-
krokontrolery ARM z rozszerzeniem Jazalle,
które mogą bezpośrednio wykonywać byte-
code wirtualnej maszyny Java. Mikrokontro-
z sieci poprzez wirtualny port szeregowy
dla komend AT.
* MDM2 ? pomocniczy interfejs dla we-
wnętrznej obsługi komend AT.
* SER ? interfejs służący do komunikacji
ze sprzętowym portem szeregowym mo-
dułu GSM (ASC0). Umożliwia on pod-
łączenie zewnętrznego urządzenia. Port
ten nie jest używany do przesyłania ko-
mend AT do modułu.
* SER2 ? dodatkowy port szeregowy do-
stępny w modułach bez wewnętrznego
odbiornika GPS.
* GPIO ? umożliwia obsługę końcówek
modułu GSM oraz pozostałych funkcji,
takich jak usypianie modułu czy obsługa
licznika.
centem modułów M2M z komunikacją GSM/
GPRS. Za pomocą Easy Script tej firmy jest
możliwe uruchamianie skryptów użytkow-
nika w modułach bezprzewodowych. Jest
to kompletna platforma programowa, dzięki
której jest możliwe tworzenie aplikacji M2M
bez ponoszenia dodatkowych kosztów na za-
kup licencji czy sprzętu.
Podział pamięci modułów Telita przedsta-
wiono na rys. 1. Dla dyspozycji aplikacji użyt-
kownika i interpretera Pythona jest ok. 2 MB
pamięci Flash oraz 1,2 MB pamięci RAM. Po-
została pamięć jest zarezerwowana dla stosu
protokołów GSM/GPRS. Oprogramowanie za-
rządzające komunikacją GSM jest sterowane
za pośrednictwem komend AT wysyłanych
przez wirtualny port szeregowy.
Wgrywanie programów użytkownika
z komputera PC do modułu odbywa się po-
przez port szeregowy. Operacje zapisu, od-
czytu i weryfikacji pamięci wprowadzane są
poprzez terminal (np. Hyper Terminal Win-
dows) i dedykowane komendy AT.
Aplikacja użytkownika przygotowana
w języku Python komunikuje się z modułem
GSM poprzez wbudowane interfejsy progra-
mowe. Są to interfejsy:
* MDM ? najważniejszy interfejs umożli-
wiający wysyłanie i odbieranie danych
Rys. 1. Podział pamięci w modułach firmy
Telit
Rys. 2. Wireless toolkit Moto2Moto firmy Motorola
R E K L A M A
64 ELEKTRONIKA PRAKTYCZNA 3/2010
Notatnik konstruktora
? Tryb Inteligentnego modemu: procesor
główny urządzenia steruje pracą Wire-
less CPU poprzez standardowe i niestan-
dardowe komendy AT. Komendy niestan-
dardowe są obsługiwane przez dodatko-
wy program uruchomiony na Wireless
CPU.
? Tryb modemu: procesor główny urządze-
nia sterują pracą Wireless CPU poprzez
standardowe komendy AT.
Sierra-Wireless dostarcza zintegrowane
środowisko programistyczne oparte na IDE
Eclipse dla modemów z Wireless CPU. M2M
Studio umożliwia przygotowanie, kompila-
cję, debugowanie oraz uruchamianie kodu
programu. Procesory Wireless CPU pracują
pod kontrolą systemu operacyjnego Open AT
OS. Należy zaznaczyć, że jest to system typu
RTOS (czas odpowiedzi na przerwanie po-
niżej 1 ms). Na rys. 3. przedstawiono widok
ekranu powitalnego IDE M2M studio.
Aplikacje przygotowane dla Open AT
OS mogą być zarówno jednowątkowe jak
i wielowątkowe. Producent dostarcza bez-
płatne biblioteki programistyczne zgodne
z językiem ANSI C. Wśród nich znajdują się
niemal wszystkie, niezbędne funkcje syste-
mowe do zarządzania modemem GSM, takie
jak: obsługa komend AT, obsługa komunika-
cji GPRS, HSDUPA, stosu TCP/IP itp.
Rys. 4. Model warstwowy aplikacji przygotowanych w języku Lua
Procesory CPU mogą pracować w trzech
trybach:
? Tryb procesora: Wireless CPU jest jedy-
nym mikrokontrolerem w urządzeniu.
Obsługuje zarówno komunikację GSM
jak i aplikację użytkownika.
lery ARM nie mają jednak zaimplementowa-
nych wszystkich komend bytecode, więc te
instrukcje, które wg inżynierów ARM?a są
rzadziej używane, muszą być obsłużone pro-
gramowo przez system operacyjny.
Moduły GSM, które mogą być programo-
wane w Javie mają w ofercie takie firmy jak:
Aplicom (wcześniej część Nokii), Siemens,
Motorola. W modułach firmy Motorola jest
możliwe wgranie własnego oprogramowa-
nia opracowanego sterującego pracą modułu
w języku Java. Przykładem jest modułu ozna-
czony symbolem G24-JAVA.
Do przygotowania oprogramowania
modułów GSM firma Motorola dostarcza
Moto2Moto Wireless toolkit. Umożliwia on
tworzenie, uruchamianie i debugowanie
MIDletów na komputerze PC przy użyciu
emulatora Javy firmy Sun. Skomplikowane
programy mogą być przesłane bezpośrednio
do modułu G24-J. Na rys. 2 przedstawiono
widok uruchomionego emulatora w środo-
wisku Moto2Moto. Programista ma podgląd
statusu urządzenia (poziom odbieranego
sygnału, stan portów, poziom napięcia ba-
terii, itp) oraz może uruchamiać MIDlety
Javy. Brakuje w nim jednakże edytora kodu
źródłowego. Pliki źródłowe projektu muszą
być więc edytowane zewnętrznym edytorem
tekstowym.
Open AT
Platforma Open AT jest z pewnością
znana czytelnikom EP. Jest to platforma
programowa przeznaczona do programowa-
nia procesorów z linii Wireless CPU firmy
Sierra-Wireless (wcześniej Wavecom) oraz
modułów z tymi procesorami. Open AT
jest zaprojektowana i zoptymalizowana pod
względem komunikacji bezprzewodowej
M2M (Machine-to-Machine).
Rys. 3. Ekran startowy programu M2M Studio
ELEKTRONIKA PRAKTYCZNA 3/2010
65ELEKTRONIKA PRAKTYCZNA 3/2010
Sterowanie modemami GSM nie tylko komendami AT
Główne biblioteki (pluginy) OPEN AT to:
* TCP/IP ? zapewnia obsługę połączenia
internetowego.
* Internet ? rozszerza funkcje pluginu
TCP/IP o protokoły POP3, SMTP oraz
FTP.
* Security ? obsługa komunikacji szyfro-
wanej przy użyciu SSL.
* Companion GPS ? obsługa modułu GPS.
* Lua ? włącza obsługę języka skryptowe-
go Lua.
* C-CAN ? obsługa magistrali CAN.
Mikrokontrolery Wireless CPU znajdują
się również w gotowych modemach przemy-
słowych, np. firmy Maestro (www.maestro-
wireless.com).
Lua
Mikrokontrolery
Wireless CPU mogą
być też programowa-
ne w języku skrypto-
wym Lua. Został on
zaprojektowany w celu
rozszerzenia właściwości różnych aplika-
cji o możliwość dynamicznego wykonywa-
nia skryptów. Jest on zazwyczaj stosowany
w oprogramowaniu gier komputerowych,
w których umożliwia zmianę interfejsu lub
oprogramowanie działań w postaci skryptów
użytkownika. Lua jest dostarczana jako jed-
na z bibliotek języka C. Lua oferuje podob-
ne możliwości programistyczne jak język C,
m.in. programowanie wielowątkowe, pełną
obsługę łańcuchów znakowych (w tym ob-
sługę wyrażeń regularnych), automatyczne
zarządzanie pamięcią oraz programowanie
obiektowe.
Dostęp do maszyny wirtualnej Lua uzy-
skuje się poprzez telnet, za pomocą którego
można pobierać programy z dowolnego ser-
wera FTP i uruchamiać je w module. Zmiana
uruchomionych skryptów dokonywana jest
w czasie pracy urządzenia i nie jest wymaga-
ny restart systemu.
Ponieważ programy Lua są uruchamiane
przez specjalny plugin biblioteki Open AT,
to możliwe jest połączenie programów pisa-
nych w języku Lua i w języku C. Na rys. 4
przedstawiono model warstwowy aplikacji
przygotowanych dla systemu Open AT OS
w językach Lua i C.
Możliwe jest więc pisanie części progra-
mu w języku C, a części w języku Lua.
Język C
Niektóre moduły mogą być również pro-
gramowane w języku C. Programy dla tych
modułów są uruchamiane bezpośrednio
na mikrokontrolerze sterującym modułem.
Przykładem jest tutaj modem firmy Motoro-
la oznaczony symbolem G30. Jest to prze-
mysłowy modem GSM/GPRS przeznaczony
do aplikacji automatyki, bezpieczeństwa
i sprzedaży elektronicznej. Ma wydzielo-
ne 2 MB pamięci do użycia przez aplikację
użytkownika. Moduł ma zaimplementowaną
programową warstwę dostępową do zaso-
bów sprzętowych dla aplikacji napisanych
w języku C.
Podsumowanie
Moduły GSM są chętnie stosowane
w wielu aplikacjach, którym umożliwiają
bezprzewodową wymianę danych z dowol-
nego miejsca będącego w zasięgu sieci ko-
mórkowej. Programowalne moduły GSM,
mogą w wielu przypadkach być jedynym
komponentem zdalnego urządzenia pomia-
rowego lub kontrolnego. Stosowany w nich
mikrokontroler przejmuje zadania aplikacji.
Przy wyborze programowalnego modu-
łu należy wziąć pod uwagę znajomość da-
nej platformy programistycznej, gdyż może
okazać się, że prostsze będzie napisanie pro-
gramu w znanym języku, niż nauczenie się
nowego. Należy też wziąć pod uwagę ogra-
niczenia takich rozwiązań, gdyż w większo-
ści przypadków program użytkownika jest
wykonywany na wirtualnej maszynie, która
zabiera zasoby.
Maciej Gołaszewski, EP
maciej.golaszewski@ep.com.pl
R E K L A M A
Zobacz więcej w kategorii Notatnik konstruktora