Oszczędzanie energii w teorii i w praktyce (8)

Oszczędzanie energii w teorii i w praktyce (8)

W poprzednich częściach tego cyklu omawialiśmy rozwiązania łączności bezprzewodowej oszczędzające energię. Moduły LoRa i odpowiednio dobrane anteny oferowały zasięgi zaczynające się od kilometra w linii wzroku. Z kolei Bluetooth Low Energy – mimo złożoności w warstwie protokołu – oferował wydajne rozwiązanie o zasięgu bardziej lokalnym. Jednakże wszystkie omawiane technologie łączy jedna cecha: wymóg posiadania stacji bazowej, która będzie odbierać i przekazywać dalej nasze dane. W sytuacji, gdy nasze energooszczędne urządzenie i stacja bazowa są relatywnie statyczne, nie stanowi to problemu. Co jednak zrobić w przypadku, gdy nasze urządzenie podróżuje po całym świecie? Jest i na to rozwiązanie. I o nim będzie mowa w ósmym odcinku cyklu „Oszczędzanie energii w teorii i w praktyce”.

Wspomnianym rozwiązaniem jest sieć telefonii komórkowej, do której dostęp można uzyskać bardzo łatwo – nawet, jeśli pożądany jest dostęp na całym świecie. Dodanie takiej łączności do projektu nie jest zbyt trudne i nie wymaga żadnej dodatkowej certyfikacji (potwierdzenia zgodności ze standardami łączności radiowej) – na rynku dostępne są bowiem specjalne, certyfikowane moduły, a ich implementacja w projekcie jest relatywnie prosta. Czytelnik może zadać pytanie, który operator oferuje globalny dostęp do sieci komórkowej bez opłat roamingowych. Nie jest to żaden z operatorów znanych z reklam, ale o tym będzie mowa w dalszej części artykułu.

Krótko o sieci telefonii komórkowej

Autor zdaje sobie sprawę, iż większość Czytelników spotkała już się z opisem budowy i działania sieci komórkowej, gdyż takie informacje pojawiają się w każdym artykule poruszającym tematykę tej formy łączności. Mimo to skrócony opis zostanie dodany i tutaj – głównie dla tych, których ów temat jakimś sposobem do tej pory ominął.

Sieć telefonii komórkowej w swojej najbardziej podstawowej formie jest systemem łączności radiowej, w którym jedna stacja bazowa (wieża) łączy się z wieloma przenośnymi urządzeniami drogą radiową. Rozwiązania tego typu istniały od wielu dekad i były stosowane na przykład w branży transportowej czy przez różne służby. Ograniczeniem tych wczesnych systemów był zasięg stacji bazowej i przenośnego urządzenia – wyjście poza zasięg stacji uniemożliwiało prowadzenie łączności. Telefonia komórkowa rozwiązała ten problem budując wiele mniejszych stacji bazowych, każda z nich zaś pracowała na innej częstotliwości – tak wybranej, by sąsiednie wieże się wzajemnie nie zakłócały. Urządzenie przenośne zaś automatycznie łączyło się z najbliższą wieżą, a w chwili wychodzenia z zasięgu jednej stacji i wchodzenia w zasięg drugiej automatycznie zmieniało kanał, czego użytkownik nawet nie zauważał. Pierwotnie systemy te były całkowicie analogowe, a liczba realizowanych równolegle połączeń – mocno ograniczona. Ponadto same połączenia nie były szyfrowane.

Jeśli idzie o warstwę fizyczną łączności, to system telefonii komórkowej nie uległ zbyt wielu modyfikacjom – zmieniły się jedynie częstotliwości pracy i rodzaj modulacji. Jednak wraz z rozwojem technologii nastąpiła też zmiana w warstwie formatu i protokołu łączności.

Urządzenie przenośne, czyli na przykład telefon komórkowy, otrzymało kartę SIM (ang. Subscriber Information Module – moduł informacji abonenta), czyli kartę zawierającą mikrokontroler(-y), pamięć EPROM i EEPROM/Flash. W pamięci EPROM zapisany jest numer IMSI (ang. International Mobile Subscriber Identity – międzynarodowa tożsamość abonenta mobilnego), 64-bitowy numer identyfikujący konkretne konto abonenckie. Ponadto karta zawiera też unikalny, 128-bitowy klucz kryptograficzny. Klucz ten jest używany do weryfikacji autentyczności karty. W momencie nawiązania łączności z siecią komórkową wysyłany jest do niej numer IMSI, a w odpowiedzi zostaje wygenerowana liczba losowa. Karta SIM używa jej – oraz klucza – do wygenerowania odpowiedzi, która porównywana jest z odpowiedzią wygenerowaną po stronie wieży. Po potwierdzeniu autentyczności następuje wygenerowanie kluczy szyfrujących dalszą łączność. Karta SIM zawiera też dane identyfikujące operatora, do którego sieci karta jest przypisana. Operatorzy tworzą własne sieci łączności komórkowej stawiając wieże – i ten właśnie numer pozwala urządzeniu łączyć się tylko z wieżami tej samej sieci, co karta SIM.

Sama karta SIM zawiera jeszcze dwa elementy, obecnie nieco zapomniane: pamięć na wiadomości oraz kontakty, a także sprzętowy silnik Java, z uproszczoną i ograniczoną wersją języka. Silnik ten stosowany jest przez operatorów do dostarczania dodatkowych usług, jak nieskomplikowane gry, aplikacje informacyjne i proste funkcje lokalizacji, oparte o położenie najbliższych wież. Dodatki te wciąż są dostępne, ale nie są obecnie zbyt popularne.

Warto jeszcze wspomnieć o dwóch aspektach działania kart SIM i sieci komórkowej z punktu widzenia operatora. Po pierwsze, jeśli karta SIM ulegnie uszkodzeniu, operator wymienia ją poprzez przypisanie nowego numeru IMSI, klucza kryptograficznego i fizycznej karty do konta abonenta. Normalnych kart SIM nie da się bowiem przeprogramować. W przypadku eSIM sytuacja ma się nieco inaczej, są to bowiem układy wbudowane bezpośrednio w urządzenie, z dedykowaną pamięcią na numer IMSI i klucz, które operator może zaprogramować zdalnie. Co ważne, klucza z tego układu też nie da się odczytać, ale można go nadpisać, gdy urządzenie trafi do nowego użytkownika.

Drugim, dla nas szczególnie istotnym aspektem, jest sposób współpracy między operatorami. Jeśli urządzenie z kartą SIM operatora znajdzie się poza zasięgiem jego sieci, na przykład w innym kraju, może połączyć się z lokalną siecią komórkową i wykorzystać ją w roli pośrednika w łączności z siecią operatora. Operatorzy obu sieci negocjują między sobą opłaty za pośrednictwo w tej łączności, które są przerzucane na użytkownika jako opłaty roamingowe. Skutkiem ubocznym jest też istnienie operatorów wirtualnych (MVNO – Mobile Virtual Network Operator – wirtualny operator sieci komórkowej), którzy nie mają własnej infrastruktury telekomunikacyjnej, ale wynajmują ją od innego operatora. Główni operatorzy wirtualni w Polsce korzystają z infrastruktury pojedynczych operatorów, ale niektórzy, mniej znani gracze na tym rynku, mają umowy z kilkoma operatorami posiadającymi własną infrastrukturę.

Karta SIM na cały świat

Załóżmy, iż potrzebne jest urządzenie przesyłające informację o lokalizacji z dowolnego miejsca na świecie. Urządzenie takie można wyposażyć w gotowy moduł GSM, ale stosując usługę typowego operatora telefonii komórkowej trzeba się liczyć z dość znaczącym kosztem takiego rozwiązania, zwłaszcza przy obecnych – niekiedy wysokich – opłatach roamingowych. Ponadto, by nie stracić ważności konta, należy też płacić abonament lub regularnie doładowywać konto w ofertach na kartę. Zakładając, że urządzenie potrzebuje przekazać jednorazowo 128 bajtów danych, nawet raz na minutę, to da 180 kB danych na dobę i trochę ponad 5,27 MB na miesiąc, co nawet przy najtańszej ofercie operatora na polskim rynku jest mało opłacalne w dłuższej perspektywie, zwłaszcza że typowe oferty zawierają pakiety od 1 GB na miesiąc (których nigdy nie wykorzystamy w tym zastosowaniu). Inaczej mówiąc – będą to pieniądze wyrzucone w błoto. Typowo 1800 złotych na 10 lat. Oczywiście klient biznesowy, potrzebujący wielu kart SIM do wielu urządzeń, może liczyć na znaczne zniżki i ulgi, nadal jednak koszty będą zbyt wysokie. Na szczęście istnieją operatorzy wirtualni, który oferują karty SIM korzystające z każdej dostępnej sieci komórkowej, gdzie ponosimy jednorazową opłatę, by mieć kartę ważną 10 lat, z pakietem danych skrojonym na nasze potrzeby. Typowa oferta 500 MB za około 120 złotych pozwala na przesyłanie około 100 bajtów danych co minutę przez 10 lat, czyli tyle, ile ważna będzie sama karta. Dla 128 b będzie to 7 lat i 10 miesięcy łączności. Optymalizując to, kiedy i jakie informacje przesyłamy, można też zwiększyć ilość tychże danych. W końcu nie musimy raportować lokalizacji co minutę, jeśli ta nie zmienia się np. przez kilka godzin.

Istnieje wiele firm oferujących karty SIM z pakietem danych dla branży IoT. Zwykle pakiet ten ma rozmiar 500 MB, ale istnieją też pakiety większe i mniejsze. Co ciekawe, porównując ceny podobnych kart w Polsce i w Chinach, nie widzimy różnicy. Ba, chińskie karty SIM na rynek UE kosztują więcej, niż karta globalna dostępna w Polsce. Warto też pamiętać, iż kartę można też doładować. Trzeba jednak wiedzieć, że tylko część kart oferuje opcję przesyłania wiadomości SMS, a ta funkcja może być pożądana. Inna sprawa to często stosowane limity miesięczne, typowo 10 MB, a i zdarzają się limity dzienne. Ponadto nie każda karta SIM będzie działać w każdej sieci, jeśli chodzi o transmisję danych. Dokładniej rzecz biorąc, karta SIM 3G może nie działać w sieci 4G, jeśli ta nie jest skonfigurowana w trybie kompatybilności wstecznej. Za to karta SIM 4G będzie kompatybilna wstecznie z sieciami 3G i 2G. Oczywiście wiąże się to z niższą prędkością transmisji, ale w naszym przypadku nie ma to większego znaczenia.

Warto też pamiętać, iż karta SIM może być ważna 10 lat, ale to nie jest gwarancją, iż pozostanie sprawna przez cały ten czas. Podobnie samo urządzenie może ulec awarii, jeszcze zanim skończy się ważność karty – szczególnie, jeśli jest to tracker narażony na trudne warunki atmosferyczne i wibracje. Projektując urządzenie należy zadbać o solidne wykonanie mechaniczne, hermetyczność obudowy lub/i powłoki konformalne na płytce drukowanej.

Płytka GSM/GPS AND Technologies BK-A7970 z modułem SIMCOM A7670E

Projektowanie własnego rozwiązania GSM z użyciem dedykowanych układów scalonych wymaga sporego doświadczenia z zakresu układów w.cz., a samo urządzenie musi przejść rygorystyczną certyfikację, zanim będzie dopuszczone do sprzedaży. Dlatego dużo lepszym rozwiązaniem jest użycie gotowego modułu, który realizuje wszystkie zadania związane z komunikacją radiową i ma już zapewnione wszystkie wymagane certyfikaty. Przykładem takiego rozwiązania jest pokazana na fotografii 1 płytka firmy AND Technologies, wyposażona w komplet potrzebnych elementów niezbędnych do pracy modułu SIMCOM A7670E, wliczając w to dwa gniazda nanoSIM, gniazda antenowe do anten GSM i GPS oraz elementy towarzyszące. Moduł taki jest niedrogim rozwiązaniem, a od strony użytkownika wymaga jedynie mikrokontrolera, który będzie się z nim komunikować przez interfejs UART za pomocą komend AT. Z drugiej jednak strony płytka firmy AND Technologies okazuje się nie do końca praktyczna w montażu: na płycie docelowego urządzenia należy mieć zarówno gniazdo goldpin 2,54 mm, jak i miejsce na kołek montażowy lub tuleję dystansową do umocowania modułu. Zwiększa to całkowitą grubość konstrukcji. Antenom należy też zapewnić dedykowane miejsca montażowe w obudowie urządzenia. Użycie samego modułu SIMCOM A7670E lub podobnego jest dużo łatwiejsze, gdyż wystarczy go do płytki przylutować, ale projektant musi uwzględnić wszystkie elementy peryferyjne, takie jak na przykład gniazdo (lub gniazda) SIM czy anteny (lub gniazda do nich). Z drugiej strony moduł oferuje też więcej interfejsów, niż wyprowadza gotowa płytka.

Fotografia 1. Płytka BK-A7670 firmy AND Technologies zawiera wszystkie potrzebne komponenty do pracy modułu SIMCOM A7670E, dzięki którym można łączyć się z siecią GSM 4G/LTE. Zdjęcie pochodzi ze strony dystrybutora

Moduł A7670E firmy SIMCOM obsługuje wszystkie pasma GSM i większość pasm LTE, w tym LTE FDD B20, powszechnie stosowane w Polsce. Nie wspiera natomiast technologii LTE TDD, która to dopiero jest wdrażana w naszym kraju. Moduł oferuje interfejs audio PCM, co pozwala zastosować go do budowy własnego telefonu komórkowego (Autor sam rozważał nawet taki projekt), choć płytka BK-A7670 nie udostępnia wyprowadzeń tego interfejsu.

Port USB pozwala za to użyć moduł jako peryferium do zwykłego komputera, umożliwia także kontrolowanie transceivera za pomocą komend AT – bez użycia adaptera – oraz aktualizację wewnętrznego oprogramowania modułu. Płytka z modułem wyprowadza dwa wejścia sterujące – jedno do usypiania modułu, drugie zaś do jego wyłączania. W zestawie z modułem znajdują się dwie anteny: jedna na pasma GSM/LTE, druga do odbioru sygnałów nawigacji satelitarnej. Znajdziemy też na niej regulator napięcia – sam moduł SIMCOM A7670E jest dostosowany do pracy z akumulatorami Li-Ion, Li-Po i LiFePO4. Noty katalogowe płytki i samego modułu są bardzo ubogie w szczegóły, jeśli chodzi o pobór prądu, dlatego w przyszłości przeprowadzone zostaną dokładne pomiary.

Interfejs UART na płytce modułu ograniczony jest do linii Tx i Rx, ale moduł ma także linie potrzebne do pracy ze sprzętową kontrolą przepływu, co może być przydatne, jeśli chcemy wymieniać duże ilości danych. Prędkość transmisji wynosi 115200 bps.

Komendy AT to standard, którego historia sięga lat osiemdziesiątych XX wieku. W 1981 roku firma Hayes Communications wprowadziła na rynek modem oferujący zbiór instrukcji, pozwalających na łatwe sterowanie modemem, nawiązywanie i przerywanie połączeń oraz przełączanie się między trybami poleceń i transferu danych. Zestaw poleceń Hayesa był i wciąż pozostaje popularnym rozwiązaniem sterowania zewnętrznymi modemami różnych typów. Popularne wśród hobbystów oraz spotykane często w automatyce domowej moduły ESP-01 z układami ESP8266 domyślnie używają właśnie komend AT Hayesa, choć obecne implementacje są mocno rozbudowane względem pierwotnej wersji. Wszystkie polecenia zaczynają się od liter AT, po których może pojawić się kilka kolejnych liter (odnoszących się do funkcji danego modelu) lub znak + i ciąg liter, czasem z następującymi po nim parametrami, które konfigurują i realizują połączenie. Zapoznajmy się z niektórymi z dostępnych poleceń, by móc w przyszłości nawiązać przykładowe połączenie. Pierwszą, podstawową komendą testową jest polecenie:

AT

Jeśli moduł działa poprawnie, zwraca do urządzenia nadrzędnego odpowiedź Ok i jest to domyślna odpowiedź na polecenia oznaczająca ich pomyślne wykonanie. Następne polecenia to:

ATE0
AT+CMEE=2

Pierwsze wyłącza lokalne echo, drugie ustawia tryb odpowiedzi modułu na bardziej szczegółowy. Następnie należy sprawdzić stan karty SIM:

AT+CPIN?
+CPIN: READY
Ok

Jeśli karta SIM wymaga podania kodu PIN, używa się polecenia:

AT+CPIN=<PIN>

Następnie warto sprawdzić siłę sygnału poleceniem:

AT+CSQ
+CSQ: <RSSI>,<BER>
Ok

gdzie <RSSI> to siła sygnału od 0 do 31, przy czym im wyższa wartość, tym lepiej, zaś <BER> to wskaźnik liczby błędów w transmisji (przyjmuje wartości od 0 do 7, przy czym im niższa wartość, tym mniej błędów). Sprawdzanie siły sygnału nie jest konieczne.

W celu zweryfikowania statusu połączenia z siecią LTE wystarczy podać polecenie:
AT+CEREG?
+CEREG: <n>,<status>
Ok

gdzie <n> to tryb pracy sieci (parametr ten przyjmuje wartości 0, 1 lub 2). O wiele istotniejszy jest drugi parametr, gdyż wskazuje on na stan rejestracji w sieci i przyjmuje wartości od 0 do 8. Wartości te mają następujące znaczenie:

0 – niezarejestrowany, moduł nie szuka sieci,
1 – zarejestrowany w domyślnej sieci,
2 – niezarejestrowany, ale moduł szuka sieci,
3 – rejestracja odrzucona,
4 – nieznany, może oznaczać brak zasięgu sieci,
5 – zarejestrowany do sieci w trybie roamingu,
6 – zarejestrowany, tylko wiadomości SMS,
7 – zarejestrowany, tylko wiadomości SMS w roamingu,
8 – tylko połączenia alarmowe.

Ten ostatni status oznacza zwykle, iż z jakiegoś powodu nie można korzystać w sposób normalny z sieci lub też nastąpiła awaria karty SIM. Jeśli moduł musi pracować w trybie 2G z siecią GPRS/EGPRS, odpowiednim poleceniem jest:

AT+CGREG?
+CGREG: <n>,<status>
Ok

Parametry są takie same, jak w przypadku AT+CEREG. W celu nawiązania połączenia należy najpierw skonfigurować opcje sieci, a następnie nawiązać połączenie:

AT+CGDCONT=1,”IP”,”<APN>”
AT+CGACT=1,1

lub:

AT+CGDCONT=1,”IP”,”<APN>”
AT+CGAUTH=1,1,”<login>”,”<hasło>”
AT+CGACT=1,1

Wartość <APN>, czyli Access Point Name, to nazwa punktu dostępu dla dla transmisji danych. Polecenie AT+CGAUTH wymagane jest wtedy, gdy trzeba podać nazwę użytkownika i hasło do sieci – nie zawsze jest to wymagane. Domyślną nazwą APN dla wielu operatorów, w tym operatorów globalnych kart SIM, jest Internet i zazwyczaj nie wymagają oni loginu i hasła. Inne możliwe nazwy APN to: globaldata, m²m.apn, iot.apn i tym podobne. Smartfony, w przeciwieństwie do modułów A7670 i innych, dysponują bazami danych APN i mogą wybrać odpowiednie parametry na podstawie kodu kraju (MCC) i sieci (MNC). Smartfony potrafią też uzyskać dane APN z sieci w chwili nawiązania zwykłego połączenia z siecią GSM/LTE. By zakończyć połączenie używamy polecenia:

AT+CGACT=0,1

Po aktywacji połączenia z siecią należy wskazać adres serwera, na który chcemy przekazać dane. Polecenie wygląda następująco:

AT+CIPOPEN=<ln>,”TCP”,”<adres_serwera>”,<port_serwera>

Jako nazwę serwera można użyć zarówno pełnego adresu, jak i numeru IP. Warto pamiętać, iż podane wcześniej wartości nawiązują połączenie z siecią IPv4. Wartość <ln> to numer połączenia i przyjmuje wartości od 0 do 9. Dzięki temu moduł może nawiązywać połączenia z kilkoma serwerami naraz. By wysłać dane używa się polecenia:

AT+CIPSEND=<ln>,<length>

Pole <ln> to numer połączenia, <length> zaś to opcjonalny parametr liczby bajtów do wysłania, przyjmujący wartości od 1 do 1500. Moduł odpowie znakiem >, co oznacza przejście w tryb transmisji danych. Jeśli podano liczbę bajtów, moduł będzie w tym trybie aż do przesłania zadanej liczby danych lub do otrzymania znaku kończącego transmisję: <Ctrl+Z>, czyli kod ASCII nr 26. By odczytać dane stosuje się polecenie:

AT+CIPRXGET=<m>,<ln>,<length>

Pierwsze pole to tryb odczytu:
0: tryb automatyczny – odpowiedź serwera jest wysyłana przez UART, jak tylko się pojawi,
1 – tryb ręczny, w którym moduł czeka na użytkownika, by ten pobrał dane z bufora.
2 – zwykły tryb odczytu,
3 – tryb odczytu HEX,
4 – służy do odczytu liczby bajtów pozostających w buforze.

Przykładowa sekwencja może wyglądać następująco:

AT+CIPRXGET=1
Ok
AT+CIPRXGET=4,0
+CIPRXGET: 4,0,25

