Примеры использования AT команд ESP8266
В данной статье приведены некоторые конкретные примеры использования AT команд ESP8266. Для получения дополнительной информации о полном наборе команд смотрите предыдущие статьи из этой серии, в которых содержится полная документация на команды.
Для тестирования и отправки команд на ESP8266 вам понадобится установленный на компьютере UART терминал:
- скорость передачи по умолчанию равна 115200;
- терминал должен быть установлен в «режим новой строки»; AT команды заканчиваются новой строкой (CR LF).
Внимание:
AT команды должны вводиться заглавными буквами.
Содержание
Одиночное подключение в качестве TCP клиента
- Настроить WiFi режим.
AT+CWMODE=3 // режим softAP+station (точка доступа + станция)Отклик:OK
- Подключиться к роутеру.
AT+CWJAP="SSID","password" // SSID и пароль роутераОтклик:OK
- Запросить IP адрес устройства ESP8266.
AT+CIFSRОтклик:+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:a5:8d:c6"
+CIFSR:STAIP,"192.168.3.133"
+CIFSR:STAMAC,"18:fe:34:a5:8d:c6"
OK - Подключить компьютер к тому же роутеру, к которому подключен ESP8266. Используя сетевую утилиту, создать на компьютере TCP сервер.
- Например, TCP сервер на компьютере это 192.168.3.116, порт 8080.
- Подключить ESP8266 к этому серверу в качестве TCP клиента.
AT+CIPSTART="TCP","192.168.3.116",8080 // протокол, IP адрес и порт сервераОтклик:OK
- ESP8266 отправляет данные на сервер.
AT+CIPSEND=4 // установить длину данных, которые будут посылаться, например, 4 байтаОтклик:
>test // ввод данных, без CRRecv 4 bytes
SEND OKВнимание:
- Если количество введенных байтов больше, чем указанный размер (n):
- система ответит busy и отправит первые n байтов;
- после отправки первых n байтов система ответит SEND OK.
- Если количество введенных байтов больше, чем указанный размер (n):
- Когда ESP8266 получит данные от сервера, он выведет сообщение, приведенное ниже:
+IPD,n:xxxxxxxxxx // принято n байтов, данные=xxxxxxxxxxx
- Закрыть TCP соединение.
AT+CIPCLOSEОтклик:CLOSED
OK
UDP передача
UDP передача выполняется с помощью команды AT+CIPSTART
.
- Настроить WiFi режим.
AT+CWMODE=3 // режим softAP+station (точка доступа + станция)Отклик:OK
- Подключиться к роутеру.
AT+CWJAP="SSID","password" // SSID и пароль роутераОтклик:OK
- Запросить IP адрес устройства ESP8266.
AT+CIFSRОтклик:+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:a5:8d:c6"
+CIFSR:STAIP,"192.168.101.133"
+CIFSR:STAMAC,"18:fe:34:a5:8d:c6"
OK - Подключить компьютер к тому же роутеру, к которому подключен ESP8266. Используя сетевую утилиту, создать на компьютере UDP порт.
- Например, IP адрес компьютера 192.168.101.110, порт 8080.
- Ниже приведены два примера UDP передачи.
UDP (фиксированные удаленные IP адрес и порт)
При UDP передаче, используются ли фиксированные удаленные IP адрес и порт или нет, определяется в последнем параметре AT+CIPSTART
. "0" означает, что удаленные IP адрес и порт фиксированы и не могут быть изменены. Такому соединению присваивается конкретный ID для того, чтобы убедиться, что отправитель и получатель данных не будут заменены другими устройствами.
- Включить множественные подключения
AT+CIPMUX=1Отклик:OK
- Создать UDP передачу, например, ID равен 4.
AT+CIPSTART=4,"UDP","192.168.101.110",8080,1112,0Отклик:4,CONNECT
OKПримечания:
- "192.168.101.110", 8080 – это удаленные IP адрес и порт UDP передачи на противоположной стороне, то есть настроенные на компьютере.
- 1112 – это локальный порт ESP8266. Пользователь может сам назначить этот порт. Значение этого порта будет случайным. Оно не определено заранее.
- 0 означает, что удаленные IP адрес и порт не могут быть изменены. Например, если другой компьютер также создает UDP сущность и посылает данные на порт 1112, принадлежащий ESP8266, ESP8266 может принять данные, отправленные с порта 1112, но, когда данные посылаются с помощью команды “
AT+CIPSEND=4, X
”, они всё еще отправляются на первый компьютер. Если данный параметр не равен 0, то данные будут посланы на новый компьютер.
- Отправить данные.
AT+CIPSEND=4,7 // отправить 7 байтов на передачу №4Отклик:
>UDPtest // ввод данных, без CRRecv 7 bytes
SEND OKВнимание:
- Если количество введенных байтов больше, чем указанный размер (n):
- система ответит busy и отправит первые n байтов;
- после отправки первых n байтов система ответит SEND OK.
- Если количество введенных байтов больше, чем указанный размер (n):
- Когда ESP8266 получит данные, он выведет сообщение, приведенное ниже:
+IPD,4,n:xxxxxxxxxx // принято n байтов, данные=xxxxxxxxxxx
- Закончить UDP передачу.
AT+CIPCLOSE=4Отклик:4,CLOSED
OK
UDP (удаленные IP адрес и порт могут быть изменены)
При создании UDP передачи последний параметр "AT+CIPSTART
" установите в значение 2. Это означает, что удаленные IP адрес и порт могут быть изменены.
- Создать UDP передачу.
AT+CIPSTART="UDP","192.168.101.110",8080,1112,2Отклик:CONNECT
OKПримечания:
- "192.168.101.110", 8080 – это удаленные IP адрес и порт UDP передачи на противоположной стороне, то есть настроенные на компьютере.
- 1112 – это локальный порт ESP8266. Пользователь может сам назначить этот порт. Значение этого порта будет случайным. Оно не определено заранее.
- 2 означает, что удаленные IP адрес и порт могут быть изменены на параметры последнего устройства, которое взаимодействовало с ESP8266. Например, если другой компьютер также создает UDP сущность и посылает данные на порт 1112, принадлежащий ESP8266, ESP8266 может принять данные, отправленные с порта 1112, и, когда данные посылаются с помощью команды “
AT+CIPSEND=4, X
”, они отправляться на новый компьютер.
- Отправить данные.
AT+CIPSEND=7 // отправить 7 байтов на передачуОтклик:
>UDPtest // ввод данных, без CRRecv 7 bytes
SEND OKВнимание:
- Если количество введенных байтов больше, чем указанный размер (n):
- система ответит busy и отправит первые n байтов;
- после отправки первых n байтов система ответит SEND OK.
- Если количество введенных байтов больше, чем указанный размер (n):
- Чтобы отправить данные на другое UDP оборудование, вы можете, когда отправляете данные, установить целевые IP адрес и порт. Например, отправить 7 байтов на 192.168.101.111, порт 1000.
AT+CIPSEND=7,"192.168.101.111",1000 // отправить 7 байтовОтклик:
>UDPtest // ввод данных, без CRRecv 7 bytes
SEND OK - Когда ESP8266 получит данные, он выведет сообщение, приведенное ниже:
+IPD,n:xxxxxxxxxx // принято n байтов, данные=xxxxxxxxxxx
- Закончить UDP передачу.
AT+CIPCLOSEОтклик:CLOSED
OK
Сквозной режим UART-WiFi
Сквозной режим UART-WiFI может быть включен, только когда ESP8266 работает как TCP клиент при одиночном подключении, или в UDP передаче.
Сквозной режим UART-WiFi при одиночном клиентском TCP подключении
В данном примере станция ESP8266 действует в качестве TCP клиента, чтобы создать одиночное подключение и выполнять сквозную передачу UART-WiFi. Для режима SoftAP (точка доступа) ESP8266, режим сквозной передачи UART-WiFi может быть выполнен аналогичным образом.
- Настроить WiFi режим.
AT+CWMODE=3 // режим softAP+station (точка доступа + станция)Отклик:OK
- Подключиться к роутеру.
AT+CWJAP="SSID","password" // SSID и пароль роутераОтклик:OK
- Запросить IP адрес устройства ESP8266.
AT+CIFSRОтклик:+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:a5:8d:c6"
+CIFSR:STAIP,"192.168.101.133"
+CIFSR:STAMAC,"18:fe:34:a5:8d:c6"
OK - Подключить компьютер к тому же роутеру, к которому подключен ESP8266. Используя сетевую утилиту, создать на компьютере TCP сервер.
- Например, TCP сервер на компьютере это 192.168.101.110, порт 8080.
- Подключить ESP8266 к этому серверу в качестве TCP клиента.
AT+CIPSTART="TCP","192.168.101.110",8080 // протокол, IP адрес и порт сервераОтклик:OK
- Включить режим сквозной передачи UART-WiFi.
AT+CIPMODE=1Отклик:OK
- ESP8266 начинает отправлять данные на сервер.
AT+CIPSENDОтклик:> // Начиная с этого момента, данные, принимаемые с UART, будут передаваться на сервер автоматически.
- Остановить отправку данных.
Когда принимается пакет, содержащий "+++", ESP8266 возвращается в нормальный командный режим. Пожалуйста, подождите минимум одну секунду перед отправкой следующей команды.
Обратите внимание, что если вы введете "+++" с помощью печати, "+++" может быть не воспринята как последовательность трех "+" из-за задержек при печати.Примечание:
Цель ввода "+++" заключается в выходе ESP8266 из режима сквозной передачи и возвращение в обычный прием AT команд, пока TCP соединение остается подключенным. Поэтому мы также можем использовать команду “
AT+CIPSEND
” чтобы вернуться в режим сквозной передачи. - Выключить режим сквозной передачи UART-WiFi.
AT+CIPMODE=0Отклик:OK
- Закрыть TCP соединение.
AT+CIPCLOSEОтклик:CLOSED
OK
Сквозной режим UART-WiFi при UDP передаче
В данном примере точка доступа SoftAP ESP8266 создает сквозную UDP передачу UART-WiFi. Для режима станции ESP8266, режим сквозной UDP передачи UART-WiFi может быть выполнен аналогичным образом.
- Настроить WiFi режим.
AT+CWMODE=3 // режим softAP+station (точка доступа + станция)Отклик:OK
- Подключить компьютера к точке доступа SoftAP ESP8266. Затем с помощью сетевой утилиты создать на компьютере UDP порт.
- Например, IP адрес компьютера 192.168.4.2, и порт 1001.
- ESP8266 создает UDP передачу, у которой удаленные IP адрес и порт фиксированные.
AT+CIPSTART="UDP","192.168.4.2",1001,2233,0Отклик:OK
- Включить режим сквозной передачи UART-WiFi.
AT+CIPMODE=1Отклик:OK
- ESP8266 начинает отправлять данные на сервер.
AT+CIPSENDОтклик:> // Начиная с этого момента, данные, принимаемые с UART, будут передаваться на сервер автоматически.
- Остановить отправку данных.
Когда принимается пакет, содержащий "+++", ESP8266 возвращается в нормальный командный режим. Пожалуйста, подождите минимум одну секунду перед отправкой следующей команды.
Обратите внимание, что если вы введете "+++" с помощью печати, "+++" может быть не воспринята как последовательность трех "+" из-за задержек при печати.Примечание:
Цель ввода "+++" заключается в выходе ESP8266 из режима сквозной передачи и возвращение в обычный прием AT команд, пока TCP соединение остается подключенным. Поэтому мы также можем использовать команду “
AT+CIPSEND
” чтобы вернуться в режим сквозной передачи. - Выключить режим сквозной передачи UART-WiFi.
AT+CIPMODE=0Отклик:OK
- Закрыть UDP передачу.
AT+CIPCLOSEОтклик:CLOSED
OK
Несколько подключений в качестве TCP сервера
Когда ESP8266 работает в качестве TCP сервера, должны быть доступны несколько соединений, поскольку к ESP8266 может подключиться более одного клиента.
Ниже приведен пример, показывающий, как реализован TCP сервер, когда ESP8266 работает в режиме точки доступа SoftAP.
- Установить WiFi режим.
AT+CWMODE=3 // режим softAP+station (точка доступа + станция)Отклик:OK
- Включить множественные подключения.
AT+CIPMUX=1Отклик:OK
- Создать TCP сервер.
AT+CIPSERVER=1 // по умолчанию порт = 333Отклик:OK
- Подключить компьютер к точке доступа SoftAP ESP8266. Затем, используя сетевую утилиту на компьютере, создать TCP клиент и подключиться к TCP серверу, который был создан ESP8266.
Примечание:
Когда ESP8266 работает как TCP сервер, используется механизм тайм-аута. Если TCP клиент подключился к TCP серверу ESP8266, но данные не передвались в течение определенного периода времени, то сервер закрывает соединение по истечении этого периода. Чтобы избежать подобных проблем, пожалуйста, настройте циркуляцию передачи данных каждые 5 секунд.
- Отправить данные.
AT+CIPSEND=0,4 // установить длину данных, которые будут отправлены, здесь это 4 байтаОтклик:
>test // ввод данных, без CRRecv 4 bytes
SEND OKВнимание:
- Если количество введенных байтов больше, чем указанный размер (n):
- система ответит busy и отправит первые n байтов;
- после отправки первых n байтов система ответит SEND OK.
- Если количество введенных байтов больше, чем указанный размер (n):
- Когда ESP8266 получит данные, он выведет сообщение, приведенное ниже:
+IPD,0,n:xxxxxxxxxx // принято n байтов, данные=xxxxxxxxxxx
- Закрыть TCP соединение.
AT+CIPCLOSE=0Отклик:0,CLOSED
OK