Примеры использования AT команд ESP8266

Добавлено 21 июня 2018 в 00:15

В данной статье приведены некоторые конкретные примеры использования AT команд ESP8266. Для получения дополнительной информации о полном наборе команд смотрите предыдущие статьи из этой серии, в которых содержится полная документация на команды.

Для тестирования и отправки команд на ESP8266 вам понадобится установленный на компьютере UART терминал:

  • скорость передачи по умолчанию равна 115200;
  • терминал должен быть установлен в «режим новой строки»; AT команды заканчиваются новой строкой (CR LF).

Внимание:
AT команды должны вводиться заглавными буквами.

Модуль ESP-12E на базе ESP8266. Примеры использования AT команд ESP8266
Модуль ESP-12E на базе ESP8266

Содержание

Одиночное подключение в качестве TCP клиента

  1. Настроить WiFi режим.
    AT+CWMODE=3 // режим softAP+station (точка доступа + станция)
    Отклик:
    OK
  2. Подключиться к роутеру.
    AT+CWJAP="SSID","password" // SSID и пароль роутера
    Отклик:
    OK
  3. Запросить 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
  4. Подключить компьютер к тому же роутеру, к которому подключен ESP8266. Используя сетевую утилиту, создать на компьютере TCP сервер.
    • Например, TCP сервер на компьютере это 192.168.3.116, порт 8080.
  5. Подключить ESP8266 к этому серверу в качестве TCP клиента.
    AT+CIPSTART="TCP","192.168.3.116",8080 // протокол, IP адрес и порт сервера
    Отклик:
    OK
  6. ESP8266 отправляет данные на сервер.
    AT+CIPSEND=4       // установить длину данных, которые будут посылаться, например, 4 байта
    >test                     // ввод данных, без CR
    Отклик:
    Recv 4 bytes
    SEND OK

    Внимание:

    • Если количество введенных байтов больше, чем указанный размер (n):
      • система ответит busy и отправит первые n байтов;
      • после отправки первых n байтов система ответит SEND OK.
  7. Когда ESP8266 получит данные от сервера, он выведет сообщение, приведенное ниже:
    +IPD,n:xxxxxxxxxx          // принято n байтов, данные=xxxxxxxxxxx
  8. Закрыть TCP соединение.
    AT+CIPCLOSE
    Отклик:
    CLOSED
    OK

UDP передача

UDP передача выполняется с помощью команды AT+CIPSTART.

  1. Настроить WiFi режим.
    AT+CWMODE=3 // режим softAP+station (точка доступа + станция)
    Отклик:
    OK
  2. Подключиться к роутеру.
    AT+CWJAP="SSID","password" // SSID и пароль роутера
    Отклик:
    OK
  3. Запросить 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
  4. Подключить компьютер к тому же роутеру, к которому подключен ESP8266. Используя сетевую утилиту, создать на компьютере UDP порт.
    • Например, IP адрес компьютера 192.168.101.110, порт 8080.
  5. Ниже приведены два примера UDP передачи.

UDP (фиксированные удаленные IP адрес и порт)

При UDP передаче, используются ли фиксированные удаленные IP адрес и порт или нет, определяется в последнем параметре AT+CIPSTART. "0" означает, что удаленные IP адрес и порт фиксированы и не могут быть изменены. Такому соединению присваивается конкретный ID для того, чтобы убедиться, что отправитель и получатель данных не будут заменены другими устройствами.

  1. Включить множественные подключения
    AT+CIPMUX=1
    Отклик:
    OK
  2. Создать 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, то данные будут посланы на новый компьютер.
  3. Отправить данные.
    AT+CIPSEND=4,7    // отправить 7 байтов на передачу №4
    >UDPtest                // ввод данных, без CR
    Отклик:
    Recv 7 bytes
    SEND OK

    Внимание:

    • Если количество введенных байтов больше, чем указанный размер (n):
      • система ответит busy и отправит первые n байтов;
      • после отправки первых n байтов система ответит SEND OK.
  4. Когда ESP8266 получит данные, он выведет сообщение, приведенное ниже:
    +IPD,4,n:xxxxxxxxxx          // принято n байтов, данные=xxxxxxxxxxx
  5. Закончить UDP передачу.
    AT+CIPCLOSE=4
    Отклик:
    4,CLOSED
    OK

