Actions

KAmod LTE CAT1-GNSS z modułem A7670E-FASE (PL)

From Kamamilabs.com - Wiki

Opis

KAmod LTE CAT1-GNSS z modułem A7670E-FASE do Raspberry Pi
Moduł SimCom A7670E/A7672E to modem GSM/LTE CAT-1, który realizuje komunikację bezprzewodową w standardach: LTE-FDD, GPRS/EDGE, GSM, a dodatkowo ma zintegrowany odbiornik GNSS i obsługuje wiele funkcji sieciowych, m.in TCP/IP, FTP/FTPS, HTTP/HTTPS, SSL, MQTT. Sterowanie pracą modemu jest bardzo łatwe - służą do tego komendy AT przesyłane poprzez port szeregowy UART. Płytka KAmod LTE CAT1-GNSS zawiera wszystkie elementy niezbędne do działania modemu i umożliwia jego łatwe połączenie z komputerami serii Raspberry Pi oraz innymi podobnymi urządzeniami.



Podstawowe parametry

  • Modem LTE CAT-1, który bazuje na module SimCom A7670E lub A7672E
  • Pasma komunikacji bezprzewodowej LTE (4G): LTE-FDD B1/B3/B5/B7/B8/B20
  • Pasma komunikacji bezprzewodowej GSM (2G): 900/1800 MHz
  • Prędkość transferu danych LTE: max 10 Mbps (DL); max 5 Mbps (UL)
  • Prędkość transferu danych EDGE: max 236,8 kbps; GPRS: max 85,6 kbps
  • Obsługiwane funkcje i protokoły:TCP/IP, IPV4, IPV6, Multi-PDP, FTP/FTPS, HTTP/HTTPS, DNS, SSL, TLS, MQTT
  • Obsługiwana karta SIM: Micro SIM 1,8/3,0 V
  • Interfejs UART (3,3 V) do sterowania komendami AT
  • Interfejs USB do podłączenia z komputerem PC (tworzy port szeregowy do sterowania komendami AT oraz urządzenie ECM - Ethernet Control Model lub RNDIS - Remote Network Driver Interface, jako łącze internetowe)
  • Złącze audio in/out typu Jack 3,5 mm
  • Zintegrowany GNSS (GPS, GLONASS, BeiDou)
  • Zasilanie 5 V/2 A poprzez GPIO/USB-C
  • Kompatybilny z płytkami Raspberry Pi/Zero, zawiera 40-stykowe złącze GPIO



Wyposażenie standardowe

Kod Opis
KAmod LTE CAT1-GNSS

Zmontowany i uruchomiony moduł

Antena GSM

Antena ze złączem U.FL

Antena GNSS

Antena ze złączem U.FL

Zestaw montażowy

Zestaw śrubek oraz dystansów umożliwiający przykręcenie nakładki do płytki Raspberry


Schemat blokowy



Schemat elektryczny jest dostępny tu: KAmod_LTE_CAT1_sch

Funkcje przycisków

Funkcje przycisków zostały opisane w tabeli.

Przycisk Funkcja
PWKEY (SW1)

Przyciśnięcie przycisku przez czas min. 50 ms powoduje włączenie modułu A7670E/A7672E - przejście do stanu normalnej pracy ze stanu wyłączenia.
Przyciśnięcie przycisku przez czas min. 2,5 s powoduje wyłączenie modułu A7670E/A7672E - przejście do stanu Power OFF ze stanu normalnej pracy.

RESET (SW2)

Przyciśnięcie przycisku wymusza stan aktywny na wejściu RESET modułu A7670E/A7672E i powoduje jego wyzerowanie.


Przyciski realizują swoje funkcje równolegle z sygnałami PWK i RST ze złącza Raspberry Pi. Producent modułu A7670E/A7672E zaleca, aby nie ustawiać aktywnych sygnałów PWK i RST jednocześnie.

Moduł KAmod LTE CAT1-GNSS zawiera obwód automatycznego włączania modułu A7670E/A7672E po podłączeniu zasilania. Obwód ten generuje krótki impuls na linii PWK zaraz po podłączeniu zasilania. Aby dezaktywować ten obwód, należy przeciąć zworę oznaczoną J_APWK umieszczoną na spodzie płytki (strona bottom).


Funkcje kontrolek sygnalizacyjnych

Znaczenie kontrolek LED zostało opisane w tabeli, a ich rozmieszczenie pokazano na rysunku.

Kontrolka Funkcja
PWR (D5)

Świecenie kontrolki LED sygnalizuje obecność napięcia zasilającego moduł A7670E/A7672E

STA (D3)

Świecenie kontrolki LED oznacza, że moduł A7670E/A7672E jest w stanie aktywnym

NET (D4)

Świecenie kontrolki LED oznacza stan wyszukiwania sieci GSM/LTE
Miganie kontrolki LED sygnalizuje połączenie z siecią GSM/LTE



Połączenie z płytkami Raspberry Pi

Moduł KAmod LTE CAT1-GNSS jest przystosowany do połączenia z płytkami z rodziny Raspberry Pi oraz innymi podobnymi urządzeniami, które zawierają 40 stykowe złącze GPIO typu goldpin, zgodne z Raspberry Pi. Poprzez to złącze doprowadzane jest zasilanie do modułu oraz niezbędne sygnały sterujące, które zostały opisane w tabeli.

Sygnały sterujące są dostosowane do napięcia 3,3 V, prędkość komunikacji interfejsu szeregowego UART jest domyślnie ustawiona na 115200 bps.

Sygnał sterujący modułu

A7670E/A7672E

Sygnał sterujący na płytce

z rodziny Raspberry Pi (J1)

Funkcja
UART TXD (out) RXD/GPIO15 (pin 10) Wyjście szeregowe danych
UART RXD (in) TXD/GPIO14 (pin 8) Wejście szeregowe danych
RST - RESET (in) GPIO18 (pin 12) Wejście sygnału zerującego RESET, aktywne w stanie Hi
PWK - PWRKEY (in) GPIO04 (pin 7) Wejście sygnału aktywującego moduł, aktywne w stanie Hi


Linia zasilania Funkcja
Zasilanie 5 V (in)

(piny 2, 4)

Wejście zasilania 5 V z płytki Raspberry Pi
Zasilanie GND (in)

(piny 6, 9, 14, 20, 25, 30, 34, 39)

Masa zasilania (GND)





Nie wszystkie sygnały sterujące (TXD, RXD, PWK i RST) muszą być połączone z płytką Raspberry Pi. Sygnały będą dołączone, jeśli na szpilkach oznaczonych J2 będą umieszczone 4 zworki, tak jak na rysunku. Każda zworka odpowiada za inny sygnał. Zdjęcie zworki oznacza odłączenie sygnału od 40 stykowego złącza Raspberry Pi. Można np. zrezygnować z sygnałów PWK i RST, ponieważ płytka KAmod LTE CAT1-GNSS zapewnia odpowiedni reset i uruchomienie modułu A7670E/A7672E.

Płytkę KAmod LTE CAT1-GNSS należy dołączyć do 40 stykowego złącza szpilkowego GPIO dostępnego na płytkach z serii Raspberry Pi. W ten sposób dostarczane jest zasilanie oraz oraz dołączony jest port szeregowy UART, który umożliwia sterowanie z użyciem komend AT. Dla zachowania lepszej stabilności takiej konstrukcji, warto zastosować dodatkowe kołki dystansujące i śrubki.



Interfejs USB

Moduł A7670E/A7672E może działać jako ECM (Ethernet Control Model) lub RNDIS (Remote Network Driver Interface Specification), które w łatwy sposób tworzą połączenie z internetem dla urządzeń z systemem operacyjnymi Windows. Dla uzyskania takiej funkcjonalności należy płytkę KAmod LTE CAT1 połączyć z komputerem PC poprzez złącze USB-C. Po zainstalowaniu sterowników w systemie pojawi się kilka nowych urządzeń. Poprzez “AT Port” można przesyłać komendy AT do modułu.


Chwilowy pobór prądu modułu A7670E/A7672E może przekraczać nawet 2 A, dlatego należy upewnić się, że złącze USB, do którego podłączono płytkę KAmod LTE CAT1-GNSS, dysponuje odpowiednią mocą. Należy stosować wyłącznie przewody USB dobrej jakości i długości do 0,5 m max. W przypadku problemów z komunikacją USB, warto sprawdzić działanie z odłączoną anteną LTE oraz/lub bez karty SIM.



