Programowanie_GSM.pdf

(902 KB) Pobierz
Elektronika Praktyczna
NotatNik koNstruktora
Samowystarczalne
T EM A T
N U ME R U
Sterowanie modemami GSM
nie tylko komendami AT
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.
codunaetapieuruchamianiaprogramu,albo
wcześniej(plikiz rozszerzeniem*.pyc).Pliki
z rozszerzeniem*.pycsątworzonez reguły
pokażdejzmianieplikuźródłowego*.py.
Kodprogramuw postacibytecodujestprze-
nośnyi możebyćuruchamianynaróżnych
platformachsprzętowo-programowych.
Pythonniewymuszaścisłegostylupro-
gramowaniai programyw nimpisanemogą
byćzarównoobiektowe,jakrównieżstruk-
turalne (np. Java jest językiem wyłącznie
obiektowym).Pythonjestoprogramowaniem
typuOpen-Sourcei możebyćbezpłatniesto-
sowanyw aplikacjachkomercyjnych.
DozaletPythonamożnazaliczyćniezwy-
kleprzejrzystąi prostąskładnię.Domini-
mumzmniejszonoliczbęelementówskładni
języka,np.blokikodusądeiniowaneprzez
odpowiedniewcięciew kodzieźródłowym
w odróżnieniuodm.in.językaC,w którym
używanesąnawiasyklamrowe.Danemają
dynamicznetypy,tzn.rodzajdanychdeiniuje
typ,a niedeklaracjasłowemkluczowym(np.
int,char).ZaletąPythonajestrównieżbogata
bibliotekastandardowa,szeregbezpłatnych
bibliotekdodatkowychorazłatwośćintegra-
cjiz oprogramowaniempisanymw językuC/
C++.Przykładowykodprogramuw języku
Pythonprzedstawionona list. 1 .
Modułyprogramowanew językuPython
produkujem.in.irmaTelit.Jestonaprodu-
Moduły GSM są zazwyczaj kojarzone
z prostymimodemami,któremogąwyłącz-
nie pracować jako urządzenie podrzędne
głównego mikrokontrolera. Proste moduły
GSMsąsterowanepoprzezkomendyAT.
Mikrokontrolerzarządzafunkcjamiaplika-
cji,a modułjestodpowiedzialnywyłącznie
zakomunikacjębezprzewodowąGSM.
Jednakobsługęukładuradiowegow mo-
duleGSMzapomocąkomendATmożere-
alizowaćwbudowanymikrokontroler,czę-
sto o  sporych możliwościach. Stosowane
w modułachmikrokontroleryrzadkomają
wykorzystywanąswojąmocobliczeniową,
częstowystarczającąabyprzejąćczęśćza-
dań głównego mikrokontrolera systemu.
Możliwość zrezygnowania z  dodatkowego
mikrokontrolera jest nie do przecenienia.
Zmniejszasięliczbaelementóworazpo-
wierzchniapłytkiPCB.Czasodpowiedzi,
np. obsługi przychodzącej wiadomości
SMS,ulegaskróceniu,gdyżniemapotrzeby
komunikacjiz zewnętrznymukładem.
Modemów, których mikrokontrolery
mogą wykonywać aplikacje użytkownika
jestnarynkubardzodużo.Niemajednak
uniwersalnegojęzykaichprogramowania,
takjakjesttow przypadkusterowaniako-
mendamiAT.W zależnościodproducenta,
sąonezazwyczajprogramowanew różnych
językach,zarównowskryptowych,jakuru-
chamianych w  specjalnym interpreterze
albotzw.maszyniewirtualnej(np.Lua,Py-
thonorazJava),a takżew językuC.Jednakże
niezależnieodplatformyprogramistycznej,
programowalne moduły GSM mogą być
równieżsterowanestandardowymikomen-
damiAT.
Komendy AT
Komendy AT zostały opracowane do
sterowaniapracąmodemówanalogowych.
Wprowadzonoje,abyujednolicićsposóbko-
munikacjizesprzętem,z którymmiałkomu-
nikowaćsiękomputer.Zostałyrównieżza-
adaptowanedosterowaniamodemamiwbu-
dowanymiw telefonykomórkowe.Obecnie
wszystkiemodułyGSMsąsterowanezapo-
mocątychkomendz użyciemwbudowanego
interpretera.KomendyATzostaływyspecyi-
kowanew odpowiednichnormachprzezna-
czonychdlatelefonówkomórkowych.
W  programowalnych modułach GSM
jest także możliwość zdeiniowania wła-
snych komend AT. Zastosowanie niestan-
dardowychkomendzwiększapoziombez-
pieczeństwatakiegomodułu.Komunikacja
standardowegomodułuz mikrokontrolerem
zarządzającym może zostać podsłuchana
i  szybko rozszyfrowana. Przy stosowaniu
niestandardowychkomendosobaniepowo-
łananiemożew prostysposóbrozszyfrować
algorytmudziałaniaurządzenia.
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
Pythonjestinterpretowanymjęzykiem
programistycznym. Do jego uruchomienia
potrzebnyjestspecjalnyinterpreterz kompi-
latorem,którykodźródłowyprogramuprze-
twarzadopostacibytecodui uruchamianego
nawirtualnejmaszyniePythona(PVM).Kod
źródłowy Pythona (pliki z  rozszerzeniem
*.py)mogąbyćalbokompilowanedobyte-
62
ELEKTRONIKA PRAKTYCZNA 3/2010
moduły GSM
Sterowanie modemami GSM nie tylko komendami AT
rys. 1. Podział pamięci w modułach fi rmy
telit
centemmodułówM2Mz komunikacjąGSM/
GPRS.ZapomocąEasyScripttejirmyjest
możliweuruchamianieskryptówużytkow-
nika w  modułach bezprzewodowych. Jest
tokompletnaplatformaprogramowa,dzięki
którejjestmożliwetworzenieaplikacjiM2M
bezponoszeniadodatkowychkosztównaza-
kuplicencjiczysprzętu.
PodziałpamięcimodułówTelitaprzedsta-
wionona rys.   1 .Dladyspozycjiaplikacjiużyt-
kownikai interpreteraPythonajestok.2 MB
pamięciFlashoraz1,2 MBpamięciRAM.Po-
zostałapamięćjestzarezerwowanadlastosu
protokołówGSM/GPRS.Oprogramowanieza-
rządzającekomunikacjąGSMjeststerowane
zapośrednictwemkomendATwysyłanych
przezwirtualnyportszeregowy.
Wgrywanie programów użytkownika
z komputeraPCdomodułuodbywasiępo-
przezportszeregowy.Operacjezapisu,od-
czytui weryikacjipamięciwprowadzanesą
poprzezterminal(np.HyperTerminalWin-
dows)i dedykowanekomendyAT.
Aplikacja użytkownika przygotowana
w językuPythonkomunikujesięz modułem
GSMpoprzezwbudowaneinterfejsyprogra-
mowe.Sątointerfejsy:
*MDM–najważniejszyinterfejsumożli-
wiającywysyłaniei odbieraniedanych
rys. 2. Wireless toolkit Moto2Moto fi rmy Motorola
z siecipoprzezwirtualnyportszeregowy
dlakomendAT.
*MDM2–pomocniczyinterfejsdlawe-
wnętrznejobsługikomendAT.
*SER–interfejssłużącydokomunikacji
zesprzętowymportemszeregowymmo-
dułuGSM(ASC0).Umożliwiaonpod-
łączeniezewnętrznegourządzenia.Port
tenniejestużywanydoprzesyłaniako-
mendATdomodułu.
*SER2–dodatkowyportszeregowydo-
stępnyw modułachbezwewnętrznego
odbiornikaGPS.
*GPIO – umożliwia obsługę końcówek
modułuGSMorazpozostałychfunkcji,
takichjakusypianiemodułuczyobsługa
licznika.
*IIC–programowyportI 2 C,którymoże
korzystaćz dowolnychkońcówekGPIO.
*SPI–programowyportSPI.
*GPS–interfejsłączącyskryptPythona
z wewnętrznymodbiornikiemGPS.Ko-
munikacja jest bezpośrednia, tzn. bez
użyciażadnychdedykowanychkomend
AT.
Java
Javajestnowoczesnymobiektowymję-
zykiem programistycznym opracowanym
przez programistów Sun Microsystems
(obecnie należącej do irmy Oracle). Kod
programunapisanegow Javiejesturucha-
mianynatzw.maszyniewirtualnej.Maszyna
wirtualnainterpretujekodwynikowyz kom-
pilatoraJavy–bytecode,dziękiczemu(teore-
tycznie)razskompilowanyprogrammożna
uruchomićnaróżnychplatformachsprzę-
towych.MIDlet,czyliprogramJavy,można
uruchamiaći testowaćnakomputerzePC,
a następniewgraćgodomodemu.
Wadątakiegorozwiązaniajestmniejsza
wydajność przetwarzania kodu interpreto-
wanegoprzezmaszynęwirtualną,niżkodu
napisanegobezpośrednionadanyprocesor,
np.w językuC.Tuz pomocąprzychodząmi-
krokontroleryARMz rozszerzeniemJazalle,
któremogąbezpośredniowykonywaćbyte-
codewirtualnejmaszynyJava.Mikrokontro-
R
E
K
L
A
M
A
ELEKTRONIKA PRAKTYCZNA 3/2010
63
NotatNik koNstruktora
rys. 3. Ekran startowy programu M2M studio
–TrybInteligentnegomodemu:procesor
głównyurządzeniasterujepracąWire-
lessCPUpoprzezstandardowei niestan-
dardowekomendyAT.Komendyniestan-
dardowesąobsługiwaneprzezdodatko-
wyprogramuruchomionynaWireless
CPU.
–Trybmodemu:procesorgłównyurządze-
niasterująpracąWirelessCPUpoprzez
standardowekomendyAT.
Sierra-Wireless dostarcza zintegrowane
środowiskoprogramistyczneopartenaIDE
Eclipsedlamodemówz WirelessCPU.M2M
Studioumożliwiaprzygotowanie,kompila-
cję,debugowanieorazuruchamianiekodu
programu.ProcesoryWirelessCPUpracują
podkontroląsystemuoperacyjnegoOpenAT
OS.Należyzaznaczyć,żejesttosystemtypu
RTOS(czasodpowiedzinaprzerwaniepo-
niżej1 ms).Na rys. 3 .przedstawionowidok
ekranupowitalnegoIDEM2Mstudio.
Aplikacje przygotowane dla Open AT
OSmogąbyćzarównojednowątkowejak
i wielowątkowe.Producentdostarczabez-
płatne biblioteki programistyczne zgodne
z językiemANSIC.Wśródnichznajdująsię
niemalwszystkie,niezbędnefunkcjesyste-
mowedozarządzaniamodememGSM,takie
jak:obsługakomendAT,obsługakomunika-
cjiGPRS,HSDUPA,stosuTCP/IPitp.
leryARMniemająjednakzaimplementowa-
nychwszystkichkomendbytecode,więcte
instrukcje,którewginżynierówARM’a są
rzadziejużywane,musząbyćobsłużonepro-
gramowoprzezsystemoperacyjny.
ModułyGSM,któremogąbyćprogramo-
wanew Javiemająw ofercietakieirmyjak:
Aplicom(wcześniejczęśćNokii),Siemens,
Motorola.W modułachirmyMotorolajest
możliwe wgranie własnego oprogramowa-
niaopracowanegosterującegopracąmodułu
w językuJava.Przykłademjestmodułuozna-
czonysymbolemG24-JAVA.
Do przygotowania oprogramowania
modułów GSM irma Motorola dostarcza
Moto2MotoWirelesstoolkit.Umożliwiaon
tworzenie, uruchamianie i  debugowanie
MIDletównakomputerzePCprzyużyciu
emulatoraJavyirmySun.Skomplikowane
programymogąbyćprzesłanebezpośrednio
domodułuG24-J.Na rys. 2 przedstawiono
widokuruchomionegoemulatoraw środo-
wiskuMoto2Moto.Programistamapodgląd
statusu urządzenia (poziom odbieranego
sygnału,stanportów,poziomnapięciaba-
terii, itp) oraz może uruchamiać MIDlety
Javy.Brakujew nimjednakżeedytorakodu
źródłowego.Plikiźródłoweprojektumuszą
byćwięcedytowanezewnętrznymedytorem
tekstowym.
ProcesoryCPUmogąpracowaćw trzech
trybach:
–Trybprocesora:WirelessCPUjestjedy-
nym mikrokontrolerem w  urządzeniu.
Obsługuje zarówno komunikację GSM
jaki aplikacjęużytkownika.
rys. 4. Model warstwowy aplikacji przygotowanych w języku Lua
Open AT
Platforma Open AT jest z  pewnością
znana czytelnikom EP. Jest to platforma
programowaprzeznaczonadoprogramowa-
niaprocesorówz liniiWirelessCPUirmy
Sierra-Wireless (wcześniej Wavecom) oraz
modułów z  tymi procesorami. Open AT
jestzaprojektowanai zoptymalizowanapod
względem komunikacji bezprzewodowej
M2M(Machine-to-Machine).
64
ELEKTRONIKA PRAKTYCZNA 3/2010
ELEKTRONIKA PRAKTYCZNA 3/2010
Sterowanie modemami GSM nie tylko komendami AT
Głównebiblioteki(pluginy)OPENATto:
*TCP/IP–zapewniaobsługępołączenia
internetowego.
*Internet – rozszerza funkcje pluginu
TCP/IPo protokołyPOP3,SMTPoraz
FTP.
*Security–obsługakomunikacjiszyfro-
wanejprzyużyciuSSL.
*CompanionGPS–obsługamodułuGPS.
*Lua–włączaobsługęjęzykaskryptowe-
goLua.
*C-CAN–obsługamagistraliCAN.
MikrokontroleryWirelessCPUznajdują
sięrównieżw gotowychmodemachprzemy-
słowych,np.irmyMaestro( www.maestro-
wireless.com ).
naz bibliotekjęzykaC.Luaoferujepodob-
nemożliwościprogramistycznejakjęzykC,
m.in.programowaniewielowątkowe,pełną
obsługęłańcuchówznakowych(w tymob-
sługęwyrażeńregularnych),automatyczne
zarządzaniepamięciąorazprogramowanie
obiektowe.
DostępdomaszynywirtualnejLuauzy-
skujesiępoprzeztelnet,zapomocąktórego
możnapobieraćprogramyz dowolnegoser-
weraFTPi uruchamiaćjew module.Zmiana
uruchomionychskryptówdokonywanajest
w czasiepracyurządzeniai niejestwymaga-
nyrestartsystemu.
PonieważprogramyLuasąuruchamiane
przezspecjalnypluginbibliotekiOpenAT,
tomożliwejestpołączenieprogramówpisa-
nychw językuLuai w językuC.Na rys. 4
przedstawionomodelwarstwowyaplikacji
przygotowanychdlasystemuOpenATOS
w językachLuai C.
Możliwejestwięcpisanieczęściprogra-
muw językuC,a częściw językuLua.
mysłowymodemGSM/GPRSprzeznaczony
do aplikacji automatyki, bezpieczeństwa
i  sprzedaży elektronicznej. Ma wydzielo-
ne2 MBpamięcidoużyciaprzezaplikację
użytkownika.Modułmazaimplementowaną
programową warstwę dostępową do zaso-
bówsprzętowychdlaaplikacjinapisanych
w językuC.
Podsumowanie
Moduły GSM są chętnie stosowane
w  wielu aplikacjach, którym umożliwiają
bezprzewodowąwymianędanychz dowol-
negomiejscabędącegow zasięgusieciko-
mórkowej. Programowalne moduły GSM,
mogąw wieluprzypadkachbyćjedynym
komponentemzdalnegourządzeniapomia-
rowegolubkontrolnego.Stosowanyw nich
mikrokontrolerprzejmujezadaniaaplikacji.
Przywyborzeprogramowalnegomodu-
łunależywziąćpoduwagęznajomośćda-
nejplatformyprogramistycznej,gdyżmoże
okazaćsię,żeprostszebędzienapisaniepro-
gramuw znanymjęzyku,niżnauczeniesię
nowego.Należyteżwziąćpoduwagęogra-
niczeniatakichrozwiązań,gdyżw większo-
ściprzypadkówprogramużytkownikajest
wykonywanynawirtualnejmaszynie,która
zabierazasoby.
Lua
Mikrokontrolery
Wireless CPU mogą
być też programowa-
ne w  języku skrypto-
wym Lua. Został on
zaprojektowanyw celu
rozszerzenia właściwości różnych aplika-
cjio możliwośćdynamicznegowykonywa-
niaskryptów.Jestonzazwyczajstosowany
w  oprogramowaniu gier komputerowych,
w którychumożliwiazmianęinterfejsulub
oprogramowaniedziałańw postaciskryptów
użytkownika.Luajestdostarczanajakojed-
Język C
Niektóremodułymogąbyćrównieżpro-
gramowanew językuC.Programydlatych
modułów są uruchamiane bezpośrednio
namikrokontrolerzesterującymmodułem.
PrzykłademjesttutajmodemirmyMotoro-
laoznaczonysymbolemG30.Jesttoprze-
Maciej Gołaszewski, EP
maciej.golaszewski@ep.com.pl
R
E
K
L
A
M
A
ELEKTRONIKA PRAKTYCZNA 3/2010
65
Zgłoś jeśli naruszono regulamin