UDP (удаленные IP адрес и порт могут быть изменены)

При создании UDP передачи последний параметр "AT+CIPSTART" установите в значение 2. Это означает, что удаленные IP адрес и порт могут быть изменены.

  1. Создать 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”, они отправляться на новый компьютер.
  2. Отправить данные.
    AT+CIPSEND=7     // отправить 7 байтов на передачу
    >UDPtest            // ввод данных, без CR
    Отклик:
    Recv 7 bytes
    SEND OK

    Внимание:

    • Если количество введенных байтов больше, чем указанный размер (n):
      • система ответит busy и отправит первые n байтов;
      • после отправки первых n байтов система ответит SEND OK.
  3. Чтобы отправить данные на другое UDP оборудование, вы можете, когда отправляете данные, установить целевые IP адрес и порт. Например, отправить 7 байтов на 192.168.101.111, порт 1000.
    AT+CIPSEND=7,"192.168.101.111",1000     // отправить 7 байтов
    >UDPtest            // ввод данных, без CR
    Отклик:
    Recv 7 bytes
    SEND OK
  4. Когда ESP8266 получит данные, он выведет сообщение, приведенное ниже:
    +IPD,n:xxxxxxxxxx          // принято n байтов, данные=xxxxxxxxxxx
  5. Закончить UDP передачу.
    AT+CIPCLOSE
    Отклик:
    CLOSED
    OK

Сквозной режим UART-WiFi

Сквозной режим UART-WiFI может быть включен, только когда ESP8266 работает как TCP клиент при одиночном подключении, или в UDP передаче.

Сквозной режим UART-WiFi при одиночном клиентском TCP подключении

В данном примере станция ESP8266 действует в качестве TCP клиента, чтобы создать одиночное подключение и выполнять сквозную передачу UART-WiFi. Для режима SoftAP (точка доступа) ESP8266, режим сквозной передачи UART-WiFi может быть выполнен аналогичным образом.

  1. Настроить WiFi режим.
    AT+CWMODE=3 // режим softAP+station (точка доступа + станция)
    Отклик:
    OK
  2. Подключиться к роутеру.
    AT+CWJAP="SSID","password" // SSID и пароль роутера
    Отклик:
    OK
  3. Запросить 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
  4. Подключить компьютер к тому же роутеру, к которому подключен ESP8266. Используя сетевую утилиту, создать на компьютере TCP сервер.
    • Например, TCP сервер на компьютере это 192.168.101.110, порт 8080.
  5. Подключить ESP8266 к этому серверу в качестве TCP клиента.
    AT+CIPSTART="TCP","192.168.101.110",8080 // протокол, IP адрес и порт сервера
    Отклик:
    OK
  6. Включить режим сквозной передачи UART-WiFi.
    AT+CIPMODE=1
    Отклик:
    OK
  7. ESP8266 начинает отправлять данные на сервер.
    AT+CIPSEND
    Отклик:
    >             // Начиная с этого момента, данные, принимаемые с UART, будут передаваться на сервер автоматически.
  8. Остановить отправку данных.
    Когда принимается пакет, содержащий "+++", ESP8266 возвращается в нормальный командный режим. Пожалуйста, подождите минимум одну секунду перед отправкой следующей команды.
    Обратите внимание, что если вы введете "+++" с помощью печати, "+++" может быть не воспринята как последовательность трех "+" из-за задержек при печати.

    Примечание:

    Цель ввода "+++" заключается в выходе ESP8266 из режима сквозной передачи и возвращение в обычный прием AT команд, пока TCP соединение остается подключенным. Поэтому мы также можем использовать команду “AT+CIPSEND” чтобы вернуться в режим сквозной передачи.

  9. Выключить режим сквозной передачи UART-WiFi.
    AT+CIPMODE=0
    Отклик:
    OK
  10. Закрыть TCP соединение.
    AT+CIPCLOSE
    Отклик:
    CLOSED
    OK

