18.01.2022
AUTHOR
Let’s take a deep dive into the world of AT Commands: what are they and what are the most common AT commands for 2G, 3G and 4G cellular modules? We will try to answer these and many more questions in this complete guide about AT commands for cellular networks.
AT Command Guide — Table of Contents
- What are AT commands?
- What can AT commands be used for?
- What is the syntax of AT commands?
- Do different modules and vendors have different AT commands?
- How do I identify proprietary AT commands?
- How do I find the AT commands my modem supports?
- My AT-command only responds with ERROR — how do I get more info?
- Basic commands to get information about the modem and SIM card
- Removing or adding SIM PIN via AT commands
- AT commands for network selection and configuration
- AT commands for radio signal quality analysis
- AT commands to establish a PDP context / data session
- Final thoughts
What are AT commands?
The first step to diving into the Internet of Things is connecting your hardware to a modem. The connection between a modem and your hardware is achieved using AT commands. AT commands are a short text command language dating back to 1981, originally developed for Hayes smart modems and later used in dial-up modems in the 1990s.
What can AT commands be used for?
AT commands enable you to control everything around the modem, device, and SIM:
- Wake the device or put it in sleep mode
- Configuration of power-saving modes
- Scan for and register to available networks and radio types
- Get updates about network condition changes
- Read/send SMS and USSD
- Send data (TCP/IP)
- Get hardware and SIM information (IMEI, IMSI, etc.)
- and much more
To get started, we will talk about the syntax or the types of AT commands that can be sent to the modem.
What is the syntax of AT commands?
AT Commands usually have a standardized syntax rule — most commands have three different types: write, read, and test. And then there are also others that can be executed just to retrieve information. All standard AT commands start with AT+<command>
. The response to the commands do not contain AT and only use +<command>:
1. Write: AT+<x>=<…>
Sets the user-definable parameter values of the modem
The expected response is usually only «OK»
Example: AT+CREG=1
– meaning enable network registration report
2. Read: AT+<x>?
Returns the settings of the modem
Example: AT+CREG?
Response: +CREG: 1,1
– meaning currently reports are configured to be enabled and the device is registered on the home network
3. Test: AT+<x>=?
Checks supported configurations / services of the modem
Example: AT+CREG=?
Response: +CREG: (0-2)
– meaning that 0,1,2 can be set in the AT+CREG command
4. Execute: AT+<x>
Retrieve information or execute command
Example: AT+CCID
Response: +CCID:8988303000005737285 — returning the SIM card identifier (ICCID)
Then there are also reports that can be generated on status changes for several commands often called unsolicited results code (reports). For example when the network registration changes. These reports have a similar format to the read command but sometimes differ on a couple of parameters.
Do different modules and vendors have different AT commands?
Whereas AT commands are standardized in 3GPP TS 27.005 and 27.007 and all manufacturers need to implement them, there can be differences based on the modem type and vendor.
Based on the modem type — for e.g., some power saving commands are only available on newer versions that also have the functionality. Parameters may also differ because the modem does not support this specific radio type configuration or error code.
Often manufacturers introduce additional proprietary AT commands that either have new functionality or enhance existing AT commands. While these commands can be powerful, considerations for cross-vendor firmware need to be taken.
How do I identify proprietary AT-commands for U-Blox, Quectel, Telit, Nordic, Gemalto etc.?
Usually vendor proprietary commands are identifiable by a slightly changed command syntax in the beginning.
- Quectel — start with AT+Q — e.g. AT+QCFG
- U-Blox — start with AT+U — e.g. AT+UDCONF
- Telit — start with AT “@”, “#”, “$” or “*” — e.g. AT@CLCK
- Nordic — start with AT% — e.g. AT%XSNRSQ
- Gemalto/Cinterion — start with AT^ — e.g. AT^SMSO
- ZTE — start with AT+Z — e.g. AT+ZCELLINFO
How do I find the AT commands my modem supports?
Every modem should have a detailed description of its AT commands in an AT command guide. Nevertheless, you can also check the list of available AT commands with an AT command itself: AT+CLAC
My AT-command only responds with ERROR — how do I get more info?
In the standard configuration, the AT-Command response is short: OK and ERROR.
For getting a more detailed output of what caused the error you can use the command AT+CMEE=1 or AT+CMEE=2.
The error will then either start with +CMS ERROR: xxx (indicating a network error) or +CME ERROR: xxx (indicating a device error)
AT+CMEE=1 — each error message includes an error code as described 3GPP TS 27.007 Ch. 9.2. For example, the module will return +CME ERROR: 11 -
meaning the SIM PIN is required.
AT+CMEE=2 — if the modem supports it, then the error message includes a string expression of the error. For example +CME ERROR: SIM PIN required
Basic commands to get information about the modem and SIM card
The below commands do not have a read or test command and no parameters — they only execute commands that return information.
Name |
AT Command |
Description |
Get manufacturer |
AT+CGMI |
Returns string representation of the manufacturer |
Get model |
AT+CGMM |
Returns the model of the modem. |
Get firmware |
AT+CGMR |
Returns firmware revision |
Get IMEI |
AT+GSN |
Retrieves the International Mobile Equipment Identity of the module |
Get IMSI |
AT+CIMI |
Returns the current used IMSI |
GET ICCID |
AT+CCID |
Returns the ICCID of the SIM |
GET MSISDN |
AT+CNUM |
Returns the phone number / MSISDN of the device |
Removing or adding SIM PIN via AT commands
EMnify SIMs come with the SIM PIN deactivated so they work in devices that do not have a screen or interface to enter the PIN (e.g. GPS tracker). Below you have examples on how to activate and re-activate the use of the SIM PIN.
The two commands used for managing SIM PIN are AT+CPIN and AT+CLCK.
To remove the check for the SIM PIN:
AT+CPIN? // check which PIN required
+CPIN=SIM PIN // response = SIM pin code required
AT+CPIN=1234 // enter current PIN
OKAT+CLCK=”SC”,0,”1234″ // remove SIM PIN request at startup — reboot needed
OK
To add the check for SIM PIN:
AT+CPIN? // check if and which PIN required
+CPIN=Ready // no PIN required
AT+CLCK=”SC”,1,”1234″ // PIN activated
You find more information about the CPIN and CLCK command below.
Command | Commands and example | Parameters |
AT+CPIN |
AT+CPIN=<pin>
Enter the PIN so that the SIM can be used Example: |
<code> |
AT+CPIN? Response Format: |
||
AT+CLCK |
AT+CLCK=<fac>,<mode>,<passed>, <class> Lock or unlock different services on the module. Example: |
<fac> facility <mode> Defines the operation <password> Password <class> |
AT commands for network selection and configuration
While operator selection is often an automated procedure — there are some configurations that you can do to either enforce or prefer specific operators.
Command |
Commands and examples |
Parameters |
AT+COPS Operator |
AT+COPS=<mode>,<format>, <oper>,<AcT> Forces to register the network |
<mode>: 0 — automatic (<oper> field is ignored) 1 — manual (<oper> field) 2 — deregister from network 3 — set only <format> for AT+COPS? 4 — manual/automatic (<oper> field shall be present); if manual selection fails, automatic mode (=0) is entered <format> <oper> desired operator in <format> <AcT> Access technology If no operator is selected <format>,<oper> <Act> are omitted. <stat> Operator status |
AT+COPS? Response Format: |
||
AT+COPS=? Returns / scans the list of available operators. Response Format: Example Response: |
||
AT+CPLS
Preferred PLMN list |
AT+CPLS=<list> Example: |
On the SIM there are file to manage operator and radio type preference. These can be set by the user, operator or home network. These files usually start with EFxxxx <list>: integer type |
AT+CPLS? |
||
AT+CPLS=? |
||
AT+CPOL User Preferred PLMN list |
AT+CPOL=<index>,<format>,<oper>,<GSM_AcT>, <GSM_Compact_AcT>,<UTRAN_AcT>,<EUTRAN_AcT> Set preferred operator list on the SIM Config example: |
<index> order number of operator list. The first index indicates the highest priority and the nth index indicates the lowest
<format>: <oper> Operator in defined Format <format> For all parameters |
AT+CPOL? |
||
AT+COPN
|
AT+COPN |
|
AT+CREG Network registration report AT+CREG applies to GSM/UMTS CS domain AT+CGREG AT+CEREG applies for LTE Some LTE only modules may show registration status also for CREG and CGREG based on backwards compatibility |
The syntax for CREG, CGREG, CEGREG is the similar- here explained with AT+CREG AT+CREG =<n> Set result code output. Triggers status change reports in different formats. |
<n> Report configuration <stat>: <AcT>: Access Type <lac/tac/rac> Location Area / Tracking Area / Routing Area Code |
The syntax for CREG, CGREG, CEGREG is the similar- here explained with AT+CREG AT+CREG? Response Examples: |
||
AT+CREG =? Example Response |
AT commands for radio signal quality analysis
Command |
Commands and examples |
Parameters |
AT+CSQ
Signal Quality Reports |
AT+CSQ Response Format: |
<rssi> received signal strength RSSI values <qual> For 2G – Bit Error rate ( ~assumed value) <qual> For 3G — EcNo <qual> For LTE/NB-IoT/LTE-M — RSRQ <rxlev> RSSI with 1dbm steps <ber> — Bit Error Rate as above for 2G <rscp> RSCP with 1dBm steps |
AT+CSQ=? Example Response |
||
AT+CESQ Extended signal quality |
AT+CESQ Response format: Example Response: |
|
AT+CESQ=? Returns list of supported parameters value ranges <rxlev>,<ber>, <rscp>, ecno>, <rsrp>, <rsrq> Example Response: |
AT commands to establish a PDP context / data session
Command |
Commands and examples |
Parameters |
AT+ CGDCONT
Define PDP context |
<AT+CGDCONT=<cid>,<PDP_type>,<APN>,<PDP_addr>,<data_comp>,<head_comp> Set the parameters for the PDP context. Example |
<cid> PDP context identifier <PDP_addr> (IP) Address identifying the mobile terminal. EMnify assigns private static IPs — so 0.0.0.0 is fine <d_comp> — controls PDP data compression — for SNDCP 0 OFF <h_comp> — controls PDP header compression |
AT+CGDCONT? Returns list of current PDP definitions Response Format: Example Response: |
||
AT+CGACTActivate and Deactivate PDP contexts |
AT+CGACT=<state>,<cid> |
<state> <cid> PDP context ID |
AT+CGACT? |
Final Thoughts
These were some of the standard AT commands that all modems support. They let you configure and have control over your cellular communication. Many manufacturer-specific AT commands exist which let you optimize the communication. We will talk about these in another blog post.
Constantin Ernst
Product Manager at EMnify.
GSM/GPRS SHIELD A6 и GSM/GPRS SHIELD A9 подключаются по шине UART и способны выполнять AT-команды. AT-команда это строка начинающаяся с букв «AT» (от английского attention — «внимание»). Shield выполняет поступившую команду и отправляет обратно ответ (результат выполнения команды), который также является строкой. В GSM/GPRS SHIELD каждая команда (как и ответ) должна заканчиваться символами перевода строки «rn».
Подключение:
- GSM/GPRS Shield A6 устанавливается на Arduino и использует следующие её выводы: «TX» (D0 или D7), «RX» (D1 или D8), «PWR» (D9), GND, 3V3, «Vcc» (5V или Vin).
- GSM/GPRS Shield A9 устанавливается на Arduino и использует следующие её выводы: «TX» (D0 или D8), «RX» (D1 или D9), «PWR» (D7), GND, «Vcc» (5V или Vin).
- Shield позволяет использовать как аппаратную так и программную реализацию шины UART Arduino. Если переключатель на плате shield находится в положении «TX-0/RX-1», то используется аппаратная шина, выводы D0 (RX Arduino, TX shield) и D1 (TX Arduino, RX shield). Если переключатель на плате shield находится в положении «TX-7/RX8», то используется программная шина, выводы D7 и (RX Arduino, TX shield) и D8 (TX Arduino, RX shield). Если переключатель на плате shield находится в положении «TX-8/RX9», то используется программная или аппаратная шина, выводы D8 и (RX Arduino, TX shield) и D9 (TX Arduino, RX shield).
Настройка:
GSM/GPRS Shield сможет принимать команды только если правильно настроены следующие параметры последовательного порта:
- Номер COM-порта: Его можно узнать экспериментально, отключите адаптер или Arduino, посмотрите какие COM-порты доступны. Подключите адаптер или Arduino и вновь посмотрите какие порты доступны. Появившийся COM-порт и есть тот самый.
- Скорость передачи данных: По умолчанию скорость передачи данных shield равна 115200 бит/сек, она должна совпадать со скоростью COM-порта. Если отправить в shield любые AT-команды на скорости COM-парта: 2400, 4800, 9600, 14400, 19200, 28800, 33600, 38400, 57600, 115200, 230400, 460800, 921600, 1843200, то получив 5 — 10 команд на одной скорости, shield автоматически переключится на эту скорость COM-порта. Скорость передачи данных shield можно явно указать командой ATZ+IPR=СКОРОСТЬ, например: ATZ+IPR=9600
- Параметры передачи данных: По умолчанию: количество бит в пакете — 8, размер стопового бита = 1, без проверки чётности.
- Передаваемый текст: В программе (на компьютере) нужно установить пункт «добавлять символ CR» это символ конца строки «r», а можно установить пункт «добавлять символы CR & LF(NL)» это символы перевода строки «rn» которые Вы не сможете ставить самостоятельно в конце AT-команд.
Для настройки этих параметров в программе Termite, нажмите на кнопку «Настройки» (Settings). В том же окне можно установить Русский язык.
При использовании Arduino, номер порта указывается во вкладке «Инструменты». Параметры передачи данных используются по умолчанию. Для добавления символов NL & CR воспользуйтесь меню в правом нижнем углу монитора последовательного порта.
Проверка:
Для проверки связи с GSM/GPRS Shield отправьте тестовую команду AT (введите текст AT и нажмите Enter). Если связь установлена корректно, то shield ответит OK. После этого можно отправлять остальные AT-команды.
Синтаксис AT-команд:
Если в программе терминал указано добавлять символы CR & LF или NL & CR то символы «rn» в командах ставить не нужно!
Команды можно писать следующим образом:
- AT+КОМАНДА=?rn — После команды указаны знаки =?
Данный синтаксис позволяет узнать какие параметры поддерживает команда.
В ответ Shield вернёт строку с указанием количества параметров поддерживаемых командой и диапазоном их значений (см. примеры ниже). - AT+КОМАНДА?rn — После команды указан знак ?
Данный синтаксис позволяет запросить текущие, действующие, значения (см. примеры ниже). - AT+КОМАНДА=ПАРАМЕТР(Ы)rn — После команды указан знак = и параметр(ы).
Данный синтаксис позволяет установить одно или несколько значений (см. примеры ниже). - AT+КОМАНДАrn — Команда отправлена без дополнительных знаков и параметров.
Синтаксис установки/запроса данных определяемых внутренними процессами модуля. - Если синтаксис команды неверен, то возвращается ERROR.
- Если синтаксис команды верен, но допущены ошибки в параметрах, то возвращается +CME ERROR или +CMS ERROR.
- Если команда выполнена успешно, то в большинстве случаев возвращается ОК.
Пример 1: (синтаксис команды с одним параметром)
- Для примера воспользуемся командой AT+CSCS — Установка/запрос набора символов.
- Узнаём какие параметры поддерживает команда:
- Команда: AT+CSCS=?rn
- Ответ: +CSCS: («GSM«,»HEX«,»PCCP936«,»UCS2«)rnOKrn
- Из ответа видно, что команда AT+CSCS содержит один параметр (так как в ответе одни скобки), который может принимать одно из четырёх значений: «GSM», «HEX», «PCCP936» или «UCS2».
- Узнаём какое значение используется в данный момент:
- Команда: AT+CSCS?rn
- Ответ: +CSCS: «PCCP936»rnOKrn
- Из ответа видно, что в данный момент используется набор символов «PCCP936».
- Устанавливаем новое значение:
- Команда: AT+CSCS=»GSM»rn
- Ответ: OKrn
- Из ответа OK, следует, что набор символов «GSM» успешно установлен и используется.
Пример 2: (синтаксис команды с двумя параметрами)
- Для примера воспользуемся командой AT+ICF — Установка/запрос параметров UART.
- Узнаём какие параметры поддерживает команда:
- Команда: AT+ICF=?rn
- Ответ: +ICF: (1-6),(0-3)rnOKrn
- Из ответа видно, что команда AT+ICF содержит два параметра (так как в ответе две скобки), первый может принимать значение от 1 до 6, а второй от 0 до 3.
- Узнаём какие значения используются в данный момент:
- Команда: AT+ICF?rn
- Ответ: +ICF: 3, 0rnOKrn
- Из ответа видно, что первый параметр равен 3, а второй 0. Согласно таблице основных AT-команд, это значит, что передача ведётся по 8 бит данных, используется 1 стоп бит, с проверкой нечётности.
- Устанавливаем новые значения:
- Команда: AT+ICF=2,3rn
- Ответ: OKrn
- Из ответа OK, следует, что новые параметры передачи данных успешно установлены (8 бит данных, 1 стоп бит, без проверки).
Используемые сокращения:
- GSM (Global System for Mobile communications) — глобальная система мобильной связи. Это стандарт цифровой мобильной сотовой связи, с разделением каналов по времени (TDMA) и частоте (FDMA).
- GPRS (General Packet Radio Service) — надстройка над GSM, осуществляющая пакетную передачу данных. GPRS позволяет пользователю сети обмениваться данными с другими устройствами в сети GSM и с внешними сетями, в том числе Интернет.
- TDMA (Time Division Multiple Access) — множественный доступ с разделением по времени. Это способ, когда в одном частотном диапазоне находятся несколько абонентов, разные абоненты используют разные временные интервалы (слоты) для передачи данных.
- FDMA (Frequency Division Multiple Access) — множественный доступ с разделением каналов по частоте. Это способ, когда в одном частотном диапазоне находится только один абонент, разные абоненты используют разные частоты в пределах соты.
- DTE (Data Terminal Equipment) — терминальное оборудование данных. Это оконечное устройство приёма/передачи данных (в данном случае компьютер или Arduino).
- DCE (Data Communication Equipment) — оборудование коммуникации данных. Это устройство осуществляющее связь, но не являющееся источником или конечным получателем данных (в данном случае это GSM/GPRS SHIELD).
- IMSI (International Mobile Subscriber Identity) — международный идентификатор мобильного абонента. Это индивидуальный номер абонента который в системе GSM хранится на SIM-карте. IMSI состоит из кода страны, кода оператора и номера MSIN. По этому номеру оператор сотовой связи определяет абонентов сопоставляя его с MSISDN (номером мобильного абонента) номером телефона.
- MSIN (Mobile Subscriber Identification Number) идентификатор пользователя, является частью IMSI.
- IMEI (International Mobile Equipment Identity) международный идентификатор мобильного оборудования. Это индивидуальный номер телефона.
- SIM (Subscriber Identification Module) модуль идентификации абонента.
- PIN (Personal Identification Number) персональный идентификационный номер. Это пароль CHV для доступа к некоторым функциям SIM.
- CHV (card holder verification) проверка держателя карты.
- PUK (Personal Unlocking Key) персональный разблокирующий ключ. Требуется после нескольких неудачных попыток ввода PIN.
- ISDN (Integrated Services Digital Network) — цифровая сеть с интеграцией служб для связи в стандартах GSM, UMTS и т.д. (такая сеть совмещает телефонную связь и обмен данными).
- MSISDN (Mobile Subscriber Integrated Services Digital Number) — номер мобильного абонента сети ISDN. Это тот номер к который мы называем номером телефона: +7(XXX)XXX-XX-XX.
- PLMN (Public Land Mobile Network) сеть связи общего пользования наземных мобильных объектов.
- DTMF (Dual-Tone Multi-Frequency) — двухтональный многочастотный аналоговый сигнал, используемый для набора телефонного номера.
- MCC (Mobile Country Code) — мобильный код страны (250 — Россия), в сочетании с MNC (Mobile Network Code) является уникальным цифровым идентификатором сотового оператора, например 25001 — MTS, 25002 — MegaFon, 25099 — Beeline.
- MNC (Mobile Network Code) — код мобильной сети в комбинации с MCC является уникальным идентификатором сотового оператора.
- SMS (Short Message Service) — служба коротких сообщений. Это технология, приёма / передачи коротких текстовых сообщений с помощью сотового телефона.
- USSD (Unstructured Supplementary Service Data) — сервис осуществляющий взаимодействие между абонентом сети и сервисным приложением в режиме передачи коротких сообщений. Например, для того, чтобы узнать баланс, нужно отправить USSD команду *100#.
- STK (SIM Tool Kit) — набор инструментов для SIM-карты. Это стандарт позволяющий приложениям SIM-карты получать доступ к функциям телефона. Часто STK используется для реализации сервиса SIM-меню.
- URC (Unsolicited Result Code) — незапрашиваемый код результата (незапрашиваемый ответ модуля). Код отправляемый DCE (модулем) по шине UART без запроса от DTE (Arduino). Например, при входящем голосовом вызове, DCE (модуль) отправляет код «RING».
- PDU (Packet Data Unit) — блок пакетной передачи данных. Это формат записи SMS сообщений.
- PPP (Point to Point Protocol) — двухточечный протокол установления связи между двумя узлами сети (связь точка — точка).
- PDP (Packet Data Protocol) — протокол пакетной передачи данных. Адреса PDP являются адресами сетевого уровня. PDP контекст является структурой данных содержащей информацию о сеансе абонента.
Примеры:
С примерами использования AT-команд можно ознакомиться на странице Wiki — примеры использования AT-команд.
Список AT-команд с кратким описанием:
Описание AT-команд переведено с первоисточника AT A6 V1.01.
- Основные AT-команды:
- AT — Проверка связи с shield.
- AT+CPOF — Выключение модуля.
- ATS0 — Установка/запрос количества гудков до автоответа.
- ATS3 — Установка/запрос кода символа конца командной строки.
- ATS4 — Установка/запрос кода символа начала командной строки.
- ATS5 — Установка/запрос кода символа backspace для командной строки.
- +++ — Переключение из режима (online) в командный режим (offline) режим AT-команд.
- ATO — Переключение из режима (offline) в режим данных (online), он же режим PPP.
- AT&F — Восстановить заводские настройки.
- ATV0 — Установить короткие заголовки и цифровые коды ответа.
- ATV1 — Установить полные заголовки и текстовые ответы (как в примерах данной статьи).
- ATE0 — Отключить эхо AT-команд.
- ATE1 — Включить эхо AT-команд.
- AT&W — Сохранить текущие настройки в EEPROM как пользовательский профиль.
- ATZ — Загрузить настройки из пользовательского профиля.
- ATQ0 — Разрешить передачу результирующих кодов.
- ATQ1 — Блокировать передачу результирующих кодов.
- ATX0 — Возвращать только код результата соединения.
- ATX1 — Возвращать код и текст результата соединения.
- ATX2 — Возвращать код и текст результата соединения, вкл. обнаружение тонального набора.
- ATX3 — Возвращать код и текст результата соединения, вкл. определение занятости.
- ATX4 — Возвращать код и текст результата соединения, вкл. обнаружение тонального и определение занятости.
- AT+CFUN — Установка набора функциональных возможностей.
- AT+CMEE — Установка/запрос формата вывода ошибок.
- AT+CSCS — Установка/запрос набора символов.
- AT+CMUX — Установка/запрос режима мультиплексирования.
- AT+ICF — Установка/запрос параметров передачи данных по шине UART.
- AT+IPR — Установка/запрос скорости передачи данных по шине UART.
- AT+GSN — Запрос серийного номера адаптера.
- AT+GMM (AT+CGMM) — Запрос модели адаптера (модуля).
- AT+GMR (AT+CGMR) — Запрос версии ПО адаптера (модуля).
- AT+GMI (AT+CGMI) — Запрос производителя адаптера (модуля).
- ATI — Запрос производителя, модели и версии адаптера (модуля).
- AT+CIMI — Запрос IMSI (код SIM карты).
- AT+EGMR — Установка/запрос IMEI (код устройства).
- AT+CALA — Установка/запрос списка будильников.
- AT+CALD — Удаление будильников.
- AT+VGR — Установка/запрос уровня усиления динамика.
- AT+VGT — Установка/запрос уровня усиления микрофона.
- AT+CLVL — Установка/запрос громкости динамика громкой связи.
- AT+CMUT — Установка/запрос отключения микрофона при голосовом вызове.
- AT+CCLK — Установка/запрос часов реального времени (RTC).
- AT+CBC — Запрос состояния ЗУ и ёмкости аккумулятора (АКБ).
- AT+CBCM — Управление уведомлениями о изменении ёмкости аккумуляторной батареи (АКБ).
- AT+CMER — Установка/запрос режима отправки незапрашиваемых отчётов (URC) о событиях.
- AT+CEER — Запрос расширенного отчёта об ошибке последнего соединения.
- AT+CPAS — Запрос статуса активности мобильного устройства.
- AT-команды SIM / PBK:
- AT+CPIN — Аутентификация SIM-карты (ввод PIN1, PUK1, PIN2, PUK2).
- AT+CPIN2 — Аутентификация SIM-карты (ввод PIN2, PUK2).
- AT^CPINC — Запрос оставшегося количества попыток ввода паролей (PIN1, PUK1, PIN2, PUK2).
- AT+CLCK — Блокировка/разблокировка функций устройства.
- AT+CPWD — Смена пароля SIM-карты (PIN1, PIN2).
- AT+CRSM — Отправка команд на SIM-карту в режиме ограниченного доступа.
- AT+CNUM — Запрос номера абонента MSISDN (вывести свой номер телефона).
- AT+CPBS — Установка/запрос области памяти для телефонной книги.
- AT+CPBR — Чтение записей телефонной книги.
- AT+CPBF — Поиск записей телефонной книги.
- AT+CPBW — Редактирование телефонной книги (добавление, замена, удаление записей).
- AT-команды голосовых вызовов:
- ATA — Ответить на входящий голосовой вызов.
- ATH — Разъединение голосового вызова.
- AT+CHUP — Разъединение всех существующих голосовых вызовов.
- ATD — Набор номера (исходящий голосовой вызов).
- AT+DLST — Повторный набор последнего исходящего вызова.
- AT+CHLD — Управление групповыми вызовами и конференц-связью.
- AT+CLCC — Запрос списка текущих вызовов.
- AT+VTD — Установка/запрос длительности тональных сигналов DTMF.
- AT+VTS — Отправка тонального сигнала DTMF.
- AT+VTSEX — Отправка специального тонального сигнала DTMF.
- AT-команды сетевых служб:
- AT+COPN — Запрос списка всех имен операторов из памяти модуля.
- AT+COPS — Запрос/выбор оператора связи PLMN.
- AT+CREG — Установка/запрос режима и статуса регистрации в сети оператора.
- AT+CSQ — Запрос уровня сигнала.
- AT+CPOL — Установка/запрос списка предпочтительных операторов.
- AT-команды STK / SS:
- CACM — Сброс/запрос счётчика вызовов.
- CAMM — Установка максимального значения для счётчика вызовов.
- CAOC — Оповещение о стоимости вызова (не поддерживается модулями A6 и A9).
- CPUC — Установка/запрос стоимости у.е. вызова и таблицы валют.
- CCFC — Управление переадресацией вызовов.
- CCWA — Управление услугой «ожидание вызова».
- CLIP — Управление идентификацией вызывающей линии (АОН).
- CLIR — Управление запретом идентификации вызывающей линии (анти АОН).
- COLP — Управление идентификацией подключенной линии.
- CSSN — Управление уведомлениями о дополнительных услугах.
- CUSD — Управление и выполнение USSD запросов (Unstructured Supplementary Service data)
- STA — Активация интерфейса SAT (SIM Application Toolkit)
- STN — Уведомление STK (SIM ToolKit)
- STGI — Запрос информации с STK (SIM ToolKit)
- STR — Удалённый ответ SAT (SIM Application Toolkit)
- STF — Установка формата ответов SAT (SIM Application Toolkit)
- AT-команды SMS:
- AT+CSDH — Разрешить/запретить отображение заголовков текстовых сообщений.
- AT+CSMP — Установка/запрос параметров текстового режима.
- AT+CMSS — Отправка SMS сообщения из памяти.
- AT+CMGD — Удаление SMS сообщения из памяти.
- AT+CMGF — Установка/запрос формата SMS сообщений (текстовый / PDU).
- AT+CMGL — Чтение списка SMS сообщений из памяти.
- AT+CMGR — Чтение одного SMS сообщения из памяти.
- AT+CMGS — Отправка SMS сообщения без сохранения в память.
- AT+CMGW — Запись SMS сообщения в память.
- AT+CNMA — Запрос отчёта о доставке SMS сообщений.
- AT+CNMI — Установка/запрос индикации новых сообщений.
- AT+CPMS — Установка/запрос предпочтительной области памяти для хранения сообщений.
- AT+CSCA — Установка/запрос номера сервис-центра SMS сообщений.
- AT+CSCB — Установка/запрос типа принимаемых Cell Broadcast сообщений.
- AT+CSAS — Сохранение настроек.
- AT+CRES — Восстановление настроек.
- AT-команды аудиоинтерфейса:
- AT+CAUDIO — Открыть/закрыть аудиопоток голосового вызова.
- AT+CRSL — Установка/запрос уровня громкости звонка.
- AT+CDTMF — Воспроизведение тонального сигнала DTMF.
- AT+AUST — Запуск тестового аудиоцикла.
- AT+AUEND — Остановка тестового аудиоцикла.
- AT+SNFS — Установка/запрос устройства ввода/вывода звука.
- AT-команды GPRS:
- CGATT — Установка/разрыв GPRS соединения.
- CGDCONT — Задание параметров PDP контекста.
- CGACT — Активация/деактивация PDP контекста.
- CRC — Включение/отключение результирующих кодов входящих соединений.
- CGQMIN — Задание минимально допустимого профиля QoS (Quality of Service).
- CGPADDR — Получение списка PDP адресов.
- CGAUTO — Включение/отключение автоответа активации PDP контекста.
- CGQREQ — Задание запрашиваемого профиля QoS (Quality of Service).
- CGREG — Статус регистрации в сети GPRS.
- ATD*99***1# — Запрос услуги GPRS (установка связи с PDN).
- CGSMS — Выбор сервиса (GSM или GPRS) для отправки SMS сообщений.
- CGANS — Ручной ответ активации PDP контекста на запрос сети (см CGAUTO).
- CGEREP — Включение/отключение результирующих кодов о событиях GPRS.
- CGDATA — Установка связи с сетью (аналогично команде ATD*99***1#).
- CGCLASS — Установка/запрос GPRS класса мобильного устройства.
- AT-команды TCP/IP:
- CIPSTART — Открытие соединения TCP или UDP.
- CIPSEND — Отправка данных через TCP или UDP соединение.
- CIPCLOSE — Закрытие соединения TCP или UDP.
- CIPSHUT — Отключение беспроводного соединения.
- CSTT — Ввод имени точки доступа, логина и пароля.
- CIICR — Установка беспроводного соединения.
- CIFSR — Получение локального IP-адреса.
- CIPSTATUS — Запрос состояния текущего соединения.
- CIPATS — Установка таймера автоматической отправки.
- CIPSCONT — Cохранение параметров контекста TCP/IP.
- CDNSGIP — Запрос IP-адреса указанного доменного имени.
- AT-команды дополнительные:
- CLDSTART — Автоматическое подключение к облачной платформе Anxin Keyun.
- CLDSTOP — Отключение от облачной платформы Anxin Keyun.
- CLDSEND — Отправка данных на облачный сервис Anxin Keyun.
- CLDUNBIND — Освобождение облачного сервиса Anxin Keyun.
Подробное описание AT-команд:
Описание AT-команд переведено с первоисточника AT A6 V1.01.
Основные AT-команды:
AT-команда: | Ответ: | Назначение: | |
---|---|---|---|
AT | ATrn (тестовый запрос) |
rn OKrn |
Проверка связи:
|
CPOF | AT+CPOFrn (выключить модуль) |
rn OKrn |
Выключение модуля:
|
ATS0 | ATS0?rn (запрос текущего количества гудков до автоответа) |
rn ЧИСЛОrn rn OKrn |
Установка/запрос автоматического ответа на вызовы:
|
ATS0=ЧИСЛОrn (установка количества гудков) |
rn OKrn |
||
ATS3 | ATS3?rn (Запрос текущего кода) |
rn ЧИСЛОrn rn OKrn |
Установка/запрос кода символа конца командной строки:
|
ATS3=ЧИСЛОrn (установка кода символа) |
rn OKrn |
||
ATS4 | ATS4?rn (Запрос текущего кода) |
rn ЧИСЛОrn rn OKrn |
Установка/запрос кода символа начала командной строки:
|
ATS4=ЧИСЛОrn (установка кода символа) |
rn OKrn |
||
ATS5 | ATS5?rn (запрос текущего кода) |
rn ЧИСЛОrn rn OKrn |
Установка/запрос кода символа backspace для командной строки:
|
ATS5=ЧИСЛОrn (установка кода символа) |
rn OKrn |
||
+++ | +++rn (переключение в командный режим) |
rn OKrn |
Переключение из режима online в режим offline:
|
ATO | ATOrn (переключение в режим данных) |
rn OKrn |
Переключение из режима offline в режим online:
|
AT&F | AT&Frn (загрузка заводского профиля) |
rn OKrn |
Восстановить заводские настройки:
|
ATV | ATV0rn (установка коротких ответов) |
rn OKrn |
Установка формата ответа модуля:
|
ATV1rn (установка полных ответов) |
rn OKrn |
||
ATE | ATE0rn (отключить эхо) |
rn OKrn |
Включить/отключить эхо в ответах на AT-команды:
|
ATE1rn (включить эхо) |
rn OKrn |
||
AT&W | AT&Wrn (сохранить настройки в пользовательский профиль) |
rn OKrn |
Сохранить текущие настройки в области EEPROM:
|
ATQ | ATQ0rn | rn OKrn |
Включить/отключить результирующие коды:
|
ATQ1rn | rn OKrn |
||
ATX | ATX0rn | rn OKrn |
Установка формата кода результата соединения и мониторинг вызовов:
|
ATX1rn | rn OKrn |
||
ATX2rn | rn OKrn |
||
ATX3rn | rn OKrn |
||
ATX4rn | rn OKrn |
||
ATZ | ATZrn (загрузить пользовательский профиль) |
rn OKrn |
Восстановить пользовательские настройки:
|
CFUN | AT+CFUN=ЧИСЛОrn (установка требуемого функционала) |
rn OKrn |
Установка набора функциональных возможностей:
|
CMEE | AT+CMEE=?rn (запрос допустимых значений) |
rn +CMEE: (0-2)rn rn OKrn |
Установка/запрос формата вывода сообщений об ошибках мобильного оборудования:
|
AT+CMEE?rn (запрос текущего формата вывода ошибок) |
rn +CMEE: ЧИСЛОrn rn OKrn |
||
AT+CMEE=ЧИСЛОrn (установка формата вывода ошибок) |
rn OKrn |
||
CSCS | AT+CSCS=?rn (запрос допустимых наборов символов) |
rn +CSCS: («GSM», «HEX», «PCCP936», «UCS2»)rn rn OKrn |
Установка/запрос набора символов терминального оборудования:
|
AT+CSCS?rn (запрос текущего набора символов) |
rn +CSCS: ИМЯrn rn OKrn |
||
AT+CSCS=ИМЯrn (установка набора символов) |
rn OKrn |
||
CMUX | AT+CMUX=?rn (запрос допустимых режимов) |
rn +CMUX: (0)rn rn OKrn |
Установка/запрос режима мультиплексирования:
|
AT+CMUX?rn (запрос текущего режима) |
rn +CMUX: ЧИСЛОrn rn OKrn |
||
AT+CMUX=ЧИСЛОrn (установка режима) |
rn OKrn |
||
ICF | AT+ICF=?rn (запрос допустимых значений) |
rn +ICF: (1-6),(0-3)rn rn OKrn |
Установка/запрос параметров передачи данных по шине UART:
|
AT+ICF?rn (запрос текущих параметров) |
rn +ICF: РАЗМЕР, ЧЁТНОСТЬrn rn OKrn |
||
AT+ICF=РАЗМЕР,ЧЁТНОСТЬrn (установка параметров UART) |
rn OKrn |
||
IPR | AT+IPR=?rn (запрос допустимых скоростей UART) |
rn (2400, 4800, 9600, 14400, 19200, 28800, 33600, 38400, 57600, 115200, 230400, 460800, 921600)rn rn OKrn |
Установка/запрос скорости передачи данных по шине UART:
|
AT+IPR?rn (запрос текущей скорости) |
rn +IPR: СКОРОСТЬrn rn OKrn |
||
AT+IPR=СКОРОСТЬrn (установка скорости UART) |
rn OKrn |
||
GSN | AT+GSNrn (запрос серийного номера) |
rn НОМЕРrn rn OKrn |
Запрос серийного номера адаптера:
|
GMM CGMM |
AT+GMMrn (запрос названия модели) |
rn МОДЕЛЬrn rn OKrn |
Запрос модели адаптера (модуля):
|
GMR CGMR |
AT+GMRrn (запрос версии прошивки) |
rn ВЕРСИЯrn rn OKrn |
Запрос версии ПО адаптера (модуля):
|
GMI CGMI |
AT+GMIrn (запрос имени производителя) |
rn ПРОИЗВОДИТЕЛЬrn rn OKrn |
Запрос производителя адаптера (модуля):
|
ATI | ATIrn (запрос названия, имени и версии) |
rn ПРОИЗВОДИТЕЛЬrn МОДЕЛЬrn ВЕРСИЯrn rn OKrn |
Запрос информации производителя об адаптере (модуле):
|
CIMI | AT+CIMIrn (запрос IMSI) |
rn НОМЕРrn rn OKrn |
Запрос IMSI:
|
EGMR | AT+EGMR=?rn (запрос допустимых значений) |
rn +EGMR: (1,2), (7)rn rn OKrn |
Установка/запрос IMEI:
|
AT+EGMR=1,7,«НОМЕР»rn (установка IMEI) |
rn OKrn |
||
AT+EGMR=2,7rn (запрос IMEI) |
rn +EGMR:НОМЕРrn rn OKrn |
||
CALA | AT+CALA=?rn (запрос допустимых значений) |
rn +CALA: (1-15), (0), (32), (15)rn rn OKrn |
Установка/запрос списка будильников:
|
AT+CALA?rn (запрос списка установленных будильников) |
rn +CALA: «ДАТА» [,№ [,ТИП [,«ТЕКСТ» [,«ДН» [,ТИХИЙ]]]]]rn +CALA: «ДАТА» [,№ [,ТИП [,«ТЕКСТ» [,«ДН» [,ТИХИЙ]]]]]rn rn OKrn |
||
AT+CALA=«ДАТА»[,№[,ТИП[,»ТЕКСТ»[,»ДН»[,ТИХИЙ]]]]]rn (установка будильника) |
rn OKrn |
||
CALD | AT+CALD=?rn (запрос списка номеров установленных будильников) |
rn +CALD: НОМЕРАrn rn OKrn |
Удаление одного будильника:
|
AT+CALD=НОМЕРrn (удаление будильника) |
rn OKrn |
||
VGR | AT+VGR=?rn (запрос допустимых уровней) |
rn +VGR: (5-8)rn rn OKrn |
Установка/запрос уровня усиления динамика:
|
AT+VGR?rn (запрос текущего уровня) |
rn +VGR: УСИЛЕНИЕrn rn OKrn |
||
AT+VGR=УСИЛЕНИЕrn (установка уровня) |
rn OKrn |
||
VGT | AT+VGT=?rn (запрос допустимых уровней) |
rn +VGT: 16rn rn OKrn |
Установка/запрос уровня усиления микрофона:
|
AT+VGT?rn (запрос текущего уровня) |
rn +VGT: УСИЛЕНИЕrn rn OKrn |
||
AT+VGT=УСИЛЕНИЕrn (установка уровня) |
rn OKrn |
||
CLVL | AT+CLVL=?rn (запрос допустимых значений) |
rn +CLVL: (5-8)rn rn OKrn |
Установка/запрос громкости динамика громкой связи:
|
AT+CLVL?rn (запрос текущей громкости) |
rn +CLVL: ГРОМКОСТЬrn rn OKrn |
||
AT+CLVL=ГРОМКОСТЬrn (установка громкости) |
rn OKrn |
||
CMUT | AT+CMUT=?rn (запрос допустимых значений) |
rn +CMUT: (0,1)rn rn OKrn |
Установка/запрос отключения микрофона при голосовом вызове:
|
AT+CMUT?rn (запрос текущего значения) |
rn +CMUT: ФЛАГrn rn OKrn |
||
AT+CMUT=ФЛАГrn (установка значения) |
rn OKrn |
||
CCLK | AT+CCLK=?rn (запрос синтаксиса) |
rn +CCLK: «YY/MM/DD HH:MM:SS+ZZ»rn rn OKrn |
Установка/запрос часов реального времени (RTC):
|
AT+CCLK?rn (запрос текущей даты и времени) |
rn +CCLK: «ДАТАВРЕМЯ»rn rn OKrn |
||
AT+CCLK=«ДАТАВРЕМЯ»rn (установка даты и времени) |
rn OKrn |
||
CBC | AT+CBC=?rn (запрос допустимых значений) |
rn +CBC: (0-5),(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)rn rn OKrn |
Запрос состояния ЗУ и ёмкости аккумулятора (АКБ):
|
AT+CBC?rn (запрос текущего состояния) |
rn +CBC: СОСТОЯНИЕ, ЁМКОСТЬrn rn OKrn |
||
CBCM | AT+CBCM=?rn (запрос допустимых значений) |
rn +CBCM: (0-1)rn rn OKrn |
Управление уведомлениями о изменении ёмкости аккумуляторной батареи (АКБ):
|
AT+CBCM?rn (запрос текущей установки) |
rn +CBCM: ФЛАГrn rn OKrn |
||
AT+CBCM=ФЛАГrn (установка/запрет уведомлений) |
rn OKrn |
||
CMER | AT+CMER=?rn (запрос допустимых значений) |
rn +CMER: (3),(0),(0),(0,2)rn rn OKrn |
Установка/запрос режима отправки незапрашиваемых отчётов о событиях (URC):
|
AT+CMER?rn (запрос текущего режима) |
rn +CMER: РЕЖИМ, КЛАВИАТУРА, ДИСПЛЕЙ, ИНДИКАТОР, БУФЕРrn rn OKrn |
||
AT+CMER=[РЕЖИМ [,КЛАВИАТУРА [,ДИСПЛЕЙ [,ИНДИКАТОР [,БУФЕР]]]]]rn (установка режима отправки сообщений) |
rn OKrn |
||
CEER | AT+CEERrn (запрос отчёта) |
rn +CMER: ТЕКСТrn rn OKrn |
Запрос расширенного отчёта об ошибке последнего соединения:
|
CPAS | AT+CPASrn (запрос статуса устройства) |
rn +CPAS: СТАТУСrn rn OKrn |
Запрос статуса активности мобильного устройства:
|
AT-команды SIM / PBK:
AT-команда: | Ответ: | Назначение: | |
---|---|---|---|
CPIN | AT+CPIN?rn (запрос текущего состояния аутентификации) |
rn +CPIN: СОСТОЯНИЕrn rn OKrn |
Аутентификация SIM-карты (ввод PIN1 / PUK1 / PIN2 / PUK2):
|
AT+CPIN=«PIN»rn (ввод PIN-кода) |
rn OKrn |
||
AT+CPIN=«PUK»,»PIN»rn (ввод PUK-кода и нового PIN-кода) |
rn OKrn |
||
CPIN2 | AT+CPIN2?rn (запрос текущего состояния аутентификации) |
rn +CPIN2: СОСТОЯНИЕrn rn OKrn |
Аутентификация SIM-карты (ввод PIN2 / PUK2):
|
AT+CPIN2=«PIN2»rn (ввод кода PIN2) |
rn OKrn |
||
AT+CPIN2=«PUK2″,»PIN2»rn (ввод кода PUK2 и нового кода PIN2) |
rn OKrn |
||
CPINC | AT^CPINCrn (запрос кол-ва попыток ввода PIN / PUK) |
rn ^CPINC: PIN1, PUK1, PIN2, PUK2rn rn OKrn |
Запрос оставшегося количества попыток ввода паролей:
|
CLCK | AT+CLCK=?rn (запрос допустимых функций) |
rn +CLCK: («SC», «FD», «AO», «OX», «OI»)rn rn OKrn |
Блокировка/разблокировка функций устройства:
|
AT+CLCK=«ФУНКЦИЯ», РЕЖИМ [,ПАРОЛЬ [,КЛАСС]]rn (блокировка / разблокировка указанной функции) |
Ответ зависит от указанных параметров. | ||
CPWD | AT+CPWD=?rn (запрос максимального количества символов в пароле) |
rn +CPWD: («SC»,8), («P2»,8)rn rn OKrn (до 8 знаков для «SC», до 8 знаков для «P2») |
Смена пароля SIM-карты (PIN1 / PIN2):
|
AT+CPWD=«ФУНКЦИЯ», «СТАРЫЙ»,»НОВЫЙ»rn (смена пароля) |
rn OKrn |
||
CRSM | AT+CRSM=КОМАНДА [,ИДЕНТИФИКАТОР [, П1 [,П2 [,П3 [,ДАННЫЕ]]]]]rn | rn +CRSM: Ф1, Ф2, ОТВЕТrn rn OKrn |
Отправка команд на SIM-карту в режиме ограниченного доступа:
|
CNUM | AT+CNUMrn (запрос своего номера) |
rn +CNUM: «НАЗВАНИЕ», «НОМЕР», ТИПrn rn OKrn |
Запрос номер абонента MSISDN (свой номер телефона):
|
CPBS | AT+CPBS=?rn (запрос допустимых областей памяти) |
rn +CPBS: («SM», «ON», «FD», «LD»)rn rn OKrn |
Установка/запрос области памяти для телефонной книги:
|
AT+CPBS?rn (запрос используемой области памяти) |
rn +CPBS: «ПАМЯТЬ» [,НАЙДЕНО, ОБЪЕМ]rn rn OKrn |
||
AT+CPBS=ПАМЯТЬrn (установка требуемой области памяти) |
rn OKrn |
||
CPBR | AT+CPBR=?rn (запрос размера телефонной книги) |
rn +CPBR: (1-250), 20, 25rn rn OKrn (до 250 ячеек, до 20 цифр в телефоне, до 25 символов в названии). |
Чтение записей телефонной книги:
|
AT+CPBR=ОТ [,ДО]rn (чтение записей) |
rn +CPBR: ИНДЕКС, «НОМЕР», ТИП, «НАЗВАНИЕ»rn rn OKrn |
||
CPBF | AT+CPBF=?rn (запрос размера записей) |
rn +CPBF: 20,25rn rn OKrn (до 20 цифр в телефоне, до 25 символов в названии). |
Поиск записей телефонной книги:
|
AT+CPBF=«ТЕКСТ»rn (поиск записей) |
rn +CPBF: ИНДЕКС, «НОМЕР», ТИП, «НАЗВАНИЕ»rn rn OKrn |
||
CPBW | AT+CPBW=?rn (запрос допустимых параметров) |
rn +CPBW: (1-250), 20, (129,145,161), 25rn rn OKrn (до 250 номеров, до 20 цифр в телефоне, допустимые типы (129,145,161), до 25 символов в названии). |
Редактирование записей телефонной книги (добавление / замена / удаление):
|
AT+CPBW=[ИНДЕКС][,»НОМЕР» [,ТИП [,НАЗВАНИЕ]]]rn (запись,замена,удаление) |
rn OKrn |
AT-команды голосовых вызовов:
AT-команда: | Ответ: | Назначение: | |
---|---|---|---|
ATA | ATArn (ответить на входящий голосовой вызов) |
rn CONNECTrn |
Ответ на входящий голосовой вызов:
|
ATH | ATHrn (повесить трубку) |
rn OKrn |
Разъединение голосового вызова:
|
CHUP | AT+CHUPrn (повесить все трубки) |
rn OKrn |
Разъединение всех существующих голосовых вызовов (повесить трубку):
|
ATD | ATDНОМЕРrn (набрать указанный номер) |
rn OKrn |
Набор номера (исходящий голосовой вызов):
|
ATD>[«ПАМЯТЬ»]ИНДЕКСrn (набрать номер из телефонной книги) |
rn OKrn |
||
DLST | AT+DLSTrn (повтор исходящего вызова) |
rn OKrn |
Повторный набор последнего исходящего вызова:
|
CHLD | AT+CHLD=?rn (запрос допустимых действий) |
rn +CHLD: (0,1,1X,2,2X,3)rn rn OKrn |
Управление групповыми вызовами и конференц-связью:
|
AT+CHLD=ЗНАЧЕНИЕrn (выполнение действия) |
rn OKrn |
||
CLCC | AT+CLCCrn (получение списка текущих вызовов) |
rn +CLCC: ИНДЕКС, НАПРАВЛЕНИЕ, СОСТОЯНИЕ, РЕЖИМ, ФЛАГ [,НОМЕР, ТИП [,»НАЗВАНИЕ«]]rn rn OKrn |
Запрос списка текущих вызовов:
|
VTD | AT+VTD=?rn (запрос допустимых значений) |
rn +VTD: (1-10)rn rn OKrn |
Установка/запрос длительности тональных сигналов DTMF:
|
AT+VTD?rn (запрос установленной длительности сигнала) |
rn +VTD: ДЛИТЕЛЬНОСТЬrn rn OKrn |
||
AT+VTD=ДЛИТЕЛЬНОСТЬrn (установка длительности) |
rn OKrn |
||
VTS | AT+VTS=?rn (запрос допустимых символов для воспроизведения) |
rn +VTS: (0-9,*,#,A,B,C,D),(1-10)rn rn OKrn |
Отправка тонального сигнала DTMF:
|
AT+VTS=ЗНАЧЕНИЕ [, ДЛИТЕЛЬНОСТЬ]rn (воспроизвести тональный сигнал) |
rn OKrn |
||
VTSEX | AT+VTSEX=1rn (воспроизвести специальный тональный сигнал) |
rn OKrn |
Отправка специального тонального сигнала DTMF:
|
AT-команды сетевых служб:
AT-команда: | Ответ: | Назначение: | |
---|---|---|---|
COPN | AT+COPNrn (запрос списка операторов из памяти модуля) |
rn +COPN: «НОМЕР»,»НАЗВАНИЕ»rn … |
Запрос списка всех имен операторов из памяти модуля:
|
COPS | AT+COPS=?rn (Запрос списка доступных операторов PLMN) |
rn +COPS: (СТАТУС, «ОПЕРАТОР», «ОПЕРАТОР», «ОПЕРАТОР»),(аналогично для след. оператора),(и т.д.)rn rn OKrn |
Запрос/выбор оператора связи PLMN:
|
AT+COPS?rn (Запрос выбранного оператора PLMN) |
rn +COPS: РЕЖИМ [,ФОРМАТ, «ОПЕРАТОР»]rn rn OKrn |
||
AT+COPS=РЕЖИМ [,ФОРМАТ [, «ОПЕРАТОР»]]rn (Выбор оператора PLMN) |
rn OKrn |
||
CREG | AT+CREG=?rn (Запрос допустимых режимов вывода сообщений о статусе регистрации) |
rn +CREG: (0-2)rn rn OKrn |
Установка/запрос режима и статуса регистрации в сети оператора:
|
AT+CREG?rn (Запрос текущего режима и статуса) |
rn +CREG: РЕЖИМ, СТАТУС [,«КОД», «ID»]rn rn OKrn |
||
AT+CREG=РЕЖИМrn (Установка режима вывода сообщений о статусе регистрации) |
rn OKrn |
||
CSQ | AT+CSQ=?rn (Запрос допустимых значений) |
rn +CSQ: (0-31,99),(0-7,99)rn rn OKrn |
Запрос уровня сигнала:
|
AT+CSQrn (Запрос уровня сигнала и количества ошибок) |
rn +CSQ: УРОВЕНЬ, ОШИБКИrn rn OKrn |
||
CPOL | AT+CPOL=?rn (Запрос максимального размера списка и допустимых форматов) |
rn +CPOL: (1-50),(0,2)rn rn OKrn |
Установка/запрос списка предпочтительных операторов:
|
AT+CPOL?rn (Запрос списка предпочтительных операторов) |
rn +CPOL: ИНДЕКС, ФОРМАТ, «ОПЕРАТОР»rn rn OKrn |
||
AT+CPOL=[ИНДЕКС] [,ФОРМАТ [,»ОПЕРАТОР» [,GSM,GSMcomp,UTRAN]]]rn (Добавление, замена, удаление оператора из списка) |
rn OKrn |
AT-команды STK / SS:
AT-команда: | Ответ: | Назначение: | |
---|---|---|---|
CACM | см. оригинал. | Запрос/сброс счётчика вызовов. | |
CAMM | см. оригинал. | Установка максимального значения для счётчика вызовов. | |
CAOC | см. оригинал. | Оповещение о стоимости вызова (в настоящее время модули A6 и A9 не поддерживают данную команду). | |
CPUC | см. оригинал. | Установка/запрос стоимости у.е. вызова и таблицы валют. | |
CCFC | см. оригинал. | Управление переадресацией вызовов. | |
CCWA | см. оригинал. | Управление услугой «ожидание вызова». | |
CLIP | см. оригинал. | Управление идентификацией вызывающей линии (АОН). | |
CLIR | см. оригинал. | Управление запретом идентификации вызывающей линии (анти АОН). | |
COLP | см. оригинал. | Управление идентификацией подключенной линии. | |
CSSN | см. оригинал. | Управление уведомлениями о дополнительных услугах. | |
CUSD | см. оригинал. | Управление и выполнение USSD запросов (Unstructured Supplementary Service data) | |
STA | см. оригинал. | Активация интерфейса SAT (SIM Application Toolkit) | |
STN | см. оригинал. | Уведомление STK (SIM ToolKit) | |
STGI | см. оригинал. | Запрос информации с STK (SIM ToolKit) | |
STR | см. оригинал. | Удалённый ответ SAT (SIM Application Toolkit) | |
STF | см. оригинал. | Установка формата ответов SAT (SIM Application Toolkit) |
AT-команды SMS:
AT-команда: | Ответ: | Назначение: | |
---|---|---|---|
CSDH | AT+CSDH=?rn (запрос допустимых значений) |
rn +CSDH: (0,1)rn rn OKrn |
Разрешить/запретить отображение заголовков текстовых сообщений в незапрашиваемых кодах результата:
|
AT+CSDH?rn (запрос текущей установки) |
rn +CSDH: ФЛАГrn rn OKrn |
||
AT+CSDH=ФЛАГrn (разрешить / запретить отображение заголовков) |
rn OKrn |
||
CSMP | AT+CSMP?rn (запрос текущих параметров) |
rn +CSMP: БАЙТ, ВРЕМЯ, ПРОТОКОЛ, КОДИРОВКАrn rn OKrn |
Установка/запрос параметров текстового режима:
|
AT+CSMP=БАЙТ, ВРЕМЯ, ПРОТОКОЛ, КОДИРОВКА,rn (установка параметров текстового режима) |
rn OKrn |
||
CMSS | AT+CMSS=ИНДЕКС [,НОМЕР [,ТИП]]rn (отправка SMS) |
rn +CMSS: ИНДЕКСотпрrn rn OKrn |
Отправка SMS сообщения из памяти:
|
CMGD | AT+CMGD=?rn (запрос допустимых значений) |
rn +CMGD: (ИНДЕКС),(СТАТУС)rn rn OKrn (значения зависят от выбранной предпочтительной области памяти) |
Удаление SMS сообщения из памяти:
|
AT+CMGD=ИНДЕКС,[СТАТУС]rn (удаление сообщений) |
rn OKrn |
||
CMGF | AT+CMGF=?rn (запрос допустимых значений) |
rn +CMGF: (0,1)rn rn OKrn |
Установка/запрос формата SMS сообщений (текстовый / PDU):
|
AT+CMGF?rn (запрос текущего формата) |
rn +CMGF: ФОРМАТrn rn OKrn |
||
AT+CMGF=ФОРМАТrn (установить формат SMS сообщений) |
rn OKrn |
||
CMGL | AT+CMGL=?rn (запрос допустимых значений) |
rn +CMGL: (СТАТУС)rn rn OKrn (значение СТАТУС зависит от выбранного формата) |
Чтение списка SMS сообщений из памяти:
|
AT+CMGL[=СТАТУС]rn (запрос на чтение списка сообщений) |
Строки списков зависят установленного формата и статуса сообщений:
Текстовый формат, принятое сообщение: Текстовый формат, отправл. сообщение: Формат PDU: |
||
CMGR | AT+CMGR=ИНДЕКСrn (чтение одного SMS сообщения) |
Строка ответа зависит от установленного формата и статуса сообщения:
Текстовый формат, принятое сообщение: Текстовый формат, отправл. сообщение: Текстовый формат, сообщение запроса статуса: Формат PDU: |
Чтение одного SMS сообщения из памяти:
|
CMGS | Отправка SMS в текстовом формате: AT+CMGS=«НОМЕР»[,ТИП]rn >rn ТЕКСТ(<0x1A>/<0x1B>) Отправка SMS в формате PDU: |
rn +CMGS: ИНДЕКСrn rn OKrn |
Отправка SMS сообщения без сохранения в память:
|
CMGW | Отправка SMS в текстовом формате: AT+CMGW=«НОМЕР»[,ТИП] [,СТАТУС]rn >rn ТЕКСТ(<0x1A>/<0x1B>) Отправка SMS в формате PDU: |
rn +CMGW: ИНДЕКСrn rn OKrn |
Запись SMS сообщения в память:
|
CNMA | AT+CNMA=?rn (запрос допустимых значений) |
rn NOT SUPPORTrn |
Запрос отчёта о доставке SMS сообщений:
|
Запрос отчёта в текстовом формате: AT+CNMArn Запрос отчёта в формате PDU: |
rn OKrn |
||
CNMI | AT+CNMI=?rn (запрос допустимых значений) |
rn +CNMI: (РЕЖИМ),(СООБЩЕНИЯ),(РАССЫЛКА),(ОТЧЁТЫ),(БУФЕР)rn rn OKrn |
Установка/запрос индикации новых сообщений:
|
AT+CNMI?rn (запрос текущих настроек индикации входящих сообщений) |
rn +CNMI: РЕЖИМ, СООБЩЕНИЯ, РАССЫЛКА, ОТЧЁТЫ, БУФЕРrn rn OKrn |
||
AT+CNMI=РЕЖИМ [,СООБЩЕНИЯ [,РАССЫЛКА [,ОТЧЁТЫ [,БУФЕР]]]]rn (установить настройки индикации входящих сообщений) |
rn OKrn |
||
CPMS | AT+CPMS=?rn (запрос допустимых значений) |
rn +CPMS: (ПАМЯТЬ1),(ПАМЯТЬ2),(ПАМЯТЬ3)rn rn OKrn |
Установка/запрос предпочтительной области памяти для хранения сообщений:
|
AT+CPMS?rn (запрос текущих настроек) |
rn +CPMS: «ПАМЯТЬ1»,ИСП,ОБЪЕМ, «ПАМЯТЬ2»,ИСП,ОБЪЕМ, «ПАМЯТЬ3»,ИСП,ОБЪЕМrn rn OKrn |
||
AT+CPMS=«ПАМЯТЬ1″ [,»ПАМЯТЬ2″ [,»ПАМЯТЬ3»]]rn (установить предпочтительную область памяти) |
rn +CPMS: «ПАМЯТЬ1»,ИСП,ОБЪЕМ, «ПАМЯТЬ2»,ИСП,ОБЪЕМ, «ПАМЯТЬ3»,ИСП,ОБЪЕМrn rn OKrn |
||
CSCA | AT+CSCA?rn (запрос текущего номера сервис-центра SMS сообщений) |
rn +CSCA: «НОМЕР»,ТИПrn rn OKrn |
Установка/запрос номера сервис-центра SMS сообщений:
|
AT+CSCA=«НОМЕР» [,ТИП]rn (установить номер сервис центра SMS сообщений) |
rn OKrn |
||
CSCB | AT+CSCB=?rn (запрос допустимых значений) |
rn +CSCB: (ТИПЫ)rn rn OKrn |
Установка/запрос типа принимаемых Cell Broadcast сообщений:
|
AT+CSCB?rn (запрос установленных типов) |
rn +CSCB: ТИП,«ID»,«ЯЗЫКИ»rn rn OKrn |
||
AT+CSCB=ТИП [,»ID» [,»ЯЗЫКИ»]]rn (установить тип принимаемых сообщений рассылки) |
rn OKrn |
||
CSAS | AT+CSASrn (сохранение настроек) |
rn OKrn |
Сохранение настроек:
|
CRES | AT+CRESrn (сохранение настроек) |
rn OKrn |
Восстановление настроек:
|
AT-команды аудиоинтерфейса:
AT-команда: | Ответ: | Назначение: | |
---|---|---|---|
CAUDIO | AT+CAUDIO=?rn (запрос допустимых значений) |
rn +CAUDIO: (0-1)rn rn OKrn |
Открыть / закрыть аудиопоток голосового вызова:
|
AT+CAUDIO=ФЛАГrn (открыть/закрыть аудиопоток) |
rn OKrn |
||
CRSL | AT+CRSL=?rn (запрос допустимых значений) |
rn +CRSL: (0-15)rn rn OKrn |
Запрос / установка уровня громкости звонка:
|
AT+CRSL?rn (запрос установленной громкости) |
rn +CRSL: ГРОМКОСТЬrn rn OKrn |
||
AT+CRSL=ГРОМКОСТЬrn (установить громкость звонка) |
rn OKrn |
||
CDTMF | AT+CDTMF=?rn (запрос допустимых значений) |
rn +VTS: (0-9,*,#,A,B,C,D),(1-10)rn rn OKrn |
Воспроизведение тонального сигнала DTMF:
|
AT+CDTMF=ЗНАЧЕНИЕ [, ДЛИТЕЛЬНОСТЬ]rn (открыть/закрыть аудиопоток) |
rn OKrn |
||
AUST | AT+AUST=?rn (запрос допустимых значений) |
rn +AUST: (0-2)rn rn OKrn |
Запуск тестового аудиоцикла:
|
AT+AUST=РЕЖИМrn (выбрать режим тестового аудиоцикла) |
rn OKrn |
||
AT+AUSTrn (запустить тестовый аудиоцикл) |
rn OKrn |
||
AUEND | AT+AUENDrn (остановка тестового аудиоцикла) |
rn OKrn |
Остановка тестового аудиоцикла:
|
SNFS | AT+SNFS=?rn (запрос допустимых значений) |
rn +SNFS: (0-2)rn rn OKrn |
Запрос / установка устройства ввода / вывода звука:
|
AT+SNFS?rn (запрос используемого устройства) |
rn +CRSL: УСТРОЙСТВОrn rn OKrn |
||
AT+SNFS=УСТРОЙСТВОrn (выбор устройства) |
rn OKrn |
AT-команды GPRS:
AT-команда: | Ответ: | Назначение: | |
---|---|---|---|
CGATT | см. оригинал. | Установка / разрыв GPRS соединения. | |
CGDCONT | см. оригинал. | Задание параметров PDP контекста. | |
CGACT | см. оригинал. | Активация / деактивация PDP контекста. | |
CRC | см. оригинал. | Включение / отключение результирующих кодов входящих соединений. | |
CGQMIN | см. оригинал. | Задание минимально допустимого профиля QoS (Quality of Service). | |
CGPADDR | см. оригинал. | Получение списка PDP адресов. | |
CGAUTO | см. оригинал. | Включение / отключение автоответа активации PDP контекста. | |
CGQREQ | см. оригинал. | Задание запрашиваемого профиля QoS (Quality of Service). | |
CGREG | см. оригинал. | Статус регистрации в сети GPRS. | |
ATD*99***1# | см. оригинал. | Запрос услуги GPRS (установка связи с PDN). | |
CGSMS | см. оригинал. | Выбор сервиса (GSM или GPRS) для отправки SMS сообщений. | |
CGANS | см. оригинал. | Ручной ответ активации PDP контекста на запрос сети (см CGAUTO). | |
CGEREP | см. оригинал. | Включение / отключение результирующих кодов о событиях GPRS. | |
CGDATA | см. оригинал. | Установка связи с сетью (аналогично команде ATD*99***1#) | |
CGCLASS | см. оригинал. | Запрос / установка GPRS класса мобильного устройства. |
AT-команды TCP/IP:
AT-команда: | Ответ: | Назначение: | |
---|---|---|---|
CIPSTART | см. оригинал. | Открытие соединения TCP или UDP. | |
CIPSEND | см. оригинал. | Отправка данных через TCP или UDP соединение. | |
CIPCLOSE | см. оригинал. | Закрытие соединения TCP или UDP. | |
CIPSHUT | см. оригинал. | Отключение беспроводного соединения. | |
CSTT | см. оригинал. | Ввод имени точки доступа, логина и пароля. | |
CIICR | см. оригинал. | Установка беспроводного соединения. | |
CIFSR | см. оригинал. | Получение локального IP-адреса. | |
CIPSTATUS | см. оригинал. | Запрос состояния текущего соединения. | |
CIPATS | см. оригинал. | Установка таймера автоматической отправки | |
CIPSCONT | см. оригинал. | Сохранение параметров контекста TCP/IP. | |
CDNSGIP | см. оригинал. | Запрос IP-адреса указанного доменного имени. |
AT-команды дополнительные:
AT-команда: | Ответ: | Назначение: | |
---|---|---|---|
CLDSTART | см. оригинал. | Автоматическое подключение к облачной платформе Anxin Keyun. | |
CLDSTOP | см. оригинал. | Отключение от облачной платформы Anxin Keyun. | |
CLDSEND | см. оригинал. | Отправка данных на облачный сервис Anxin Keyun. | |
CLDUNBIND | см. оригинал. | Освобождение облачного сервиса Anxin Keyun. |
Незапрашиваемые коды результата (URC)
Код: | Пример: | Причина отправки кода и его формат: |
---|---|---|
RING | RINGrn +CLIP: «+74995001456»,145,,,,0rn |
Информирование о наличии входящего голосового вызова. |
+CALA | +CALA: «Conference»rn | Информирование о срабатывании будильника. Включить/отключить отправку URC можно командой AT+CALA. |
+CIEV | +CIEV: «MESSAGE»,1rn +CIEV: battchg, 5rn +CIEV: signal, 99rn +CIEV: «SOUNDER»,1rn +CIEV: «CALL»,1rn +CIEV: service, 1rn +CIEV: roam, 1 rn service |
Информирование о различных изменениях. |
+CREG | +CREG: 1rn или +CREG: 1,»262A»,»346A»rn |
Информирование о статусе регистрации в сети и о местоположении. Включить/отключить отправку URC и задать формат можно командой AT+CREG.
|
+CLIP | RINGrn +CLIP: «+74995001456»,145,,,,0rn |
Вывод телефонного номера звонящего абонента. |
+CMTI | +CMTI: «SM», 6rn | Информирование о новом входящем SMS сообщении. Включить/отключить отправку URC можно командой AT+CNMI, а командой AT+CSDH можно разрешить/запретить отображение заголовков входящих SMS.
|
+CMT | +CMT: «+7926…», ,»2018/04/27,13:17:17+03″, 145, 17, 0, 0, «+79262909090», 145, 8rn Privetrn |
Информирование о новом входящем SMS сообщении. Включить/отключить отправку URC можно командой AT+CNMI, а командой AT+CSDH можно разрешить/запретить отображение заголовков входящих SMS.
|
+CSSI +CSSU |
+CSSI: 3rn | Информирование о дополнительной услуге.
|
+CUSD | +CUSD: 2, «00370039002E0038003900200440002E» ,72rn | USSD ответ. Ответ на команду AT+CUSD считается ответом URC, так как он приходит не от DCE (модуля), а от сети. Формат ответа см. в описании команды AT+CUSD. |
^SBC | ^SBC:UNDERVOLTAGErn | Информирование о низком напряжении аккумулятора. Включить/отключить отправку URC можно командой AT+CBCM. Модуль выключится в течение минуты после данного сообщения. |
^STN | ^STN: 37rn | Уведомление STK (SIM ToolKit). |
^CBCI | ^CBCI: 0,100,0,4487rn | Информирование об уровне заряда аккумулятора. |
+CCWA | +CCWA: «+74995001456»,145,1,,255rn | Индикация ожидания вызова. |
|
- Радиоэлектроника
- Цифровая электроника
- Отладочные комплекты
- ESP8266
Добавлено 9 июня 2018 в 09:01
ESP8266 в своей конфигурации по умолчанию загружается в режим последовательного модема. В этом режиме вы можете общаться с ним с помощью набора AT-команд. AT-команды ESP8266 можно разделить на три категории: базовые, уровень Wi-Fi и уровень TCP/IP. Ниже приведен список всех базовых AT команд, поддерживаемых ESP8266, с объяснением, что они делают, и как их использовать.
Варианты команд
Каждая команда имеет до 4 вариантов, изменяющих ее назначение. Вы можете выбирать между ними, добавляя одно из четырех возможных значений в конце основной команды. Эти четыре дополнения могут иметь следующие значения: ""
, =<parameter|[parameters]>
, "?"
, =?
.
Тип | Формат команды | Описание |
---|---|---|
Тест | AT+<x>=? |
Запрос внутренних параметров и диапазона их значений для заданной команды. |
Запрос | AT+<x>? |
Возвращает текущее значение параметра. |
Установка | AT+<x>=<…> |
Установка параметров, заданных в команде пользователем, и запуск этой команды. |
Выполнение | AT+<x> |
Запуск команды без заданных пользователем параметров. |
Примечание:
- не все команды поддерживают все 4 варианта;
- квадратные скобки
[]
обозначают значение по умолчанию; оно либо не требуется, либо может не отображаться; - строковые значения необходимо заключать в двойные кавычки, например,
AT+CWSAP="ESP756290","21030826", 1,4
; - скорость передачи данных по умолчанию равна 115200;
- AT команды должны печататься заглавными буквами и оканчиваться новой строкой (
CR LF
).
Базовые AT команды
Список команд
Команда | Описание |
---|---|
AT |
Проверить запуск AT |
AT+RST |
Перезапустить модуль |
AT+GMR |
Проверить информацию о версии |
AT+GSLP |
Войти в режим глубокого сна |
ATE |
Настроить эхо AT команд |
AT+RESTORE |
Сбросить модуль на заводские настройки |
AT+UART_CUR |
Текущая конфигурация UART |
AT+UART_DEF |
Конфигурация UART по умолчанию, сохраненная во флеш-памяти |
AT+SLEEP |
Настройка режимов сна |
AT+WAKEUPGPIO |
Настройка GPIO для просыпания ESP8266 из режима легкого сна |
AT+RFPOWER |
Установка максимального значения RF мощности передачи |
AT+RFVDD |
Установка RF мощности передачи в соответствии с VDD33 |
AT+RFAUTOTRACE |
Установка подстройки радиочастоты |
AT+SYSRAM |
Проверка доступного размера RAM |
AT+SYSADC |
Проверка значения АЦП |
AT+SYSIOSETCFG |
Установка конфигурации выводов ввода/вывода |
AT+SYSIOGETCFG |
Получение конфигурации выводов ввода/вывода |
AT+SYSGPIODIR |
Настройка направления выводов ввода/вывода общего назначения (GPIO) |
AT+SYSGPIOWRITE |
Настройка выходного уровня GPIO |
AT+SYSGPIOREAD |
Проверка входного уровня GPIO |
AT+SYSMSG_CUR |
Текущая установка системных сообщений |
AT+SYSMSG_DEF |
Установка системных сообщений по умолчанию |
Команды
AT
– проверить запуск AT-
Команда выполнения AT
Отклик OK Параметры – AT+RST
– перезапустить модуль-
Команда выполнения AT+RST
Отклик OK Параметры – AT+GMR
– проверить информацию о версии-
Команда выполнения AT+GMR
Отклик <AT version info>
<SDK version info>
<compile time>OK
Параметры - <AT version info> – информация о версии AT
- <SDK version info> – информация о версии SDK
- <compile time> – продолжительность времени компиляции BIN
AT+GSLP
– войти в режим глубокого сна-
Команда установки AT+GSLP=<time>
Отклик <time> OK
Параметры <time>
– продолжительность сна ESP8266. Единицы измерения: миллисекунды. После указанного времени ESP8266 выйдет из режима глубокого сна.Примечание Перед входом модуля в режим глубокого сна необходимо выполнить небольшую настройку, т.е. подключить XPD_DCDC к EXT_RSTB с помощью 0-омного резистора. ATE
– включение/выключение эхо-
Команда выполнения ATE
Отклик OK Параметры ATE0
– выключает эхо.ATE1
– включает эхо.
Примечание Данная команда ATE
используется для вызова эхо. Это означает, что при использовании командыATE
введенные команды могут быть возвращены эхом назад отправителю. Возможны два параметра. Команда возвращает OK в нормальном случае и ERROR, когда был указан параметр, отличающийся от 0 или 1. AT+RESTORE
– сброс на заводские настройки-
Команда выполнения AT+RESTORE
Отклик OK Примечание Выполнение этой команды сбросит все параметры, сохраненные во флеш-памяти, и восстановит заводские настройки модуля. После выполнения команды чип будет перезапущен. AT+UART_CUR
– текущая конфигурация UART, не сохраненная во флеш-памяти-
Команда Команда запроса: AT+UART_CUR?
Команда установки: AT+UART_CUR=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>
Отклик +UART_CUR=<baudrate>,<databits>,<stopbits>,<parity>,<flow control> OK
OK Примечание Команда AT+UART_CUR?
вернет фактическое значение параметров конфигурации UART, которое может иметь допустимую ошибку по сравнению с установленным значением из-за деления тактовой частоты.Например, если скорость передачи данных UART установлена равной 115200, то скорость, возвращаемая командой
AT+UART_CUR?
, может быть равна 115273.Параметры <baudrate>
– скорость передачи данных UART;<databits>
– биты данных- 5 – 5 битов данных
- 6 – 6 битов данных
- 7 – 7 битов данных
- 8 – 8 битов данных
<stopbits>
– стоповые биты- 1 – 1 стоповый бит
- 2 – 1,5 стоповых бита
- 3 – 2 стоповых бита
<parity>
– бит четности- 0 – нет
- 1 – нечетность
- 2 – четность
<flow control>
– управление потоком- 0 – управление потоком выключено
- 1 – включен RTS
- 2 – включен CTS
- 3 – включены и RTS, и CTS
Примечания - Изменения конфигурации НЕ сохраняются во флеш-памяти.
- Использование управления потоком требует поддержки от аппаратных средств:
- MTCK – это UART0 CTS;
- MTDO – это UART0 RTS.
- Передача данных поддерживается на скоростях в диапазоне 110 – 115200*40.
Пример AT+UART_CUR=115200,8,1,0,3
AT+UART_DEF
– конфигурация UART по умолчанию, сохраненная во флеш-памяти-
Команда Команда запроса: AT+UART_DEF?
Команда установки: AT+UART_DEF=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>
Отклик +UART_DEF=<baudrate>,<databits>,<stopbits>,<parity>,<flow control> OK
OK Параметры <baudrate>
– скорость передачи данных UART;<databits>
– биты данных- 5 – 5 битов данных
- 6 – 6 битов данных
- 7 – 7 битов данных
- 8 – 8 битов данных
<stopbits>
– стоповые биты- 1 – 1 стоповый бит
- 2 – 1,5 стоповых бита
- 3 – 2 стоповых бита
<parity>
– бит четности- 0 – нет
- 1 – нечетность
- 2 – четность
<flow control>
– управление потоком- 0 – управление потоком выключено
- 1 – включен RTS
- 2 – включен CTS
- 3 – включены и RTS, и CTS
Примечания - Изменения конфигурации сохраняются в области пользовательских параметров во флеш-памяти, и будут по-прежнему действительны, когда чип будет снова включен.
- Использование управления потоком требует поддержки от аппаратных средств:
- MTCK – это UART0 CTS;
- MTDO – это UART0 RTS.
- Передача данных поддерживается на скоростях в диапазоне 110 – 115200*40.
Пример AT+UART_DEF=115200,8,1,0,3
AT+SLEEP
– настройка режимов сна-
Команда Команда запроса: AT+SLEEP?
Команда установки: AT+SLEEP=<sleep mode>
Отклик +SLEEP:<sleep mode> OK
OK Параметр <sleep mode>: - 0 – режим сна выключен
- 1 – режим легкого сна
- 2 – модемный режим сна
Примечания Данная команда может использоваться только в режиме станции. Режим сна по умолчанию – это модемный режим сна. Пример AT+SLEEP=0
AT+WAKEUPGPIO
– настройка GPIO для просыпания ESP8266 из режима легкого сна-
Команда установки AT+WAKEUPGPIO=<enable>,<trigger_GPIO>,<trigger_level>[,<awake_GPIO>,<awake_level>]
Отклик OK Параметры <enable>
- 0 – ESP8266 НЕ может быть выведен из режима легкого сна с помощью GPIO
- 1 – ESP8266 может быть выведен из режима легкого сна с помощью GPIO
<trigger_GPIO>
- устанавливает GPIO, который будет будить ESP8266; значение в диапазоне [0…15]
<trigger_level>
- 0 – GPIO будит ESP8266 при низком уровне
- 1 – GPIO будит ESP8266 при высоком уровне
[<awake_GPIO>]
- необязательно; данный параметр используется для выбора GPIO в качестве флага о просыпании ESP8266 из режима легкого сна; значение в диапазоне [0…15]
[<awake_level>]
- необязательно
- 0 – GPIO устанавливается в низкий уровень после процесса пробуждения
- 1 – GPIO устанавливается в высокий уровень после процесса пробуждения
Примечания - Поскольку системе требуется некоторое время для выхода из режима легкого сна, предполагается, что перед отправкой следующей AT команды необходимо подождать минимум 5 мс.
- Значения
<trigger_GPIO>
и<awake_GPIO>
в команде должны быть разными. - После пробуждения с помощью
<trigger_GPIO>
из режима легкого сна, когда ESP8266 пытается уснуть снова, это можно проверить по состоянию<trigger_GPIO>
:- если он всё еще в состоянии пробуждения, ESP8266 войдет в модемный режим сна;
- если он НЕ в состоянии пробуждения, ESP8266 войдет в режим легкого сна.
Пример - Настроить ESP8266 на пробуждение из режима легкого сна, когда на GPIO0 низкий уровень:
AT+WAKEUPGPIO=1,0,0
- Настроить ESP8266 на пробуждение из режима легкого сна, когда на GPIO0 высокий уровень. После пробуждения на GPIO13 установить высокий уровень.
AT+WAKEUPGPIO=1,0,1,13,1
- Выключить функцию, которая будит ESP8266 из режима легкого сна с помощью GPIO.
AT+WAKEUPGPIO=0
AT+RFPOWER
– установка максимального значения RF мощности передачи-
Команда установки AT+RFPOWER=<TX Power>
Отклик OK Параметры <TX Power> – максимальное значение RF мощности передачи; значение в диапазоне [0…82]; единица: 0,25 дБм. Примечание Данная команда устанавливает максимальное значение RF мощности передачи ESP8266; это неточно. Реальное значение может быть меньше, чем установленное значение. Пример AT+RFPOWER=50
AT+RFVDD
–установка RF мощности передачи в соответствии с VDD33-
Команда Команда запроса: AT+RFVDD?
Назначение: проверяет значение на VDD33 ESP8266.Команда установки: AT+RFVDD=<VDD33>
Назначение: устанавливает RF мощность передаи в соответствии с<VDD33>
.Команда выполнения: AT+RFVDD
Назначение: автоматически устанавливает RF мощность передачи.Отклик +RFVDD:<VDD33> OK
OK OK Параметр <VDD33>
– напряжение питания на VDD33 ESP8266; единица: 1/1024 вольта.<VDD33>
– напряжение питания на VDD33 ESP8266; диапазон значений: [1900…3300].– Примечание Данная команда должна использоваться, только когда вывод TOUT висит в воздухе, иначе возвращаемое значение будет неправильным. Для правильного измерения напряжения на VDD33 вывод TOUT должен висеть в воздухе. Пример AT+RFVDD=2800
AT+RFAUTOTRACE
– установка подстройки радиочастоты-
Команда Команда запроса: AT+RFAUTOTRACE?
Команда установки: AT+RFAUTOTRACE=<enable>
Отклик +RFAUTOTRACE:<enable> OK
OK Параметры <enable>
- 0 – подстройка RF частоты выключена
- 1 – подстройка RF частоты включена
Примечания - Функция подстройки RF частоты по умолчанию включена.
- Конфигурация будет сохранена в области пользовательских параметров во флеш-памяти и вступит в силу после перезагрузки чипа.
Пример AT+RFAUTOTRACE=0
AT+RST AT+SYSRAM
– проверка доступного размера RAM-
Команда запроса AT+SYSRAM?
Отклик +SYSRAM:<remaining RAM size> OK
Параметр <remaining RAM size>
– оставшееся пространство ОЗУ, единица: байт. AT+SYSADC
– проверка значения АЦП-
Команда запроса AT+SYSADC?
Отклик +SYSADC:<ADC> OK
Параметр <ADC>
– значение АЦП; единица: 1/1024 вольта. AT+SYSIOSETCFG
– установка конфигурации выводов ввода/вывода-
Команда установки AT+SYSIOSETCFG=<pin>,<mode>,<pull-up>
Отклик OK Параметры <pin>
– номер IO вывода<mode>
– рабочий режим IO вывода<pull-up>
- 0 – выключить подтяжку
- 1 – включить подтяжку на IO выводе
Примечание Для использования команд AT+SYSIO...
посмотрите список выводов ESP8266.Пример AT+SYSIOSETCFG=12,3,1
// настроить GPIO12 для работы в качестве GPIO AT+SYSIOGETCFG
– проверить режим работы выводов ввода/вывода-
Команда установки AT+SYSIOGETCFG=<pin>
Отклик +SYSIOGETCFG:<pin>,<mode>,<pull-up> OK
Параметр <pin>
– номер IO вывода<mode>
– рабочий режим IO вывода<pull-up>
- 0 – подтяжка выключена
- 1 – подтяжка на IO выводе включена
Примечание Для использования команд AT+SYSIO...
посмотрите список выводов ESP8266. AT+SYSGPIODIR
– настройка направления выводов ввода/вывода общего назначения (GPIO)-
Команда установки AT+SYSGPIODIR=<pin>,<dir>
Отклик - Если настройка успешна, то команда вернет
OK - Если IO вывод не в режиме GPIO, команда вернет
NOT GPIO MODE!
ERROR
Параметры <pin>
– номер GPIO вывода<dir>
- 0 – настраивает GPIO как вход
- 1 – настраивает GPIO как выход
Примечание Для использования команд AT+SYSIO...
посмотрите список выводов ESP8266.Пример AT+SYSIOSETCFG=12,3,1
// настраивает GPIO12 для работы как GPIOAT+SYSGPIODIR=12,0
// настраивает GPIO12 для работы как вход - Если настройка успешна, то команда вернет
AT+SYSGPIOWRITE
– настройка выходного уровня GPIO-
Команда установки AT+SYSGPIOWRITE=<pin>,<level>
Отклик - Если настройка успешна, то команда вернет
OK - Если IO вывод не в режиме выхода, команда вернет
NOT OUTPUT!
ERROR
Параметры <pin>
– номер GPIO вывода<level>
- 0 – низкий уровень
- 1 – высокий уровень
Примечание Для использования команд AT+SYSIO...
посмотрите список выводов ESP8266.Пример AT+SYSIOSETCFG=12,3,1
// настраивает GPIO12 для работы как GPIOAT+SYSGPIODIR=12,1
// настраивает GPIO12 для работы как выходAT+SYSGPIOWRITE=12,1
// устанавливает на выходе GPIO12 высокий уровень - Если настройка успешна, то команда вернет
AT+SYSGPIOREAD
– прочитать входной уровень на GPIO-
Команда установки AT+SYSGPIOREAD=<pin>
Отклик - Если конфигурация успешна, команда вернет
+SYSGPIOREAD:<pin>,<dir>,<level>
OK - Если IO вывод не в режиме GPIO, команда вернет
NOT GPIO MODE!
ERROR
Параметры <pin>
– номер GPIO вывода<dir>
- 0 – GPIO настроен как вход
- 1 – GPIO настроен как выход
<level>
- 0 – низкий уровень
- 1 – высокий уровень
Примечание Для использования команд AT+SYSIO...
посмотрите список выводов ESP8266.Пример AT+SYSIOSETCFG=12,3,1
// настраивает GPIO12 для работы как GPIOAT+SYSGPIODIR=12,0
// настраивает GPIO12 для работы как входAT+SYSGPIOREAD=12
- Если конфигурация успешна, команда вернет
AT+SYSMSG_CUR
– текущая установка системных сообщений-
Команда установки AT+SYSMSG_CUR=<n>
Отклик OK Параметры <n>
- бит 0 – настраивает сообщение о прекращении сквозной передачи WiFi-UART
- если бит 0 равен 0, то при прекращении сквозной передачи WiFi-UART нет сообщения; по умолчанию 0;
- если бит 0 равен 1, то при выходе из скозной передачи WiFi-UART будет сообщение
+QUITT // выход из прозрачной передачи
- бит 1 – настраивает сообщение об установлении сетевой передачи
- если бит 1 равен 0, то при установлении сетевого соединения будет выдано сообщение
<Link_ID>,CONNECT
по умолчанию 0; - если бит 1 равен 1, при установлении сетевого соединения будет выдано сообщение
+LINK_CONN:<status_type>,<link_id>,»UDP/TCP/SSL»,<c/s>,<remote_ip>,
<remote_port>,<local_port>- <status_type>
- 0 – соединение установлено успешно
- 1 – неудача при установлении соединения
- <c/s>
- 0 – ESP работает как клиент
- 1 – ESP работает как сервер
- <status_type>
- если бит 1 равен 0, то при установлении сетевого соединения будет выдано сообщение
Примечание Изменения конфигурации НЕ сохраняются во флеш-памяти. Пример AT+SYSMSG_CUR=3
- бит 0 – настраивает сообщение о прекращении сквозной передачи WiFi-UART
AT+SYSMSG_DEF
– установка системных сообщений по умолчанию-
Команда установки AT+SYSMSG_DEF=<n>
Отклик OK Параметры <n>
- бит 0 – настраивает сообщение о прекращении сквозной передачи WiFi-UART
- если бит 0 равен 0, то при прекращении сквозной передачи WiFi-UART нет сообщения; по умолчанию 0;
- если бит 0 равен 1, то при выходе из скозной передачи WiFi-UART будет сообщение
+QUITT // выход из прозрачной передачи
- бит 1 – настраивает сообщение об установлении сетевой передачи
- если бит 1 равен 0, то при установлении сетевого соединения будет выдано сообщение
<Link_ID>,CONNECT
по умолчанию 0; - если бит 1 равен 1, при установлении сетевого соединения будет выдано сообщение
+LINK_CONN:<status_type>,<link_id>,»UDP/TCP/SSL»,<c/s>,<remote_ip>,
<remote_port>,<local_port>- <status_type>
- 0 – соединение установлено успешно
- 1 – неудача при установлении соединения
- <c/s>
- 0 – ESP работает как клиент
- 1 – ESP работает как сервер
- <status_type>
- если бит 1 равен 0, то при установлении сетевого соединения будет выдано сообщение
Примечание Изменения конфигурации сохраняются в области пользовательских параметров во флеш-памяти. Пример AT+SYSMSG_DEF=3
- бит 0 – настраивает сообщение о прекращении сквозной передачи WiFi-UART
Теги
AT командаESP8266Wi-FiWi-Fi модульОтладочная плата
На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять
комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.
В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации
комментария требуется время на премодерацию.
Обновлено 05 декабря 2017
|
02 |
|
03 |
В этой статье цикла будут подробно описаны AT-команды, правильное программирование отправки AT-команд и получения ответов на них, подключение динамика и микрофона для осуществления звонков, отправка и получение SMS-сообщений, управление при помощи SMS. |
05 |
Перед тем как приступить к программированию взаимодействия с GSM-модулем, необходимо ознакомиться с типами AT-команд. |
06 |
Синтаксис AT-команд Как уже было сказано выше, общение с модулем происходит при помощи AT-команд. Каждая AT-команда должна начинаться с двух букв AT, набранных в любом регистре: AT, aT, At, at. Команда должна начинаться с новой строки (параметр Newline в окне Serial). |
07 |
Все AT-команды синтаксически делятся на 3 основные группы: базовые, с параметром S и расширенные. |
08 |
Базовые команды имеют следующий синтаксис: AT<x><n> или AT&<x><n>, где <x> является командой, а <n> — передаваемым параметром (параметрами). Параметр(-ы) <n> является необязательным и в случае его отсутствия будет использовано значение по-умолчанию. Примерами могут служить, отправляемая ранее, команда ATI, возвращающая идентификационные данные модуля, или команда AT&V возвращающая текущую конфигурацию модуля. |
09 | На заметку: |
Команды ATV и AT&V — это разные команды. |
10 |
Команды с параметром S выглядят следующим образом: ATS<i>=<m>, где <i> — индекс S-регистра, а <m> — значение, которое ему необходимо присвоить. В случае отсутствия значения <m>, будет присвоено значение по-умолчанию. Например, регистр ATS0 отвечает за количество гудков перед автоматическим ответом на входящий вызов, и, соответственно, команда ATS0 установит значение по умолчанию — 0 (не отвечать на вызов), а команда ATS0=2 заставит отвечать модуль автоматически после 2 гудка. |
11 |
Расширенные команды могут вызываться в нескольких режимах: |
AT-команды (от англ. ATtention — «внимание») — набор команд, состоящий из серий коротких текстовых строк, которые объединяются вместе, чтобы сформировать полные команды операций, таких как набор номера, начала соединения или изменения параметров подключения. Подробно с полным набором AT-команд можно ознакомиться в официальном руководстве — SIM800 Series_AT Command Manual_V1.09.pdf (3,07 MB) |
12 |
|
13 |
Примером использования расширенных команд могут являться команды для управления FM-радио — AT+FMOPEN, AT+FMCLOSE и т.д. Об этом будет подробно рассказано в соответствующем разделе данной статьи. |
14 |
В качестве примера данной группы команд, также можно привести команду AT+IPR. Командой AT+IPR=? можно узнать значения, которые может принимать параметр. Командой AT+IPR? можно узнать текущую скорость обмена данными с модулем, а командой AT+IPR=<…> — задать другую скорость. |
16 | На заметку: |
Для того, чтобы использовать скорости выше 9600 бод, необходимо спаивать элементы схемы. В схеме, собранной на макетной плате, при обмене данными на высоких скоростях возникают проблемы. |
17 |
В одной строке можно указывать несколько команд. Все последующие команды (исключая первую) записываются без префикса AT. После каждой расширенной команды необходимо ставить точку с запятой ;. После базовых команд или команд с параметром S, точка с запятой ; не нужна. Пример: |
18 |
1 ATV0E1+DDET=1,0,1;Q0S0=1+CLIP=1;+CMGF=1;&W |
19 |
Длина всей строки с несколькими командами не должна превышать 556 символов (не считая начального префикса AT). |
20 |
AT-командой A/ можно повторить предыдущую команду. |
21 |
За дублирование в терминале отправленной команды отвечает параметр Echo Mode. Для изменения значения этого параметра существует команда ATE<value>, где <value> — значение параметра, 0 — выключен, 1 — включен (по умолчанию). Например, команда ATE0 отключит этот режим, а команда ATE1 включит. |
22 |
Существует также команда ATV<value>, которая отвечает за формат ответов модуля на отправляемые команды — текстовый (<value>=1, по-умолчанию, ответы вида OK, CONNECT, RING, ERROR и т. д.) и цифровой код (<value>=0, ответы вида 0, 1, 2, 3 и т. д.). Например, команда ATV0 включит цифровой формат ответов, а команда ATV1 — текстовый. |
23 |
Работа с ошибками Как правило, в ответ на отправленные команды, в случае успешного их исполнения, модуль возвращает OK. Но если команда не была исполнена, модуль сообщит об ошибке исполнения. |
24 |
В модуле SIM800L существует параметр, устанавливающий степень информативности выпадающих ошибок. |
Функция | Команда | Структура ответа | Пример ответа |
Получение актуального значения параметра | AT+CMEE? | +CMEE: <n> OK <n> — информирование об ошибках 0 — сообщение о собственно наличии ошибки ERROR |
+CMEE: 0
OK |
Команда записи нового значения | AT+CMEE=<n> | OK | OK |
26 |
Для работы через терминал в ручном режиме удобно использовать значение этого параметра 2 — AT+CMEE=2. |
27 |
Теперь, после установки расширенного информирования об ошибках, можно попробовать отправить несуществующую команду ATE?, на что модем ответит развернуто: +CME ERROR: unknown (неизвестная команда). |
28 |
Незапрашиваемые уведомления Есть ещё одна категория сообщений получаемых от модуля — незапрашиваемые уведомления. Это сообщения, которые, как видно из названия, могут приходить без совершения пользователем каких-либо действий. |
29 |
Самыми распространенными примерами незапрашиваемых уведомлений, являются: |
Незапрашиваемое уведомление или незапрашиваемый код результата (англ. Unsolicited notification, Unsolicited Result Code) — сообщение от GSM-модуля, генерируемое самим модулем в ответ на изменение своего состояния, не спровоцированное отправленной AT-командой. Полный перечень незапрашивамых уведомлений приведен в разделе 19.3 Справочника по AT-командам (3,07 MB)) |
30 |
|
31 | На заметку: |
Команды ATE и ATV никак не влияют на формат незапрашиваемых уведомлений (Unsolicited Result Code). |
32 |
О сохранении установленных параметров Несмотря на то, что модуль SIM800L это сложное устройство со своей энергонезависимой памятью, не каждый параметр, установленный какой-либо AT-командой, может быть в ней сохранен. В документации по AT-командам, у каждой команды есть свойство Режим сохранения (Parameter Saving Mode), которое дает пользователю информацию о том, что случится с установленным параметром после перезагрузки устройства. Это очень важное свойство AT-команд, необходимо учитывать при написании программ. Например, в программе используется АОН (автоматический определитель номера), который включается командой AT+CLIP=1. Но этот параметр не сохраняемый, а значит активировать его нужно при каждом запуске. В то же время режим DTMF (активируется командой AT+DDET=1), может быть сохранен и после перезагрузки его значение не изменится. |
33 |
Поведение каждого из параметров, характеризуется одним из трех значений свойства Parameter Saving Mode:
|
34 |
Как правильно программировать взаимодействие с модемом — команды и ответы Программирование взаимодействия с модулем не такая очевидная задача, какой кажется на первый взгляд. |
35 | На заметку: |
В готовых проектах, в целях экономии памяти МК рекомендуется использовать комбинацию параметров: отключенный Echo Mode (ATE0), цифровой формат ответов модуля (ATV0) и цифровой код ошибок (AT+CMEE=1). Для единовременной установки всех параметров можно выполнить следующую команду (&W от AT&W — сохранить): В образовательных целях и тестировании ПО: включенный (по умолчанию) Echo Mode (ATE1), текстовый (по умолчанию) формат ответов модуля (ATV1) и текстовый код ошибок (AT+CMEE=2). |
36 |
Все примеры далее выполняются после, единожды выполненной в терминале, команды ATE1V1+CMEE=2;&W. |
37 |
На выполнение каждой команды модулю требуется время. Отправив модулю последовательно несколько команд, он, прекрасно справится и отчитается об успешном выполнении. |
38 | Arduino (C++) |
1 #include <SoftwareSerial.h> void setup() { void loop() { |
39 |
Ответ на вторую команду пришел четвертым. Причем порядок исполнения постоянно меняется. |
40 |
Но при внимательном рассмотрении видно, что порядок ответов не совпадает с порядком отправленных команд, а это значит, что невозможно однозначно идентифицировать соответствие пришедшего ответа отправленной команде. |
41 |
Но что произойдет, если в списке команд будет команда, которая исполнится с ошибкой (AT+DDET=1,0,3)? |
42 | Arduino (C++) |
1 #include <SoftwareSerial.h> void setup() { SIM800.println(«AT+DDET=1,0,3»);
SIM800.println(«AT+CLIP=1»); void loop() { |
44 |
Вряд ли кто-то со 100% уверенностью сможет сказать, в ответ на исполнение каких команд модуль ответил OK, в какой команде ошибка, и какова судьба последней команды AT+CLIP=1? |
45 |
Первой мыслью, которая может прийти в голову — дожидаться выполнения каждой команды, и потом отправлять следующую. А паузу мы можем делать при помощи функции delay(): |
46 | Arduino (C++) |
1 #include <SoftwareSerial.h> void setup() { void loop() { |
47 |
Запустив скетч, можно с удивлением обнаружить, что после команды AT+DDET=1,0,3 наступает глубокая неизвестность о её дальнейшей судьбе и судьбе последней команды. |
49 |
Такой же ошибкой грешит большинство примеров в сети по отправке SMS. Некорректный пример: |
50 | Arduino (C++) |
1 void sendSMS(String phone, String message) |
51 | Важно: |
Неправильно устанавливать паузы для того, чтобы дать модулю выполнить команду. Дело в том, что во время ожидания МК «парализован» и игнорирует всю информацию отправляемую модулем. |
52 | На заметку: |
Корректная функция отправки SMS будет приведена в соответствующем разделе ниже |
53 |
Более корректным является подход, при котором МК остановит исполнение программы до тех пор, пока не будет получен ответ на отправленную команду. Для этого, автор предлагает использовать следующие 2 функции — sendATComand() и waitResponse(): |
54 | Arduino (C++) |
1 String sendATCommand(String cmd, bool waiting) { if (_resp.startsWith(cmd)) { String waitResponse() { |
55 |
В функции sendATCommand(cmd, waiting) первый параметр содержит отправляемую команду, а второй параметр waiting задает, нужно ли программе дожидаться ответа от GSM-модуля или нет. |
56 | На заметку: |
Если Echo Mode выключен, строки 8-10 в предыдущем коде (функция sendATCommand()) можно закомментировать. |
57 |
При таком подходе, появляется возможность, во-первых, дожидаться ответа от модуля, когда это необходимо, а во-вторых, появляется возможность анализировать полученный ответ: |
58 | Arduino (C++) |
1 #include <SoftwareSerial.h> String _response = «»; sendATCommand(«AT», true); do { _response = sendATCommand(«AT+CLIP=1», true); _response.trim(); } while (_response != «OK»); Serial.println(«CLI enabled»); } String sendATCommand(String cmd, bool waiting) { if (_resp.startsWith(cmd)) { String waitResponse() { void loop() { |
59 |
Все команды строго по порядку, друг за другом, вне зависимости от статуса исполнения |
60 |
Теперь остается немного модифицировать процедуру loop() таким образом, чтобы можно было анализировать прочие незапрашиваемые ответы и уведомления в основном теле программы: |
61 | Arduino (C++) |
1 void loop() { } |
62 |
Здесь и далее, предлагается использовать данный шаблон в качестве основы для написания программ: |
63 | Arduino (C++) |
1 #include <SoftwareSerial.h> String _response = «»; sendATCommand(«AT», true); } String sendATCommand(String cmd, bool waiting) { if (_resp.startsWith(cmd)) { String waitResponse() { void loop() { } |
64 |
Входящие/исходящие вызовы Возможны ситуации, когда необходимо воспользоваться голосовыми функциями модуля SIM800L, а именно осуществлять исходящие звонки в качестве оперативных уведомлений, либо принимать входящие звонки, для осуществления управления по DTMF. Для использования голосовых функций по прямому назначению, к аудиоинтерфейсам микрофона (MICP и MICN) и колонок (SPKP и SPKN) можно напрямую подключить раздельные динамик и микрофон: |
66 |
Либо проводную гарнитуру, через разъем Jack 3.5 мм PJ-342: |
68 |
В данном примере полярность подключения значения не имеет |
69 |
Основные команды для управления голосовыми функциями представлены в таблице: |
Описание | Команда, описание параметров | Ответы | Пример |
Осуществить исходящий вызов | ATD<phonenumber>; <phonenumber> — номер вызываемого абонента в полном формате (+78004522441 или 88004522441) |
OK, BUSY, NO DIALTONE и др. |
ATD+78004522441;
OK |
Повторить набор последнего набранного номера | ATDL | OK, BUSY, NO DIALTONE и др. |
ATDL
OK |
Установка громкости динамика во время разговора | AT+CLVL=<level> <level> — необходимый уровень громкости (целое число в диапазоне 0…100) автоматически сохраняемое значение |
OK, ERROR |
AT+CLVL=100
OK |
Установка громкости звонка | AT+CRSL=<level> <level> — необходимый уровень громкости (целое число в диапазоне 0…100) автоматически сохраняемое значение |
OK, ERROR |
AT+CRSL=100
OK |
Ответить на входящий звонок | ATA все команды записанные в этой же строке после команды ATA игнорируются |
OK | ATA
OK |
Сбросить входящий звонок | ATH все команды записанные в этой же строке после команды ATH игнорируются |
OK | ATA
OK |
Автоматический ответ при входящем вызове | ATS0=<n> <n> — количество гудков до автоматического ответа при входящем вызове: 0 — автоответ отключен при установке слишком большого количества гудков, вызов может быть прерван оператором |
OK, ERROR |
ATS0=2
OK |
Включение автоопределителя номера (АОН) | AT+CLIP=<n> <n> — параметр включения функции: 0 — АОН выключен параметр не сохраняется, необходима установка при каждом запуске, по умолчанию значение 0 |
OK | AT+CLIP=1
OK |
Незапрашиваемое уведомление +CLIP | +CLIP: <number>,<type>[,<subaddr>,<satype>,<alphaId>,<CLI validity>] <number> — телефонный номер вызывающего абонента <type> — формат указанного телефонного номера 129 — тип неизвестен <subaddr> — дополнительный номер 0 — номер определен |
OK | RING+CLIP: «+78004522441″,145,»»,0,»»,0 |
Незапрашиваемое уведомление RING (входящий вызов) | RING | RING |
71 |
Для осуществления исходящих вызовов используется команда ATD<phonenumber>; где <phonenumber> — номер телефона в любом полном формате — +7928******* или 8928*******, например, ATD+78001000800;. |
72 | На заметку: |
Нельзя забывать двоеточие ; в конце команды — в этом случае модем отреагирует сообщением NO CARRIER (не доступно) |
73 |
Добавлено 19.01.2018 |
Для того, чтобы отследить момент ответа на исходящий вызов, необходимо выполнить команду AT+COLP=1. Дело в том, что по умолчанию (AT+COLP=0), модуль ответит ОК, сразу после отправки команды ATD. Команда AT+COLP=1 устанавливает такой режим, при котором, после отправки команды модулю, ответ ОК будет получен, только когда вызов будет принят, иначе — BUSY, NO DIAL TONE, NO CARRIER. |
74 |
Ответить на входящий звонок в ручном режиме можно командой ATA. Либо командой ATS0=<n> можно установить возможность автоматического ответа после <n>-гудков. |
75 | На заметку: |
Исходящий вызов, также как и уже установленное соединение, можно отменить/прервать командой ATH. Отмена невозможна в некоторых состояниях, например, во время установки соединения. |
76 |
Для того, чтобы реагировать на входящие звонки, нужно отслеживать незапрашиваемое уведомление RING, и далее предпринимать действия — либо отвечать на входящий вызов командой ATA, либо сбрасывать его командой ATH. |
77 | На заметку: |
Для того, чтобы автоматически отвечать на все входящие вызовы достаточно один раз установить автоответ командой ATS0=1. |
78 | Arduino (C++) |
1 #include <SoftwareSerial.h> String _response = «»; sendATCommand(«AT», true); } String sendATCommand(String cmd, bool waiting) { if (_resp.startsWith(cmd)) { String waitResponse() { void loop() { if (_response.startsWith(«RING»)) { sendATCommand(«ATA», true); sendATCommand(«ATH», true); }
} |
80 |
Чтобы обеспечить индивидуальный подход к каждому вызову необходимо включить автоопределитель номера (АОН) — команда AT+CLIP=1 (по умолчанию отключен). После того как АОН включен, каждое незапрашиваемое уведомление RING будет дополнительно содержать информацию о номере телефона: |
82 |
Теперь нетрудно сделать белый список телефонных номеров, на которые модуль будет автоматически отвечать. Все входящие вызовы с посторонних номеров, не включенных в белый список, будут сбрасываться: |
83 | Arduino (C++) |
1 #include <SoftwareSerial.h> String _response = «»; sendATCommand(«AT», true); _response = sendATCommand(«AT+CLIP=1», true); } String sendATCommand(String cmd, bool waiting) { if (_resp.startsWith(cmd)) { String waitResponse() { void loop() { String whiteListPhones = «+7928xxxxxxx, +7928xxxxxxx, +7928xxxxxxx»; if (_response.startsWith(«RING»)) { int phoneindex = _response.indexOf(«+CLIP: «»); String innerPhone = «»; if (phoneindex >= 0) { phoneindex += 8; innerPhone = _response.substring(phoneindex, _response.indexOf(«»», phoneindex)); Serial.println(«Number: « + innerPhone); } if (innerPhone.length() >= 7 && whiteListPhones.indexOf(innerPhone) >= 0) { sendATCommand(«ATA», true); } else { sendATCommand(«ATH», true); } } } if (Serial.available()) { |
85 |
Прием/отправка/удаление SMS Тема, которая акутальна при взаимодействии с GSM-модулем в 95% случаев — это, конечно же, прием и отправка SMS, при помощи которых происходит удаленное управление чем-либо, например, микроконтроллером. |
86 | На заметку: |
В данном разделе будет рассмотрена работа с SMS в текстовом формате (Text Mode), все примеры будут также приведены для работы с SMS в текстовом формате. Работа с SMS в PDU-формате (PDU mode) — тема отдельной статьи и здесь будет опущена. Текстовый формат намного проще, но он не позволяет обмениваться SMS-сообщениями на языках, отличных от английского. PDU-формат имеет более обширные возможности, но достаточно сложен в освоении и использовании. |
87 |
Для взаимодействия с SMS существует внушительный список команд. Самые используемые из них приведены в таблице: |
Описание | Команда | Параметр(ы) | Ответ | Пример(ы) |
Выбор формата SMS | AT+CMGF=<mode> | <mode> — формат сообщений, значения:
0 — PDU-формат (по умолчанию) |
OK | AT+CMGF=1 формат SMS в текстовый формат (Text Mode) |
Удалить SMS | AT+CMGD=<index>[,<delflag>] | <index> — порядковый номер удаляемого сообщения в заданной группе (>0) <delflag> — фильтр удаляемых сообщений (необязат.), значения: 0 — удалить сообщение с заданным порядковым номером <index> |
ОК | AT+CMGD=0,4 удаление всех сообщений |
Удалить все SMS | AT+CMGDA=<type> | <type> — тип удаляемых сообщений, значения (для TextMode):
«DEL READ» — удалить все прочитанные SMS |
ОК | AT+CMGDA=»DEL ALL» удаление всех сообщений |
Получить список SMS | AT+CMGL=<stat>[,<mode>] | <stat> — фильтр, значения
«REC UNREAD» — полученные непрочитанные SMS <mode> — фильтр удаляемых сообщений (необязат., используется при <index>=0), значения: 0 — изменить статус сообщений на «прочитано» |
ОК | AT+CMGL=»REC UNREAD»,1 получить принятые непрочитанные сообщения, статус не изменять Ответ: +CMGL: 1,»REC UNREAD»,»w4348435″,»»,»17/05/14,15:10:02+12″ 041C04270421002….7043E0432 +CMGL: 2,»REC UNREAD»,»+7928xxxxxxx»,»»,»17/05/15,23:34:03+12″ +CMGL: 3,»REC UNREAD»,»+7928xxxxxxx»,»»,»17/05/22,18:13:25+12″ OK |
Прочитать SMS | AT+CMGR=<index>[,<mode>] | <index> — порядковый номер сообщения <mode> — действие после прочтения, значения: 0 — изменить статус сообщений на «прочитано» (по-умолчанию) |
ОК | AT+CMGR=7,1 прочитать 7-ое сообщение, статус не изменять Ответ: +CMGR: «REC READ»,»+7928xxxxxxx»,»»,»17/05/22,18:13:25+12″ Balance OK |
Отправить SMS | AT+CMGS=<da>[,<toda>]<CR>текст сообщения<ctrl-Z/ESC> |
<da> — телефон адресата в международном формате, в кавычках <toda> — дополнительный номер (не используется) <CR> — начало строки, после отправки модуль переходит в режим приема текста сообщения После того как текст сообщения передан, необходимо отправить либо <ctrl-Z> для отправки сообщения, либо <ESC> для отмены. |
+CMGS: <n>
OK |
AT+CMGS=»+7928xxxxxxx» > test message > +CMGS: 81 OK |
Незапрашиваемое уведомление о приходе нового SMS | +CMTI: <mem>,<index> |
<mem> — хранилище сообщений
«SM» — SIM-карта <index> — индекс полученного сообщения (показывает общее число полученных непрочитанных SMS) |
+CMTI: «SM»,3 | |
Получить информацию о хранилищах SMS | AT+CPMS?
Ответ: |
<mem1> — чтение и удаление сообщений происходит их этого хранилища <mem2> — сообщение будет записано в это хранилище и отправлено <mem3> — получаемые сообщения будут записываться в это хранилище <mem1>, <mem2>, <mem3> могут иметь следующие значения: «SM» — память SIM-карты <usedx> — количество сообщений в хранилище <memx> |
OK | AT+CPMS? |
90 |
Перед работой с SMS, для использования текстового формата, его нужно включить командой AT+CMGF=1. Поскольку этот параметр сохраняется по команде AT&W, в скетче он будет устанавливаться в начале в формате «несколько команд в одной строке»: AT+CMGF=1;&W |
91 |
Отправка SMS. Формат отправки SMS в текстовом формате выглядит следующим образом:
|
92 | На заметку: |
Как отправить комбинацию клавиш Ctrl+Z или символ ESC через командную строку терминала Serial? Если отправка SMS осуществляется через окно Serial среды Arduino IDE, то после ввода основного текста сообщения необходимо отправить модулю команду завершения SMS — Ctrl+Z. Сделать это можно копированием символа между кавычками « » и последующей его вставкой в поле отправки данных. Чтобы отправить символ ESC (для отмены сообщения) нужно скопировать его между этими кавычками — « » . |
93 |
Пример программной отправки SMS (для удобства, функционал отправки SMS вынесен в отдельную функцию sendSMS()). В данном примере также используется контроль статуса отправки. В случае неудачной попытки отправки, сообщение об этом появится в терминале: |
94 | Arduino (C++) |
1 #include <SoftwareSerial.h> String _response = «»; sendATCommand(«AT», true); _response = sendATCommand(«AT+CMGF=1;&W», true); sendSMS(«+7928xxxxxxx», «test message»); } String sendATCommand(String cmd, bool waiting) { if (_resp.startsWith(cmd)) { String waitResponse() { void loop() { if (_response.startsWith(«+CMGS:»)) { int index = _response.lastIndexOf(«rn»); String result = _response.substring(index + 2, _response.length()); result.trim(); if (result == «OK») { Serial.println («Message was sent. OK»); } else { Serial.println («Message was not sent. Error»); } }
} void sendSMS(String phone, String message) { sendATCommand(«AT+CMGS=»» + phone + «»», true); sendATCommand(message + «rn» + (String)((char)26), true); } |
96 |
Прием и чтение SMS. Здесь не так все просто, как при отправке сообщений. Дело в том, что все принятые сообщения хранятся в памяти SIM-карты. И память эта ограничена. Объем памяти можно узнать командой AT+CPMS?. Если допустить переполнение памяти, сообщения больше не смогут приходить. Поэтому, чтобы сохранить работоспособность приложения, после получения каждого сообщения, его нужно обрабатывать и удалять. Мануал предоставляет большой набор команд, при помощи которых можно совершать любые манипуляции с принятыми сообщениями. |
97 |
Во время прихода SMS, SIM800L генерирует незапрашиваемое уведомление вида +CMTI: «SM»,4. После прихода такого уведомления, можно программно инициировать процедуру чтения полученного сообщения командой AT+CMGR=<index>,<mode>, где в качестве параметра <index> необходимо указать индекс, полученный в уведомлении — +CMTI: «SM»,4. В приведенном ниже примере, после получения и обработки пришедшего сообщения, все сообщения удаляются командой AT+CMGDA=»DEL ALL» для экономии памяти модуля: |
98 | Arduino (C++) |
1 #include <SoftwareSerial.h> String _response = «»; sendATCommand(«AT», true); _response = sendATCommand(«AT+CMGF=1;&W», true); } String sendATCommand(String cmd, bool waiting) { if (_resp.startsWith(cmd)) { String waitResponse() { void loop() { if (_response.startsWith(«+CMTI:»)) { void parseSMS(String msg) { msg = msg.substring(msg.indexOf(«+CMGR: «)); msgbody = msg.substring(msgheader.length() + 2); int firstIndex = msgheader.indexOf(«»,»») + 3; Serial.println(«Phone: «+msgphone); } void sendSMS(String phone, String message) |
100 |
Ну а что произойдет, если МК пропустит незапрашиваемое уведомление о приходе SMS? Ему придется ждать прихода следующего сообщения, что является неприемлемым сценарием. И если будет принято сразу несколько сообщений — будет обработано только последнее. Для подстраховки от таких ситуаций необходимо ввести периодическую (например, раз в минуту) проверку наличия непрочитанных сообщений. В случае наличия таковых, каждое сообщение из списка будет обработано и удалено. Пример скетча приведен ниже в разделе об управлении по SMS. |
101 |
Управление по SMS Для демонстрации возможностей управления с обратной связью будет использоваться следующая схема с 3 светодиодами: |
102 |
Резисторы для подключения светодиодов 100 Ом, для подключения модуля — 10 КОм |
103 |
Команды будут состоять из двух цифр — первая цифра будет обозначать номер светодиода (1-3), вторая — его состояние (1 — включен, 0 — выключен). Получается, что допустимых команд (сочетаний цифр) всего 6: 11, 10, 21, 20, 31, 30. Прочие команды будут игнорироваться. Информация о статусе исполнения или некорректности команды, будет выводиться в терминал. Скетч: |
104 | Arduino (C++) |
1 #include <SoftwareSerial.h> int pins[3] = {5, 6, 7}; String _response = «»; String phones = «+7928xxxxxxx, +7920xxxxxxx, +7918xxxxxxx»; void setup() { sendATCommand(«AT», true); sendATCommand(«AT+CMGF=1;&W», true); String sendATCommand(String cmd, bool waiting) { if (_resp.startsWith(cmd)) { String waitResponse() { bool hasmsg = false; if (SIM800.available()) { } void parseSMS(String msg) { msg = msg.substring(msg.indexOf(«+CMGR: «)); msgbody = msg.substring(msgheader.length() + 2); int firstIndex = msgheader.indexOf(«»,»») + 3; Serial.println(«Phone: « + msgphone); if (msgphone.length() > 6 && phones.indexOf(msgphone) > -1) { void setLedState (String result, String phone) { void sendSMS(String phone, String message) |
105 |
Далее также не составит труда получить необходимую информацию и задать требуемую логику приложения. |
108 |
Похожие запросы:
|