Ok
AT+CIPRXGET=2,0,10
+CIPRXGET: 2,0,10,15
0123456789

Ok
AT+CIPRXGET=4,0
+CIPRXGET: 4,0,15

Ok

Moduł na żądanie odczytu danych podaje najpierw informację o wybranym trybie, połączeniu, liczbie bajtów do odczytania i liczbie bajtów, jakie pozostaną w buforze. Potem transceiver przesyła dane. W trybie 2 bufor ma pojemność 1500 bajtów, a w trybie – 3 750 wartości szesnastkowych. Aby zakończyć połączenie TCP używa się polecenia:

AT+CIPCLOSE=<ln>

gdzie <ln> to oczywiście numer połączenia. Z kolei polecenie:

AT+CIPSTAT=<ln>

pozwala sprawdzić, ile bajtów zostało wysłanych i odebranych przez dane połączenie TCP, dla przykładu odpowiedź:

AT+CIPSTAT=0
+CIPSTAT: 100, 25

oznacza, że wysłano 100 bajtów, a odebrano 25 bajtów.

Omawiany moduł oferuje też specyficzne polecenia do obsługi protokołów SMTP, FTP czy HTTP. Opisane powyżej polecenia dotyczą protokołu TCP/UDP, choć skupiliśmy się jedynie na TCP. Warto jeszcze spojrzeć na komendy związane z modułem GPS. Polecenie:

AT+CGPS=<on>,<mode>

aktywuje nawigację i wybiera tryb pracy. Parametr <pn> przyjmuje wartości 0 lub 1, przy czym 1 włącza moduł. Parametr <mode> wybiera tryb pracy nawigacji. W trybie 1 moduł szuka sygnałów satelitów systemów GPS oraz GLONASS i na tej bazie oblicza pozycję.

Tryb ten jest najbardziej energooszczędny, ale przy tym i najwolniejszy, zaś czas od aktywacji do uzyskania pozycji wynosi średnio około 30 sekund przy pierwszym uruchomieniu. Tryb 2 to tryb AGPS, w którym z sieci telefonii komórkowej pobierane są skorygowane dane co do pozycji satelitów, a także lokalizacja najbliższej wieży sieci komórkowej oraz dodatkowe informacje. Moduł dokonuje obliczeń za pomocą tych danych i dostarcza dokładniejszą informację o położeniu – nieco szybciej, niż w trybie pierwszym. Tryb 3 działa podobnie, ale moduł przekazuje „surowe” dane odebrane z satelitów, a sieć komórkowa dokonuje wszystkich obliczeń i zwraca dane o położeniu. Nas interesuje głównie tryb 1, gdyż nie chcemy nadwyrężać budżetu (zarówno w zakresie połączeń, jak i zapotrzebowania energetycznego). Z tym poleceniem powiązane są jeszcze dwie inne komendy:

AT+CGPSCOLD
AT+CGPSHOT

Pierwsza powoduje „zimny start” modułu GPS po użyciu polecenia AT+CGPS=0, druga zaś to „gorący start”. Różnica między nimi polega na tym, że przy zimnym starcie moduł czeka, aż satelity nadadzą wszystkie niezbędne informacje o swoim położeniu, zanim zacznie obliczenia pozycji. Średni czas to wspomniane min. 30 sekund. W trybie gorącego startu moduł korzysta z danych, które zostały otrzymane przy poprzedniej sesji pracy modułu GPS. Przy „gorącym starcie” pozycja jest dostępna zwykle w mniej niż 5 sekund. Z trybem AGPS powiązane są dwa dodatkowe polecenia:

AT+CGPSURL=”<adres>”
AT+CGPSSSL=<n>

Pierwsze polecenie wskazuje adres URL serwera AGPS, którego ma używać moduł. Drugie zaś pozwala włączyć (<n> = 1) lub wyłączyć (<n> = 0) użycie certyfikatu SSL w łączności z serwerem AGPS. Użycie certyfikatu chroni przed atakiem polegającym na przekazaniu modułowi błędnych danych AGPS celem zafałszowania jego położenia. Jeśli korzystamy z AGPS, warto stosować łączność SSL, jeśli tylko jest dostępna, choć szansa na to, iż konkretny lokalizator padnie ofiarą ataku typu GPS spoofing, jest raczej nikła. Kolejne polecenie:

AT+CGPSAUTO=<n>

