KAmod LTE CAT1 z modułem A7670E-LASE (PL)
From Kamamilabs.com - Wiki

Opis
KAmod LTE CAT1 - HAT GSM/GPRS z modułem A7670E-LASE 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 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 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
- 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 |
Zmontowany i uruchomiony moduł |
| Zestaw montażowy |
Zestaw śrubek oraz dystansów umożliwiający przykręcenie nakładki do płytki Raspberry |
Schemat blokowy
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. |
| 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 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 |

Połączenie z płytkami Raspberry Pi
Moduł KAmod LTE CAT1 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 zapewnia odpowiedni reset i uruchomienie modułu A7670E/A7672E.
Płytkę KAmod LTE CAT1 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, 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 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 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.

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ęda automatycznie odczytywane - za każdym razem pojawi się informacja podobna do tej:
+CMT: "+48123456789","","25/08/13,10:20:18+8"
Test Test
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.