Samowystarczalne moduły GSM. Sterowanie modemami GSM nie tylko komendami AT

Samowystarczalne moduły GSM. Sterowanie modemami GSM nie tylko komendami AT
Pobierz PDF Download icon
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
Artykuł ukazał się w
Marzec 2010
DO POBRANIA
Pobierz PDF Download icon

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik listopad 2021

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2021

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje listopad 2021

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna listopad 2021

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich grudzień 2021

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów