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 styczeń 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio styczeń 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje styczeń 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna styczeń 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich styczeń 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów