Мануал по at командам

18.01.2022

Image of Constantin Ernst

AUTHOR

guide-image

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.

  1. Quectel — start with AT+Q — e.g. AT+QCFG
  2. U-Blox — start with AT+U — e.g. AT+UDCONF
  3. Telit — start with AT “@”, “#”, “$” or “*” — e.g. AT@CLCK
  4. Nordic — start with AT% — e.g. AT%XSNRSQ
  5. Gemalto/Cinterion — start with AT^  — e.g. AT^SMSO
  6. 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
OK
AT+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:
AT+CPIN=»1234”

<code>
READY – No PIN required
SIM PIN – PIN code required
SIM PUK – PUK code required
SIM PIN2 – PIN2 code required
SIM PUK2 – PUK2 code required
PH-SIM PIN – USIM depersonalization requiredv1.2.x
PH-NET PIN – Network depersonalization requiredv1.2.x
PH-NETSUB PIN – Network subset depersonalization requiredv1.2.x
PH-SP PIN – Service provider depersonalization requiredv1.2.x
PH-CORP PIN – Corporate depersonalization required

AT+CPIN?
Request which PIN code is required

Response Format:
+CPIN: <code>
Example:
AT+CPIN: READY 

AT+CLCK

AT+CLCK=<fac>,<mode>,<passed>, <class>

Lock or unlock different services on the module.

Example:
AT+CLCK =”AO”,2

<fac> facility 
“SC” (U)SIM PIN request at startup 
“AO” Bar All Outgoing Calls
“OI” Bar Outgoing International Calls)
“OX” Bar Outgoing International Calls except to Home Country)
“AI” Bar All Incoming Calls
“IR” Bar Incoming Calls when Roaming 
“AB” All Barring services
“AG” All outgoing barring services
“AC” All incoming barring services
“FD” SIM card or active application in the UICC (GSM or USIM)
“PF” Lock Phone to the very first inserted SIM/UICC card
“PN” Network Personalization
“PU” Network Subset Personalization
“PP” Service Provider Personalization
“PC” Corporate Personalization 

<mode> Defines the operation 
0 — unlock facility
1 — lock facility
2 — query status

<password> Password 

<class>
1 Voice
2 Data
4 FAX
7 All telephony except SMS (Default)
8 Short message service
16 Data circuit synchronization
32 Data circuit asynchronization 0 OFF 1 ON

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
scan and selection

AT+COPS=<mode>,<format>, <oper>,<AcT>

Forces to register the network
operator
Configuration Examples:
AT+COPS=1,2,»24407″
AT+COPS=0 or AT+COPS=2
AT+COPS=1,2,»24407″,8

<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>
0 — long alphanumeric – e.g “Telekom.de”
1 – short alphanumeric e.g “TDG”
2 – numeric – e.g. “26201”

<oper> desired operator in <format>

<AcT> Access technology
0 — GSM
1 — GSM Compact
2 — UTRAN
3 — GSM w/EGPRS
4 — UTRAN w/HSDPA
5 — UTRAN w/HSUPA
6 — UTRAN w/HSDPA and HSUPA
7 — E-UTRAN
8 – LTE-M
9 — NB-IoT

If no operator is selected <format>,<oper> <Act> are omitted.

<stat> Operator status
0 — unknown
1 — available
2 — current
3 — forbidden

AT+COPS?
Returns the current mode, the
selected operator, and Access Technology.

Response Format:
+COPS: <mode>,<format>,<oper>,<AcT>
Example Response:
+COPS: 0,0,“ Telekom.de”,0

AT+COPS=?

Returns / scans the list of available operators.

Response Format:
<stat>, long alphanumeric <oper>,
short alphanumeric <oper>, numeric <oper>, <AcT>

Example Response:
+COPS: (3,»Telekom.de»,»TDG»,»26201″,2),
(1,»E-Plus»,»E-Plus»,»26203″,2),(3,»Vodafone.de»,»Vodafone», «26202»,2),(3,»Telekom.de»,»TDG»,»26201″,7)

AT+CPLS

Preferred PLMN list
file to be used 

AT+CPLS=<list>
Selects which file shall be used for preferred PLMN list

Example:
AT+CPLS=0

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
0: User controlled PLMN selector with Access Technology EFPLMNwAcT, if not found in the SIM/UICC then PLMN preferred list EFPLMNsel
1: Operator controlled PLMN selector with Access Technology EFOPLMNwAcT
2: HPLMN selector with Access Technology EFHPLMNwAcT



AT+CPLS?
Returns the selected PLMN selector list from the SIM/USIM.
Example Response 
+CPLS: 0

AT+CPLS=?
Returns list of supported <list>
Example response:
+CPLS: (0-2)

AT+CPOL

User Preferred PLMN list
configuration
(only when CPLS=0)

AT+CPOL=<index>,<format>,<oper>,<GSM_AcT>, <GSM_Compact_AcT>,<UTRAN_AcT>,<EUTRAN_AcT>

Set preferred operator list on the SIM 

Config example:
AT+CPOL=50,2,»22210″,1,0,1,0

<index> order number of operator list. The first index indicates the highest priority and the nth index indicates the lowest

<format>:
0 — long format alphanumeric <oper>
1 — short format alphanumeric <oper>
2 — numeric <oper>

<oper> Operator in defined Format <format>

For all parameters
<GSM_AcTn>,
<GSM_Compact_AcTn>,
<UTRAN_AcTn>,
<E-UTRAN_AcTn>:
0 — access technology not selected
1 — access technology selected


AT+CPOL?
Returns all entries from the SIM/USIM  EFPLMNwAcT or EFPLMNsel
Response format:
<index1>,<format>,<oper1>,<GSM_AcT1>,<GSM_Compact_AcT1>,<UTRAN_AcT1>,<E-UTRAN_AcT1>
Example Response:
+CPOL: 1,2,»26201″,1,0,1,0 +CPOL: 2,2,»21401″,1,0,1,0

AT+COPN


List all known operators

AT+COPN
Lists all the known operators that can be set by AT+CPOL

Example Reponse
+COPN: «90114»,»AeroMobile»

+COPN: «22210»,»vodafone IT»

 

AT+CREG
AT+CGREG
AT+CEGREG

Network registration report

AT+CREG applies to GSM/UMTS CS domain 

AT+CGREG
applies for GPRS/UMTS PS domain (GPRS)

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. 
For <n>=1: +CREG:<stat>
For <n>=2: +CREG: <stat><lac>,<ci>,<AcT>
For <n>=3: +CREG: <stat>,<lac>,<ci>,<AcT>,<cause_type>,<reject_cause>
For <n>=4 or 5 —
additional parameters modem specific

Config Example:
AT+CREG=1

<n> Report configuration
0 – Disable network registration unsolicited results code reports
1 – Enable network registration unsolicited result code reports
2 – Enable network registration and location information in reports <lac/tac/rac><ci><AcT>
3 — enable also <cause_type>,<reject_cause> in reports 
4 / 5 —  dependent on module there can be additional parameters  <rac>, <ActiveTime>,<P-RAU>,<GPRS-READY-timer> (only applies to AT+CGREG and CEREG)

<stat>:
0 — not registered, MT is not searching
1 — registered, home network
2 — not registered, MT is searching
3 — registration denied
4 — unknown (e.g. out of coverage)
5 — registered, roaming

<AcT>: Access Type
0 — GSM      1 — GSM Compact
2 — UTRAN  3 — GSM w/EGPRS
4 — HSDPA   5    UTRAN HSUPA
6 — UTRAN w/HSDPA and HSUPA
7 — E-UTRAN
8 – LTE-M
9 — NB-IoT

<lac/tac/rac> Location Area / Tracking Area / Routing Area Code
<ci> Cell ID
<active time> Active Time value (T3324) for Power Save Mode
<P-RAU> period to send RAU/TAU

The syntax for CREG, CGREG, CEGREG is the similar- here explained with AT+CREG

AT+CREG?
Return Current Registration Status

Response Examples:
For <n>=1: CREG: <n><stat>
+CREG: 1,1
for <n>=2: +CREG: <n>,<stat><lac>,<ci>,<AcT>
+CREG: 2,5,»2387″,»01DB7C01″, 2
For n=3: +CREG: <n>,<stat>,<lac>,<ci>,<AcT>,<cause_type>,<reject_cause>

AT+CREG =?
Returns values supported for <n> result code configuration

Example Response
+CREG: (0-3)

AT commands for radio signal quality analysis

Command

Commands and examples

Parameters

AT+CSQ

Signal Quality Reports

AT+CSQ
Reads the signal quality for the connected technology.

Response Format:
+CSQ: <rssi>,<qual>
Example Response:
+CSQ: 21,3

<rssi> received signal strength RSSI values
0: 113 dBm or less
1: 111 dBm
2…30: 109… 53 dBm
31: 51 dBm or greater
99 — not known or not detectable

<qual> For 2G – Bit Error rate ( ~assumed value)
0: BER < 0,2 % ~0,14 %
1: 0,2 % < BER < 0,4 %  ~0,28 %
2: 0,4 % < BER < 0,8 %  ~0,57 %
3: 0,8 % < BER < 1,6 %  ~1,13 %
4: 1,6 % < BER < 3,2 % ~2,26 %
5: 3,2 % < BER < 6,4 % ~4,53 %
6: 6,4 % < BER < 12,8 % ~9,05 %
7: 12,8 % < BER ~18,10 %
99: not detectable

<qual> For 3G — EcNo
0: ECN0_LEV >= 44
1: 38 <= ECNO_LEV < 44
2: 32 <= ECNO_LEV < 38
3..5 14 <= ECNO_LEV < 32
6: 8 <= ECNO_LEV < 14
7: ECNO_LEV < 8

<qual> For LTE/NB-IoT/LTE-M — RSRQ
0: RSRQ_LEV < 5
1: 5 <= RSRQ_LEV < 10
2: 10 <= RSRQ_LEV < 14
3..5: 14 <= RSRQ_LEV < 26
6: 26 <= RSRQ_LEV < 30
7: RSRQ _LEV >= 30

<rxlev> RSSI with 1dbm steps
0: less than -110 dBm
1..62: from -110 to -49 dBm 
63: -48 dBm or greater

<ber> — Bit Error Rate as above for 2G

<rscp> RSCP with 1dBm steps
0: less than -120 dBm
1..95: from -120 dBm to -26 dBm 
96: -25 dBm or greater

AT+CSQ=?
Returns list of supported parameters <rssi>,<qual>

Example Response
+CSQ: (0-31,99),(0-7,99)

 AT+CESQ

Extended signal quality 

AT+CESQ
Return signal quality for all radio types the module can monitor. 

Response format: 
+CESQ: <rxlev>,<ber>,<rscp>,<ecn0>,<rsrq>,<rsrp>

Example Response:
+CESQ:99,99,255,255,31,62

AT+CESQ=?

Returns list of supported parameters value ranges <rxlev>,<ber>, <rscp>, ecno>, <rsrp>, <rsrq>

Example Response:
+CESQ: (0-63,99),(0-7,99),(0-96, 255),(0-49,255),(0-34,255),(0-97, 255)

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
AT+CGDCONT=1,»IP»,»em»,
«0.0.0.0»,0,0

<cid> PDP context identifier
<PDP_type> — Packet Data Protocol type as string
«IP», “PPP” , “IPV6”, “IPV4V6”

<APN> — Access Point Name string for EMnify «em»

 <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
1 ON
2 V.42bis
3 V.44

<h_comp> — controls PDP header compression
0 — off
1 – on
2 — RFC1144  for SNDCP only
3 — RFC2507
4 — RFC3095 (applicable for PDCP only)

AT+CGDCONT?

Returns list of current PDP definitions

Response Format:
+CGDCONT: <cid>,<PDP_type>,<APN>,<PDP_addr>, <data_comp>,<head_comp>

 Example Response:
+CGDCONT: 1,»IP»,»em»,»0.0.0.0″,0,0,0,0
2,»IPV4V6″,»em», «0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0» ,0,0,0,0

AT+CGACTActivate and Deactivate PDP contexts

AT+CGACT=<state>,<cid>
Activate or deactivate PDP context 

Example: 
AT+CGACT=1,1

<state>
0 — deactivate
1 — activate

<cid> PDP context ID

AT+CGACT?
Read status of PDP contexts
Response format
+CGACT<state>,<cid>
Example Response:
+CGACT=1,1

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.

Image of Constantin Ernst

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
Проверка связи:

  • Используется для проверки связи с shield.
CPOF AT+CPOFrn
(выключить модуль)
rn
OKrn
Выключение модуля:

  • Shield ведёт себя так, как при подаче логической «1» на вывод «PWR».
  • Если на выводе «PWR» установлен логический «0», то после выключения shield снова включится.
ATS0 ATS0?rn
(запрос текущего количества гудков до автоответа)
rn
ЧИСЛОrn
rn
OKrn
Установка/запрос автоматического ответа на вызовы:

  • ЧИСЛО — указывает количество гудков перед автоответом (от 0 до 255), если указан 0, то автоответ отключён.
  • Пример ответа: 5rnOKrn — установлен автоответ после 5 гудков.
  • Пример установки: ATS0=2rn — включить автоответ после 2 гудков.
ATS0=ЧИСЛОrn
(установка количества гудков)
rn
OKrn
ATS3 ATS3?rn
(Запрос текущего кода)
rn
ЧИСЛОrn
rn
OKrn
Установка/запрос кода символа конца командной строки:

  • ЧИСЛО — определяет код символа конца строки в десятичной системе счисления.
  • Пример ответа: 13rnOKrn — код символа конца строки равен 13.
  • Пример установки: ATS3=13rn — установить значение 13 как код символа конца строки.
ATS3=ЧИСЛОrn
(установка кода символа)
rn
OKrn
ATS4 ATS4?rn
(Запрос текущего кода)
rn
ЧИСЛОrn
rn
OKrn
Установка/запрос кода символа начала командной строки:

  • ЧИСЛО — определяет код символа начала строки в десятичной системе счисления.
  • Пример ответа: 10rnOKrn — код символа конца строки равен 10.
  • Пример установки: ATS4=10rn — установить значение 10 как код символа начала строки.
ATS4=ЧИСЛОrn
(установка кода символа)
rn
OKrn
ATS5 ATS5?rn
(запрос текущего кода)
rn
ЧИСЛОrn
rn
OKrn
Установка/запрос кода символа backspace для командной строки:

  • ЧИСЛО — определяет код символа backspace в десятичной системе счисления. Это символ который удаляет предшествующий ему символ.
  • Пример ответа: 8rnOKrn — код символа backspace равен 8.
  • Пример установки: ATS5=8rn — установить значение 8 как код символа backspace.
ATS5=ЧИСЛОrn
(установка кода символа)
rn
OKrn
+++ +++rn
(переключение в командный режим)
rn
OKrn
Переключение из режима online в режим offline:

  • Во время соединения (в режиме данных или PPP) можно перейти в режим offline (командный режим) который позволяет использовать AT команды. Противоположность команды «ATO».
ATO ATOrn
(переключение в режим данных)
rn
OKrn
Переключение из режима offline в режим online:

  • Если соединение установлено и устройство находится в командном режиме (offline), то данная команда позволяет вернуться в режим online (режим данных или PPP). Противоположность команды «+++».
AT&F AT&Frn
(загрузка заводского профиля)
rn
OKrn
Восстановить заводские настройки:

  • Команда загружает профиль по умолчанию (заводской профиль).
  • Стоит учесть что у модуля есть возможность сохранять пользовательский (индивидуальный) профиль «AT&W» и загружать его «ATZ».
ATV ATV0rn
(установка коротких ответов)
rn
OKrn
Установка формата ответа модуля:

  • ATV0 — Короткие заголовки и цифровые коды ответа, например, вместо OKrn будет число 0rn.
  • ATV1 — Полные заголовки и текстовые ответы, как в примерах данной статьи.
  • Список текстовых ответов и их цифровых кодов:
    • 0 — «OK»
    • 1 — «CONNECT»
    • 2 — «RING/CRING»
    • 3 — «NO CARRIER»
    • 4 — «ERROR»
    • 5 — «NO DIALTONE»
    • 6 — «BUSY»
    • 7 — «NO ANSWER»
    • 8 — «NOT SUPPORT»
    • 9 — «INVALID COMMAND LINE»
ATV1rn
(установка полных ответов)
rn
OKrn
ATE ATE0rn
(отключить эхо)
rn
OKrn
Включить/отключить эхо в ответах на AT-команды:

  • ATE0 — Отключить эхо. После выполнения AT-команд будет выводиться только ответ (результат их выполнения).
  • ATE1 — Включить эхо. После выполнения AT-команд, перед ответом, будет вставлена строка с текстом полученной AT-команды.
ATE1rn
(включить эхо)
rn
OKrn
AT&W AT&Wrn
(сохранить настройки в пользовательский профиль)
rn
OKrn
Сохранить текущие настройки в области EEPROM:

  • Сохраняет текущие настройки как пользовательский (индивидуальный) профиль, который потом можно загрузить командой «ATZ».
ATQ ATQ0rn rn
OKrn
Включить/отключить результирующие коды:

  • ATQ0 — Модуль (DCE) передает результирующие коды.
  • ATQ1 — Результирующие коды блокируются и не передаются.
ATQ1rn rn
OKrn
ATX ATX0rn rn
OKrn
Установка формата кода результата соединения и мониторинг вызовов:

  • ATX0 — Возвращать только код результата соединения, обнаружение тонального набора и определение занятости отключены.
  • ATX1 — Возвращать код и текст результата соединения, обнаружение тонального набора и определение занятости отключены.
  • ATX2 — Возвращать код и текст результата соединения, обнаружение тонального набора включено, определение занятости отключено.
  • ATX3 — Возвращать код и текст результата соединения, обнаружение тонального набора отключено, определение занятости включено.
  • ATX4 — Возвращать код и текст результата соединения, обнаружение тонального набора и определение занятости включено.
ATX1rn rn
OKrn
ATX2rn rn
OKrn
ATX3rn rn
OKrn
ATX4rn rn
OKrn
ATZ ATZrn
(загрузить пользовательский профиль)
rn
OKrn
Восстановить пользовательские настройки:

  • Устанавливает текущие настройки из пользовательского (индивидуального) профиля, сохранённого ранее в области EEPROM командой «AT&W». Если выполняется соединение, то оно будет разорвано.
CFUN AT+CFUN=ЧИСЛОrn
(установка требуемого функционала)
rn
OKrn
Установка набора функциональных возможностей:

  • ЧИСЛО — значение от 0 до 6 указывающее какие именно функциональные возможности требуется установить:
    0 — Установить минимальную функциональность (процедура отсоединения IMSI).
    1 — Установить полный набор функциональных возможностей с полной перезагрузкой.
    2 — Отключить радиочастотные цепи передачи данных.
    3 — Отключить радиочастотные цепи приёма данных.
    4 — Отключите радиочастотные цепи приёма и передачи данных.
    5 — Включить платформу CSW.
    6 — Отключить платформу CSW.
  • В настоящее время модули A6 и A9 поддерживают только значения 0 и 1.
  • Пример установки: AT+CFUN=1rn — установить полный набор функций с перезагрузкой.
CMEE AT+CMEE=?rn
(запрос допустимых значений)
rn
+CMEE: (0-2)rn
rn
OKrn
Установка/запрос формата вывода сообщений об ошибках мобильного оборудования:

  • ЧИСЛО — значение от 0 до 2 определяющее формат вывода ошибок:
    0 — При возникновении ошибок возвращать только текст «ERROR», без указания кода ошибки.
    1 — При возникновении ошибок возвращать код ошибки.
    2 — При возникновении ошибок возвращать текст описывающий возникшую ошибку.
  • Пример ответа: +CMEE: 1rnOKrn — при возникновении ошибок возвращается их код.
  • Пример установки: AT+CMEE=1rn — при возникновении ошибок возвращать их код.
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
Установка/запрос набора символов терминального оборудования:

  • ИМЯ — название набора символов:
    «GSM» — 7-битный алфавит GSM (3GPP TS 23.038).
    «HEX» — шестнадцатеричный режим, без кодировки.
    «PCCP936» — таблица символов PC страница 437.
    «UCS2» — 16-битная таблица символов ISO / IEC10646.
  • Пример ответа: +CSCS: «PCCP936»rnOKrn — текст выводится в формате PCCP936.
  • Пример установки: AT+CSCS=»UCS2″rn — выводить текст в формате UCS2.
AT+CSCS?rn
(запрос текущего набора символов)
rn
+CSCS: ИМЯrn
rn
OKrn
AT+CSCS=ИМЯrn
(установка набора символов)
rn
OKrn
CMUX AT+CMUX=?rn
(запрос допустимых режимов)
rn
+CMUX: (0)rn
rn
OKrn
Установка/запрос режима мультиплексирования:

  • ЧИСЛО — значение 0 (или 1):
    0 — Базовый режим.
    1 — Включить канал управления протоколом мультиплексирования.
  • В настоящее время модули A6 и A9 поддерживают только базовый режим.
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:

  • РАЗМЕР — представлен цифрой от 1 до 6:
    0 — автоматическое определение.
    1 — 8 бит, 2 стоп бита, проверка нечётности.
    2 — 8 бит, 1 стоп бит, проверка чётности.
    3 — 8 бит, 1 стоп бит, проверка нечётности.
    4 — 7 бит, 2 стоп бита, проверка нечётности.
    5 — 7 бит, 1 стоп бит, проверка чётности.
    6 — 7 бит, 1 стоп бит, проверка нечётности.
  • ЧЁТНОСТЬ — представлена цифрой от 0 до 3 и имеет приоритет только если в первом параметре (РАЗМЕР) установлена проверка чётности:
    0 — проверка нечётности.
    1 — проверка чётности.
    3 — без проверки.
  • Пример ответа: +ICF: 3, 0rnOKrn — установлена передача по 8 бит, 1 стоп бит, с проверкой нечётности.
  • Пример установки: AT+ICF=2,3rn — установить передачу по 8 бит, 1 стоп бит, без проверки.
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. Значение по умолчанию 115200 бит/сек.
  • Пример ответа: +IPR: 115200rnOKrn — установлена передача на скорости 115300 бот.
  • Пример установки: AT+IPR=9600rn — установить передачу на скорости 9600 бот.
AT+IPR?rn
(запрос текущей скорости)
rn
+IPR: СКОРОСТЬrn
rn
OKrn
AT+IPR=СКОРОСТЬrn
(установка скорости UART)
rn
OKrn
GSN AT+GSNrn
(запрос серийного номера)
rn
НОМЕРrn
rn
OKrn
Запрос серийного номера адаптера:

  • НОМЕР — представлен числом которое является серийным номером.
  • Пример ответа: 867567021221711rnOKrn
GMM
CGMM
AT+GMMrn
(запрос названия модели)
rn
МОДЕЛЬrn
rn
OKrn
Запрос модели адаптера (модуля):

  • МОДЕЛЬ — представлена текстовой строкой.
  • Пример ответа: A6rnOKrn
GMR
CGMR
AT+GMRrn
(запрос версии прошивки)
rn
ВЕРСИЯrn
rn
OKrn
Запрос версии ПО адаптера (модуля):

  • ВЕРСИЯ — представлена текстовой строкой.
  • Пример ответа: V03.03.20160830011H03rnOKrn
  • Пример ответа: V03.06.20171127RrnOKrn
GMI
CGMI
AT+GMIrn
(запрос имени производителя)
rn
ПРОИЗВОДИТЕЛЬrn
rn
OKrn
Запрос производителя адаптера (модуля):

  • ПРОИЗВОДИТЕЛЬ — представлен текстовой строкой.
  • Пример ответа: Ai Thinker Co.LTDrnOKrn
ATI ATIrn
(запрос названия, имени и версии)
rn
ПРОИЗВОДИТЕЛЬrn
МОДЕЛЬrn
ВЕРСИЯrn
rn
OKrn
Запрос информации производителя об адаптере (модуле):

  • Данная команда совмещает в себе команды: AT+GMM, AT+GMR, AT+GMI.
  • Пример ответа: Ai Thinker Co.LTDrnA6rnV03.03.20160830011H03rnOKrn
CIMI AT+CIMIrn
(запрос IMSI)
rn
НОМЕРrn
rn
OKrn
Запрос IMSI:

  • НОМЕР — международный идентификатор мобильного абонента (IMSI).
  • В системе GSM идентификатор содержится на SIM-карте и обычно состоит из 15 цифр. Первые 3 — код страны (250 — РФ), следующие 2 или 3 — код оператора (02 — ПАО «МегаФон»), остальные цифры — MSIN.
  • Пример ответа: 250020123456789rnOKrn
EGMR AT+EGMR=?rn
(запрос допустимых значений)
rn
+EGMR: (1,2), (7)rn
rn
OKrn
Установка/запрос IMEI:

  • Первый параметр (режим) — представлен цифрой:
    1 — установка (запись).
    2 — запрос (чтение).
  • Второй параметр (формат) — всегда равен 7.
  • НОМЕР — число являющееся IMEI.
  • Пример запроса: AT+EGMR=2,7rn — запросить текущий IMEI.
  • Пример ответа: +EGMR:012345678901234rnOKrn — текущий IMEI равен 012345678901234.
  • Пример установки: AT+EGMR=1,7,987654321043210rn — заменить 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
Установка/запрос списка будильников:

  • ДАТА — представлена строкой в формате «ГГ/ММ/ДД,ЧЧ:ММ:СС+ЧП» в строке можно опустить «ГГ/ММ/ДД» и «+ЧП» (часовой пояс). Если опустить «ГГ/ММ/ДД», то нужно обязательно указать пятый параметр «ДН». Если «ГГ/ММ/ДД» указано, то будильник будет удалён после срабатывания.
  • № — будильника представлен числом от 1 до 15
  • ТИП — сигнала будильника (звук, светодиод, …) представлен числом (по умолчанию = 0).
  • ТЕКСТ — представлен строкой сообщения будильника.
  • ДН — дни недели представлены цифрами, пишутся через запятую. Указывается только если в параметре ДАТА указано только время. Каждая цифра соответствует дню недели: 1-понедельник, … , 7-воскресение, 0-все дни недели.
  • ТИХИЙ — значение представлено числом 0 или 1. Если установлено 1, то будильник будет тихим (результатом срабатывания будет незапрашиваемый код результата +CALV).
  • Пример ответа: +CALA: «17/06/01,20:00:00″,1,0,»Conference»rnOKrn
  • Примеры установки:
    AT+CALA=»17/06/01,20:00:00″,1,0,»Conference»rn — установить будильник на один раз.
    AT+CALA=»06:00:00″,2,0,»Wake up»,»1,2,3,4,5″rn — установить будильник по будням в 6 часов.
    AT+CALA=»17/06/01,12:00:00″,3rn — установить будильник на один раз.
AT+CALA?rn
(запрос списка установленных будильников)
rn
+CALA: «ДАТА» [, [,ТИП [,«ТЕКСТ» [,«ДН» [,ТИХИЙ]]]]]rn
+CALA: «ДАТА» [, [,ТИП [,«ТЕКСТ» [,«ДН» [,ТИХИЙ]]]]]rn
rn
OKrn
AT+CALA=«ДАТА»[,№[,ТИП[,»ТЕКСТ»[,»ДН»[,ТИХИЙ]]]]]rn
(установка будильника)
rn
OKrn
CALD AT+CALD=?rn
(запрос списка номеров установленных будильников)
rn
+CALD: НОМЕРАrn
rn
OKrn
Удаление одного будильника:

  • НОМЕРА — через запятую тех будильников которые можно удалить.
  • НОМЕР — того будильника который требуется удалить.
  • Пример ответа: +CALD: 1,2,3,5rnOKrn — установлено 4 будильника (1,2,3,5).
  • Пример удаления: AT+CALD=2rn — удалить будильник номер 2.
AT+CALD=НОМЕРrn
(удаление будильника)
rn
OKrn
VGR AT+VGR=?rn
(запрос допустимых уровней)
rn
+VGR: (5-8)rn
rn
OKrn
Установка/запрос уровня усиления динамика:

  • УСИЛЕНИЕ — представлено числом от 5 до 8
    (значение 8 соответствует MUTE — выкл).
  • Пример ответа: +VGR: 6rnOKrn — текущее усиление равно 6.
  • Пример установки: AT+VGR=7rn — установить усиление в значение 7.
AT+VGR?rn
(запрос текущего уровня)
rn
+VGR: УСИЛЕНИЕrn
rn
OKrn
AT+VGR=УСИЛЕНИЕrn
(установка уровня)
rn
OKrn
VGT AT+VGT=?rn
(запрос допустимых уровней)
rn
+VGT: 16rn
rn
OKrn
Установка/запрос уровня усиления микрофона:

  • УСИЛЕНИЕ — представлено числом от 1 до 16
    (значение 16 соответствует MUTE — выкл).
  • Пример ответа: +VGT: 1rnOKrn — текущее усиление равно 1.
  • Пример установки: AT+VGT=16rn — установить усиление в значение 16.
AT+VGT?rn
(запрос текущего уровня)
rn
+VGT: УСИЛЕНИЕrn
rn
OKrn
AT+VGT=УСИЛЕНИЕrn
(установка уровня)
rn
OKrn
CLVL AT+CLVL=?rn
(запрос допустимых значений)
rn
+CLVL: (5-8)rn
rn
OKrn
Установка/запрос громкости динамика громкой связи:

  • ГРОМКОСТЬ — представлена числом от 5 до 8
    (чем ниже число, тем ниже громкость).
  • Пример ответа: +CLVL: 5rnOKrn — текущая громкость равна 5.
  • Пример установки: AT+CLVL=7rn — установить громкость в значение 7.
AT+CLVL?rn
(запрос текущей громкости)
rn
+CLVL: ГРОМКОСТЬrn
rn
OKrn
AT+CLVL=ГРОМКОСТЬrn
(установка громкости)
rn
OKrn
CMUT AT+CMUT=?rn
(запрос допустимых значений)
rn
+CMUT: (0,1)rn
rn
OKrn
Установка/запрос отключения микрофона при голосовом вызове:

  • ФЛАГ — представлен числом 0 или 1:
    0 — Mute off (не отключать).
    1 — Mute on (отключить микрофон).
  • Пример ответа: +CMUT: 0rnOKrn — микрофон включён.
  • Пример установки: AT+CMUT=1rn — отключить микрофон.
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):

  • ДАТАВРЕМЯ — строка с датой и временем в кавычках: «ГГ/ММ/ДД,ЧЧ:ММ:СС+ЧП», где «ЧП» (часовой пояс) можно не указывать.
  • Обратите внимание на то, что при запросе / установке между датой и временем знак запятой, а не пробела.
  • Пример ответа: +CCLK: «18/01/23,12:34:56+04»rnOKrn — текущее время.
  • Пример установки: AT+CCLK=»18/01/23,12:34:56+04″rn — установить новое время: 12:34:56, 23 января 2018 г.
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
Запрос состояния ЗУ и ёмкости аккумулятора (АКБ):

  • СОСТОЯНИЕ — представлено числом от 0 до 5:
    0 — Адаптер ЗУ не подключён.
    1 — Адаптер ЗУ подключён.
    2 — Адаптер ЗУ подключён, АКБ заряжается.
    3 — Адаптер ЗУ подключён, АКБ заряжена.
    4 — Зарядка прервана.
    5 — Зарядка прервана из-за превышения t°С.
  • ЁМКОСТЬ — представлена в % остаточной ёмкости АКБ, не доступна во время заряда.
  • Пример ответа: +CBC: 0, 100rnOKrn — адаптер зарядного устройства (ЗУ) не подключён, аккумуляторная батарея (АКБ) заряжена на 100%.
AT+CBC?rn
(запрос текущего состояния)
rn
+CBC: СОСТОЯНИЕ, ЁМКОСТЬrn
rn
OKrn
CBCM AT+CBCM=?rn
(запрос допустимых значений)
rn
+CBCM: (0-1)rn
rn
OKrn
Управление уведомлениями о изменении ёмкости аккумуляторной батареи (АКБ):

  • ФЛАГ — представлен цифрой 0 или 1:
    1 — разрешить уведомления о изменении емкости АКБ.
    0 — запретить уведомления о изменении емкости АКБ.
  • В настоящее время модули A6 и A9 не поддерживают уведомления о изменении емкости АКБ.
  • Пример ответа: +CBCM:0rnOKrn — уведомления о изменении ёмкости отключены.
  • Пример установки: AT+CBCM=1″rn — включить уведомления о изменении ёмкости.
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):

  • РЕЖИМ — представлен цифрой от 0 до 3, где значение 3 означает — разрешить отправку URC.
  • КЛАВИАТУРА — представлена цифрой от 0 до 2, где значение 0 означает — без URC.
  • ДИСПЛЕЙ — представлен цифрой от 0 до 2, где значение 0 означает — без URC.
  • ИНДИКАТОР — представлен цифрой 0 или 1, где значение 0 означает — без URC.
  • БУФЕР — представлен цифрой от 0 до 3, где значение 0 означает — буфер стирается при установке режима 1-3.
  • Пример ответа: +CMER: 3,0,0,0rnOKrn
AT+CMER?rn
(запрос текущего режима)
rn
+CMER: РЕЖИМ, КЛАВИАТУРА, ДИСПЛЕЙ, ИНДИКАТОР, БУФЕРrn
rn
OKrn
AT+CMER=[РЕЖИМ [,КЛАВИАТУРА [,ДИСПЛЕЙ [,ИНДИКАТОР [,БУФЕР]]]]]rn
(установка режима отправки сообщений)
rn
OKrn
CEER AT+CEERrn
(запрос отчёта)
rn
+CMER: ТЕКСТrn
rn
OKrn
Запрос расширенного отчёта об ошибке последнего соединения:

  • ТЕКСТ — строка с информацией (или код) причины ошибки вызванной одной из последних операций:
    — Сбой голосового вызова (входящего/исходящего).
    — Разъединение голосового вызова.
    — Неудачное соединение GPRS или активация PDP.
    — Отключение GPRS или деактивация PDP.
  • Пример ответа: +CEER: CALL RELEASED, NETWORK SENT UDUB TO MErnOKrn
CPAS AT+CPASrn
(запрос статуса устройства)
rn
+CPAS: СТАТУСrn
rn
OKrn
Запрос статуса активности мобильного устройства:

  • СТАТУС — представлен цифрой от 0 до 5:
    0 — устройство готово (может принимать команды).
    1 — устройство недоступно (команды не принимаются).
    2 — статус неизвестен (не определён).
    3 — дозвон (входящий / исходящий).
    4 — устройство в режиме соединения.
    5 — устройство в спящем режиме (сокращенный набор функций).
  • Пример ответа: +CPAS:0rnOKrn — устройство готово к приему команд.

AT-команды SIM / PBK:

AT-команда: Ответ: Назначение:
CPIN AT+CPIN?rn
(запрос текущего состояния аутентификации)
rn
+CPIN: СОСТОЯНИЕrn
rn
OKrn
Аутентификация SIM-карты (ввод PIN1 / PUK1 / PIN2 / PUK2):

  • СОСТОЯНИЕ — текстовая строка указывающая какой код требуется ввести:
    READY — ввод пароля не требуется.
    SIM PIN — требуется ввод PIN1 (CHV1).
    SIM PUK — требуется ввод PUK1 и новый PIN1.
    SIM PIN2 — требуется ввод PIN2 (CHV2).
    SIM PUK2 — требуется ввод PUK2 и новый PIN2.
    +CME ERROR:10 — отсутствует SIM-карта.
    +CME ERROR:13 — SIM-карта неисправна.
  • Перед вводом пароля требуется узнать, какой именно пароль нужно ввести. Для этого отправляется команда AT+CPIN?rn.
  • Если PIN1 был некорректно введён 3 раза подряд, то потребуется ввести PUK1 и новый PIN1 через запятую (аналогично для PIN2, PUK2).
  • Если PUK1 был некорректно введён более 10 раз то SIM-карта будет безвозвратно заблокирована и команда AT+CPIN?rn вернёт ответ +CME ERROR:13rn — SIM-карта неисправна.
  • Для ввода PIN2 лучше воспользоваться командой AT+CPIN2.
  • Пример ответа: +CPIN: SIM PINrnOKrn — требуется ввести PIN1.
  • Пример ввода: AT+CPIN=»0123″rn — указываем PIN1=0123.
  • Пример ответа: +CPIN: SIM PUKrnOKrn — требуется ввести PUK1 и новый PIN1 через запятую.
  • Пример ввода: AT+CPIN=»12345678″,»1234″rn — указываем что PUK1=12345678 и устанавливаем новый PIN1=1234.
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):

  • СОСТОЯНИЕ — текстовая строка указывающая какой код требуется ввести:
    READY — ввод пароля не требуется.
    SIM PIN2 — требуется ввод PIN2 (CHV2).
    SIM PUK2 — требуется ввод PUK2 и новый PIN2.
    +CME ERROR:10 — отсутствует SIM-карта.
    +CME ERROR:13 — SIM-карта неисправна.
  • Синтаксис данной AT-команды аналогичен предыдущей, но предназначен для ввода только PIN2 или PUK2.
  • Пример ответа: +CPIN2: SIM PIN2rnOKrn — требуется ввести PIN2.
  • Пример ввода: AT+CPIN2=»0123″rn — указываем PIN2=0123.
  • Пример ответа: +CPIN2: SIM PUK2rnOKrn — требуется ввести PUK2 и новый PIN2 через запятую
  • Пример ввода: AT+CPIN2=»12345678″,»1234″rn — указываем что PUK2=12345678 и устанавливаем новый PIN2=1234.
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
Запрос оставшегося количества попыток ввода паролей:

  • PIN1 / PUK1 / PIN2 / PUK2 — представлены цифрами от 0 до 10 указывающими количество оставшихся попыток (0 — попыток не осталось).
  • Обратите внимание на синтаксис данной AT-команды, после символов AT следует знак ^, а не +.
  • Пример ответа: ^CPINC: 3,10,3,10rnOKrn — осталось по 3 попытки для ввода PIN1 и PIN2, и по 10 попыток для ввода PUK1 и PUK2.
CLCK AT+CLCK=?rn
(запрос допустимых функций)
rn
+CLCK: («SC», «FD», «AO», «OX», «OI»)rn
rn
OKrn
Блокировка/разблокировка функций устройства:

  • «ФУНКЦИЯ» — представлена строкой:
    «CS» — Устройства управления (клавиатура).
    «FD» — Фиксированный набор номеров из SIM памяти FDN.
    «AO» — Все исходящие вызовы.
    «OI» — Исходящие международные вызовы.
    «OX» — Исходящие международные вызовы, кроме своей страны.
  • РЕЖИМ — представлен цифрой от 0 до 2:
    0 — разблокировать.
    1 — заблокировать.
    2 — узнать статус.
  • ПАРОЛЬ — зависит от функции, может быть PIN1, PIN2.
  • КЛАСС — представлен числом:
    1 — голосовой режим (телефония).
    2 — режим данных (применяется для однонаправленного канала).
    4 — факсовый режим (факсимильная служба).
    8 — услуга коротких сообщений.
    16 — синхронная передача данных.
    32 — асинхронная передача данных.
    64 — выделенный доступ к пакетной передачи данных.
    128 — выделенный доступ через PAD.
  • Пример блокировки: AT+CLCK=»АО»,1,1234,2rn — заблокировать все исходящие вызовы в режиме данных.
  • Пример запроса: AT+CLCK=»АО»,2rn — узнать статус работы функции исходящих вызовов.
  • Пример разблокировки: AT+CLCK=»SC»,0,1234rn — разблокировать PIN1 (работать не запрашивая PIN1).
  • Пример блокировки: AT+CLCK=»SC»,1,1234rn — заблокировать с помощью PIN1 (запрашивать PIN1).
AT+CLCK=«ФУНКЦИЯ», РЕЖИМ [,ПАРОЛЬ [,КЛАСС]]rn
(блокировка / разблокировка указанной функции)
Ответ зависит от указанных параметров.
CPWD AT+CPWD=?rn
(запрос максимального количества символов в пароле)
rn
+CPWD: («SC»,8), («P2»,8)rn
rn
OKrn
(до 8 знаков для «SC», до 8 знаков для «P2»)
Смена пароля SIM-карты (PIN1 / PIN2):

  • «ФУНКЦИЯ» — представлена строкой (из двух символов), она определяет какой именно PIN-код требуется сменить:
    «SC» — смена кода PIN1 (от 4 до 8 символов).
    «P2» — смена кода PIN2 (от 4 до 8 символов).
  • «СТАРЫЙ» — текущий PIN-код.
  • «НОВЫЙ» — новый PIN-код.
  • Пример: AT+CPWD=»SC»,»0123″,»4567″rn — изменить PIN1 c 0123 на 4567.
  • Пример: AT+CPWD=»P2″,»0123″,»4567″rn — изменить PIN2 c 0123 на 4567.
AT+CPWD=«ФУНКЦИЯ», «СТАРЫЙ»,»НОВЫЙ»rn
(смена пароля)
rn
OKrn
CRSM AT+CRSM=КОМАНДА [,ИДЕНТИФИКАТОР [, П1 [,П2 [,П3 [,ДАННЫЕ]]]]]rn rn
+CRSM: Ф1, Ф2, ОТВЕТrn
rn
OKrn
Отправка команд на SIM-карту в режиме ограниченного доступа:

  • КОМАНДА — представлена числом (в соответствии с GSM 11.11 / 3GPP TS 51.011), передается как есть на SIM-карту:
    176 — (READ BINARY) считать двоичный код.
    178 — (READ RECORD) прочитать запись.
    192 — (GET RESPONSE) получить ответ.
    214 — (UPDATE BINARY) обновить двоичный код.
    220 — (UPDATE RECORD) обновить запись.
    242 — (STATUS) запросить статус.
  • ИДЕНТИФИКАТОР — (файловый идентификатор) представлен числом от 0 до 65535 в соответствии с GSM 11.11 / 3GPP TS 51.011. Это идентификатор элементарного массива данных на SIM-карте.
  • П1, П2, П3 — параметры команды передаваемые на SIM-карту. Эти параметры описаны в GSM 11.11 / 3GPP TS 51.011.
  • ДАННЫЕ — передаваемые на SIM-карту, представлены в шестнадцатеричном формате в соответствии с командой «CSCS».
  • Ф1, Ф2 — флаги выполнения команды.
  • ОТВЕТ — на выполненную команду, представлен в шестнадцатеричном формате в соответствии с командой «CSCS».
  • Пример отправки: AT+CRSM=192,28433,0,0,15rn
  • Пример ответа: +CRSM:144,0,621E82054221001C0283026F40A503rnOKrn
CNUM AT+CNUMrn
(запрос своего номера)
rn
+CNUM: «НАЗВАНИЕ», «НОМЕР», ТИПrn
rn
OKrn
Запрос номер абонента MSISDN (свой номер телефона):

  • «НАЗВАНИЕ» — опциональная алфавитно-цифровая строка, сопоставленная номеру (в кодировке UCS2).
  • «НОМЕР» — строка с телефонным номером абонента MSISDN.
  • ТИП — число определяющее формат написания номера, допустимые значения 129,145,161:
    161 — национальный номер абонента сети ISDN.
    145 — международный номер (+7, +3 …).
    129 — остальные номера (8XXX…, *100#, …).
  • Пример ответа: +CNUM: «XXXXX»,»79260001122+»,145rnOKrn — номер телефона +7(926)000-11-22.
CPBS AT+CPBS=?rn
(запрос допустимых областей памяти)
rn
+CPBS: («SM», «ON», «FD», «LD»)rn
rn
OKrn
Установка/запрос области памяти для телефонной книги:

  • «ПАМЯТЬ» — представлена строкой из двух символов:
    «SM» — память SIM-карты.
    «ON» — список собственных номеров UICC.
    «FD» — фиксированный список номеров.
    «LD» — список последних набранных номеров.
  • НАЙДЕНО — число указывающее на количество найденных записей.
  • ОБЪЕМ — число указывающее на максимально допустимое количество записей.
  • Пример ответа: +CPBS: «SM»,15,250rnOKrn — используется память SIM-карты, найдено 15 телефонов, объем памяти до 250 телефонов.
  • Пример установки AT+CPBS=»LD»rn — использовать телефонную книгу со списком последних набранных номеров.
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 символов в названии).
Чтение записей телефонной книги:

  • ОТ — число указывающее на начальную ячейку чтения.
  • ДО — число указывающее на конечную ячейку чтения.
  • ИНДЕКС — номер ячейки в которой записан телефон.
  • «НОМЕР» — строка с телефонным номером.
  • ТИП — число определяющее формат написания номера, допустимые значения: 129,145,161:
    161 — национальный номер абонента сети ISDN.
    145 — международный номер (+7, +3 …).
    129 — остальные номера (8XXX…, *100#, …).
  • «НАЗВАНИЕ» — сопоставленное номеру телефона.
  • Обратите внимание, что существует несколько телефонных книг, которые предварительно можно выбрать командой «CSCS».
  • Пример запроса: AT+CPBR=1,2rn — получить записи телефонной книги с 1 по 2 ячейку включительно.
  • Пример ответа:
    +CPBR: 1,»*100#»,129,»XXXXXXX»rn — номер в ячейке 1
    +CPBR: 2,»*106#»,129,»XXXXXXX»rn — номер в ячейке 2
    OKrn
AT+CPBR=ОТ [,ДО]rn
(чтение записей)
rn
+CPBR: ИНДЕКС, «НОМЕР», ТИП, «НАЗВАНИЕ»rn
rn
OKrn
CPBF AT+CPBF=?rn
(запрос размера записей)
rn
+CPBF: 20,25rn
rn
OKrn
(до 20 цифр в телефоне, до 25 символов в названии).
Поиск записей телефонной книги:

  • «ТЕКСТ» — начало названия записи сопоставленное номеру телефона.
  • ИНДЕКС — номер ячейки в которой записан телефон.
  • «НОМЕР» — строка с телефонным номером.
  • ТИП — число определяющее формат написания номера, допустимые значения: 129,145,161:
    161 — национальный номер абонента сети ISDN.
    145 — международный номер (+7, +3 …).
    129 — остальные номера (8XXX…, *100#, …).
  • «НАЗВАНИЕ» — сопоставленное номеру телефона.
  • Обратите внимание, что существует несколько телефонных книг, которые предварительно можно выбрать командой «CSCS».
  • Пример запроса: AT+CPBF=»iard»rn — получить записи телефонной книги с названиями начинающимися на «iard».
  • Пример ответа:
    +CPBF: 17,»+74995001456″,145,»iarduino office»rnOKrn — найден один номер в ячейке 17.
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 символов в названии).
Редактирование записей телефонной книги (добавление / замена / удаление):

  • ИНДЕКС — номер ячейки в которую производится запись. Если в данной ячейке уже есть запись, то она заменится на новую. Если указать только индекс, то запись ячейки будет удалена.
  • «НОМЕР» — строка с телефонным номером.
  • ТИП — число определяющее формат написания номера, допустимые значения: 129,145,161:
    161 — национальный номер абонента сети ISDN.
    145 — международный номер (+7, +3 …).
    129 — остальные номера (8XXX…, *100#, …).
  • «НАЗВАНИЕ» — сопоставленное номеру телефона.
  • Обратите внимание, что существует несколько телефонных книг, которые предварительно можно выбрать командой «CSCS».
  • Пример записи номера в 18 ячейку:
    AT+CPBW=18,»+74995001456″,145,»iarduino office»rn
  • Пример записи номера в 18 ячейку:
    AT+CPBW=18,»84995001456″,129,»iarduino office»rn
  • Пример удаления номера из 18 ячейки:
    AT+CPBW=18rn
AT+CPBW=[ИНДЕКС][,»НОМЕР» [,ТИП [,НАЗВАНИЕ]]]rn
(запись,замена,удаление)
rn
OKrn

AT-команды голосовых вызовов:

AT-команда: Ответ: Назначение:
ATA ATArn
(ответить на входящий голосовой вызов)
rn
CONNECTrn
Ответ на входящий голосовой вызов:

  • Отвечать на входящий голосовой вызов можно только если этот вызов есть (поступают команды RING), иначе ответом будет ERROR.
  • Пример: ATArn — ответить на входящий звонок.
ATH ATHrn
(повесить трубку)
rn
OKrn
Разъединение голосового вызова:

  • Используется для отсоединения удаленного пользователя во время голосового вызова.
  • Пример: ATHrn — повесить трубку (в момент разговора, звонка, дозвона).
CHUP AT+CHUPrn
(повесить все трубки)
rn
OKrn
Разъединение всех существующих голосовых вызовов (повесить трубку):

  • Используется для отсоединения удаленных пользователей во время голосовых вызовов.
  • Пример: AT+CHUPrn — повесить трубку (входящие, исходящие, ожидающие).
ATD ATDНОМЕРrn
(набрать указанный номер)
rn
OKrn
Набор номера (исходящий голосовой вызов):

  • Команда ATD может использоваться не только для голосовых вызовов, но и для вызовов в режиме данных, или факсовых вызовов.
  • НОМЕР — набираемый телефонный номер абонента (MSISDN).
  • «ПАМЯТЬ» — телефонной книги, представлена строкой из двух символов:
    «SM» — память SIM-карты.
    «ON» — список собственных номеров UICC.
    «FD» — фиксированный список номеров.
    «LD» — список последних набранных номеров.
  • ИНДЕКС — номер ячейки телефонной книги, по телефону которой требуется позвонить.
  • Пример: ATD+74995001456rn — набрать номер +74995001456
  • Пример: ATD>»SM»20rn — набрать номер из 20 ячейки телефонной книги в памяти SIM.
  • Пример: ATD>SM20rn — набрать номер из 20 ячейки телефонной книги в памяти SIM.
  • Пример: ATD>5rn — набрать номер из 5 ячейки используемой телефонной книги.
ATD>[«ПАМЯТЬ»]ИНДЕКСrn
(набрать номер из телефонной книги)
rn
OKrn
DLST AT+DLSTrn
(повтор исходящего вызова)
rn
OKrn
Повторный набор последнего исходящего вызова:

  • Пример: AT+DLSTrn — набрать последний исходящий номер.
CHLD AT+CHLD=?rn
(запрос допустимых действий)
rn
+CHLD: (0,1,1X,2,2X,3)rn
rn
OKrn
Управление групповыми вызовами и конференц-связью:

  • ЗНАЧЕНИЕ — определяет требуемое действие:
    0 — Разъединить все удерживаемые вызовы или установить UDUB (User Determined User Busy) для ожидающего вызова.
    1 — Разъединить все активные вызовы (если они есть) и принять другой (удерживаемый или ожидающий) вызов.
    1X — Разъединить вызов X (активный, удерживаемый или ожидающий).
    2 — Перевести все активные вызовы (если они есть) в режим удержания и принять другой (удерживаемый или ожидающий) вызов.
    2X — Перевести в режим удержания все активные вызовы, кроме вызова Х, с которым поддерживается связь.
    3 — Добавить в конференцию (к разговору) удерживаемый вызов.
  • Пример: AT+CHLD=1rn — разъединить все активные вызовы и принять удерживаемый.
  • Пример: AT+CHLD=12rn — разъединить вызов 2.
  • Пример: AT+CHLD=21rn — удерживать все активные вызовы кроме вызова 1, с которым поддерживается связь.
  • Индекс (номер) вызова можно узнать с помощью команды «CLCC».
AT+CHLD=ЗНАЧЕНИЕrn
(выполнение действия)
rn
OKrn
CLCC AT+CLCCrn
(получение списка текущих вызовов)
rn
+CLCC: ИНДЕКС, НАПРАВЛЕНИЕ, СОСТОЯНИЕ, РЕЖИМ, ФЛАГ [,НОМЕР, ТИП [,»НАЗВАНИЕ«]]rn
rn
OKrn
Запрос списка текущих вызовов:

  • ИНДЕКС — представлен числом, это номер (или ID) вызова.
  • НАПРАВЛЕНИЕ — представлено цифрой 0 или 1:
    0 — Исходящий вызов.
    1 — Входящий вызов.
  • СОСТОЯНИЕ — представлено цифрой от 0 до 7:
    0 — Активный вызов.
    1 — Удерживаемый вызов.
    2 — Исходящий вызов в режиме набора.
    3 — Исходящий вызов в режиме дозвона.
    4 — Входящий вызов в режиме дозвона.
    5 — Входящий ожидающий вызов.
    7 — Сброс вызова (разъединение).
  • РЕЖИМ — представлен цифрой от 0 до 9:
    0 — голосовой режим.
    1 — режим данных.
    2 — факсовый режим.
    3 — голосовой режим данные/голос.
    4 — голосовой режим с чередованием голос/данные.
    5 — голосовой режим с чередованием голос/факс.
    6 — режим данных данные/голос.
    7 — режим данных с чередованием голос/данные.
    8 — факсовый режим с чередованием голос/факс.
    9 — неизвестный режим.
  • ФЛАГ — конференц-связи, представлен цифрой 0 или 1:
    0 — вызов не является одним из вызовов конференц-связи.
    1 — вызов является одним из вызовов конференц-связи.
  • НОМЕР — телефонный номер абонента (MSISDN).
  • ТИП — число определяющее формат написания номера, допустимые значения: 129,145,161:
    161 — национальный номер абонента сети ISDN.
    145 — международный номер (+7, +3 …).
    129 — остальные номера (8XXX…, *100#, …).
  • «НАЗВАНИЕ» — сопоставленное номеру телефона из адресной книги.
  • Пример ответа: +CLCC: 1,0,2,0,0,»74995001456″,145rnOKrn — первый вызов, исходящий, в режиме набора номера, голосовой, не конференц.
  • Пример ответа:+CLCC: 2,1,4,0,0,»74995001456″,145rnOKrn — второй вызов, входящий, поступающий, голосовой, не конференц. Этот пример демонстрирует, как можно узнать номер звонящего абонента во время поступления +RING.
  • Пример ответа:+CLCC: 1,1,0,0,0,»74995001456″,145rnOKrn — второй вызов, входящий, активный, голосовой, не конференц.
VTD AT+VTD=?rn
(запрос допустимых значений)
rn
+VTD: (1-10)rn
rn
OKrn
Установка/запрос длительности тональных сигналов DTMF:

  • Тональные сигналы DTMF передаются по сети GSM при наличии активного вызова.
  • ДЛИТЕЛЬНОСТЬ — представлена числом от 1 до 10 и является 1/10 секунды.
  • Пример ответа: +VTD: 1rnOKrn — используются тональные сигналы DTMF длительностью 100 мс.
  • Пример установки: AT+VTD=2rn — использовать тональные сигналы DTMF длительностью 200 мс.
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:

  • Тональные сигналы DTMF передаются по сети GSM при наличии активного вызова.
  • ЗНАЧЕНИЕ — представлено одним из передаваемых знаков: 0-9,*,#,A,B,C,D.
  • ДЛИТЕЛЬНОСТЬ — представлена числом от 1 до 10 и является 1/10 секунды.
  • Пример отправки: AT+VTS=5rn — отправка тонального сигнала соответствующего цифре 5.
  • Пример отправки: AT+VTS=#rn — отправка тонального сигнала соответствующего знаку #.
  • Пример отправки: AT+VTS=4,2rn — отправка тонального сигнала соответствующего цифре 4, длительностью 200 мс.
AT+VTS=ЗНАЧЕНИЕ [, ДЛИТЕЛЬНОСТЬ]rn
(воспроизвести тональный сигнал)
rn
OKrn
VTSEX AT+VTSEX=1rn
(воспроизвести специальный тональный сигнал)
rn
OKrn
Отправка специального тонального сигнала DTMF:

  • Тональные сигналы DTMF передаются по сети GSM при наличии активного вызова.
  • ЗНАЧЕНИЕ — может быть только цифрой 1.
  • Пример отправки: AT+VTSEX=1rn — отправка специального тонального сигнала.

AT-команды сетевых служб:

AT-команда: Ответ: Назначение:
COPN AT+COPNrn
(запрос списка операторов из памяти модуля)
rn
+COPN: «НОМЕР»,»НАЗВАНИЕ»rn
Запрос списка всех имен операторов из памяти модуля:

  • Команда возвращает не действующих в данном месте операторов, а список операторов хранящийся в памяти модуля. А еще эта команда может возвращать свой список в бесконечном цикле.
COPS AT+COPS=?rn
(Запрос списка доступных операторов PLMN)
rn
+COPS: (СТАТУС, «ОПЕРАТОР», «ОПЕРАТОР», «ОПЕРАТОР»),(аналогично для след. оператора),(и т.д.)rn
rn
OKrn
Запрос/выбор оператора связи PLMN:

  • РЕЖИМ — представлен цифрой от 0 до 4:
    0 — Автоматический (по умолчанию).
    1 — Ручной.
    2 — Снятие с регистрации.
    3 — Указать только формат.
    4 — Ручной/автоматический.
  • ФОРМАТ — представлен цифрой от 0 до 2:
    0 — формат поля ОПЕРАТОР — длинный алфавитно-цифровой (до 16 симв.).
    1 — формат поля ОПЕРАТОР — короткий алфавитно-цифровой (до 8 симв.).
    2 — формат поля ОПЕРАТОР — цифровой (состоит из кодов MCC и MNC).
  • «ОПЕРАТОР» — представлен в соответствии с указанным форматом.
  • СТАТУС — представлен цифрой от 0 до 3:
    0 — Оператор неизвестен.
    1 — Оператор доступен для выбора.
    2 — Оператор является выбранным (текущим).
    3 — Оператор запрещен для выбора.
  • ИМЯ1 — представлено строкой
  • ИМЯ2 — представлено строкой
  • Пример ответа на запрос списка доступных операторов:
    +COPS: (2,»MegaFon»,»MegaFon»,»25002″),(1,»MTS»,»MTS»,»25001″),(1,»Beeline»,»Beeline»,»25099″)rnOKrn — доступны 3 оператора (3 скобки): «MegaFon» является уже выбранным (2), а «MTS» и «Beeline» имеют статус 1 (доступен для выбора). В каждой скобке имя оператора представлено в трёх форматах (длинном, коротком и цифровом).
  • Пример ответа на запрос выбранного оператора:
    +COPS: 0,2,»25002″rnOKrn — выбран оператор «25002» («MegaFon»), выбран в автоматическом режиме (0), имя оператора представлено в цифровом формате (2).
  • Пример выбора оператора:
    AT+COPS=1,0,»MegaFon»rn — выбран оператор «MegaFon», выбран в ручном режиме (1), имя оператора представлено в длинном алфавитно-цифровом формате (0).
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
Установка/запрос режима и статуса регистрации в сети оператора:

  • РЕЖИМ — представлен цифрой от 0 до 2:
    0 — Отключить незапрашиваемые сообщения (URC) о статусе регистрации в сети.
    1 — Включить незапрашиваемые сообщения (URC) о статусе регистрации в сети.
    Сообщения будут приходить в формате +CREG: СТАТУС.
    2 — Включить незапрашиваемые сообщения (URC) о статусе регистрации в сети и о местоположении.
    Сообщения будут приходить в формате +CREG: СТАТУС, «КОД», «ID».
  • СТАТУС — представлен цифрой от 0 до 5:
    0 — Не зарегистрирован, не проводится поиск нового оператора.
    1 — Зарегистрирован, домашний оператор.
    2 — Не зарегистрирован, проводится поиск нового оператора.
    3 — Регистрация отклонена.
    4 — Статус неизвестен
    5 — Зарегистрирован, роуминг.
  • «КОД» — локальной зоны местоположения базовых станций (LAC/TAC), представлен двухбайтным числом в шестнадцатеричном формате.
  • «ID» — идентификатор соты (CID/SAC/ECI), представлен двухбайтным числом в шестнадцатеричном формате.
  • Пример ответа на запрос текущего режима и статуса:
    +CREG: 1,1rnOKrn — включены незапрашиваемые сообщения о статусе регистрации, модем зарегистрирован в сети домашнего оператора связи.
  • Пример ответа на запрос текущего режима и статуса:
    +CREG: 2,1,»262A»,»346A»rnOKrn — включены незапрашиваемые сообщения о статусе регистрации и местоположении, модем зарегистрирован в сети домашнего оператора связи, код местоположения базовых станций «262A», ID соты «346A».
  • Пример выбора режима:
    AT+CREG=2rn — включить незапрашиваемые сообщения о статусе регистрации в сети и о местоположении.
  • Пример незапрашиваемого сообщения о статусе:
    +CREG: 1rn — модем зарегистрирован в сети домашнего оператора связи.
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
Запрос уровня сигнала:

  • УРОВЕНЬ — сигнала представлен числом от 0 до 31 или 99:
    0 — Уровень сигнала менее -113 дБм.
    1 — Уровень сигнала -111 дБм.
    2 … 30 — Уровень сигнала в диапазоне от -109 дБм до -53 дБм (шаг 2 дБм).
    31 — Уровень сигнала -51 дБм и выше.
    Чем выше число, тем выше уровень принимаемого сигнала.
    99 — Уровень сигнала неизвестен или его нельзя определить.
  • ОШИБКИ — частота появления ошибок представлена числом от 0 до 7 или 99:
    0 … 7 — Как значения RXQUAL в таблице GSM 05.08.
    99 — Частота появления ошибок неизвестна или её нельзя определить.
  • Пример ответа: +CSQ: 22,99rnOKrn — уровень сигнала -69 дБм, количество ошибок неизвестно или их нельзя определить.
  • Пример ответа: +CSQ: 31,99rnOKrn — уровень сигнала -51 дБм или выше, количество ошибок неизвестно или их нельзя определить.
AT+CSQrn
(Запрос уровня сигнала и количества ошибок)
rn
+CSQ: УРОВЕНЬ, ОШИБКИrn
rn
OKrn
CPOL AT+CPOL=?rn
(Запрос максимального размера списка и допустимых форматов)
rn
+CPOL: (1-50),(0,2)rn
rn
OKrn
Установка/запрос списка предпочтительных операторов:

  • Список хранится и редактируется на SIM-карте.
  • ИНДЕКС — представлен числом, это номер записи в списке.
  • ФОРМАТ — представлен цифрой от 0 до 2:
    0 — формат поля ОПЕРАТОР — длинный алфавитно-цифровой (до 16 симв.).
    1 — формат поля ОПЕРАТОР — короткий алфавитно-цифровой (до 8 симв.).
    2 — формат поля ОПЕРАТОР — цифровой (состоит из кодов MCC и MNC).
  • «ОПЕРАТОР» — представлен в соответствии с указанным форматом.
  • GSM — представлен цифрой 0 или 1, это флаг указывающий что оператор поддерживает технологию доступа GSM (по умолчанию флаг = 1).
  • GSMcomp — представлен цифрой 0 или 1, это флаг указывающий что оператор поддерживает технологию доступа GSM compact.
  • UTRAN — представлен цифрой 0 или 1, это флаг указывающий что оператор поддерживает технологию доступа UTRAN.
  • Пример запроса списка операторов:
    AT+CPOL?rn — запрос списка в установленном ранее формате.
    AT+CPOL=,0rn — смена формата на длинный алфавитно-цифровой.
    AT+CPOL?rn — запрос списка в только что установленном формате.
  • Пример добавления (замены) оператора:
    AT+CPOL=7,2,25002rn — в 7 строку, в цифровом формате (2), добавлен оператор 25002, поддерживающий доступ GSM (по умолчанию).
    AT+CPOL=7,0,»MegaFon»rn — в 7 строку, в алфавитно-цифровом формате (0), добавлен оператор «MegaFon», поддерживающий технологию доступа GSM (по умолчанию).
    AT+CPOL=7,2,77777,0,0,1rn — в 7 строку, в цифровом формате (2), добавлен оператор 77777, поддерживающий технологию доступа UTRAN.
  • Пример удаления оператора:
    AT+CPOL=7rn — строка 7 списка операторов очищена.
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
Разрешить/запретить отображение заголовков текстовых сообщений в незапрашиваемых кодах результата:

  • ФЛАГ — представлен цифрой 0 или 1:
    0 — Не отображать.
    1 — Отображать.
  • При получении SMS сообщения, если командой «CNMI» разрешена индикация входящих SMS, то модуль отправит URC (незапрашиваемый код результата) +CMTI или +CMT, с указанием, или без указания заголовка SMS сообщения.
AT+CSDH?rn
(запрос текущей установки)
rn
+CSDH: ФЛАГrn
rn
OKrn
AT+CSDH=ФЛАГrn
(разрешить / запретить отображение заголовков)
rn
OKrn
CSMP AT+CSMP?rn
(запрос текущих параметров)
rn
+CSMP: БАЙТ, ВРЕМЯ, ПРОТОКОЛ, КОДИРОВКАrn
rn
OKrn
Установка/запрос параметров текстового режима:

  • БАЙТ- представлен флаговыми битами:
    (синтаксис данного байта аналогичен байту «PDU TYPE» в режиме PDU)
    бит 7 — флаг «RP» (Reply Path). Если установлен, значит в сообщении указан обратный адрес, но в текстовом режиме данный флаг должен быть сброшен.
    бит 6 — флаг «UDHI» (User Data Header Included). Если установлен, значит сообщение содержит заголовок.
    бит 5 — флаг «SRR» (Status Report Request). Если установлен, значит сообщение требует получение отчета о статусе (доставке).
    биты 4,3 — значение «VPF» (Validity Period Format). Срок жизни сообщений: 00-нет, 01-зарезервировано (не используется), 10-срок жизни указан в параметре ВРЕМЯ в относительном формате, 11-срок жизни указан в параметре ВРЕМЯ в абсолютом формате (не поддерживается).
    бит 2 — флаг «RD» (Reject Duplicates). Если установлен значит требуется игнорировать копии данного сообщения.
    биты 1,0 — значение «MTI» (Message Type Indicator). Индикатор типа сообщения: 00-входящее, 01-исходящее.
  • ВРЕМЯ — срок жизни сообщений, представлен числом:
    при значении от 0 до 143, срок жизни = (ВРЕМЯ+1) × 5 минут.
    при значении от 144 до 167, срок жизни = (ВРЕМЯ-143) × 30 минут + 12 часов.
    при значении от 168 до 196, срок жизни = (ВРЕМЯ-166) × 1 день.
    при значении от 197 до 255, срок жизни = (ВРЕМЯ-192) × 1 неделя.
  • ПРОТОКОЛ — идентификатор протокола, представлен числом (по умолчанию 0).
  • КОДИРОВКА — представлена числом: 0, 4 или 8, (по умолчанию 0):
    0 — 7-битный алфавит GSM.
    4 — 8-битная кодировка.
    8 — 16-битная кодировка.
  • Пример ответа: +CSMP: 17,167,0,0rnOKrn — исходящее сообщение, без заголовка и запроса статуса, срок жизни 24 часа, копии игнорировать, протокол и кодировка по умолчанию.
  • Пример установки: AT+CSMP=81,167,0,8rn — исходящее сообщение с заголовком, без запроса на получение статуса, срок жизни 24 часа, копии игнорировать, протокол по умолчанию, 16-битная кодировка.
AT+CSMP=БАЙТ, ВРЕМЯ, ПРОТОКОЛ, КОДИРОВКА,rn
(установка параметров текстового режима)
rn
OKrn
CMSS AT+CMSS=ИНДЕКС [,НОМЕР [,ТИП]]rn
(отправка SMS)
rn
+CMSS: ИНДЕКСотпрrn
rn
OKrn
Отправка SMS сообщения из памяти:

  • Команда отправляет сообщения из области памяти указанной командой «CPMS».
  • ИНДЕКС — представлен числом, это номер записи сохранённой SMS.
  • НОМЕР — представлен строкой в виде номера телефона. Если данный параметр указан то он будет использован вместо номера, сохраненного вместе с сообщением.
  • ТИП — число определяющее формат написания номера, допустимые значения: 129,145,161:
    161 — национальный номер абонента сети ISDN.
    145 — международный номер (+7, +3 …).
    129 — остальные номера (8XXX…, *100#, …).
  • ИНДЕКСотпр — число являющееся номером отправленного сообщения.
  • Пример отправки: AT+CMSS=10rn — отправить SMS сохранённую под номером 10 на номер телефона указанный в сохранённой SMS.
  • Пример отправки: AT+CMSS=10,+74995001456rn — отправить SMS сохранённую под номером 10 на номер телефона +74995001456.
  • Пример ответа: +CMSS: 15rnOKrn — SMS отправлена, она является 15 по счёту отправленной SMS.
CMGD AT+CMGD=?rn
(запрос допустимых значений)
rn
+CMGD: (ИНДЕКС),(СТАТУС)rn
rn
OKrn
(значения зависят от выбранной предпочтительной области памяти)
Удаление SMS сообщения из памяти:

  • Команда удаляет сообщения из области памяти указанной командой «CPMS».
  • ИНДЕКС — представлен числом указывающим на номер (ячейку) удаляемого SMS сообщения из предпочтительной области памяти.
  • СТАТУС — сообщений представлен цифрой от 0 до 4:
    0 — Одно сообщение находящееся в ячейке ИНДЕКС.
    1 — Все прочитанные сообщения.
    2 — Все прочитанные и отправленные сообщения.
    3 — Все прочитанные, отправленные и неотправленные сообщения.
    4 — Все сообщения.
  • Если СТАТУС представлен цифрой 1,2,3,4, то параметр ИНДЕКС игнорируется.
  • Если СТАТУС не указан, значит он представлен цифрой 0.
  • Пример ответа на запрос допустимых значений:
    +CMGD: (1-15),(0,1,2,3,4)rnOKrn — в выбранной предпочтительной области памяти имеются 15 ячеек (возможно указание индекса от 1 до 15), доступны статусы 0,1,2,3,4.
  • Пример удаления: AT+CMGD=3rn — удалить сообщение из 3 ячейки.
  • Пример удаления: AT+CMGD=2,0rn — удалить сообщение из 2 ячейки.
  • Пример удаления: AT+CMGD=2,1rn — удалить все прочитанные сообщения.
  • Пример удаления: AT+CMGD=2,4rn — удалить все сообщения.
AT+CMGD=ИНДЕКС,[СТАТУС]rn
(удаление сообщений)
rn
OKrn
CMGF AT+CMGF=?rn
(запрос допустимых значений)
rn
+CMGF: (0,1)rn
rn
OKrn
Установка/запрос формата SMS сообщений (текстовый / PDU):

  • ФОРМАТ — представлен цифрой 0 или 1:
    0 — SMS сообщения принимаются и отправляются в формате PDU.
    1 — SMS сообщения принимаются и отправляются в текстовом формате.
  • SMS сообщение в режиме PDU, в отличии от текстового режима, содержит всю информацию о заголовке сообщения, который задается строкой в шестнадцатеричном формате.
  • Пример ответа: +CMGF=0rnOKrn — установлен формат PDU.
  • Пример установки: AT+CMGF=1rn — установить текстовый режим.
AT+CMGF?rn
(запрос текущего формата)
rn
+CMGF: ФОРМАТrn
rn
OKrn
AT+CMGF=ФОРМАТrn
(установить формат SMS сообщений)
rn
OKrn
CMGL AT+CMGL=?rn
(запрос допустимых значений)
rn
+CMGL: (СТАТУС)rn
rn
OKrn
(значение СТАТУС зависит от выбранного формата)
Чтение списка SMS сообщений из памяти:

  • Команда выводит список из области памяти указанной командой «CPMS».
  • СТАТУС — сообщений представлен либо цифрой (если выбран формат PDU), либо строкой (если выбран текстовый формат):
    0 — «REC UNREAD» — полученные непрочитанные сообщения.
    1 — «REC READ» — полученные прочитанные сообщения.
    2 — «STO UNSENT» — сохранённые неотправленные сообщения.
    3 — «STO SENT» — сохранённые отправленные сообщения.
    4 — «ALL» — все сообщения.
  • Если СТАТУС не указан, значит он представлен цифрой 0 или строкой «REC UNREAD».
  • После чтения списка полученных непрочитанных сообщений, статус данных сообщений изменится на «полученные прочитанные сообщения».
  • Параметры: ИНДЕКС, «НОМЕР», «НАЗВАНИЕ», ТИП, «ДАТА», ДЛИНА, ДАННЫЕ и PDU см. в описании команды «CMGR».
  • Пример ответа на запрос допустимых значений в формате PDU:
    +CMGL: (0-4)rnOKrn — допускаются значения от 0 до 4.
  • Пример ответа на запрос допустимых значений в текстовом формате:
    +CMGL: («REC UNREAD»,»REC READ»,»STO UNSENT»,»STO SENT»,»ALL»)rnOKrn — допускается указать одну из перечисленных строк.
  • Пример запроса на чтение списка в формате PDU: AT+CMGL=4rn — получить список всех сообщений.
  • Пример запроса на чтение списка в текстовом формате: AT+CMGL=»ALL»rn — получить список всех сообщений.
  • Пример ответа, текстовый формат, строка принятого сообщения:
    +CMGL: 2,»REC_READ»,»+7926…»,,»2018/04/27,13:17:17+03″,145,6rnPrivetrn.
  • Пример ответа, текстовый формат, строка отправленного сообщения:
    +CMGL: 1,»STO_SENT»,»+7926XXXXXXX»,»iarduino»,145,6rnPrivetrn.
  • Пример ответа, формат PDU, строка из списка сообщений:
    +CMGL: 3,1,,24rnPDUrn.
AT+CMGL[=СТАТУС]rn
(запрос на чтение списка сообщений)
Строки списков зависят установленного формата и статуса сообщений:

Текстовый формат, принятое сообщение:
rn
+CMGL: ИНДЕКС, «СТАТУС», «НОМЕР» [,«НАЗВАНИЕ»][,«ДАТА»] [,ТИП, ДЛИНА]rn
ДАННЫЕrn

Текстовый формат, отправл. сообщение:
rn
+CMGL: ИНДЕКС, «СТАТУС», «НОМЕР» [,«НАЗВАНИЕ»] [,ТИП, ДЛИНА]rn
ДАННЫЕrn

Формат PDU:
rn
+CMGL: ИНДЕКС, СТАТУС [,«НАЗВАНИЕ»], ДЛИНАrn
PDUrn

CMGR AT+CMGR=ИНДЕКСrn
(чтение одного SMS сообщения)
Строка ответа зависит от установленного формата и статуса сообщения:

Текстовый формат, принятое сообщение:
rn
+CMGR: «СТАТУС», «НОМЕР» [,«НАЗВАНИЕ»], «ДАТА» [,ТИП, ВИД, ПРОТОКОЛ, КОДИРОВКА, «НОМЕРс», ТИПс, ДЛИНА]rn
ДАННЫЕrn
rn
OKrn

Текстовый формат, отправл. сообщение:
rn
+CMGR: «СТАТУС», «НОМЕР» [,«НАЗВАНИЕ»] [,ТИП, ВИД, ПРОТОКОЛ, КОДИРОВКА, [ВРЕМЯ], «НОМЕРс», ТИПс, ДЛИНА]rn
ДАННЫЕrn
rn
OKrn

Текстовый формат, сообщение запроса статуса:
rn
+CMGR: «СТАТУС», ВИД, ССЫЛКА, [«НОМЕР»] [,ТИП], «ДАТА», <dt>, <st>rn
rn
OKrn

Формат PDU:
rn
+CMGR: «СТАТУС» [,«НАЗВАНИЕ»], ДЛИНАrn
PDUrn
rn
OKrn

Чтение одного SMS сообщения из памяти:

  • Команда читает одно сообщение из области памяти указанной командой «CPMS».
  • ИНДЕКС — представлен числом указывающим номер сообщения в памяти.
  • СТАТУС — сообщений представлен либо цифрой (если выбран формат PDU), либо строкой (если выбран текстовый формат):
    0 — «REC UNREAD» — полученные непрочитанные сообщения.
    1 — «REC READ» — полученные прочитанные сообщения.
    2 — «STO UNSENT» — сохранённые неотправленные сообщения.
    3 — «STO SENT» — сохранённые отправленные сообщения.
    4 — «ALL» — все сообщения.
  • «НОМЕР» — номер телефона отправителя или получателя.
  • «НОМЕРс» — номер телефона сервисного центра службы коротких сообщений.
  • ТИП, ТИПс — число определяющее формат написания номера, допустимые значения: 129,145,161:
    161 — национальный номер абонента сети ISDN.
    145 — международный номер (+7, +3 …).
    129 — остальные номера (8XXX…, *100#, …).
  • «НАЗВАНИЕ» — строковое алфавитно-цифровое представление сопоставленное номеру телефона из адресной книги.
  • «ДАТА» — строка с датой и временем отправки сообщения (присваивается сервисным центром коротких сообщений).
  • ВРЕМЯ — представлено числом определяющим срок жизни сообщения (сервисный центр будет пытаться доставить данное сообщение адресату, пока не истечёт время жизни сообщения).
  • ВИД — число определяющее вид сообщений:
    17 — входящее/исходящее сообщение.
    2 — сообщение отчета о статусе или сообщение команды.
  • ПРОТОКОЛ — идентификатор протокола представлен числом, по умолчанию 0.
  • КОДИРОВКА — представлена числом: 0, 4, 8:
    0 — 7-битный алфавит GSM.
    4 — 8-битная кодировка.
    8 — 16-битная кодировка.
  • ДЛИНА — число указывающее размер тела сообщения (в текстовом режиме +CMGF=1) или размер фактического блока данных (в режиме PDU +CMGF=0).
  • ДАННЫЕ — тело сообщения (текст сообщения).
  • После чтения списка полученных непрочитанных сообщений, статус данных сообщений изменится на «полученные прочитанные сообщения».
  • Пример запроса:
    AT+CMGR=4rn -прочитать сообщение под номером 4.
  • Пример ответа, текстовый формат, строка принятого сообщения: +CMGR: «REC_READ»,»+7926…»,»2018/04/27,13:17:17+03″rnPrivetrn.
CMGS Отправка SMS в текстовом формате:
AT+CMGS=«НОМЕР»[,ТИП]rn
>rn
ТЕКСТ(<0x1A>/<0x1B>)

Отправка SMS в формате PDU:
AT+CMGS=ДЛИНАrn
>rn
PDU(<0x1A>/<0x1B>)

(см. примеры)

rn
+CMGS: ИНДЕКСrn
rn
OKrn
Отправка SMS сообщения без сохранения в память:

  • «НОМЕР» — номер телефона получателя сообщения.
  • ТИП — число определяющее формат написания номера, допустимые значения: 129,145,161:
    161 — национальный номер абонента сети ISDN.
    145 — международный номер (+7, +3 …).
    129 — остальные номера (8XXX…, *100#, …).
  • ИНДЕКС — представлен числом от 0 до 255, возвращается модулем при успешной отправке SMS. Это не номер записи отправленной SMS в памяти (т.к. SMS не сохраняется), а порядковый номер отправленной SMS. Если индекс достигнет значения 255, то следующая отправка SMS приведёт к сбросу индекса в 0.
  • ДЛИНА — число указывающее размер фактического блока данных (в режиме PDU +CMGF=0).
  • ТЕКСТ — текст SMS сообщения, последним символом которого должен быть символ с кодом 0x1A или 0x1B. Эти символы не должны встречаться в другом месте текста.
  • PDU — блок данных записанный в шестнадцатеричном представлении, последним символом которого должен быть символ с кодом 0x1A или 0x1B. Эти символы не должны встречаться в другом месте блока PDU.
  • <0x1A> — символ с кодом 0x1A (ctrl-z), подтверждает отправку SMS.
  • <0x1B> — символ с кодом 0x1B (Esc), запрещает отправку SMS.
  • Пример отправки SMS в текстовом режиме:
    AT+CMGF=1rn — установка текстового режима.
    AT+CSMP=17,167,0,0rn — установка параметров текстового режима.
    AT+CMGS=»+7XXXXXXXXXX»rn — номер получателя SMS.
    >rn — ответ модуля (модуль готов принять текст SMS).
    TEXT — ввод и отправка текста в модуль. Как только в тексте встретится символ <0x1A>, сообщение будет отправлено. Если в тексте встретится символ <0x1B>, сообщение не будет отправлено.
  • Примечание:
    — В текстовом режиме можно добавлять в текст SMS сообщения символы переноса строки rn., в т.ч. перед символом подтверждающим/запрещающим отправку SMS.
    — В режиме PDU весь блок PDU состоит из чисел в шестнадцатеричной системе счисления, вставка символов rn в открытом виде не допускается, в т.ч. и перед символом подтверждающим/запрещающим отправку SMS.
CMGW Отправка SMS в текстовом формате:
AT+CMGW=«НОМЕР»[,ТИП] [,СТАТУС]rn
>rn
ТЕКСТ(<0x1A>/<0x1B>)

Отправка SMS в формате PDU:
AT+CMGW=ДЛИНА [,СТАТУС]rn
>rn
PDU(<0x1A>/<0x1B>)

(см. примеры)

rn
+CMGW: ИНДЕКСrn
rn
OKrn
Запись SMS сообщения в память:

  • Команда сохраняет сообщение в область памяти указанной командой «CPMS», в дальнейшем это сообщение можно отправить командой «CMSS».
  • «НОМЕР» — номер телефона получателя / отправителя сообщения (зависит от указанного статуса сообщения).
  • ТИП — число определяющее формат написания номера, допустимые значения: 129,145,161:
    161 — национальный номер абонента сети ISDN.
    145 — международный номер (+7, +3 …).
    129 — остальные номера (8XXX…, *100#, …).
  • СТАТУС — сообщения представлен либо цифрой (если выбран формат PDU), либо строкой (если выбран текстовый формат):
    0 — «REC UNREAD» — полученное непрочитанное сообщение.
    1 — «REC READ» — полученное прочитанное сообщение.
    2 — «STO UNSENT» — сохранённое неотправленное сообщение.
    3 — «STO SENT» — сохранённое отправленное сообщение.
    Если СТАТУС не указан, то сообщению присваивается статус 2 — «STO UNSENT» (сохранённое неотправленное).
  • ИНДЕКС — представлен числом указывающим на номер (ячейку) сохраняемого SMS сообщения в предпочтительной области памяти.
  • ДЛИНА — число указывающее размер фактического блока данных (в режиме PDU +CMGF=0).
  • ТЕКСТ — текст SMS сообщения, последним символом которого должен быть символ с кодом 0x1A или 0x1B. Эти символы не должны встречаться в другом месте текста.
  • PDU — блок данных записанный в шестнадцатеричном представлении, последним символом которого должен быть символ с кодом 0x1A или 0x1B. Эти символы не должны встречаться в другом месте блока PDU.
  • <0x1A> — символ с кодом 0x1A (ctrl-z), подтверждает отправку SMS.
  • <0x1B> — символ с кодом 0x1B (Esc), запрещает отправку SMS.
  • Пример сохранения SMS в текстовом режиме:
    AT+CMGF=1rn — установка текстового режима.
    AT+CSMP=17,167,0,0rn — установка параметров текстового режима.
    AT+CMGW=»+7XXXXXXXXXX»rn — номер получателя SMS.
    >rn — ответ модуля (модуль готов принять текст SMS).
    TEXT — ввод и отправка текста в модуль. Как только в тексте встретится символ <0x1A>, сообщение будет сохранено. Если в тексте встретится символ <0x1B>, сообщение не будет сохранено.
CNMA AT+CNMA=?rn
(запрос допустимых значений)
rn
NOT SUPPORTrn
Запрос отчёта о доставке SMS сообщений:

  • В настоящее время модули A6 и A9 не поддерживают данную команду.
  • ТИП — представлен цифрой от 0 до 2 указывающей тип запрашиваемого отчёта:
    0 — запрос отчёта о доставке без опционального сообщения PDU (как в текстовом формате.
    1 — запрос отчёта о доставке с опциональным сообщением PDU.
    2 — запрос отчёта о ошибке доставки с опциональным сообщением PDU.
  • ДЛИНА — число указывающее размер фактического блока данных PDU.
Запрос отчёта в текстовом формате:
AT+CNMArn

Запрос отчёта в формате PDU:
AT+CNMA=ТИП, ДЛИНАrn

rn
OKrn
CNMI AT+CNMI=?rn
(запрос допустимых значений)
rn
+CNMI: (РЕЖИМ),(СООБЩЕНИЯ),(РАССЫЛКА),(ОТЧЁТЫ),(БУФЕР)rn
rn
OKrn
Установка/запрос индикации новых сообщений:

  • РЕЖИМ — представлен цифрой от 0 до 3:
    0 — Все URC (незапрашиваемые коды результата) буферизируются, но не отображаются.
    1 — URC отображаются только в режиме offline (командный режим), без буферизации.
    2 — URC буферизируются и отображаются. При работе в режиме online (передача данных), коды не отображаются, но будут отображены после выхода из режима online в режим offline (командный режим).
    3 — URC не буферизируются и отображаются вне зависимости от режима работы (online/offline).
  • СООБЩЕНИЯ — параметр представлен цифрой от 0 до 3, он управляет индикацией входящих SMS сообщений:
    0 — URC индикации получения новых входящих SMS сообщений не возвращаются.
    1 — Если входящее SMS сообщение сохранено в память, то возвращается URC +CMTI с указанием индекса (номера ячейки памяти в которую сохранено сообщение).
    2 — Входящие SMS сообщения выводятся как URC +CMT с указанием номера отправителя, текста сообщения или блока PDU.
    3 — В настоящее время модули A6 и A9 не поддерживают данное значение.
    Значение по умолчанию 0.
  • РАССЫЛКА — параметр представлен цифрой от 0 до 2, он управляет индикацией входящих Cell Broadcast сообщений (рассылка):
    0 — URC индикации получения новых входящих Cell Broadcast сообщений не возвращаются.
    1 — Если входящее Cell Broadcast сообщение сохранено в память, то возвращается URC +CBMI с указанием индекса (номера ячейки памяти в которую сохранено сообщение).
    2 — Входящие Cell Broadcast сообщения выводятся как URC +CBM с указанием текста сообщения или блока PDU.
    Значение по умолчанию 0.
  • ОТЧЁТЫ — параметр представлен цифрой 0 или 1, он управляет индикацией сообщений отчетов о доставке (SMS-STATUS-REPORT):
    0 — Отчёты о доставке сообщений не возвращаются.
    1 — Отчёты о доставке сообщений возвращаются в виде URC +CDS.
    2 — Отчёты о доставке сообщений возвращаются в виде URC +CDSI. В настоящее время модули A6 и A9 не поддерживают данное значение.
    Значение по умолчанию 0.
  • БУФЕР — параметр представлен цифрой 0 или 1, он управляет буфером URC:
    В настоящее время модули A6 и A9 не поддерживают управление буфером.
    0 — Если параметр РЕЖИМ данной команды установлен в значение отличное от 0, то получив эту команду, модуль выведет все данные из буфера.
    1 — Если параметр РЕЖИМ данной команды установлен в значение отличное от 0, то получив эту команду, модуль очистит буфер.
    Значение по умолчанию 0.
  • Пример ответа на запрос допустимых значений:
    +CNMI: (0-3),(0-3),(0,2),(0-1),(0,1)rnOKrn. — в скобках указаны допустимые значения, а номер скобки это номер параметра.
  • Пример ответа на запрос текущих настроек:
    +CNMI: 0,0,0,0,0rnOKrn. — все параметры установлены в значения по умолчанию (индикация всех входящих сообщений отключена).
  • Пример установки настроек индикации входящих сообщений:
    AT+CNMI: 1,2,2,1,0rn. — все коды отображаются в командном режиме, все входящие сообщения выводятся как URC (незапрашиваемые коды результата).
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
Установка/запрос предпочтительной области памяти для хранения сообщений:

  • «ПАМЯТЬ1» — представлена строкой указывающей на область памяти используемую для просмотра, чтения и удаления сообщений:
    «ME» — память модуля.
    «SM» — память SIM-карты.
  • «ПАМЯТЬ2» — представлена строкой указывающей на область памяти используемую для написания и отправки сообщений:
    «ME» — память модуля.
    «SM» — память SIM-карты.
  • «ПАМЯТЬ3» — представлена строкой указывающей на область памяти предпочтительную для получения и сохранения сообщений:
    «ME» — память модуля.
    «SM» — память SIM-карты.
  • ИСП — параметр представлен числом указывающим на количество использованных ячеек памяти (количество сохранённых сообщений).
  • Пример ответа на запрос допустимых значений:
    +CPMS: («ME»,»SM»),(«ME»,»SM»),(«ME»,»SM»)rnOKrn. — в скобках указаны допустимые значения, а номер скобки это номер параметра.
  • Пример ответа на запрос текущих настроек:
    +CPMS: «SM»,0,15,»SM»,0,15,»»,0,25rnOKrn. — .
  • Пример установки предпочтительной области памяти:
    AT+CPMS: 1,2,2,1,0rn. — все коды отображаются в командном режиме, все входящие сообщения выводятся как URC (незапрашиваемые коды результата).
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 сообщений:

  • НОМЕР — номер сервис-центра SMS сообщений.
  • ТИП — число определяющее формат написания номера, допустимые значения: 129,145,161:
  • 161 — национальный номер абонента сети ISDN.
    145 — международный номер (+7, +3 …).
    129 — остальные номера (8XXX…, *100#, …).
  • Пример ответа: +CSCA: «+79262909090»,145rnOKrn — используемый номер сервис-центра SMS сообщений в международном формате.
  • Пример установки: AT+CSCA=»+792620003311″rn — установить новый номер сервис центра SMS сообщений.
AT+CSCA=«НОМЕР» [,ТИП]rn
(установить номер сервис центра SMS сообщений)
rn
OKrn
CSCB AT+CSCB=?rn
(запрос допустимых значений)
rn
+CSCB: (ТИПЫ)rn
rn
OKrn
Установка/запрос типа принимаемых Cell Broadcast сообщений:

  • В настоящее время модули A6 и A9 не поддерживают данную команду.
  • Сообщения Cell Broadcast это сообщения рассылки.
  • ТИП — значение 0 или 1.
  • «ID» — список идентификаторов сообщений.
  • «ЯЗЫКИ» — список поддерживаемых языков сообщений.
AT+CSCB?rn
(запрос установленных типов)
rn
+CSCB: ТИП,«ID»,«ЯЗЫКИ»rn
rn
OKrn
AT+CSCB=ТИП [,»ID» [,»ЯЗЫКИ»]]rn
(установить тип принимаемых сообщений рассылки)
rn
OKrn
CSAS AT+CSASrn
(сохранение настроек)
rn
OKrn
Сохранение настроек:

  • В настоящее время модули A6 и A9 не поддерживают данную команду.
  • Все настройки, заданные командами AT+CSCA и AT+CSMP, сохраняются в EEPROM или на SIM-карту, если это карта фазы 2.
CRES AT+CRESrn
(сохранение настроек)
rn
OKrn
Восстановление настроек:

  • В настоящее время модули A6 и A9 не поддерживают данную команду.
  • Все настройки, задаваемые командами AT+CSCA и AT+CSMP, восстанавливаются из EEPROM или с SIM-карты, если это карта фазы 2.

AT-команды аудиоинтерфейса:

AT-команда: Ответ: Назначение:
CAUDIO AT+CAUDIO=?rn
(запрос допустимых значений)
rn
+CAUDIO: (0-1)rn
rn
OKrn
Открыть / закрыть аудиопоток голосового вызова:

  • ФЛАГ — представлен цифрой 0 или 1:
    0 — Закрыть аудиопоток (приём и передача).
    1 — Открыть аудиопоток (приём и передача).
  • Команда не поддерживается во время выполнения тестового аудиоцикла.
AT+CAUDIO=ФЛАГrn
(открыть/закрыть аудиопоток)
rn
OKrn
CRSL AT+CRSL=?rn
(запрос допустимых значений)
rn
+CRSL: (0-15)rn
rn
OKrn
Запрос / установка уровня громкости звонка:

  • ГРОМКОСТЬ — представлена числом от 0 до 15:
    0 — без звука.
    15 — максимальная громкость.
  • Установка громкости меняет значение громкости по умолчанию, установленное командой CRMP.
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+VTS, воспроизводимые тональные сигналы DTMF не передаются по сети GSM при наличии активного вызова.
  • ЗНАЧЕНИЕ — представлено одним из передаваемых знаков: 0-9,*,#,A,B,C,D.
  • ДЛИТЕЛЬНОСТЬ — представлена числом от 1 до 10 и является 1/10 секунды.
  • Пример воспроизведения: AT+CDTMF=5rn — воспроизведение тонального сигнала соответствующего цифре 5.
  • Пример воспроизведения: AT+CDTMF=#rn — воспроизведение тонального сигнала соответствующего знаку #.
  • Пример воспроизведения: AT+CDTMF=4,2rn — воспроизведение тонального сигнала соответствующего цифре 4, длительностью 200 мс.
AT+CDTMF=ЗНАЧЕНИЕ [, ДЛИТЕЛЬНОСТЬ]rn
(открыть/закрыть аудиопоток)
rn
OKrn
AUST AT+AUST=?rn
(запрос допустимых значений)
rn
+AUST: (0-2)rn
rn
OKrn
Запуск тестового аудиоцикла:

  • РЕЖИМ — представлен цифрой от 0 до 2:
    0 — использовать гарнитуру для ввода/вывода звука.
    1 — использовать громкую связь для ввода/вывода звука.
    2 — использовать только микрофон громкой связи для ввода звука.
  • Для запуска тестового аудиоцикла нужно сначала выбрать режим, а потом запустить цикл, во время которого модуль будет себя вести как усилитель звука.
  • При запуске тестового аудиоцикла:
    — усиление динамика устанавливается в значение 6 (см. AT+VGR).
    — усиление микрофона устанавливается в значение 15 (см AT+VGT).
    Но во время выполнения цикла эти параметры можно менять.
  • Во время выполнения тестового аудиоцикла запрещается устанавливать режим или повторно запускать аудиоцикл. Сначала его нужно остановить командой «AUEND».
  • Пример запуска и остановки аудиоциклов:
    AT+AUST=0rn — выбираем режим использования гарнитуры.
    AT+AUSTrn — запускаем тестовый аудиоцикл.
    AT+AUENDrn — останавливаем тестовый аудиоцикл.
    AT+AUST=1rn — выбираем режим использования громкой связи.
    AT+AUSTrn — запускаем тестовый аудиоцикл.
    AT+AUENDrn — останавливаем тестовый аудиоцикл.
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
Запрос / установка устройства ввода / вывода звука:

  • УСТРОЙСТВО — представлено цифрой от 0 до 2:
    0 — использовать гарнитуру.
    1 — использовать громкую связь.
    2 — использовать только микрофон громкой связи.
  • Выбранное устройство используется в т.ч. и при голосовых вызовах
  • Пример ответа: +SNFS: 1rnOKrn — используется громкая связь.
  • Пример установки: AT+SNFS=0rn — использовать гарнитуру.
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.

    Формат URC:

  • +CREG: СТАТУСrn
  • +CREG: СТАТУС, «КОД», «ID»rn
  • СТАТУС — представлен цифрой от 0 до 5:
    0 — Не зарегистрирован, не проводится поиск нового оператора.
    1 — Зарегистрирован, домашний оператор.
    2 — Не зарегистрирован, проводится поиск нового оператора.
    3 — Регистрация отклонена.
    4 — Статус неизвестен.
    5 — Зарегистрирован, роуминг.
  • «КОД» — локальной зоны местоположения базовых станций (LAC/TAC), представлен двухбайтным числом в шестнадцатеричном формате.
  • «ID» — идентификатор соты (CID/SAC/ECI), представлен двухбайтным числом в шестнадцатеричном формате.
+CLIP RINGrn
+CLIP: «+74995001456»,145,,,,0rn
Вывод телефонного номера звонящего абонента.
+CMTI +CMTI: «SM», 6rn Информирование о новом входящем SMS сообщении.
Включить/отключить отправку URC можно командой AT+CNMI, а командой AT+CSDH можно разрешить/запретить отображение заголовков входящих SMS.

    Формат URC:

  • +CMTI: «ПАМЯТЬ», ИНДЕКСrn
  • «ПАМЯТЬ» — представлена строкой из двух символов:
    «SM» — память SIM-карты.
    «ON» — список собственных номеров UICC.
    «FD» — фиксированный список номеров.
    «LD» — список последних набранных номеров.
  • ИНДЕКС — представлен числом указывающим на номер (ячейку) памяти в которую сохранено новое входящее SMS сообщение.
  • Зная индекс, можно прочитать SMS сообщение командой AT+CMGR.
+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.

    Формат URC:

  • +CMT: [,»НАЗВАНИЕ»], ДЛИНАrnPDUrn
  • +CMT: «НОМЕР»[,»НАЗВАНИЕ»],»ДАТА»[,ТИП, ВИД, ПРОТОКОЛ, КОДИРОВКА, «НОМЕРс», ТИПс, ДЛИНА]rnДАННЫЕrn
  • Назначение и порядок следования параметров идентичен ответу на команду AT+CMGR для входящих SMS сообщений.
+CSSI
+CSSU
+CSSI: 3rn Информирование о дополнительной услуге.

    Формат URC:

  • +CSSI: КОДrn
  • +CSSU: КОДrn
+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 Индикация ожидания вызова.
     

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом — просто выделите ошибочное слово или фразу и нажмите Shift Enter.

ESP8266: справочник по командам AT Печать

Добавил(а) microsin

  

Каждая инструкция для модуля может находиться в одной строке, которая должна завершаться символом возврата каретки CR, или r (Enter или Ctrl+M, код 0x0D). После поступления кода возврата каретки команда запускается модулем на выполнение, в результате в терминал консоли выводится ответ, содержащий результат выполнения команды.

Примечание: некоторые старые прошивки (www.ai-thinker.com Version:0.9.2.4) требуют для завершения ввода команды последовательности CRLF, rn (т. е. Ctrl+M и Ctrl+J), где символы CR и LF следуют друг за другом (код LF 0x0A). Большинство популярных программ терминала (например putty) после нажатия на Enter выдают только символ возврата каретки r. 

ESP 01 top 1 GND, общий провод всех сигналов, минус питания.
2 TXD, передача данных TTL RS232.
3 GPIO2.
4 CHIP_EN, лог. 1 на этом выводе разрешает работу модуля ESP-01.
5 GPIO0, если при сбросе удерживается 0, то активируется режим обновления прошивки.
6 EXT_RSTB, если здесь 0, то происходит сброс модуля.
7 RXD, прием данных TTL RS232.
8 +3V, питание модуля.

TXD: синий светодиод, индицирующий передачу данных через TTL RS-232.
PWR: красный светодиод, индицирующий питание модуля.

[Общее описание инструкций]

Каждая инструкция (строка символов, начинающаяся на префикс AT и завершающаяся символом CR) может содержать в себе один из 4 типов команд.

Тип Формат инструкции Описание
test AT+CMD=? Запрашивает либо значение параметра, который был установлен командой типа set (чаще всего такие параметры сохраняются в энергонезависимой памяти модуля), либо внутренние параметры и их диапазон значений.
query AT+CMD? Запрашивает текущее значение параметра.
set AT+CMD=parameter Устанавливает значение параметра, определяемого пользователем, и вводит его в действие.
execute AT+CMD Запуск команды без параметров.

Замечания по инструкциям:

• Не все инструкции AT имеют 4 типа команд, т. е. какой-то тип может отсутствовать (например, у инструкции AT+CIPSEND есть только типы set и execute).
• [] означает значение по умолчанию, оно не требуется или может отсутствовать.
• Строковые значения требуют ввода в двойных кавычках, например: AT+CWSAP=»ESP756190″,»21030826″,1,4.
• Инструкция AT должна оканчиваться на последовательностью символов rn.
• Если команда выполнена успешно, то сообщение о её завершении оканчивается на OK, иначе на ERROR или FAIL.

Скорость, с которой работает терминал, равна 115200 бод. Некоторые старые прошивки требуют скорости 9600 бод. Остальные параметры стандартные. Ниже показан скриншот настроек сессии Serial популярной утилиты терминала putty.

ESP 01 putty config

[Базовые команды]

Команда Описание
AT Простая проверка — запустился ли модуль.
AT+RST Перезагрузка модуля.
AT+GMR Вывод информации о версии.
AT+GSLP Вход в режим глубокого сна.
ATE Управление повтором принятых символов команд (эхо).
Команда Тип Ответ
AT execute OK
Команда Тип Ответ
AT+RST execute OK
Команда Тип Ответ Описание
AT+GMR execute number OK Выводит информацию о версии прошивки модуля ESP8266.

number информация о версии, длина 8 байт.

Команда Тип Ответ Описание
AT+GSLP=time set time OK Переводит модуль в режим сна на указанное время.

time значение в миллисекундах, устанавливает время сна ESP8266. Модуль ESP8266 автоматически проснется после истечения time миллисекунд времени глубокого сна.

Примечание: для пробуждения из глубокого сна требуется аппаратная поддержка (сигнал XPD_DCDC должен соединяться с сигналом сброса EXT_RSTB через перемычку 0R).

Команда Тип Ответ
ATEn set OK

ATE0 запрещает эхо.
ATE1 разрешает эхо.

[Команды Wi-Fi]

Команда Описание
AT+CWMODE Режим W-Fi (station/softAP/station+softAP).
AT+CWJAP Подключение к AP (AP означает Access Point, точка доступа).
AT+CWLAP Вывод списка доступных AP.
AT+CWQAP Отключение от AP.
AT+CWSAP Установка параметров для режима AP.
AT+CWLIF Получение IP станции, подключенной к ESP8266 в режиме softAP.
AT+CWDHCP Разрешить/запретить DHCP.
AT+CIPSTAMAC Установить MAC-адрес станции ESP8266.
AT+CIPAPMAC Установить MAC-адрес точки доступа (softAP) ESP8266.
AT+CIPSTA Установить IP-адрес станции ESP8266.
AT+CIPAP Установить IP-адрес точки доступа (softAP) ESP8266.
Команда Тип Ответ Описание
AT+CWMODE? query +CWMODE:mode
OK
Запрашивает информацию о настроенном режиме работы WiFi. Команда возвращает код режима mode.
AT+CWMODE=mode execute OK/ERROR Устанавливает режим работы Wi-Fi модуля ESP8266.

Код режима mode:

1 режим станции (станция может подключаться к точке доступа).
2 режим softAP (Access Point, т. е. модуль работает как точка доступа).
3 softAP + station (модуль может работать и как AP, и как станция).

Команда Тип Ответ Описание
AT+CWJAP? query +CWJAP:ssid
OK
Запрашивает информацию о точке доступа, куда подключен модуль ESP8266 (модуль работает как станция).
AT+CWJAP=ssid,pwd execute OK/ERROR Дает команду подключиться к точке доступа.

ssid строка, где в двойных кавычках указан идентификатор (имя) точки доступа.
pwd строка, где в двойных кавычках указан пароль точки доступа. Максимальная длина строки пароля 64 символа.

Пример:

AT+CWJAP="wifi-1","12345678"
 
OK
Команда Тип Ответ Описание
AT+CWLAP=ssid,mac,enc set +CWLAP:enc,ssid,rssi,mac,chn
OK
Запрашивает информацию о доступных точках доступа с применением фильтрации по их параметрам.
AT+CWLAP execute +CWLAP:enc,ssid,rssi,mac,chn
OK
Выводит список всех доступных точек доступа.

enc какое используется шифрование доступа:

0 OPEN (доступ без пароля, доступ не защищен).
1 WEP
2 WPA_PSK
3 WPA2_PSK
4 WPA_WPA2_PSK

ssid строка идентификатора (имени) точки доступа.

rssi уровень сигнала от точки доступа.

mac строка, в которой содержится MAC-адрес точки доступа.

chn номер используемого радиоканала.

Пример:

AT+CWLAP
+CWLAP:(3,"D323",-70,"c0:c1:c0:97:ad:0f",1)
+CWLAP:(4,"Akado52",-78,"44:32:c8:fc:f3:2e",1)
+CWLAP:(3,"SSID1",-86,"38:46:08:44:54:83",1)
+CWLAP:(3,"Mgts 56",-79,"34:4b:50:1c:66:f1",1)
+CWLAP:(2,"beeline-router105E44",-89,"84:c9:b2:10:5e:44",1)
+CWLAP:(3,"MGTS71",-88,"34:4b:50:18:47:86",1)
+CWLAP:(3,"mgts 53",-78,"4c:ac:0a:70:f1:93",6)
+CWLAP:(4,"NetByNet_055",-69,"10:fe:ed:fb:89:92",6)
+CWLAP:(3,"mgts 49",-85,"34:4b:50:1b:c9:4b",6)
+CWLAP:(3,"mgts66",-86,"4c:ac:0a:70:a4:db",6)
+CWLAP:(3,"mgts81",-87,"84:74:2a:09:7e:95",6)
+CWLAP:(3,"SSID1",-92,"4c:ac:0a:70:e9:23",6)
+CWLAP:(4,"onlime56",-77,"d4:bf:7f:0d:8c:d1",9)
+CWLAP:(3,"mgts52",-82,"34:4b:50:1c:77:c2",11)
+CWLAP:(4,"NetBynet",-84,"00:26:18:3d:4f:61",11)
+CWLAP:(0,"Beeline_WiFi",-92,"00:18:b0:ee:e3:d0",1)
+CWLAP:(0,"Beeline_WiFi_WPA",-87,"00:18:b0:ee:e3:d1",1)
 
OK
Команда Тип Ответ Описание
AT+CWQAP execute OK Производит отключение модуля ESP8266 от точки доступа.

Инструкция конфигурирует режим работы softAP модуля ESP8266 (режим, когда модуль работает как точка доступа).

Команда Тип Ответ Описание
AT+CWSAP? query +CWSAP:ssid,pwd,chn,enc
OK
Запрашивает информацию о конфигурации режима softAP.
AT+CWSAP=ssid,pwd,chn,enc set OK/ERROR Конфигурирует режим softAP.

ssid строка, задающая имя (SSID) точки доступа модуля ESP8266. Значение SSID должно быть указано в двойных кавычках.

pwd строка пароля, максимальная длина 64 символа. Значение пароля должно быть указано в двойных кавычках.

chn идентификатор канала.

enc шифрование доступа:

0 OPEN (доступ без пароля, доступ не защищен).
1 WEP
2 WPA_PSK
3 WPA2_PSK
4 WPA_WPA2_PSK

Пример:

AT+CWSAP="esp_123","1234567890",5,3
 
OK
Команда Тип Ответ Описание
AT+CWLIF execute ipaddr OK Выводит список IP-адресов станций, подключенных к модулю ESP8266, находящемуся в режиме softAP (точка доступа).

ipaddr адрес IP станции Wi-Fi, подключенной к модулю ESP8266, работающему как точка доступа.

Команда Тип Ответ
AT+CWDHCP=mode,en set OK/ERROR

mode:

1 режим станции (станция может подключаться к точке доступа).
2 режим softAP (Access Point, т. е. модуль работает как точка доступа).
3 softAP + station (модуль может работать и как AP, и как станция).

en:

0 запретить DHCP.
1 разрешить DHCP.

Команда Тип Ответ Описание
AT+CIPSTAMAC? query +CIPSTAMAC:mac
OK
Запрашивает информацию о MAC-адресе станции ESP8266 (модуль работает как станция).
AT+CIPSTAMAC=mac execute OK/ERROR Устанавливает значение MAC-адреса станции ESP8266.

mac строка MAC-адреса станции ESP8266, заключенная в двойные кавычки.

Пример:

AT+CIPSTAMAC="18:aa:35:97:d4:7b"
 
OK
Команда Тип Ответ Описание
AT+CIPAPMAC? query +CIPAPMAC:mac
OK
Запрашивает информацию о MAC-адресе точки доступа ESP8266 (модуль работает в режиме softAP).
AT+CIPAPMAC=mac execute OK/ERROR Устанавливает значение MAC-адреса точки доступа ESP8266.

mac строка MAC-адреса точки доступа ESP8266, заключенная в двойные кавычки.

Пример:

AT+CIPAPMAC="18:aa:35:97:d4:7b"
 
OK
Команда Тип Ответ Описание
AT+CIPSTA? query +CIPSTA:mac
OK
Запрашивает информацию о IP-адресе станции ESP8266 (модуль работает как станция).
AT+CIPSTA=ip execute OK/ERROR Устанавливает значение IP-адреса станции ESP8266.

ip строка IP-адреса станции ESP8266, заключенная в двойные кавычки.

Пример:

AT+CIPSTA="192.168.0.23"
 
OK
Команда Тип Ответ Описание
AT+CIPAP? query +CIPAP:mac
OK
Запрашивает информацию о IP-адресе точки доступа ESP8266 (модуль работает в режиме softAP).
AT+CIPAP=ip execute OK/ERROR Устанавливает значение IP-адреса точки доступа ESP8266.

ip строка IP-адреса точки доступа ESP8266, заключенная в двойные кавычки.

Пример:

AT+CIPAP="192.168.0.100"
 
OK

[Команды TCP-IP]

Команда Описание
AT+CIPSTATUS Получить состояние соединения.
AT+CIPSTART Устанавливает соединение TCP, или регистрирует порт UDP.
AT+CIPSEND Отправка данных.
AT+CIPCLOSE Закрытие соединения TCP или UDP.
AT+CIFSR Получение локального адреса IP.
AT+CIPMUX Разрешить режим множественных соединений.
AT+CIPSERVER Сконфигурировать и запустить сервер.
AT+CIPMODE Установить режим передачи (нормальный или прозрачный).
AT+CIPSTO Установить таймаут, в течение которого ESP8266 работает как сервер TCP.
AT+CIUPDATE Обновление прошивки ESP8266 через сеть.
Команда Тип Ответ Описание
AT+CIPSTATUS=? test OK Проверка.
AT+CIPSTATUS execute STATUS:stat
+CIPSTATUS:id,type,addr,port,tetype
OK
Выводит информацию о соединении.

stat текущее состояние модуля ESP8266:

2 получение IP-адреса от точки доступа.
3 соединение установлено.
4 отключено (Disconnect, Link (Socket) Closed).
5 отключено (Disconnect from Last Used AP).

id идентификатор соединения (0..4) для режима множественного доступа.

type строка, где в двойных кавычках указан тип IP-соединения, «TCP» или «UDP».

addr строка в двойных кавычках, показывающая IP-адрес.

port десятичный номер порта.

tetype:

0 ESP8266 работает как клиент.
1 ESP8266 работает как сервер.

Примечание: некоторые модули ESP-01 в ответ на команду AT+CIPSTATUS? выводят ошибку (ERROR), а в ответ на AT+CIPSTATUS выводят STATUS:1 вместо информации, показанной в таблице (означает нет дополнительной информации, но состояние поменялось). На прошивке 0018000902-AI03 эта команда возвращает вместо этого STATUS:2 (нет дополнительной информации, но состояние поменялось). Прошивка 00200.9.5(b1) AI-THINKER Dec 25 2014 выводит вместо этого STATUS:5.

Пример вывода команды AT+CIPSTATUS, означающей, что установлено TCP-подключение к серверу ESP8266 от клиента с IP-адресом 192.168.0.56, порт клиента 29998:

AT+CIPSTATUS
STATUS:3
+CIPSTATUS:0,"TCP","192.168.0.56",29998,1
 
OK

Пример вывода команды AT+CIPSTATUS, означающей, что есть подключение к точке доступа, но сетевых подключений к ESP8266 нет (сервер может быть запущен, но все сетевые подключения разорваны):

Примечание: если нет обмена данными с сервером ESP8266, то сервер через определенное время (таймаут соединения) разрывает соединение. Таймаут устанавливается командой AT+CIPSTO (значение по умолчанию обычно 180 секунд).

Команда устанавливает TCP-соединение с удаленным сервером или регистрирует локальный порт UDP и начинает соединение.

Команда Тип Ответ Описание
AT+CIPSTART=type,addr,port set OK/ERROR Устанавливает соединение как клиент сети (режим одиночного соединения).
AT+CWSAP=id,type,addr,port set OK/ERROR Запускает соединение как клиент (режим множественных соединений).

Описание параметров:

id число от 0 до 4, идентификатор соединения.

type строка, в двойных кавычках указывающая тип соединения «TCP» или «UDP».

addr строка, в двойных кавычках указывающая IP-адрес удаленной точки подключения.

port десятичное число, указывающее порт удаленной точки подключения.

Команда Тип Ответ Описание
AT+CIPSEND=length set SEND OK Устанавливает длину отправляемых данных в байтах. Применяется для нормальной отправки, режим одиночного соединения.
AT+CIPSEND=id,length set SEND OK Устанавливает длину отправляемых данных в байтах. Применяется для нормальной отправки, режим множественных соединений.
AT+CIPSEND execute   Переходит в состояние отправки данных Применяется для режима прозрачной отправки данных.

Описание параметров:

id номер идентификатора сетевого соединения (0..4).
length количество передаваемых данных в байтах, допускается максимум 2048 байт.

Существует 2 режима отправки данных — нормальный (normal) и прозрачный (unvarnished).

Режим normal. В этом режиме данные передаются модулем ESP8266 порциями, при этом отправка каждой порции данных заранее подготавливается командой AT+CIPSEND=length. После ввода этой команды модуль ESP8266 выдает приглашение > и ждет поступления через сигнал RXD указанного length количества байт, после чего автоматически выходит обратно в режим обработки AT-инструкций.

Режим unvarnished. Это прозрачный режим, когда все принимаемые через сигнал RXD данные прозрачно передаются через установленное сетевое соединение на удаленный хост сети, и когда все принимаемые данные от удаленного хоста прозрачно попадают на сигнал TXD. После ввода этой команды модуль выдает приглашение > и начинает работать в прозрачном режиме. Для выхода из прозрачного режима в режим обработки AT-инструкций необходимо поступление «магической» комбинации данных «+++».

Примечание: не все версии прошивки позволяют выйти из прозрачного режима через магическую комбинацию. Например, мой модуль с прошивкой ai-thinker.com Version:0.9.2.4 выходит из прозрачного режима только после аппаратного сброса или передергивания питания.

Команда Тип Ответ Описание
AT+CIPCLOSE=id set OK Закрывает соединение TCP или UDP. Применяется для режима множественных соединений.
AT+CIPCLOSE execute OK Закрывает соединение TCP или UDP. Применяется для режима одиночных соединений.

id номер идентификатора соединения, которое нужно закрыть. Параметр id должен быть от 0 до 4, если нужно закрыть одно соединение. Если указать 5, то закроются все соединения.

Команда Тип Ответ Описание
AT+CIFSR execute +CIFSR:ip
OK
Выводит значение локального IP-адреса.

ip значение IP-адреса для режима станции или softAP.

Команда Тип Ответ Описание
AT+CIPMUX=mode set OK/ERROR Устанавливает режим соединения: разрешает одиночное соединение, или разрешает множественные соединения.

mode:

0 одиночное соединение.
1 множественные соединения.

Примечание: этот режим можно поменять только после того, как все соединения были закрыты. Если запущен сервер, то требуется перезагрузка.

Команда Тип Ответ Описание
AT+CIPSERVER=mode[,port] set OK/ERROR Конфигурирует и запускает сервер на модуле ESP8266.

mode:

0 удаляет сервер (после этого нужна перезагрузка).
1 создает сервер.

port номер порта сервера. Не обязательный параметр, если не указан, то по умолчанию используется порт 333.

Примечание: сервер может быть запущен только в том случае, если разрешен режим множественных соединений (выполнена команда AT+CIPMUX=1). Когда создается сервер, то автоматически создается монитор сервера (кто бы объяснил, что это такое?..). Когда клиент подключается к серверу, то он получает одно соединение, и ему присваивается идентификатор соединения id. Всего допускается не более 5 одновременных соединений (идентификаторы 0..4).

Команда Тип Ответ Описание
AT+CIPMODE? query +CIPMODE:mode
OK
Запрашивает текущий режим отправки данных.
AT+CIPMODE=mode set OK/ERROR Устанавливает режим передачи данных: нормальный или прозрачный режим.

mode:

0 нормальный (normal) режим передачи.
1 прозрачный (unvarnished) режим передачи.

Существует 2 режима отправки данных — нормальный (normal) и прозрачный (unvarnished).

Режим normal. В этом режиме данные передаются модулем ESP8266 порциями, при этом отправка каждой порции данных заранее подготавливается командой AT+CIPSEND=length. После ввода этой команды модуль ESP8266 выдает приглашение > и ждет поступления через сигнал RXD указанного length количества байт, после чего автоматически выходит обратно в режим обработки AT-инструкций. Нормальный режим позволяет выполнять AT-команды в перерывах между передачами блоков данных.

Режим unvarnished. Это прозрачный режим, когда все принимаемые через сигнал RXD данные прозрачно передаются через установленное сетевое соединение на удаленный хост сети, и когда все принимаемые данные от удаленного хоста прозрачно попадают на сигнал TXD. После ввода этой команды модуль выдает приглашение > и начинает работать в прозрачном режиме. Для выхода из прозрачного режима в режим обработки AT-инструкций необходимо поступление «магической» комбинации данных «+++».

Примечание 1: не все версии прошивки позволяют выйти из прозрачного режима через магическую комбинацию. Например, мой модуль с прошивкой ai-thinker.com Version:0.9.2.4 выходит из прозрачного режима только после аппаратного сброса или передергивания питания.

Примечание 2: к сожалению, мне не удалось заставить работать ESP-01 в режиме сервера с прозрачной передачей данных. Прозрачная передача почему-то работает только в режиме клиента. Экспериментировал с прошивками 0018000902-AI03 (Version:0.9.2.4) и 00200.9.5(b1) (Version:0.9.5(b1)).

Команда Тип Ответ Описание
AT+CIPSTO? query +CIPSTO:time Выводит значение таймаута сервера.
AT+CIPSTO=time set OK/ERROR Устанавливает значение таймаута сервера.

time таймаут сервера в секундах, может быть установлен в диапазоне 0..7200 секунд.

Команда Тип Ответ Описание
AT+CIUPDATE execute +CIUPDATE:n
OK
Запускает обновление прошивки через сеть.

n:

1 найден сервер.
2 произошло соединение с сервером.
3 получена редакция.
4 запущено обновление.

[Разное]

Команда Описание
+IPD Это не команда, а маркер приема данных через сеть.
AT+IPR=baud Устанавливает скорость работы порта TTL RS232 модуля ESP8266.
Команда Тип Ответ Описание
  execute +IPD,len:data Получены данные через одиночное сетевое соединение.
  execute +IPD,id,len:data Получены данные через сетевое соединение в режиме множественных соединений.

id идентификатор соединения (0..4).
len длина полученных данных.
data принятые данные.

Команда Тип Ответ Описание
AT+IPR=baud execute OK/ERROR Настраивает скорость работы порта TTL RS232.

baud скорость в бодах.

[Ссылки]

1. AT_Description site:github.com.
2. ESP8266: микросхема Wi-Fi.
3. ESP8266: пример тестирования команд AT.

Добавить комментарий

  1. Радиоэлектроника
  2. Цифровая электроника
  3. Отладочные комплекты
  4. ESP8266

Добавлено 9 июня 2018 в 09:01

ESP8266 в своей конфигурации по умолчанию загружается в режим последовательного модема. В этом режиме вы можете общаться с ним с помощью набора AT-команд. AT-команды ESP8266 можно разделить на три категории: базовые, уровень Wi-Fi и уровень TCP/IP. Ниже приведен список всех базовых AT команд, поддерживаемых ESP8266, с объяснением, что они делают, и как их использовать.

Модуль ESP-12E на базе ESP8266. Базовые AT команды ESP8266

Модуль ESP-12E на базе 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
Примечания
  1. Изменения конфигурации НЕ сохраняются во флеш-памяти.
  2. Использование управления потоком требует поддержки от аппаратных средств:
    • MTCK – это UART0 CTS;
    • MTDO – это UART0 RTS.
  3. Передача данных поддерживается на скоростях в диапазоне 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
Примечания
  1. Изменения конфигурации сохраняются в области пользовательских параметров во флеш-памяти, и будут по-прежнему действительны, когда чип будет снова включен.
  2. Использование управления потоком требует поддержки от аппаратных средств:
    • MTCK – это UART0 CTS;
    • MTDO – это UART0 RTS.
  3. Передача данных поддерживается на скоростях в диапазоне 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 для работы как GPIO
AT+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 для работы как GPIO
AT+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 для работы как GPIO
AT+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 работает как сервер
Примечание Изменения конфигурации НЕ сохраняются во флеш-памяти.
Пример AT+SYSMSG_CUR=3
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 работает как сервер
Примечание Изменения конфигурации сохраняются в области пользовательских параметров во флеш-памяти.
Пример AT+SYSMSG_DEF=3

Теги

AT командаESP8266Wi-FiWi-Fi модульОтладочная плата

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять
комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации
комментария требуется время на премодерацию.

Обновлено 05 декабря 2017


Умный дом,


модем,


arduino,


датчик,


module,


GSM,


SIM800,


SIM800L,


AT,


модуль,


SMS,


USSD,


DTMF

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
Режим Синтаксис Описание
Справка AT+<x>=? Модуль возвращает список возможных параметров и диапазон, принимаемых ими значений
Чтение состояния AT+<x>? Модуль возвращает текущее состояние параметра(-ов)
Команда записи AT+<x>=<…> Команда устанавливает значения параметров, определяемых пользователем
Выполнение команды AT+<x> Исполнение команды
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
1 — ответ содержащий цифровой код ошибки (расшифровка кодов в разделе 19 Справочника по AT-командам (3,07 MB))
2 — ответ содержащий описание ошибки

+CMEE: 0

OK

Команда записи нового значения AT+CMEE=<n> OK OK
26

Для работы через терминал в ручном режиме удобно использовать значение этого параметра 2AT+CMEE=2.

27

Теперь, после установки расширенного информирования об ошибках, можно попробовать отправить несуществующую команду ATE?, на что модем ответит развернуто: +CME ERROR: unknown (неизвестная команда).

28

Незапрашиваемые уведомления

Есть ещё одна категория сообщений получаемых от модуля — незапрашиваемые уведомления. Это сообщения, которые, как видно из названия, могут приходить без совершения пользователем каких-либо действий.

29

Самыми распространенными примерами незапрашиваемых уведомлений, являются:

Незапрашиваемое уведомление или незапрашиваемый код результата (англ. Unsolicited notification, Unsolicited Result Code) — сообщение от GSM-модуля, генерируемое самим модулем в ответ на изменение своего состояния, не спровоцированное отправленной AT-командой.

Полный перечень незапрашивамых уведомлений приведен в разделе 19.3 Справочника по AT-командам (3,07 MB))

30
Уведомление Описание Пример
RING Уведомление входящего вызова RING
+CMTI Уведомление прихода нового SMS-сообщения +CMTI: «SM»,2
+CLIP Автоопределитель номера во время входящего звонка +CLIP: «+78004522441″,145,»»,0,»»,0
+CUSD Получение ответа на отправленный USSD-запрос +CUSD: 0, » Vash balans 198.02 r.
Dlya Vas — nedelya besplatnogo SMS-obsh’eniya s druz’yami! Podkl.: *319#», 15
UNDER-VOLTAGE POWER DOWN
UNDER-VOLTAGE WARNNING
OVER-VOLTAGE POWER DOWN
OVER-VOLTAGE WARNNING
Сообщения о некорректном напряжении модуля UNDER-VOLTAGE WARNNING
+CMTE Сообщения о некорректной температуре модуля +CMTE: 1
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:

  • NO_SAVE — параметр(ы) команды не сохраняется
  • AT&W_SAVE — параметр(ы) команды сохраняется по команде AT&W
  • AUTO_SAVE — параметр(ы) команды сохраняется автоматически
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);

void setup() {
Serial.begin(9600);
Serial.println(«Start!»);
SIM800.begin(9600);
SIM800.println(«AT»);
SIM800.println(«AT+CLVL?»);
SIM800.println(«AT+CMGF=1»);
SIM800.println(«AT+DDET=1,0,1»);
SIM800.println(«AT+CLIP=1»);
}

void loop() {
if (SIM800.available())
Serial.write(SIM800.read());
if (Serial.available())
SIM800.write(Serial.read());
}

39

Ответ на вторую команду пришел четвертым. Причем порядок исполнения постоянно меняется.

40

Но при внимательном рассмотрении видно, что порядок ответов не совпадает с порядком отправленных команд, а это значит, что невозможно однозначно идентифицировать соответствие пришедшего ответа отправленной команде.

41

Но что произойдет, если в списке команд будет команда, которая исполнится с ошибкой (AT+DDET=1,0,3)?

42 Arduino (C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);

void setup() {
Serial.begin(9600);
Serial.println(«Start!»);
SIM800.begin(9600);
SIM800.println(«AT»);
SIM800.println(«AT+CLVL?»);
SIM800.println(«AT+CMGF=1»);

SIM800.println(«AT+DDET=1,0,3»);

SIM800.println(«AT+CLIP=1»);
}

void loop() {
if (SIM800.available())
Serial.write(SIM800.read());
if (Serial.available())
SIM800.write(Serial.read());
}

44

Вряд ли кто-то со 100% уверенностью сможет сказать, в ответ на исполнение каких команд модуль ответил OK, в какой команде ошибка, и какова судьба последней команды AT+CLIP=1?

45

Первой мыслью, которая может прийти в голову — дожидаться выполнения каждой команды, и потом отправлять следующую. А паузу мы можем делать при помощи функции delay():

46 Arduino (C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);

void setup() {
Serial.begin(9600);
Serial.println(«Start!»);
SIM800.begin(9600);
SIM800.println(«AT»);
delay(500);
SIM800.println(«AT+CLVL?»);
delay(500);
SIM800.println(«AT+CMGF=1»);
delay(500);
SIM800.println(«AT+DDET=1,0,3»);
delay(500);
SIM800.println(«AT+CLIP=1»);
delay(500);
}

void loop() {
if (SIM800.available())
Serial.write(SIM800.read());
if (Serial.available())
SIM800.write(Serial.read());
}

47

Запустив скетч, можно с удивлением обнаружить, что после команды AT+DDET=1,0,3 наступает глубокая неизвестность о её дальнейшей судьбе и судьбе последней команды.

49

Такой же ошибкой грешит большинство примеров в сети по отправке SMS. Некорректный пример:

50 Arduino (C++)

1
2
3
4
5
6
7
8
9
10
11
12
13

void sendSMS(String phone, String message)
{
SIM800.print(«AT+CMGF=1r»);
delay(100);
SIM800.println(«AT+CMGS=»» + phone + «»»);
delay(100);
SIM800.println(message);
delay(100);
SIM800.println((char)26);
delay(100);
SIM800.println();
delay(4000);
}

51 Важно:

Неправильно устанавливать паузы для того, чтобы дать модулю выполнить команду. Дело в том, что во время ожидания МК «парализован» и игнорирует всю информацию отправляемую модулем.

52 На заметку:

Корректная функция отправки SMS будет приведена в соответствующем разделе ниже

53

Более корректным является подход, при котором МК остановит исполнение программы до тех пор, пока не будет получен ответ на отправленную команду. Для этого, автор предлагает использовать следующие 2 функции — sendATComand() и waitResponse():

54 Arduino (C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

String sendATCommand(String cmd, bool waiting) {
String _resp = «»;
Serial.println(cmd);
SIM800.println(cmd);
if (waiting) {
_resp = waitResponse();

if (_resp.startsWith(cmd)) {
_resp = _resp.substring(_resp.indexOf(«r», cmd.length()) + 2);
}
Serial.println(_resp);
}
return _resp;
}

String waitResponse() {
String _resp = «»;
long _timeout = millis() + 10000;
while (!SIM800.available() && millis() < _timeout) {};
if (SIM800.available()) {
_resp = SIM800.readString();
}
else {
Serial.println(«Timeout…»);
}
return _resp;
}

55

В функции sendATCommand(cmd, waiting) первый параметр содержит отправляемую команду, а второй параметр waiting задает, нужно ли программе дожидаться ответа от GSM-модуля или нет.

56 На заметку:

Если Echo Mode выключен, строки 8-10 в предыдущем коде (функция sendATCommand()) можно закомментировать.

57

При таком подходе, появляется возможность, во-первых, дожидаться ответа от модуля, когда это необходимо, а во-вторых, появляется возможность анализировать полученный ответ:

58 Arduino (C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);

String _response = «»;
void setup() {
Serial.begin(9600);
SIM800.begin(9600);
Serial.println(«Start!»);

sendATCommand(«AT», true);
sendATCommand(«AT+CLVL?», true);
sendATCommand(«AT+CMGF=1», true);
sendATCommand(«AT+DDET=1,0,3», true);

do {

_response = sendATCommand(«AT+CLIP=1», true);

_response.trim();

} while (_response != «OK»);

Serial.println(«CLI enabled»);

}

String sendATCommand(String cmd, bool waiting) {
String _resp = «»;
Serial.println(cmd);
SIM800.println(cmd);
if (waiting) {
_resp = waitResponse();

if (_resp.startsWith(cmd)) {
_resp = _resp.substring(_resp.indexOf(«r», cmd.length()) + 2);
}
Serial.println(_resp);
}
return _resp;
}

String waitResponse() {
String _resp = «»;
long _timeout = millis() + 10000;
while (!SIM800.available() && millis() < _timeout) {};
if (SIM800.available()) {
_resp = SIM800.readString();
}
else {
Serial.println(«Timeout…»);
}
return _resp;
}

void loop() {
if (SIM800.available())
Serial.write(SIM800.read());
if (Serial.available())
SIM800.write(Serial.read());
}

59

Все команды строго по порядку, друг за другом, вне зависимости от статуса исполнения

60

Теперь остается немного модифицировать процедуру loop() таким образом, чтобы можно было анализировать прочие незапрашиваемые ответы и уведомления в основном теле программы:

61 Arduino (C++)

1
2
3
4
5
6
7
8
9
10

void loop() {
if (SIM800.available()) {
_response = waitResponse();
Serial.println(_response);

}
if (Serial.available()) {
SIM800.write(Serial.read());
};
}

62

Здесь и далее, предлагается использовать данный шаблон в качестве основы для написания программ:

63 Arduino (C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);

String _response = «»;
void setup() {
Serial.begin(9600);
SIM800.begin(9600);
Serial.println(«Start!»);

sendATCommand(«AT», true);

}

String sendATCommand(String cmd, bool waiting) {
String _resp = «»;
Serial.println(cmd);
SIM800.println(cmd);
if (waiting) {
_resp = waitResponse();

if (_resp.startsWith(cmd)) {
_resp = _resp.substring(_resp.indexOf(«r», cmd.length()) + 2);
}
Serial.println(_resp);
}
return _resp;
}

String waitResponse() {
String _resp = «»;
long _timeout = millis() + 10000;
while (!SIM800.available() && millis() < _timeout) {};
if (SIM800.available()) {
_resp = SIM800.readString();
}
else {
Serial.println(«Timeout…»);
}
return _resp;
}

void loop() {
if (SIM800.available()) {
_response = waitResponse();
Serial.println(_response);

}
if (Serial.available()) {
SIM800.write(Serial.read());
};
}

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 — автоответ отключен
1…255 — количество гудков, после которых модуль автоматически ответит на входящий вызов.

при установке слишком большого количества гудков, вызов может быть прерван оператором

OK,
ERROR
ATS0=2

OK

Включение автоопределителя номера (АОН) AT+CLIP=<n>
<n> — параметр включения функции:

0 — АОН выключен
1 — АОН включен

параметр не сохраняется, необходима установка при каждом запуске, по умолчанию значение 0

OK AT+CLIP=1

OK

Незапрашиваемое уведомление +CLIP +CLIP: <number>,<type>[,<subaddr>,<satype>,<alphaId>,<CLI validity>]
<number> — телефонный номер вызывающего абонента
<type> — формат указанного телефонного номера

129 — тип неизвестен
161 — национальный номер
145 — номер в международном формате
177 — внутренний номер оператора

<subaddr> — дополнительный номер
<satype> — формат дополнительного номера
<alphaId> — порядковый номер абонента в телефонной книге (если записан)
<CLI validity> — статус АОН

0 — номер определен
1 — абонент запретил определять свой номер
2 — АОН недоступен или ограничен сетью

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);

String _response = «»;
void setup() {
Serial.begin(9600);
SIM800.begin(9600);
Serial.println(«Start!»);

sendATCommand(«AT», true);

}

String sendATCommand(String cmd, bool waiting) {
String _resp = «»;
Serial.println(cmd);
SIM800.println(cmd);
if (waiting) {
_resp = waitResponse();

if (_resp.startsWith(cmd)) {
_resp = _resp.substring(_resp.indexOf(«r», cmd.length()) + 2);
}
Serial.println(_resp);
}
return _resp;
}

String waitResponse() {
String _resp = «»;
long _timeout = millis() + 10000;
while (!SIM800.available() && millis() < _timeout) {};
if (SIM800.available()) {
_resp = SIM800.readString();
}
else {
Serial.println(«Timeout…»);
}
return _resp;
}

void loop() {
if (SIM800.available()) {
_response = waitResponse();
_response.trim();
Serial.println(_response);

if (_response.startsWith(«RING»)) {

sendATCommand(«ATA», true);

sendATCommand(«ATH», true);

}

}
if (Serial.available()) {
SIM800.write(Serial.read());
};
}

80

Чтобы обеспечить индивидуальный подход к каждому вызову необходимо включить автоопределитель номера (АОН) — команда AT+CLIP=1 (по умолчанию отключен). После того как АОН включен, каждое незапрашиваемое уведомление RING будет дополнительно содержать информацию о номере телефона:

82

Теперь нетрудно сделать белый список телефонных номеров, на которые модуль будет автоматически отвечать. Все входящие вызовы с посторонних номеров, не включенных в белый список, будут сбрасываться:

83 Arduino (C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);

String _response = «»;
void setup() {
Serial.begin(9600);
SIM800.begin(9600);
Serial.println(«Start!»);

sendATCommand(«AT», true);

_response = sendATCommand(«AT+CLIP=1», true);

}

String sendATCommand(String cmd, bool waiting) {
String _resp = «»;
Serial.println(cmd);
SIM800.println(cmd);
if (waiting) {
_resp = waitResponse();

if (_resp.startsWith(cmd)) {
_resp = _resp.substring(_resp.indexOf(«r», cmd.length()) + 2);
}
Serial.println(_resp);
}
return _resp;
}

String waitResponse() {
String _resp = «»;
long _timeout = millis() + 10000;
while (!SIM800.available() && millis() < _timeout) {};
if (SIM800.available()) {
_resp = SIM800.readString();
}
else {
Serial.println(«Timeout…»);
}
return _resp;
}

void loop() {
if (SIM800.available()) {
_response = waitResponse();
_response.trim();
Serial.println(_response);

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()) {
SIM800.write(Serial.read());
};
}

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-формат (по умолчанию)
1 — текстовый формат

OK AT+CMGF=1 формат SMS в текстовый формат (Text Mode)
Удалить SMS AT+CMGD=<index>[,<delflag>] <index> — порядковый номер удаляемого сообщения в заданной группе (>0)
<delflag> — фильтр удаляемых сообщений (необязат.), значения:

0 — удалить сообщение с заданным порядковым номером <index>
1…3 — удаление сообщений, оставляя сообщения по разным критериям (см. datasheet)
4 — удалить все сообщения, включая непрочитанные

ОК AT+CMGD=0,4 удаление всех сообщений
Удалить все SMS AT+CMGDA=<type> <type> — тип удаляемых сообщений, значения (для TextMode):

«DEL READ» — удалить все прочитанные SMS
«DEL UNREAD» — удалить все непрочитанные SMS
«DEL SENT» — удалить все отправленные SMS
«DEL UNSENT» — удалить все неотправленные SMS
«DEL INBOX» — удалить все полученные SMS
«DEL ALL» — удалить все SMS

ОК AT+CMGDA=»DEL ALL» удаление всех сообщений
Получить список SMS AT+CMGL=<stat>[,<mode>] <stat> — фильтр, значения

«REC UNREAD» — полученные непрочитанные SMS
«REC READ» — полученные прочитанные SMS
«STO UNSENT» — сохраненные непрочитанные SMS
«STO SENT» — сохраненные непрочитанные SMS
«ALL» — все SMS

<mode> — фильтр удаляемых сообщений (необязат., используется при <index>=0), значения:

0 — изменить статус сообщений на «прочитано»
1 — оставить статус без изменения

ОК 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″
Test

+CMGL: 3,»REC UNREAD»,»+7928xxxxxxx»,»»,»17/05/22,18:13:25+12″
Balance

OK

Прочитать SMS AT+CMGR=<index>[,<mode>] <index> — порядковый номер сообщения
<mode> — действие после прочтения, значения:

0 — изменить статус сообщений на «прочитано» (по-умолчанию)
1 — оставить статус без изменения

ОК 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-карта
«ME» — память модема/телефона

<index> — индекс полученного сообщения (показывает общее число полученных непрочитанных SMS)

+CMTI: «SM»,3
Получить информацию о хранилищах SMS AT+CPMS?

Ответ:
+CPMS: <mem1>,<used1>,<total1>, <mem2>,<used2>,<total2>, <mem3>,<used3>,<total3>

<mem1> — чтение и удаление сообщений происходит их этого хранилища
<mem2> — сообщение будет записано в это хранилище и отправлено
<mem3> — получаемые сообщения будут записываться в это хранилище
<mem1>, <mem2>, <mem3> могут иметь следующие значения:

«SM» — память SIM-карты
«ME» — память модема/телефона
«SM_P» — предпочтительна память SIM-карты
«ME_P» — предпочтительна память модема/телефона
«MТ» — память SIM-карты и модема/телефона (SM+ME)

<usedx> — количество сообщений в хранилище <memx>
<totalx> — максимальное количество сообщений сохраняемое в хранилище <memx>

OK AT+CPMS?
90

Перед работой с SMS, для использования текстового формата, его нужно включить командой AT+CMGF=1. Поскольку этот параметр сохраняется по команде AT&W, в скетче он будет устанавливаться в начале в формате «несколько команд в одной строке»: AT+CMGF=1;&W

91

Отправка SMS. Формат отправки SMS в текстовом формате выглядит следующим образом:

  • AT+CMGS=<phonenumber>, где <phonenumber> — полный номер телефона адресата, в любом формате в кавычках, например AT+CMGS=»+78001000800″. После выполнения этой команды появится приглашение ввода текста SMS — >. После ввода сообщения, о его окончании нужно сообщить — передать Ctrl+Z (либо ESC для выхода без отправки). Программно, сочетание клавиш Ctrl+Z можно заменить как (char)26 (так как ASCII код символа — 26. SUB, 1A — substitute, символ окончания файла).
92 На заметку:

Как отправить комбинацию клавиш Ctrl+Z или символ ESC через командную строку терминала Serial?

Если отправка SMS осуществляется через окно Serial среды Arduino IDE, то после ввода основного текста сообщения необходимо отправить модулю команду завершения SMS — Ctrl+Z. Сделать это можно копированием символа между кавычками «

» и последующей его вставкой в поле отправки данных.

Чтобы отправить символ ESC (для отмены сообщения) нужно скопировать его между этими кавычками — «

» .

93

Пример программной отправки SMS (для удобства, функционал отправки SMS вынесен в отдельную функцию sendSMS()). В данном примере также используется контроль статуса отправки. В случае неудачной попытки отправки, сообщение об этом появится в терминале:

94 Arduino (C++)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);

String _response = «»;
void setup() {
Serial.begin(9600);
SIM800.begin(9600);
Serial.println(«Start!»);

sendATCommand(«AT», true);

_response = sendATCommand(«AT+CMGF=1;&W», true);

sendSMS(«+7928xxxxxxx», «test message»);

}

String sendATCommand(String cmd, bool waiting) {
String _resp = «»;
Serial.println(cmd);
SIM800.println(cmd);
if (waiting) {
_resp = waitResponse();

if (_resp.startsWith(cmd)) {
_resp = _resp.substring(_resp.indexOf(«r», cmd.length()) + 2);
}
Serial.println(_resp);
}
return _resp;
}

String waitResponse() {
String _resp = «»;
long _timeout = millis() + 10000;
while (!SIM800.available() && millis() < _timeout) {};
if (SIM800.available()) {
_resp = SIM800.readString();
}
else {
Serial.println(«Timeout…»);
}
return _resp;
}

void loop() {
if (SIM800.available()) {
_response = waitResponse();
_response.trim();
Serial.println(_response);

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»);

}

}

}
if (Serial.available()) {
SIM800.write(Serial.read());
};
}

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);

String _response = «»;
void setup() {
Serial.begin(9600);
SIM800.begin(9600);
Serial.println(«Start!»);

sendATCommand(«AT», true);

_response = sendATCommand(«AT+CMGF=1;&W», true);

}

String sendATCommand(String cmd, bool waiting) {
String _resp = «»;
Serial.println(cmd);
SIM800.println(cmd);
if (waiting) {
_resp = waitResponse();

if (_resp.startsWith(cmd)) {
_resp = _resp.substring(_resp.indexOf(«r», cmd.length()) + 2);
}
Serial.println(_resp);
}
return _resp;
}

String waitResponse() {
String _resp = «»;
long _timeout = millis() + 10000;
while (!SIM800.available() && millis() < _timeout) {};
if (SIM800.available()) {
_resp = SIM800.readString();
}
else {
Serial.println(«Timeout…»);
}
return _resp;
}

void loop() {
if (SIM800.available()) {
_response = waitResponse();
_response.trim();
Serial.println(_response);

if (_response.startsWith(«+CMTI:»)) {
int index = _response.lastIndexOf(«,»);
String result = _response.substring(index + 1, _response.length());
result.trim();
_response=sendATCommand(«AT+CMGR=»+result, true);
parseSMS(_response);
sendATCommand(«AT+CMGDA=»DEL ALL»», true);
}
}
if (Serial.available()) {
SIM800.write(Serial.read());
};
}

void parseSMS(String msg) {
String msgheader = «»;
String msgbody = «»;
String msgphone = «»;

msg = msg.substring(msg.indexOf(«+CMGR: «));
msgheader = msg.substring(0, msg.indexOf(«r»));

msgbody = msg.substring(msgheader.length() + 2);
msgbody = msgbody.substring(0, msgbody.lastIndexOf(«OK»));
msgbody.trim();

int firstIndex = msgheader.indexOf(«»,»») + 3;
int secondIndex = msgheader.indexOf(«»,»», firstIndex);
msgphone = msgheader.substring(firstIndex, secondIndex);

Serial.println(«Phone: «+msgphone);
Serial.println(«Message: «+msgbody);

}

void sendSMS(String phone, String message)
{
sendATCommand(«AT+CMGS=»» + phone + «»», true);
sendATCommand(message + «rn» + (String)((char)26), true);
}

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);

int pins[3] = {5, 6, 7};

String _response = «»;
long lastUpdate = millis();
long updatePeriod = 60000;

String phones = «+7928xxxxxxx, +7920xxxxxxx, +7918xxxxxxx»;

void setup() {
for (int i = 0; i < 3; i++) {
pinMode(pins[i], OUTPUT);
}
Serial.begin(9600);
SIM800.begin(9600);
Serial.println(«Start!»);

sendATCommand(«AT», true);

sendATCommand(«AT+CMGF=1;&W», true);
lastUpdate = millis();
}

String sendATCommand(String cmd, bool waiting) {
String _resp = «»;
Serial.println(cmd);
SIM800.println(cmd);
if (waiting) {
_resp = waitResponse();

if (_resp.startsWith(cmd)) {
_resp = _resp.substring(_resp.indexOf(«r», cmd.length()) + 2);
}
Serial.println(_resp);
}
return _resp;
}

String waitResponse() {
String _resp = «»;
long _timeout = millis() + 10000;
while (!SIM800.available() && millis() < _timeout) {};
if (SIM800.available()) {
_resp = SIM800.readString();
}
else {
Serial.println(«Timeout…»);
}
return _resp;
}

bool hasmsg = false;
void loop() {
if (lastUpdate + updatePeriod < millis() ) {
do {
_response = sendATCommand(«AT+CMGL=»REC UNREAD»,1″, true);
if (_response.indexOf(«+CMGL: «) > -1) {
int msgIndex = _response.substring(_response.indexOf(«+CMGL: «) + 7, _response.indexOf(«»REC UNREAD»», _response.indexOf(«+CMGL: «)) — 1).toInt();
char i = 0;
do {
i++;
_response = sendATCommand(«AT+CMGR=» + (String)msgIndex + «,1», true);
_response.trim();
if (_response.endsWith(«OK»)) {
if (!hasmsg) hasmsg = true;
sendATCommand(«AT+CMGR=» + (String)msgIndex, true);
sendATCommand(«n», true);
parseSMS(_response);
break;
}
else {
Serial.println («Error answer»);
sendATCommand(«n», true);
}
} while (i < 10);
break;
}
else {
lastUpdate = millis();
if (hasmsg) {
sendATCommand(«AT+CMGDA=»DEL READ»», true);
hasmsg = false;
}
break;
}
} while (1);
}

if (SIM800.available()) {
_response = waitResponse();
_response.trim();
Serial.println(_response);
if (_response.indexOf(«+CMTI:»)>-1) {
lastUpdate = millis() — updatePeriod;

}
}
if (Serial.available()) {
SIM800.write(Serial.read());
};
}

void parseSMS(String msg) {
String msgheader = «»;
String msgbody = «»;
String msgphone = «»;

msg = msg.substring(msg.indexOf(«+CMGR: «));
msgheader = msg.substring(0, msg.indexOf(«r»));

msgbody = msg.substring(msgheader.length() + 2);
msgbody = msgbody.substring(0, msgbody.lastIndexOf(«OK»));
msgbody.trim();

int firstIndex = msgheader.indexOf(«»,»») + 3;
int secondIndex = msgheader.indexOf(«»,»», firstIndex);
msgphone = msgheader.substring(firstIndex, secondIndex);

Serial.println(«Phone: « + msgphone);
Serial.println(«Message: « + msgbody);

if (msgphone.length() > 6 && phones.indexOf(msgphone) > -1) {
setLedState(msgbody, msgphone);
}
else {
Serial.println(«Unknown phonenumber»);
}
}

void setLedState (String result, String phone) {
bool correct = false;
String msgToSend = «»;
if (result.length() == 2) {
int ledIndex = ((String)result[0]).toInt();
int ledState = ((String)result[1]).toInt();
if (ledIndex >= 1 && ledIndex <= 3 && (ledState == 0 or ledState == 1)) {
msgToSend = «LED:» + (String)ledIndex + » set to « + (ledState == 0 ? «OFF» : «ON»);
digitalWrite(pins[ledIndex — 1], ledState);
correct = true;
}
}
if (!correct) {
msgToSend = «Incorrect command: « + result;
}
Serial.println(msgToSend);
}

void sendSMS(String phone, String message)
{
sendATCommand(«AT+CMGS=»» + phone + «»», true);
sendATCommand(message + «rn» + (String)((char)26), true);
}

105

Далее также не составит труда получить необходимую информацию и задать требуемую логику приложения.

108

Похожие запросы:

  • GSM модуль SIM800L — самое полное руководство на русском языке
  • Дешевый модуль GSM с поддержкой GPRS , для самоделок и удаленного управления.
  • How to send ctrl+z
  • Sending ctrl+z using serial monitor
  • How to put a CTRL-z character to the serial monitor send-window?
  • Монитор порта . Комбинация ctrl+z
  • How to send CTRL_Z through serial
  • Управление при помощи SMS
  • Как парсить входящие SMS
  • SIM800L как осуществлять звонки
  • Управление реле SMS сообщениями (с заданных номеров)
  • Отправка SMS с 3G/GSM модема

Понравилась статья? Поделить с друзьями:
  • Прополис водный раствор инструкция по применению
  • Аскорбиновая кислота конфета инструкция по применению
  • Дротаверин свечи инструкция по применению цена
  • Когда было народное восстание под руководством надя в венгрии
  • Инструкция по охране труда для водителя автомобиля на вывозке леса