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: 5. С помощью специальной сетевой утилиты на компьютере создайте сервер. Это может быть программа NetAssist.exe [2]. Например, создайте сервер на TCP-порт 8080 с IP адресом 192.168.0.53. После этого дайте команду 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). 7. Прием данных (передача данных от утилиты NetAssist.exe). Введите текст для передачи (например "http://microsin.net"), и нажмите кнопку Send (поле ввода и кнопка находятся в нижней части окна программы NetAssist.exe). Ответ: +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. 9. Удаление соединения 4. AT+CIPCLOSE=4 Ответ: OK Unlink [Ссылки] 1. at_example_0020000903 site:github.com. |