Karta SIM

KAmod LTE CAT1 jest wyposażony w gniazdo na kartę Micro SIM, która ma wymiary 15x12 mm i działa w standardzie 1,8/3,0V. Kartę należy umieścić w gnieździe i delikatnie wcisnąć, aż do lekkiego kliknięcia. Aby wyjąć kartę, najpierw należy ją delikatnie wcisnąć i zwolnić nacisk - wtedy krawędź karty się wysunie i można ją wyciągnąć całą. Wszystkie operacje z kartą SIM należy wykonywać przy odłączonym zasilaniu płytki KAmod LTE CAT1 (czyli także płytki komputera RPi). Ścięta krawędź karty powinna być skierowana na zewnątrz płytki, tak jak pokazano na rysunku i zaznaczono na płytce.

Zasilanie

KAmod LTE CAT1-GNSS wymaga zasilania o napięciu 5 V i wydajności prądowej min. 2 A. W stanie aktywnym, gdy jest uruchomione połączenie z siecią LTE, ale nie są wykonywane żadne zadania, moduł pobiera prąd o wartości ok 30 mA. Jednak w trakcie transmisji danych chwilowy pobór prądu może wynosić ponad 2 A. Dlatego do prawidłowej pracy modułu KAmod LTE CAT1-GNSS wymagane jest zasilanie o chwilowej wydajności nie mniejszej niż 2 A.

Zasilanie może być doprowadzone poprzez 40 stykowe złącze GPIO typu goldpin (J1), zgodne z Raspberry Pi lub/oraz jednocześnie poprzez złącze USB.



Tryb serwisowy

Producent modułów A7670E/A7672E dostarcza swoje komponenty z najbardziej optymalnym oprogramowaniem firmware i nie zaleca jego uaktualniania. Wersję oprogramowania można sprawdzić za pomocą komendy ATI. Jednak na płytce KAmod LTE CAT1 zostały wyprowadzone styki JP1. Ich zwarcie umożliwia uruchomienie modułu w specjalnym trybie serwisowym przeznaczonym do aktualizacji firmware. W trakcie normalnego użytkowania nie należy zwierać styków JP1. Więcej informacji o aktualizacji firmware należy szukać na stronie producenta modułów A7670E/A7672E - SimCom - www.simcom.com.



Złącze Audio - SPK&MIC

KAmod LTE CAT1 umożliwia wykonanie standardowego połączenia głosowego, o ile zainstalowana karta SIM daje taką możliwość. Do złącza J4 należy dołączyć słuchawki i mikrofon z wtykiem Jack 3,5 mm - standardowy zestaw słuchawkowy, który umożliwia odsłuch i przesyłanie dźwięku pomiędzy stronami połączenia telefonicznego.



Antena LTE/GSM

KAmod LTE CAT1 działa w standardzie telefonii GSM (2G) oraz LTE (4G). Na płytce modułu znajduje się złącze typu U.FL (IPX), oznaczone LTE, do którego należy dołączyć antenę przeznaczoną do pracy w GSM/LTE.



Antena GNSS

Sterowanie komendami AT

Moduły A7670E/A7672E są sterowane za pomocą tzw. komend AT przesyłanych poprzez port szeregowy UART. Każda komenda zaczyna się znakami “AT” i jest zakończona znakiem <CR> (hex 0x0D), któremu odpowiada klawisz ENTER na klawiaturze komputerowej. Niektóre parametry, m.in. nazwy i numery telefonów, rozpoczynają się i kończą znakiem " (double quote - hex 0x22). Komendy można wpisywać przy użyciu dowolnego programu typu terminal, np Putty lub Minicom.

Wykaz wszystkich komend AT z opisem można znaleźć tu: <A76XX_Series_AT_Command_Manual_V1.09.pdf> W dalszej części opisu zostały zaprezentowane niektóre komendy AT umożliwiające wykonanie podstawowych zadań oraz wybrane funkcje modemu A7670E/A7672E.

Podstawowe parametry


AT - komenda testowa, jeśli moduł działa prawidłowo, zostanie odesłana odpowiedź:
OK

ATI - odczyt podstawowych informacji, zostanie odesłana odpowiedź podobna do tej:
Manufacturer: INCORPORATED
Model: A7670E-FASE
Revision: A7670M7_V1.11.1
IMEI: 863957078398663
+GCAP: +CGSM,+FCLASS,+DS

AT+CPIN? - sprawdza status kodu PIN dla karty SIM, jeśli PIN nie jest wymagany zostanie odesłana odpowiedź:
+CPIN: READY
Jeśli PIN jest wymagany, należy użyć komendy AT+CPIN=<pin do karty sim>

AT+CSQ - pozwala odczytać poziom sygnału antenowego (tzw. zasięg sieci), zostanie odesłana odpowiedź podobna do tej:
+CSQ: 23,99
Pierwszy parametr (23) to poziom sygnału (RSSI), gdzie:
0 = -113 dBm lub mniej; 31 = -51 dBm lub więcej.
Drugi parametr określa poziom błędów (bit error rate), gdzie:
0 = 0,01% lub mniej; 7 = 8% lub więcej; 99 = brak informacji

AT+CREG? - sprawdza status połączenia z siecią GSM/LTE, zostanie odesłana odpowiedź podobna do tej:
+CREG: 0,1
Drugi parametr określa status połączenia, istotne wartości to:
0 = brak połączenia; 1 = połączenie aktywne; 2 = wyszukiwanie operatora; 3 = podłączenie do sieci nieudane

AT+COPS? - odczytuje nazwę operatora sieci, odsyła odpowiedź podobną do tej:
+COPS: 0,0,"Orange",7

Połączenie głosowe


ATD<pełny numer telefonu>; - rozpoczyna połączenie głosowe z wybranym numerem telefonu. Numer musi być wpisany z prefiksem (np. +48 dla Polski). Na końcu musi być średnik (;). Przesyłane odpowiedzi będą zawierały informacje o przebiegu połączenia.

ATA - pozwala odebrać przychodzące połączenie głosowe. Przychodzące połączenie będzie sygnalizowane wysłaniem kilku komend, m.in:
+CLIP: "+48123456789",145 - informuje o numerze telefonu, z którego pochodzi połączenie.
RING - oznacza sygnał dzwonienia.

ATH - przerywa aktualne połączenie głosowe

AT+COUTGAIN=7 - zwiększa głośność w słuchawce do poziomu 7 (7 = max, 0 = min)

AT+CMICGAIN=7 - zwiększa czułość mikrofonu do poziomu 7 (7 = max, 0 = min)

Wysłanie wiadomości SMS


AT+CSCA? - sprawdza ustawiony numer centrum wiadomości. Dla operatorów dostępnych w Polsce mogą to być następujące numery:
Orange: +48602951111
Play: +48602295000
Plus: +48601000310
T-Mobile: +48602951111 (tak samo jak Orange)
Informację na ten temat należy potwierdzić u operatora obsługującego kartę SIM. Numer można ustawić komendą AT+CSCA="<pełny numer centrum wiadomości>"

AT+CMGF=1 - włącza tryb tekstowy, pozwala zapisać i odczytać treść wiadomości w postaci zwykłego tekstu

AT+CSCS="GSM" - ustawia zestaw znaków (character set)

AT+CMGS="+48123456789" - ustawia numer odbiorcy wiadomości. Po potwierdzeniu znakiem <CR> (klawisz Enter) zostanie przesłany znak >, który sygnalizuje, aby wpisać treść wiadomości. Po wpisaniu treści należy potwierdzić operację znakiem <1A> (odpowiada kombinacji klawiszy Ctrl + Z), lub anulować znakiem <1B> (klawisz ESC). Jeśli proces przebiegł prawidłowo wiadomość SMS zostanie wysłana, a w terminalu zostanie odesłana odpowiedź podobna do tej:

+CMGS: 15
Parametr 15 to numer wiadomości w pamięci modemu.

Odczytanie wiadomości SMS


AT+CMGR=4 - powoduje odczytanie wiadomości, która zajmuje 4 miejsce w pamięci wiadomości. Zostanie odesłana odpowiedź podobna do tej:
+CMGR: "REC UNREAD","+48123456789","","25/03/23,23:51:43+4"
Test
OK

Co oznacza, że: “REC UNREAD” - wiadomość nie była wcześniej odczytana, po odczytaniu wiadomości, jej status zmieni się na “REC READ”
"+48123456789" - numer nadawcy wiadomości
"25/03/23,23:51:43+4" - data i godzina odebrania wiadomości
Test - treść wiadomości

AT+CMGD=4 - spowoduje usunięcie wiadomości, która zajmuje 4 miejsce w pamięci wiadomości

AT+CNMI=1,2,0,0,0 - po wysłaniu tej komendy, nowe wiadomości SMS będą automatycznie odczytywane - za każdym razem pojawi się informacja podobna do tej:
+CMT: "+48123456789","","25/08/13,10:20:18+8"
Test Test


Odczyt danych GNSS


Wybrane funkcje HTTP/HTTPS


AT+HTTPINIT - inicjuje sesję HTTP

AT+HTTPPARA="URL","https://www.example.org" - ustawia parametry HTTP, w tym przypadku adres URL. Inne dostępne opcje to m.in “CONTENT”, “ACCEPT” lub "USERDATA"

AT+HTTPACTION=0 - wykonuje żądanie HTTP/HTTPS z użyciem określonej metody, dostępne opcje to:
0 = GET, 1 = POST, 2 = HEAD, 3 = DELETE, 4 = PUT.
Zostanie odesłana odpowiedź podobna do tej:
+HTTPACTION: 0,200,1256
Co oznacza, że:
“200” - odpowiedź serwera, 200 = OK
“1256” - ilość danych do odczytu (Content Length)

AT+HTTPHEAD - odczytuje nagłówek odpowiedzi serwera (HTTP header information). Zostanie odesłana odpowiedź podobna do tej:
+HTTPHEAD: 44
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1256
Connection: keep-alive


AT+HTTPREAD=44,1000 - odczytuje całą treść odpowiedzi serwera.
Pierwszy parametr (tu 44) to indeks od którego rozpoczyna odczyt,
drugi parametr to ilość danych do odczytania

AT+HTTPDATA=18,10 - służy do przesyłania danych z użyciem metody POST. Pierwszy parametr określa ilość danych (od 1 do 153600 bajtów), drugi parametr określa czas w którym dane muszą być wprowadzone (od 10 do 65535 sekund)

AT+HTTPTERM - zamyka sesję HTTP

Wybrane funkcje bezpiecznego protokołu sieciowego SSL


AT+CSSLCFG? - wyświetla konfigurację wszystkich 9 kontekstów SSL. Grupa parametrów przy każdym kontekście oznacza:
ssl version - wersję protokołu sieciowego SSL,
auth mode - tryb uwierzytelniania,
ignore local time - sprawdzenie czasu certyfikacji,
negotiate time - maksymalny czas wykonania uwierzytelniania (domyślnie 300 s)
ca file - nazwa pliku certyfikatu CA (Certificate Authority)
client cert file - nazwa pliku certyfikatu CA klienta
client key file - nazwa pliku klucza klienta
password file - nazwa pliku hasła, wymaganego do odczytania pliku klucza klienta
enable SNI flag - funkcja Server Name Indication - umożliwia obsługę wielu certyfikatów SSL na jednym adresie IP i porcie

AT+CSSLCFG="sslversion",<ssl_context>,4 - ustawia wersję protokołu sieciowego SSL.
Pierwszy parametr to numer kontekstu: 0…9
drugi parametr oznacza: 0 = SSL3.0; 1 = TLS1.0; 2 = TLS1.1; 3 = TLS1.2, 4 = wszystkie (0…3)

AT+CSSLCFG="authmode",<ssl_context>,1 - określa tryb uwierzytelniania (authentication mode).
Pierwszy parametr to numer kontekstu: 0…9
drugi parametr oznacza:
0 = bez uwierzytelniania;
1 = uwierzytelnianie po stronie serwera (wymaga certyfikatu root CA - Certificate Authority)
2 = uwierzytelniania po stronie serwera i klienta (wymaga certyfikatu root CA oraz certyfikatu i klucza klienta)
3 = uwierzytelnianie po stronie klienta (certyfikatu i klucza klienta)

AT+CSSLCFG="ignorelocaltime",<ssl_context>,1 - sprawdzenie czasu certyfikacji.
Pierwszy parametr to numer kontekstu: 0…9
drugi parametr oznacza:
0 = sprawdzenie czasu certyfikacji
1 = zignorowanie sprawdzenia czasu certyfikacji

AT+CSSLCFG="cacert",<ssl_context>,"filename.pem" - określa plik certyfikatu root CA (Certificate Authority) dla danego kontekstu SSL. Plik musi mieć rozszerzenie .pem lub .der

AT+CSSLCFG="enableSNI",<ssl_context>,1 - funkcja Server Name Indication - umożliwia obsługę wielu certyfikatów SSL na jednym adresie IP i porcie. Pierwszy parametr to numer kontekstu: 0…9
drugi parametr oznacza:
0 = SNI wyłączone
1 = SNI aktywne

AT+CCERTDOWN="<nazwa.pem>",<length> - pozwala zainstalować certyfikat CA (Certificate Authority).
Pierwszy parametr to nazwa certyfikatu, musi mieć rozszerzenie .pem lub .der,
drugi parametr oznacza ilość danych do przesłania - długość pliku.
Po wysłaniu komendy zostanie wyświetlony znak “>”, który oznacza, że należy przesłać zadeklarowaną ilość danych. Jeśli wszystko przebiegnie prawidłowo, zostanie wysłana odpowiedź “OK”.

AT+CCERTLIST - wyświetla listę zainstalowanych certyfikatów

Wybrane funkcje MQTT


AT+CMQTTSTART - aktywuje funkcję MQTT

AT+CMQTTSTOP - wyłącza funkcję MQTT

AT+CMQTTACCQ=<client>,"KAmod-LTE-CAT1",1 - inicjacja klienta MQTT.
Pierwszy parametr: określa indeks, do którego przypisujemy nazwę klienta (0 lub 1),
drugi parametr: nazwa klienta, (KAmod-LTE-CAT1)
trzeci parametr: 0 - połączenie TCP; 1 - połączenie SSL/TLS

AT+CMQTTACCQ? - wyświetla ustawionych klientów

AT+CMQTTREL=<client> - usuwa ustawionych klientów, parametr określa indeks klienta. Zostanie odesłana odpowiedź podobna do tej:
+CMQTTREL: 0,0
Pierwszy parametr to indeks klienta: 0…1,
drugi parametr to kod błędu, m.in.: 0 = OK; 19 = klient w użyciu; 20 = klient jeszcze nie ustawiony

AT+CMQTTSSLCFG=<client>,<ssl_context> - przypisuje index klienta MQTT do kontekstu SSL.
Pierwszy parametr to indeks klienta MQTT: 0…1,
drugi parametr to kontekst SSL: 0…9

AT+CMQTTCONNECT=<client>,"<tcp://some.mqtt.brocker.url:port>",<keepalive>,<clean_session>,"<user>","<password>" - otwiera połączenie z serwerem MQTT. Pierwszy parametr - określa indeks klienta, który posłuży do połączenia z serwerem,
drugi parametr - adres serwera mqtt (tzn. url), musi być poprzedzony frazą “tcp//:” i otoczony znakami ",
trzeci parametr - czas keepalive (np. 60),
czwarty parametr - clean session flag - wartość 1 powoduje, że serwer usuwa wszelkie informacje o kliencie po jego rozłączeniu
parametr 5 i 6 - nazwa użytkownika i hasło, które umożliwiają połączenie z serwerem MQTT, każdy parametr musi być otoczony znakami "

AT+CMQTTDISC=<client>,<timeout> - zamyka połączenie z serwerem MQTT.
Pierwszy parametr - określa indeks klienta: 0…1,
drugi parametr - czas timeout (np. 120)

AT+CMQTTTOPIC=<client>,<length> - określa temat (topic) dla wiadomości MQTT.
Pierwszy parametr - to indeks klienta: 0…1,
drugi parametr - długość tematu (ilość znaków)
Po wysłaniu komendy zostanie wyświetlony znak “>”, który oznacza, że należy przesłać zadeklarowaną ilość znaków.

