ESP8266: пример тестирования команд AT Печать
Добавил(а) microsin   

Экспериментирование проводилось с использованием Wi-Fi модуля ESP-01 и точки доступа DIR-320NRU (использовались материалы статей [1, 3, 4]).

[Одиночное подключение (ESP8266 в качестве клиента TCP)]

1. Настройка режима WiFi. Переведите ESP-01 в режим станции.

AT+CWMODE=3

В этой команде 3 означает softAP и режим станции. Ответ:

OK

Примечание: настроенный режим сохраняется в энергонезависимой памяти. Т. е. если сейчас выключить и снова включить питание модуля ESP, то модуль автоматически перейдет в режим станции. Чтобы узнать текущий режим модуля, введите команду "AT+CWMODE?".

2. Перезагрузите модуль, чтобы настройка вошла в действие:

AT+RST

Ответ:

OK 

3. Подключение к точке доступа Wi-Fi (например, это может быть домашний роутер наподобие DLink DIR-320):

AT+CWJAP="ssid","password

В этой команде вводятся идентификатор точки доступа (ssid) и пароль (password). Ответ:

OK

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

4. Как узнать IP-адрес, который получил модуль от точки доступа.

AT+CIFSR

Ответ:

192.168.0.23

Устройство ESP-01 получило IP от роутера. Можно протестировать командой ping:

ESP 01 ping

5. С помощью специальной сетевой утилиты на компьютере создайте сервер. Это может быть программа NetAssist.exe [2]. Например, создайте сервер на TCP-порт 8080 с IP адресом 192.168.0.53. 

NetAssist create server

После этого дайте команду ESP подключиться к этому серверу в качестве клиента:

AT+CIPSTART="TCP","192.168.0.56",8080

В этой команде через запятую протокол, IP сервера, номер порта. Ответ:

OK
Linked

6. Передача данных.

AT+CIPSEND=4

В этой команде задана длина передаваемых данных в байтах (в этом примере 4 байта). Модуль ESP выдаст приглашение >. Введите 4 любых символа, Enter нажимать не надо (в этом примере введены буквы QWER).

>QWER

Ответ:

SEND OK

Примечание: если количество отправляемых байт будет больше, чем заданный размер (в этом примере 4), то после лишние байты переданы не будут. Если нужно снова передать данные, то команду AT+CIPSEND=N нужно ввести повторно.

В окне программы NetAssist.exe будут отображаться принятые данные, которые передал модуль ESP-01 (в виде HEX-кодов ASCII, потому что стоит галочка Receive As HEX).

NetAssist receive data

7. Прием данных (передача данных от утилиты NetAssist.exe).

Введите текст для передачи (например "http://microsin.net"), и нажмите кнопку Send (поле ввода и кнопка находятся в нижней части окна программы NetAssist.exe).

NetAssist send data

Ответ:

+IPD,19:http://microsin.net
OK

[Прозрачная передача данных (Transparent transmission)]

1. Установка режима WiFi (режим станции, т. е. сетевого клиента, который может подключиться к точке доступа).

AT+CWMODE=3

Ответ:

OK

2. Подключение к точке доступа Wi-Fi:

AT+CWJAP="ssid","password

Ответ:

OK

3. Создайте TCP-сервер на компьютере с помощью утилиты NetAssist.exe. В нашем примере это сервер на IP-адресе 192.168.0.56, порт 8080. Выдайте для ESP AT-команду для подключения к серверу:

AT+CIPSTART="TCP","192.168.0.56",8080

Ответ:

OK
Linked

4. Пока что мы повторили все предыдущие шаги из предыдущего раздела "Одиночное подключение (ESP8266 в качестве клиента TCP)". Теперь будут отличия: дадим команду разрешить прозрачный режим, когда все передаваемые и принимаемые данные будут прозрачно появляться на сигналах RS-232 TTL TXD и RXD.

AT+CIPMODE=1

Ответ:

OK

5. Передача данных. Чтобы начать передачу, введите команду:

AT+CIPSEND

Ответ:

>

Теперь все данные, которые поступают на ножке RXD модуля ESP-01, будут прозрачно передаваться по радио на точку доступа и далее на TCP-сервер. И наоборот, все данные, которые передаст TCP-сервер, появятся на ножке TXD модуля ESP-01.

6. Как выйти из прозрачного режима и остановить передачу. Тут не все однозначно. На некоторых модулях для остановки передачи нужно передать магическую комбинацию символов "+++". Но на моем модуле ESP-01 с прошивкой ai-thinker.com Version:0.9.2.4 это сделать не получилось. Поэтому для выхода из прозрачного режима нужно выполнить аппаратный сброс модуля (подать короткий импульс на сигнал EXT_RSTB, это ножка 6 коннектора модуля ESP-01).

Как вариант можно остановить сервер TCP. В нашем примере для этого надо нажать кнопку Disconnect в программе NetAssist.exe, которая обеспечивала работу сервера. Модуль ESP-01 выдаст сообщение об отключении от сервера:

OK
Unlink

[ESP8288 в качестве TCP-сервера]

1. Настройка режима Wi-Fi. Переведите ESP-01 в режим станции.

AT+CWMODE=3

Ответ:

OK

2. Подключение к точке доступа Wi-Fi (например, это может быть домашний роутер наподобие DLink DIR-320):

AT+CWJAP="ssid","password

В этой команде вводятся идентификатор точки доступа (ssid) и пароль (password). Ответ:

OK