Сквозной режим UART-WiFi при UDP передаче

В данном примере точка доступа SoftAP ESP8266 создает сквозную UDP передачу UART-WiFi. Для режима станции ESP8266, режим сквозной UDP передачи UART-WiFi может быть выполнен аналогичным образом.

  1. Настроить WiFi режим.
    AT+CWMODE=3 // режим softAP+station (точка доступа + станция)
    Отклик:
    OK
  2. Подключить компьютера к точке доступа SoftAP ESP8266. Затем с помощью сетевой утилиты создать на компьютере UDP порт.
    • Например, IP адрес компьютера 192.168.4.2, и порт 1001.
  3. ESP8266 создает UDP передачу, у которой удаленные IP адрес и порт фиксированные.
    AT+CIPSTART="UDP","192.168.4.2",1001,2233,0
    Отклик:
    OK
  4. Включить режим сквозной передачи UART-WiFi.
    AT+CIPMODE=1
    Отклик:
    OK
  5. ESP8266 начинает отправлять данные на сервер.
    AT+CIPSEND
    Отклик:
    >             // Начиная с этого момента, данные, принимаемые с UART, будут передаваться на сервер автоматически.
  6. Остановить отправку данных.
    Когда принимается пакет, содержащий "+++", ESP8266 возвращается в нормальный командный режим. Пожалуйста, подождите минимум одну секунду перед отправкой следующей команды.
    Обратите внимание, что если вы введете "+++" с помощью печати, "+++" может быть не воспринята как последовательность трех "+" из-за задержек при печати.

    Примечание:

    Цель ввода "+++" заключается в выходе ESP8266 из режима сквозной передачи и возвращение в обычный прием AT команд, пока TCP соединение остается подключенным. Поэтому мы также можем использовать команду “AT+CIPSEND” чтобы вернуться в режим сквозной передачи.

  7. Выключить режим сквозной передачи UART-WiFi.
    AT+CIPMODE=0
    Отклик:
    OK
  8. Закрыть UDP передачу.
    AT+CIPCLOSE
    Отклик:
    CLOSED
    OK

Несколько подключений в качестве TCP сервера

Когда ESP8266 работает в качестве TCP сервера, должны быть доступны несколько соединений, поскольку к ESP8266 может подключиться более одного клиента.

Ниже приведен пример, показывающий, как реализован TCP сервер, когда ESP8266 работает в режиме точки доступа SoftAP.

  1. Установить WiFi режим.
    AT+CWMODE=3 // режим softAP+station (точка доступа + станция)
    Отклик:
    OK
  2. Включить множественные подключения.
    AT+CIPMUX=1
    Отклик:
    OK
  3. Создать TCP сервер.
    AT+CIPSERVER=1 // по умолчанию порт = 333
    Отклик:
    OK
  4. Подключить компьютер к точке доступа SoftAP ESP8266. Затем, используя сетевую утилиту на компьютере, создать TCP клиент и подключиться к TCP серверу, который был создан ESP8266.

    Примечание:

    Когда ESP8266 работает как TCP сервер, используется механизм тайм-аута. Если TCP клиент подключился к TCP серверу ESP8266, но данные не передвались в течение определенного периода времени, то сервер закрывает соединение по истечении этого периода. Чтобы избежать подобных проблем, пожалуйста, настройте циркуляцию передачи данных каждые 5 секунд.

  5. Отправить данные.
    AT+CIPSEND=0,4    // установить длину данных, которые будут отправлены, здесь это 4 байта
    >test                     // ввод данных, без CR
    Отклик:
    Recv 4 bytes
    SEND OK

    Внимание:

    • Если количество введенных байтов больше, чем указанный размер (n):
      • система ответит busy и отправит первые n байтов;
      • после отправки первых n байтов система ответит SEND OK.
  6. Когда ESP8266 получит данные, он выведет сообщение, приведенное ниже:
    +IPD,0,n:xxxxxxxxxx          // принято n байтов, данные=xxxxxxxxxxx
  7. Закрыть TCP соединение.
    AT+CIPCLOSE=0
    Отклик:
    0,CLOSED
    OK

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


Сообщить об ошибке