AT+CMQTTPAYLOAD=<client>,<length> - określa ładunek (treść) wiadomości MQTT.
Pierwszy parametr - to indeks klienta: 0…1,
drugi parametr - długość wiadomości (ilość znaków)
Po wysłaniu komendy zostanie wyświetlony znak “>”, który oznacza, że należy przesłać zadeklarowaną ilość znaków.

AT+CMQTTPUB=<client>,<QoS>,<timeout> - wysyła wiadomość do serwera MQTT, z wcześniej określonym tematem i treścią wiadomości.
Pierwszy parametr - określa indeks klienta: 0…1,
drugi parametr - QoS:
0 = wiadomość będzie dostarczona co najwyżej 1 raz
1 = wiadomość będzie dostarczona co najmniej 1 raz
2 = wiadomość będzie dostarczona dokładnie 1 raz
trzeci parametr - czas timeout

AT+CMQTTSUBTOPIC=<client>,<length>,<QoS> - określa temat do subskrybowania z serwera MQTT.
Pierwszy parametr - to indeks klienta: 0…1,
drugi parametr - długość tematu (ilość znaków)
trzeci parametr - QoS:
0 = wiadomość będzie dostarczona co najwyżej 1 raz
1 = wiadomość będzie dostarczona co najmniej 1 raz
2 = wiadomość będzie dostarczona dokładnie 1 raz
Po wysłaniu komendy zostanie wyświetlony znak “>”, który oznacza, że należy przesłać zadeklarowaną ilość znaków.

AT+CMQTTSUB=<client> - wysyła wiadomość do serwera MQTT, z wcześniej określonym tematem do subskrybowania.
Pierwszy parametr - to indeks klienta: 0…1.
Gdy serwer MQTT otrzyma wiadomość z subskrybowanym tematem, moduł A7670/A7672 automatycznie wyśle treść podobną do tej:
+CMQTTRXSTART: 0,7,20
+CMQTTRXTOPIC: 0,7
MyTopic
+CMQTTRXPAYLOAD: 0,20
KAmod LTE CAT1 Hello
+CMQTTRXEND: 0


Uruchomienie MQTT z serwerem HiveMQ


W pierwszej kolejności musimy utworzyć konto na https://www.hivemq.com. W panelu informacyjnym, w zakładce Overview zostaną udostępnione niezbędne adresy odnoszące się do utworzonego serwera - brokera MQTT. Najważniejszy jest teraz TLS MQTT URL.


Następnie przechodzimy do zakładki Access Management i dodajemy dane dostępu dla klientów MQTT - nazwę oraz hasło. Należy zanotować te dane, ponieważ będą za chwilę potrzebne.


Przechodzimy do zakładki Web Client, tam, w okienku Connection Settings, łączymy się wpisując nazwę oraz hasło, które zanotowaliśmy. Zostaną odblokowane okienka Topic Subscriptions oraz Send Message.


Subskrybujemy temat wiadomości MQTT - w tym celu wpisujemy w okienku TOPIC np. MyTopic oraz ustawiamy QoS na 1. Następnie możemy wysłać wiadomość z tym samym tematem MyTopic, QoS - 1, o treści np. Hello - powinna pojawić się w okienku po prawej stronie - Messages.



Teraz skonfigurujemy KAmod LTE CAT1 do współpracy z utworzonym serwerem MQTT na HiveMQ. W pierwszej kolejności musimy zainstalować certyfikat CA. Właściwy plik można pobrać ze strony https://letsencrypt.org/certs/isrgrootx1.pem. Jego treść ma długość 1938 znaków i wygląda podobnie jak tu:
-BEGIN CERTIFICATE-
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
...
...
...
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
-END CERTIFICATE-

Podłączamy KAmod LTE CAT1 do komputera solidnym i krótkim przewodem USB. Za pomocą dowolnego programu typu terminal podłączamy się do portu COM “SimTech AT Port”. Ustawiamy parametry komunikacji 115200, 8, N, 1. Pamiętamy, aby każdą komendę kończyć znakiem <CR> (hex x0D).

Wysyłamy do modułu komendę AT+CCERTDOWN="isrgrootx1.pem",1938. zostanie wyświetlony znak “>”, który oznacza, że należy przesłać zadeklarowaną ilość danych. Niektóre programy typu terminal pozwalają na przesyłanie treści pliku - będzie to najlepsze rozwiązanie do tego zadania. Jeśli wszystko przebiegnie prawidłowo, na koniec zostanie wysłana odpowiedź “OK”.

Sprawdzamy, czy certyfikat został zainstalowany - wysyłamy AT+CCERTLIST, powinniśmy otrzymać odpowiedź podobną do tej:
+CCERTLIST: "isrgrootx1.pem"
OK


Teraz musimy skonfigurować SSL, wysyłamy komendę AT+CSSLCFG="sslversion",0,4 - co oznacza obsługę wszystkich wersji TLS i SSL.

Wysyłamy komendę AT+CSSLCFG="authmode",0,1 - co oznacza uwierzytelnianie po stronie serwera.

Wysyłamy komendę AT+CSSLCFG="cacert",0,"isrgrootx1.pem" - ustawiamy plik certyfikatu root CA (Certificate Authority) dla danego kontekstu SSL.

Wysyłamy komendę AT+CSSLCFG="enableSNI",0,1 - włączamy Server Name Indication - obsługę wielu certyfikatów SSL na jednym adresie IP i porcie.

Sprawdzamy ustawienia komendą AT+CSSLCFG?, powinniśmy otrzymać odpowiedź podobną do tej:
+CSSLCFG: 0,4,1,1,300,"isrgrootx1.pem","","","",1
...
+CSSLCFG: 9,4,0,1,300,"","","","",0
OK


Teraz rozpoczniemy sesję MQTT. Wysyłamy komendę AT+CMQTTSTART - aktywacja funkcji MQTT.

Wysyłamy komendę AT+CMQTTACCQ=0,"KAmod",1 - ustawiamy nazwę klienta na “KAmod” oraz ustawiamy połączenie SSL/TLS

Wysyłamy komendę AT+CMQTTSSLCFG=0,0 - przypisujemy index klienta MQTT do kontekstu SSL.

Wysyłamy komendę AT+CMQTTCONNECT=0,"tcp://xxxxxxxxxxx.s1.eu.hivemq.cloud:8883",30,1,"<user>","<password>" - w której umieszczamy adres TLS MQTT URL koniecznie poprzedzony znakami “tcp://”, oraz zanotowaną nazwę oraz hasło dostępu. Powiiniśmy otrzymać odpowiedź podobną do tej:
OK
+CMQTTCONNECT: 0,0


Oznacza to, że połączenie z serwerem MQTT zostało uruchomione prawidłowo.

Wysyłamy komendę, która ustawi temat wiadomości: AT+CMQTTTOPIC=0,7 następnie wpisujemy 7 znaków: MyTopic

Wysyłamy komendę, która ustawi treść (ładunek) wiadomości: AT+CMQTTPAYLOAD=0,6 następnie wpisujemy 6 znaków: Hello2

Wysyłamy komendę, która spowoduje opublikowanie wiadomości: AT+CMQTTPUB=0,1,60. W odpowiedzi powinniśmy otrzymać:
OK
+CMQTTPUB: 0,0


Oznacza to, że wiadomość MQTT został wysłana prawidłowo.

Teraz wracamy do panelu HiveMQ, przechodzimy do zakładki Web Client, powinniśmy tam zobaczyć naszą wiadomość:


Teraz zasubskrybujemy wiadomości o temacie MyTopic, wpisujemy: AT+CMQTTSUBTOPIC=0,7,1 następnie wpisujemy 7 znaków: MyTopic

Wysyłamy komendę: AT+CMQTTSUB=0 powinniśmy otrzymać odpowiedź podobną do tej: OK
+CMQTTSUB: 0,0
Jeśli teraz wyślemy wiadomość Hello3 z panelu HiveMQ:

Moduł KAmod LTE CAT1 automatycznie wyświetli takie informacje:
+CMQTTRXSTART: 0,7,6
+CMQTTRXTOPIC: 0,7
MyTopic
+CMQTTRXPAYLOAD: 0,6
Hello3
+CMQTTRXEND: 0

Oznacza to, że wiadomość została prawidłowo przekazana.

Linki