3. Разрешите множественные подключения к модулю ESP-01 (иначе сервер не запустится).

AT+CIPMUX=1

Ответ:

OK

4. Запуск сервера на модуле ESP-01.

AT+CIPSERVER=1

По умолчанию сервер заработает на TCP-порту 333. Ответ модуля ESP-01, сигнализирующий о нормальном запуске сервера:

OK

5. Теперь можно протестировать работу TCP-сервера. В качестве сетевого клиента можно использовать команду telnet, указав в командной строке IP-адрес и порт сервера:

telnet 192.168.0.23 333

Модуль ESP-01 просигнализирует о подключении к серверу сообщением:

Link

Примечание: ESP8266EX работает как сервер с использованием механизма таймаута. Это означает, что когда соединение установлено, и за определенный период времени (таймаут) не передавалось никаких данных через это соединение, то сервер ESP-01 отключит его, и выдаст при этом сообщение:

Unlink

Поэтому, если Вы хотите, чтобы соединение сохранялось, то обеспечьте повторение передач пакетов от клиента как минимум каждые 5 секунд.

6. Прием данных TCP-сервером. В качестве теста можно передавать данные от команды telnet, если нажимать клавиши в её окне. Вот ответ сервера ESP-01, сигнализирующий поступление данных (в окне telnet были последовательно нажаты друг за другом клавиши q, w, e, r, t, y).

+IPD,0,1:q
OK
 
+IPD,0,1:w
OK
 
+IPD,0,1:e
OK
 
+IPD,0,1:r
OK
 
+IPD,0,1:t
OK
 
+IPD,0,1:y
OK

Примечание: после +IPD через запятую идет 0, означающий номер сетевого соединения, дальше через запятую идет количество принятых байт 1, и дальше через двоеточие идет принятый байт в символьном виде (т. е. его код отображается как символ ASCII).

7. Передача данных TCP-сервером.

AT+CIPSEND=4

В этой команде задана длина передаваемых данных в байтах (в этом примере 4 байта). Модуль ESP-01 выдаст приглашение >. Введите 4 любых символа, Enter нажимать не надо (в этом примере введены буквы QWER).

>QWER

Ответ:

SEND OK

[Передача пакетов UDP]

1. Настройка режима Wi-Fi. Переведите ESP-01 в режим станции.

AT+CWMODE=3

Ответ:

OK

2. Подключение к точке доступа Wi-Fi (например, это может быть домашний роутер наподобие DLink DIR-320):

AT+CWJAP="ssid","password

В этой команде вводятся идентификатор точки доступа (ssid) и пароль (password). Ответ:

OK

3. Узнайте IP-адрес, который получил модуль от точки доступа.

AT+CIFSR

Ответ:

192.168.0.23

4. В нашем сценарии компьютер PC и модуль ESP-01 подключен к одному и тому же роутеру DIR-320. Запустите утилиту NetAssist.exe, в выпадающем списке Settings выберите UDP и нажмите кнопку Connect. В поле Local Host IP будет отображен IP компьютера, куда будет подключаться модуль ESP-01.

5. Разрешите множественные соединения.

AT+CIPMUX=1

Ответ:

OK

6. Создайте соединение UDP. Для соединения нужно указать идентификатор, в нашем примере идентификатор id соединения будет 4. Идентификатор потом понадобится для работы с соединением - для передачи данных и для закрытия соединения.

AT+CIPSTART=4,"UDP","192.168.0.56",8080,1112,0

Ответ:

OK

В этом примере "192.168.0.56",8080 это IP и порт удаленной точки подключения (программа NetAssist.exe на компьютере), 1112 это номер локального порта модуля ESP-01 (если это число опустить, то номер порта ESP-01 сам выберет случайным образом). Завершающий 0 означает, что параметры удаленного участника обмена не поменяются. Для нашего примера и случая, если другой компьютер также создаст соединение UDP и отправит данные к ESP-01 на порт 1112, то ESP-01 сможет принять эти данные, но когда ESP-01 отправит данные командой "AT+CIPSEND=4,n", то он отправит их на первый компьютер. Если этот последний параметр будет не 0, то данные будут посланы новому компьютеру.

7. Отправка данных от ESP-01 к компьютеру.

AT+CIPSEND=4,5

В этом примере указано передать 5 байт на соединение с идентификатором 4. В ответ на эту команду модуль выдаст приглашение >. Введите 5 любых символов, Enter нажимать не надо (в этом примере введены буквы asdfg).

>asdfg

Ответ:

SEND OK

В окне NetAssist.exe принятые данные введенных символов asdfg отобразятся как HEX-коды (61 73 64 66 67).

8. Прием данных модулем ESP-01 от компьютера (передача данных от утилиты NetAssist.exe).

Введите текст для передачи (например "http://microsin.net"), и нажмите кнопку Send (поле ввода и кнопка находятся в нижней части окна программы NetAssist.exe).

Ответ:

+IPD,4,19:http://microsin.net
OK

Обратите внимание, что после +IPD теперь стоит не только количество принятых байт 19, но и еще идентификатор соединения 4.

NetAssist receive send UDP

9. Удаление соединения 4.

AT+CIPCLOSE=4

Ответ:

OK
Unlink

[Ссылки]

1. at_example_0020000903 site:github.com.
2. NetAssist.exe site:securitycameranet.com.
3. ESP8266: справочник по командам AT.
4. ESP8266 WiFi Modules site:zeilhofer.co.at.