włącza (<n> = 1) lub wyłącza (<n> = 0) automatyczny start odbiornika GPS w trybie 1 po załączeniu zasilania. Domyślnie tryb autostartu jest wyłączony. Inną ważną komendą jest:

AT+CGPSNNEA=<nmea>

Polecenie to konfiguruje, jakie informacje (zdania NMEA-0183) są przekazywane przy zapytaniu modułu o pozycję. Parametr <nmea> to 9-bitowe słowo konfiguracyjne, którego poszczególne bity pełnią następujące funkcje:

bit 0 – GPSGA – dane o położeniu: bieżący czas, szerokość i długość geograficzna, wysokość, stopień dokładności wyników, liczba widocznych satelitów,
bit 1 – GPRAMC – informacje rozszerzone: czas, status, szerokość i długość geograficzna prędkość, kurs, data, wariacja magnetyczna,
bit 2 – GPGSV – informacje o widocznych satelitach: oznaczenie, elewacja, azymut, stosunek siły sygnału do szumu,
bit 3 – GPGSA – tryb ustalania położenia satelitów, co określa błąd dokładności,
bit 4 – GPVTG – kierunek i prędkość ruchu na ziemi,
bit 5 – PQXFI – rozszerzone informacje o położeniu i jakości sygnałów,
bit 6 – GNGNS – dane o położeniu z systemu GLONASS,
bit 7 – GNGSA – to samo, co bit 3, ale dla systemu GLONASS,
bit 8 – GLGSV – dane satelitów GLONASS widzianych przez moduł.

Jeśli zależy nam na dokładnym położeniu, kursie i prędkości, rekomendowane jest zastosowanie polecenia:

AT+CGPSNMEA=17

Kolejne dwie komendy są stosowane razem, gdy używamy trybu AGPS:

AT+CGPSXE=1
AT+CGPSXD=1

Pierwsza włącza użycie pliku XTRA assist file, druga pobiera go z głównego serwera XTRA. Zmieniając wartość z 1 na 2 lub 3 można wybrać serwer drugorzędny lub trzeciorzędny. By pobrać plik, należy włączyć tryb transmisji danych.

Po skonfigurowaniu modułu przydałoby się w końcu dowiedzieć, gdzie nasze urządzenie się znajduje. Służą do tego dwa polecenia, na początek prostsze:

AT+CGPSINFO
AT+CGPSINFO=<t>

Jeśli użyjemy parametru <t> o wartości w zakresie 1...255, to moduł co t sekund będzie podawał pozycję. Jeśli t = 0, tryb ten pozostaje wyłączony. Wtedy pierwsze polecenie zwróci nam informację o położeniu. Format odpowiedzi wygląda tak:

AT+CGPSINFO
CGPSINFO: <lat>,<N/S>,<log>,<E/W>,<date>,
<UTC time>,<alt>,<speed>,<cpirse>
Ok

gdzie:
<lat> – wysokość geograficzna w formacie ddmm.mmmmmm,
<N/S> – oznaczenie wysokości: północna czy południowa,
<log> – szerokość geograficzna w formacie dddmm.mmmmmm,
<E/W> – oznaczenie szerokości: wschodnia czy zachodnia,
<date> – data w formacie ddmmyyyy,
<UTC time> – czas UTC w formacie hhmmss.s,
<alt> wysokość w metrach,
<speed> – prędkość w węzłach,
<cpirse> – kurs w stopniach.

Polecenia:

AT+CGPSINFOCFG
AT+CGPSINFO=<t>
AT+CGPSINFO=<t>,<nmea>

są analogiczne do polecenia AT+CGPSINFO z tą różnicą, że odpowiedź jest w formacie zdań NMEA-0183, przy czym parametr <nmea> możemy zdefiniować tak samo, jak w przypadku polecenia AT+CGPSNNEA.

Zakończenie

W tej części cyklu omówiony został przykładowy moduł GSM/GNSS wraz z opisem jego poleceń. W następnym odcinku przeprowadzimy praktyczną demonstrację jego użycia. Przy okazji też zademonstrowane zostaną pomiary poboru prądu dwoma metodami: z użyciem multimetru stołowego dobrej klasy oraz oscyloskopu i sondy różnicowej.

Paweł Kowalczyk, EP

Artykuł ukazał się w
Elektronika Praktyczna
czerwiec 2025
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2025

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec - sierpień 2025

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje czerwiec 2025

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2025

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich lipiec 2025

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów