Gdy modem GSM, LTE albo NB-IoT nie chce połączyć się z siecią, sama kontrolka zasięgu zwykle mówi za mało. Wtedy do gry wchodzą komendy AT, czyli tekstowe polecenia wysyłane do modułu przez UART, USB lub wirtualny port szeregowy. Pokażę, jak czytać ich składnię, które polecenia są najbardziej użyteczne, jak skonfigurować transmisję danych i gdzie szukać przyczyn błędów.
Najważniejsze zasady pracy z modemem przez interfejs AT
- AT oznacza polecenie skierowane do modemu i zwykle kończy się znakiem powrotu karetki.
- AT+CSQ, AT+CEREG? i AT+CGATT? pozwalają szybko ocenić zasięg oraz rejestrację w sieci.
- AT+CGDCONT definiuje profil transmisji danych, w tym nazwę APN operatora.
- AT+CMGF=1 przełącza modem w tekstowy tryb obsługi wiadomości SMS.
- Lista poleceń nie jest identyczna dla każdego urządzenia, dlatego dokumentacja konkretnego modemu ma pierwszeństwo przed ogólnymi przykładami.

Do czego służą polecenia AT i jak wygląda komunikacja
Polecenia AT wywodzą się z zestawu Hayes i pierwotnie służyły do obsługi modemów telefonicznych. Skrót AT pochodzi od angielskiego attention, czyli „uwaga”. W urządzeniach komórkowych ten prosty mechanizm rozbudowano o obsługę karty SIM, rejestracji w sieci, SMS-ów, transmisji pakietowej, GNSS, połączeń głosowych i protokołów IoT.
Komputer lub mikrokontroler pełni rolę terminala, a modem jest urządzeniem wykonawczym. Komunikacja odbywa się jako ciąg znaków ASCII przez UART albo interfejs USB udostępniający jeden lub kilka portów szeregowych. Najczęściej polecenie trzeba zakończyć znakiem CR, czyli \r, a modem odpowiada komunikatem takim jak OK, ERROR lub szczegółowym wynikiem.
Najprostszy test wygląda tak:
AT
OK
Jeżeli nie pojawia się odpowiedź, problemem może być nie tylko modem. Trzeba sprawdzić prędkość transmisji, bity danych, port COM, przewód USB, poziomy napięć oraz to, czy wybrany port faktycznie jest portem AT. W wielu modemach jeden interfejs służy do poleceń, drugi do diagnostyki, a kolejny do transmisji danych.
Trzy sposoby użycia tego samego polecenia
Rozszerzone polecenia mają zwykle prefiks AT+. Mogą służyć do odczytu ustawień, ich zmiany albo sprawdzenia, jakie wartości obsługuje urządzenie. Dobrze widać to na przykładzie konfiguracji trybu SMS:
| Rodzaj | Przykład | Znaczenie |
|---|---|---|
| Wykonanie | AT+CMGF=1 |
Ustawia tekstowy tryb SMS |
| Odczyt | AT+CMGF? |
Sprawdza bieżący tryb |
| Test | AT+CMGF=? |
Pokazuje obsługiwane wartości |
Ta różnica jest praktycznie ważna. Polecenie testowe nie zawsze mówi, czy dana funkcja działa w konkretnej sieci, tylko czy firmware modemu ją przewiduje. Z kolei poprawna odpowiedź OK potwierdza przyjęcie instrukcji, ale nie zawsze oznacza zakończenie całej operacji sieciowej.
Najbardziej przydatne komendy AT w codziennej pracy
Nie ma jednej krótkiej listy pasującej do każdego urządzenia, ale pewien zestaw powtarza się w modemach GSM i LTE. Ja zaczynam diagnostykę od poleceń informacyjnych, a dopiero później zmieniam konfigurację. Dzięki temu łatwiej odróżnić problem sprzętowy od błędnego APN-u lub braku rejestracji.
| Polecenie | Zastosowanie | Co sprawdzić w odpowiedzi |
|---|---|---|
ATI |
Informacje o module i firmware | Model, wersja oprogramowania, producent |
AT+CPIN? |
Status karty SIM | Czy karta jest gotowa, zablokowana kodem PIN lub nieobecna |
AT+CSQ |
Poziom sygnału i jakość odbioru | RSSI oraz parametr BER |
AT+CREG? |
Rejestracja w sieci GSM | Status dostępu do sieci komutowanej |
AT+CEREG? |
Rejestracja LTE lub EPS | Status rejestracji urządzenia w sieci pakietowej |
AT+COPS? |
Wybrany operator | Nazwa lub kod operatora oraz technologia dostępu |
AT+CGATT? |
Status dołączenia do usługi pakietowej | Wartość 1 oznacza dołączenie, 0 brak dołączenia |
AT+CMEE=2 |
Szczegółowe komunikaty błędów | Opis zamiast samego ogólnego ERROR
|
Wynik AT+CSQ często ma postać +CSQ: 20,99. Pierwsza liczba mieści się zwykle w zakresie 0-31, gdzie wyższa wartość oznacza silniejszy sygnał, a 99 oznacza brak wiarygodnego pomiaru. Nie traktuję jednak tej liczby jako pełnej oceny jakości połączenia. W LTE równie ważne mogą być RSRP, RSRQ i SINR, dostępne przez polecenia producenta.
Przy rejestracji w sieci często spotyka się wartości 0, 1, 2 i 3. W uproszczeniu 1 oznacza rejestrację, 2 wyszukiwanie sieci, a 3 odrzucenie rejestracji. Dokładne znaczenie zależy od polecenia i standardu, dlatego sam status trzeba interpretować razem z komunikatem operatora oraz trybem pracy modemu.
Jak krok po kroku uruchomić transmisję danych
Najczęstszy błąd polega na próbie uruchomienia internetu zanim modem zaloguje się do sieci. Sama obecność karty SIM nie wystarcza. Potrzebne są jeszcze poprawny APN, dostęp do usługi danych, odpowiedni tryb radiowy i czas na zakończenie procedury rejestracji.
-
Sprawdź komunikację poleceniem
ATi odczytaj model przezATI. -
Zweryfikuj kartę SIM za pomocą
AT+CPIN?. -
Oceń sygnał poleceniem
AT+CSQ. -
Sprawdź rejestrację przez
AT+CEREG?lub, zależnie od technologii,AT+CREG?. - Ustaw APN w profilu kontekstu PDP.
- Aktywuj połączenie danych zgodnie z instrukcją danego modułu.
Przykładowa definicja profilu może wyglądać tak:
AT+CGDCONT=1,"IP","internet"
OK
Wartość internet jest tylko przykładem. APN zależy od operatora, rodzaju karty i umowy. Karta telemetryczna może korzystać z prywatnego APN-u, a karta konsumencka z innej nazwy. Błędny APN jest jedną z najczęstszych przyczyn sytuacji, w której modem ma zasięg, lecz nie otrzymuje adresu IP.
W starszych konfiguracjach PPP spotyka się polecenie ATD*99#. Współczesne modemy LTE często pracują jednak przez QMI, MBIM, ECM albo NCM, a wtedy samo wybieranie numeru nie uruchamia transmisji. To ważne rozróżnienie przy pracy z Linuksem, routerem lub mikrokontrolerem, ponieważ interfejs AT może służyć tylko do konfiguracji, podczas gdy dane płyną innym kanałem USB.
Przykład wysłania wiadomości SMS
Do obsługi SMS w trybie tekstowym można użyć następującej sekwencji:
AT+CMGF=1
AT+CSCS="GSM"
AT+CMGS="+48123123123"
Treść wiadomości
Po wpisaniu numeru modem zwykle wyświetla znak zachęty >. Treść kończy się znakiem Ctrl+Z, zapisanym w przykładzie jako kod 26. Nie każdy modem obsługuje polskie znaki w podstawowym alfabecie GSM. Gdy wiadomość zawiera znaki spoza tego alfabetu, urządzenie może przełączyć ją na Unicode, co zmniejsza maksymalną długość pojedynczego SMS-a.
Jak diagnozować brak zasięgu, sieci lub internetu
Najlepiej diagnozować problem warstwami. Nie zaczynam od ręcznego wyboru operatora ani od resetowania ustawień, bo takie działania często zaciemniają obraz. Najpierw ustalam, czy modem widzi kartę SIM, potem czy widzi sieć, a na końcu czy uzyskał dostęp do transmisji danych.
| Objaw | Pierwsze polecenia | Możliwa przyczyna |
|---|---|---|
| Brak jakiejkolwiek odpowiedzi |
AT, ATE0
|
Zły port, prędkość UART, przewód lub poziom napięć |
| SIM niegotowa | AT+CPIN? |
PIN, uszkodzona karta, brak styku lub niezgodność napięcia |
| Słaby albo nieznany sygnał | AT+CSQ |
Antena, lokalizacja, zakłócenia lub nieobsługiwane pasmo |
| Brak rejestracji LTE |
AT+CEREG?, AT+COPS?
|
Brak zasięgu, roaming, ograniczenie karty lub trybu radiowego |
| Jest sieć, ale nie ma internetu |
AT+CGATT?, profil AT+CGDCONT
|
Niepoprawny APN, brak usługi danych lub problem z PDP |
Ogólny komunikat ERROR
|
AT+CMEE=2 |
Niepoprawna składnia albo polecenie niedostępne w firmware |
Ręczny wybór operatora przez AT+COPS zostawiam na później. Automatyczny wybór jest zwykle bezpieczniejszy, szczególnie gdy urządzenie ma działać w roamingu lub przemieszczać się między stacjami bazowymi. Wymuszenie konkretnej technologii, na przykład LTE-only, może pomóc w testach, ale w realnej instalacji czasem pogarsza niezawodność.
Jeżeli urządzenie odpowiada znakami bez sensu, najpierw sprawdzam baud rate, czyli szybkość transmisji. Popularne wartości to 9600, 115200 i 921600 bit/s, ale wiele modułów ma automatyczne wykrywanie prędkości. Niektóre porty wymagają także ustawienia zakończenia linii na CR albo CRLF. Terminal wysyłający samo LF może sprawić, że poprawne polecenie będzie wyglądało jak niepełne.
Standardowe polecenia a rozszerzenia producenta
Podstawy opisują zalecenia V.250 oraz standardy 3GPP, między innymi TS 27.007 dla urządzeń mobilnych i TS 27.005 dla usług SMS. Dzięki temu polecenia takie jak AT, ATI, AT+CSQ czy AT+CMGF są podobne w wielu urządzeniach. Podobieństwo nie oznacza jednak pełnej zamienności.
Producenci dodają własne rozszerzenia do obsługi TCP/IP, MQTT, GNSS, aktualizacji firmware, trybów USB i diagnostyki radiowej. W modemach można spotkać między innymi polecenia zaczynające się od AT+Q, AT+CIP albo inne prefiksy charakterystyczne dla konkretnej rodziny. Nie wolno zakładać, że polecenie z dokumentacji Quectel zadziała w module SIMCom, nawet jeśli oba urządzenia obsługują LTE.
Przeczytaj również: Zasięg Zigbee - Jak działa i jak go poprawić w domu?
Jak bezpiecznie testować konfigurację
Przed zmianą ustawień zapisuję bieżące wartości poleceniami odczytu, jeśli modem je udostępnia. Przydatne są też ATE0, które wyłącza echo wpisywanych znaków, oraz AT+CMEE=2, które zwiększa szczegółowość komunikatów o błędach.
- Wysyłaj jedno polecenie naraz i czekaj na odpowiedź końcową.
- Nie zakładaj, że
OKoznacza natychmiastową rejestrację w sieci. - Przy operacjach sieciowych uwzględnij czas oczekiwania od kilku sekund do nawet kilkudziesięciu sekund.
- Nie zapisuj konfiguracji do pamięci przed zakończeniem testów.
- Przechowuj w logach pełne odpowiedzi, w tym kody
+CME ERROR.
Ostrożność przy zapisie ustawień ma znaczenie, bo błędny profil może przetrwać restart i utrudnić późniejszy dostęp do modemu. W urządzeniu produkcyjnym dobrze ograniczyć możliwość wysyłania poleceń do warstwy aplikacji, zwłaszcza gdy interfejs AT jest dostępny przez niezabezpieczony port USB lub zdalny kanał serwisowy.
Praktyczne zasady, które oszczędzają czas przy wdrożeniu
W prototypie można wpisywać polecenia ręcznie w terminalu. W gotowym urządzeniu potrzebna jest jednak mała maszyna stanów, która rozpoznaje odpowiedzi, pilnuje limitów czasu i ponawia tylko te operacje, które mają sens. Ślepe wysyłanie tej samej komendy co sekundę często kończy się przepełnieniem bufora albo nakładaniem się odpowiedzi.
W kodzie warto rozdzielić trzy rodzaje wyników. Odpowiedź pośrednia, taka jak +CEREG: 0,2, informuje o stanie. Odpowiedź końcowa, na przykład OK lub ERROR, zamyka operację. Trzecią grupą są komunikaty spontaniczne, które modem może wysłać bez wcześniejszego zapytania, na przykład informację o nadejściu SMS-a lub zmianie rejestracji.
Największą różnicę w stabilności robi zwykle nie znajomość setek poleceń, lecz poprawne zarządzanie stanem modemu. Dokumentuję model, wersję firmware, ustawienia portu, używany APN i oczekiwane odpowiedzi. Dzięki temu wymiana modułu na inną rewizję nie zamienia się w zgadywanie, dlaczego dotychczasowa sekwencja przestała działać.
Od krótkiego testu do stabilnego interfejsu
Najprostszy zestaw do pierwszej kontroli to AT, ATI, AT+CPIN?, AT+CSQ i AT+CEREG?. Pozwala szybko ustalić, czy działa komunikacja, karta SIM, sygnał oraz rejestracja. Dopiero po tych testach przechodzę do APN-u, SMS-ów i połączeń IP.
Jeżeli polecenie nie działa, nie oznacza to od razu awarii. Przyczyną może być inny firmware, niedostępna funkcja, niewłaściwy tryb pracy albo różnica między standardowym poleceniem a rozszerzeniem producenta. Najpewniejsza metoda to połączenie krótkiej sekwencji diagnostycznej z dokumentacją konkretnego modelu i logowaniem pełnych odpowiedzi.