Экспериментирование проводилось с использованием Wi-Fi модуля ESP-01 и точки доступа DIR-320NRU (использовались материалы статей [1, 3, 4]).
[Одиночное подключение (ESP8266 в качестве клиента TCP)]
1. Настройка режима WiFi. Переведите ESP-01 в режим станции.
В этой команде 3 означает softAP и режим станции. Ответ:
Примечание: настроенный режим сохраняется в энергонезависимой памяти. Т. е. если сейчас выключить и снова включить питание модуля ESP, то модуль автоматически перейдет в режим станции. Чтобы узнать текущий режим модуля, введите команду "AT+CWMODE?".
2. Перезагрузите модуль, чтобы настройка вошла в действие:
Ответ:
3. Подключение к точке доступа Wi-Fi (например, это может быть домашний роутер наподобие DLink DIR-320):
AT+CWJAP="ssid","password"
В этой команде вводятся идентификатор точки доступа (ssid) и пароль (password). Ответ:
Примечание: SSID и пароль обязательно должны быть заключены в двойные кавычки. SSID и пароль команды также запоминаются в энергонезависимой памяти, и после выключения и включения питания произойдет автоматическое подключение к точке доступа и получение IP-адреса.
4. Как узнать IP-адрес, который получил модуль от точки доступа.
Ответ:
Устройство 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 сервера, номер порта. Ответ:
6. Передача данных.
В этой команде задана длина передаваемых данных в байтах (в этом примере 4 байта). Модуль ESP выдаст приглашение >. Введите 4 любых символа, Enter нажимать не надо (в этом примере введены буквы QWER).
Ответ:
Примечание: если количество отправляемых байт будет больше, чем заданный размер (в этом примере 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 (режим станции, т. е. сетевого клиента, который может подключиться к точке доступа).
Ответ:
2. Подключение к точке доступа Wi-Fi:
AT+CWJAP="ssid","password"
Ответ:
3. Создайте TCP-сервер на компьютере с помощью утилиты NetAssist.exe. В нашем примере это сервер на IP-адресе 192.168.0.56, порт 8080. Выдайте для ESP AT-команду для подключения к серверу:
AT+CIPSTART="TCP","192.168.0.56",8080
Ответ:
4. Пока что мы повторили все предыдущие шаги из предыдущего раздела "Одиночное подключение (ESP8266 в качестве клиента TCP)". Теперь будут отличия: дадим команду разрешить прозрачный режим, когда все передаваемые и принимаемые данные будут прозрачно появляться на сигналах RS-232 TTL TXD и RXD.
Ответ:
5. Передача данных. Чтобы начать передачу, введите команду:
Ответ:
Теперь все данные, которые поступают на ножке 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 выдаст сообщение об отключении от сервера:
[ESP8288 в качестве TCP-сервера]
1. Настройка режима Wi-Fi. Переведите ESP-01 в режим станции.
Ответ:
2. Подключение к точке доступа Wi-Fi (например, это может быть домашний роутер наподобие DLink DIR-320):
AT+CWJAP="ssid","password"
В этой команде вводятся идентификатор точки доступа (ssid) и пароль (password). Ответ:
3. Разрешите множественные подключения к модулю ESP-01 (иначе сервер не запустится).
Ответ:
4. Запуск сервера на модуле ESP-01.
По умолчанию сервер заработает на TCP-порту 333. Ответ модуля ESP-01, сигнализирующий о нормальном запуске сервера:
5. Теперь можно протестировать работу TCP-сервера. В качестве сетевого клиента можно использовать команду telnet, указав в командной строке IP-адрес и порт сервера:
Модуль ESP-01 просигнализирует о подключении к серверу сообщением:
Примечание: ESP8266EX работает как сервер с использованием механизма таймаута. Это означает, что когда соединение установлено, и за определенный период времени (таймаут) не передавалось никаких данных через это соединение, то сервер ESP-01 отключит его, и выдаст при этом сообщение:
Поэтому, если Вы хотите, чтобы соединение сохранялось, то обеспечьте повторение передач пакетов от клиента как минимум каждые 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-сервером.
В этой команде задана длина передаваемых данных в байтах (в этом примере 4 байта). Модуль ESP-01 выдаст приглашение >. Введите 4 любых символа, Enter нажимать не надо (в этом примере введены буквы QWER).
Ответ:
[Передача пакетов UDP]
1. Настройка режима Wi-Fi. Переведите ESP-01 в режим станции.
Ответ:
2. Подключение к точке доступа Wi-Fi (например, это может быть домашний роутер наподобие DLink DIR-320):
AT+CWJAP="ssid","password"
В этой команде вводятся идентификатор точки доступа (ssid) и пароль (password). Ответ:
3. Узнайте IP-адрес, который получил модуль от точки доступа.
Ответ:
4. В нашем сценарии компьютер PC и модуль ESP-01 подключен к одному и тому же роутеру DIR-320. Запустите утилиту NetAssist.exe, в выпадающем списке Settings выберите UDP и нажмите кнопку Connect. В поле Local Host IP будет отображен IP компьютера, куда будет подключаться модуль ESP-01.
5. Разрешите множественные соединения.
Ответ:
6. Создайте соединение UDP. Для соединения нужно указать идентификатор, в нашем примере идентификатор id соединения будет 4. Идентификатор потом понадобится для работы с соединением - для передачи данных и для закрытия соединения.
AT+CIPSTART=4,"UDP","192.168.0.56",8080,1112,0
Ответ:
В этом примере "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 к компьютеру.
В этом примере указано передать 5 байт на соединение с идентификатором 4. В ответ на эту команду модуль выдаст приглашение >. Введите 5 любых символов, Enter нажимать не надо (в этом примере введены буквы asdfg).
Ответ:
В окне 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.
Ответ:
[Ссылки]
1. at_example_0020000903 site:github.com. 2. NetAssist.exe site:securitycameranet.com. 3. ESP8266: справочник по командам AT. 4. ESP8266 WiFi Modules site:zeilhofer.co.at. |
Комментарии
RSS лента комментариев этой записи