Actions

KAmod LTE CAT1 z modułem A7670E-LASE (PL): Difference between revisions

From Kamamilabs.com - Wiki

No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 33: Line 33:
| style="text-align: left;"|  
| style="text-align: left;"|  
Zmontowany i uruchomiony moduł<br>
Zmontowany i uruchomiony moduł<br>
|-
| style="text-align: center;"|<b>Antena GSM</b>
| style="text-align: left;"|
Antena ze złączem U.FL<br>
|-
|-
| style="text-align: center;"|<b>Zestaw montażowy </b>
| style="text-align: center;"|<b>Zestaw montażowy </b>
Line 145: Line 149:
|-
|-
| style="text-align: center;"|<b>Zasilanie GND (in)</b>
| style="text-align: center;"|<b>Zasilanie GND (in)</b>
(piny 6, 9, 14, 20, 25, 30, 34, 39)
(piny 6, 9, 14, 20, 25, 30, 34, 39)
| style="text-align: left;"|Masa zasilania (GND)
| style="text-align: left;"|Masa zasilania (GND)
|}
|}
Line 261: Line 265:
• <b>AT+COPS?</b> - odczytuje nazwę operatora sieci, odsyła odpowiedź podobną do tej:<br>
• <b>AT+COPS?</b> - odczytuje nazwę operatora sieci, odsyła odpowiedź podobną do tej:<br>
<span style="font-family: 'Courier New', monospace">+COPS: 0,0,"Orange",7</span>
<span style="font-family: 'Courier New', monospace">+COPS: 0,0,"Orange",7</span>
<br>
Jeżeli zamiast nazwy operatora jest liczba, należy wpisać komendę AT+COPS=3,0 i wtedy ponownie AT+COPS?
<br><br>
<br><br>


Line 544: Line 550:
Teraz zasubskrybujemy wiadomości o temacie MyTopic, wpisujemy: '''AT+CMQTTSUBTOPIC=0,7,1''' następnie wpisujemy 7 znaków: ''MyTopic''
Teraz zasubskrybujemy wiadomości o temacie MyTopic, wpisujemy: '''AT+CMQTTSUBTOPIC=0,7,1''' następnie wpisujemy 7 znaków: ''MyTopic''
<br><br>
<br><br>
Wysyłamy komendę: '''AT+CMQTTSUB=0''' powinniśmy otrzymać odpowiedź podobną do tej:
Wysyłamy komendę: '''AT+CMQTTSUB=0''' powinniśmy otrzymać odpowiedź podobną do tej:<br>
<span style="font-family: 'Courier New', monospace">
<span style="font-family: 'Courier New', monospace">
OK<br>
OK<br>
+CMQTTSUB: 0,0<br>
+CMQTTSUB: 0,0<br><br>
</span>
</span>
Jeśli teraz wyślemy wiadomość ''Hello3'' z panelu HiveMQ:<br>
Jeśli teraz wyślemy wiadomość ''Hello3'' z panelu HiveMQ:<br>
Line 559: Line 565:
Hello3<br>
Hello3<br>
+CMQTTRXEND: 0<br>
+CMQTTRXEND: 0<br>
</span>
</span><br>
Oznacza to, że wiadomość została prawidłowo przekazana.<br><br>
Oznacza to, że wiadomość została prawidłowo przekazana.<br><br>



Latest revision as of 13:56, 24 October 2025

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ł

Antena GSM

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 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 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
Jeżeli zamiast nazwy operatora jest liczba, należy wpisać komendę AT+COPS=3,0 i wtedy ponownie AT+COPS?

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


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