Remotexy esp 01 режим клиента настройка роутера
RemoteXY - сервис для организации удаленного беспроводного и проводного управления самодельными устройствами на базе arduino, esp8266, esp32 и chipKIT. Сервис состоит из онлайн-редактора мобильного интерфейса, приложения для устройств Android и iOS, сервера для удаленного управления устройствами, а также библиотеки для ArduinoIDE.
Приложений для android устройств два - бесплатное и платное. Бесплатное приложение имеет ограничение в 5 элементов интерфейса. Если же элементов интерфейса больше, то приложение позволяет протестировать работу устройства в течении ограниченного времени (всего 30 секунд за сеанс).
Работа с сервисом RemoteXY организована следующим образом:
- в онлайн-редакторе необходимо выбрать программируемое устройство и способ его подключения, затем настроить способ подключения;
- при помощи онлайн-редактора необходимо создать интерфейс программируемого устройства, для этого предусмотрены элементы управления и индикации, такие как кнопки, переключатели, поля ввода и вывода текста, графики;
- получить сгенерированный онлайн-редактором исходный код, перенести его в ArduinoIDE (также поддерживаются FLProg и MPIDE), дополнить необходимым кодом и загрузить в программируемое устройство;
- при помощи приложения подключиться к устройству…. готово!
Отмечу, что интерфейс хранится непосредственно в программируемом устройстве в виде массива чисел, и загружается в приложение для смартфона при каждом подключении. Таким образом, отпадает необходимость настройки интерфейса на каждом подключаемом к устройству смартфоне, необходимо лишь настроить связь между смартфоном и запрограммированном устройстве.
В данном цикле статей я предлагаю поближе познакомиться с сервисом RemoteXY и начну я пожалуй с основ.
Онлайн-редактор интерфейса.
Редактор интерфейса разделен на 3 части. В центре основное окно, в котором отображается внешний вид созданного интерфейса. Слева раскрывающиеся списки с элементами интерфейса, сгруппированные по категориям. Справа расположены вкладки конфигурации подключения устройства, настройки экрана и контекстно-зависимая вкладка настройки выбранного элемента интерфейса.
Работа с онлайн-редактором строится по принципу drag-and-drop, также как и в проводнике компьютера. Просто перетаскивайте необходимый элемент с левой области в центральную, на макет смартфона. При клике на элемент на макете смартфона он выделяется синей рамкой и теперь его можно перемещать по макету, а также масштабировать, хватая и перемещая маркеры по углам рамки. Обратите внимание, над рамкой выбранного элемента отображается имя переменной, по которому в дальнейшем будет осуществляться доступ к выбранному элементу.
Начать знакомство с RemoteXY я рекомендую с изучения способов связи приложения и устройств, которыми необходимо управлять. Но перед эти создадим простейший интерфейс следующим образом:
- перетащите на макет смартфона элемент “выключатель”;
- убедитесь что в настройках выключателя в выпадающем списке “привязать к выводу” выбран вывод с надписью “LED”;
- готово.
Выглядеть это должно так:
Для получения сгенерированного кода необходимо нажать большую зеленую кнопку “Получить исходный код”.
Не забудьте установить актуальную версию библиотеки в ArduinoIDE, скопируйте в ArduinoIDE полученный код, по необходимости (а она возникает в 99.9% случаев) дополните полученный код своим.
Теперь можно приступать к изучению способов соединения приложения и контролируемых устройств.
Для доступа к вариантам совместимых соединений необходимо раскрыть вкладку “конфигурация” в правой части онлайн редактора и нажать мышкой на любой из появившихся значков.
Список всех возможных соединений приведен на следующем скриншоте.
Соединение при помощи кабеля требует наличие функции OTG в смартфоне. К сожалению не все смартфоны могут похвастаться наличием такой функции. Соединение такого типа доступно для всех плат прототипирования, которые имеют на плате распаянный переходник USB-UART. При отсутствии распаянного переходника USB-UART (как в случае с arduino pro mini) можно подключить внешний.
Я продемонстрирую соединение через кабель на примере Arduino Mega2560. Я использую следующую конфигурацию подключения:
- соединение: USB OTG
- устройство: Arduino Mega2560
- модуль: USB-UART
- среда разработки: ArduinoIDE.
Далее необходимо выбрать программный или аппаратный протокол, я выберу конечно же аппаратный.
Выбираю Serial port к которому подключен переходник USB-UART, который размещен на плате Mega2560.
Ну и напоследок устанавливаю скорость соединения 9600 бод.
Напомню, что в интерфейсе сейчас находится один элемент управления - переключатель, который зажигает расположенный на плате светодиод.
После загрузки скомпилированного кода в “мегу” я подключаю её к своему смартфону. Процесс подключения показан на следующих скриншотах.
Очень специфичный способ связи смартфона и управляемого устройства. Для постоянного соединения годится только в некоторых случаях, но очень подходит для не частого подключения, например для настройки управляемого устройства.
Примечание: замечено, что этот способ соединения не работает с Leonardo.
Следующий тип связи - BlueTooth. Возможна работа с модулями HC-05, HM-10 и встроенным в ESP32 bluetooth on chip.
Для примера я буду использовать связку из Mega2560 и HC-05, подключусь к Hardware serial 3 на скорости 9600 бод (стандартная скорость для HC-05).
Перед подключением устройства рекомендую связать смартфон и bluetooth модуль стандартными средствами смартфона. Дальнейшее подключение приложения к устройству не составляет труда.
Отмечу, что для модуля HM-10 и ESP32 bluetooth on chip необходимо выбирать Bluetooth BLE.
Данный способ связи годится для использования на небольших расстояниях, ограниченных дальностью связи модуля bluetooth. Отлично подойдет для устройств умного дома без доступа к сети интернет, отдельных “умных” устройств, управляемых со смартфона игрушек. Особенностью данного способа связи является то, что смартфон может поддерживать связь с несколькими устройствами одновременно, что не достижимо при помощи следующего способа связи - точки доступа.
Подключение “Wi-Fi access point” доступно для устройств, построенных на esp8266, ESP32 и любых arduino и chipKIT совместно с esp-01. Для примера я буду использовать NodeMCU v3, точку доступа оставлю открытой, но конечно же можно использовать пароль для исключения несанкционированного доступа к вашему устройству.
NodeMCU создает открытую точку доступа с именем RemoteXY, необходимо подключиться к ней стандартными средствами смартфона, а затем через программу.
Особенности данного способа подключения:
- отлично подходит для устройств на базе esp8266 и esp32 (хотя для esp32 доступен и bluetooth);
- работает на ограниченном расстоянии, которое зависит от wi-fi антенны на контролируемом устройстве;
- не требует дополнительных устройств для организации связи между смартфоном и контролируемым устройством;
- можно подключить только одно контролируемое устройство одновременно;
- при подключении смартфона к контролируемому устройству становится недоступным использование интернета на смартфоне.
Следующий способ подключения Ethernet TCP/IP исключает некоторые недостатки предыдущего способа, но при этом добавляет свои. Так для подключения способом Ethernet TCP/IP необходимо главное устройство, через которое будет осуществляться связь. Это может мыть ADSL или Ethernet модем с функцией точки доступа Wi-Fi, смартфон или ноутбук, на котором активирована точка доступа. При этом связь смартфона и контролируемого устройства будет доступна внутри всей локальной сети.
Конфигурация подключения продемонстрирована на следующем скриншоте. Я использую всё ту же NodeMCU, но на этот раз подключаю её к точке доступа, созданной моим ноутбуком. Обратите внимание, точка доступа защищена паролем, его необходимо указать в конфигурации соединения.
После того как контролируемое устройство прошито и подключено к точке доступа, необходимо узнать его IP-адрес. В моем случае это можно посмотреть в конфигурации точки доступа на ноутбуке.
Теперь необходимо подключить смартфон к той же точке доступа, перейти в приложение и ввести в нем полученный IP контролируемого устройства.
Преимущества и недостатки данного способа связи:
- необходимо узловое устройство связи, например модем с точкой доступа Wi-Fi;
- смартфон и контролируемое устройство должны быть подключены к одной локальной сети;
- необходимо знать IP-адрес контролируемого устройства, с этим помогут сканеры IP-адресов локальных сетей;
- IP-адрес контролируемого устройства может меняться при каждом подключении (в случае с точкой доступа на ноутбуке), поэтому необходимо сканировать сеть каждый раз при подключении, либо задавать IP-адрес принудительно (как в моем TP-LINK);
- если локальная сеть подключена к глобальной сети, то у смартфона остается возможность пользоваться сетью интернет.
Все рассмотренные выше способы связи требуют, чтобы смартфон и контролируемое устройство находились относительно недалеко, в пределах связи беспроводных модулей или локальной сети. Но предусмотрен способ связи, позволяющий управлять вашими устройствами хоть с тропического острова - облачный сервер.
Для управления устройством через облачный сервер необходимо, чтобы контролируемое устройство было подключено к глобальной сети интернет. Кроме того необходимо зарегистрироваться на сайте и получить токен, по которому сервер идентифицирует устройство и организует связь с ним.
Для этого необходимо в вверху страницы справа перейти по ссылке “мои токены” и создать новый токен. Здесь же можно проконтролировать, подключено ли контролируемое устройство к серверу в данный момент.
Далее можно переходить к дальнейшей конфигурации соединения.
Обратите внимание, токен выбирается из выпадающего списка, нет необходимости копипастить его или вводить вручную.
А вот в приложении придется копипастить или вводить токен вручную.
Преимущества и недостатки:
- доступ к контролируемому устройству из любой точки мира где доступен интернет - это несомненный плюс;
- обоим устройствам, и смартфону и контролируемому устройству, необходим доступ к глобальной сети интернет. Не могу назвать это минусом, но это накладывает свои ограничения.
В заключении.
Предусмотрены способы связи на все случаи. Конечно, идеального способа связи не существует, каждый имеет свои преимущества и недостатки. Тем не менее, из предложенных способов связи всегда можно подобрать удовлетворяющий потребностям способ, с учетом компромиссов.
Модуль ESP8266 позволяет реализовать дистанционное управление микроконтроллерным устройством по WiFi. Реализована поддержка модуля всеми контроллерами Arduino. Исходный код графического интерфейса можно получить для сред разработки Arduino IDE и PLProg.
Для использования модуля ESP8266 выберите этот модуль в настройках конфигурации проекта.
В RemoteXY модуль может быть настроен для работы в двух режимах: точка доступа и клиента для подключение к существующей точке доступа.
Режим работы в качестве точки доступа (Access Point) настраивает модуль ESP8266 как точку доступа и позволяет подключиться к этой точке напрямую. Точка доступа доступна для подключения к ней со смартфона или планшета в радиусе доступности радиосигнала. При этом не требуется какой либо другой сетевой инфраструктуры. Данный режим подключения может быть использован в открытом поле, где нет компьютерных сетей и интернета. Для конфигурации данного режима работы в свойствах конфигурации проекта необходимо выбрать тип соединения "Wi-Fi точка доступа".
Режим работы в качестве клиента предполагает, что ESP8266 будет автоматически подключаться к существующей Wi-Fi точке доступа, например к домашнему маршрутизатору (роутеру) или точке доступа предприятия. При этом подключенный к Arduino модуль ESP8266 должен располагаться в физической доступности радиосигнала этой точки доступа. Подключение к устройству со смартфона или планшета будет происходить не на прямую, а через сеть Ethernet, по IP адресу, выданному модулю ESP8266 DHCP сервером. Появляется возможность подключиться к устройству из любого места локальной сети, а так же из сети интернет. Подключение из сети интернет возможно при правильной настройке маршрутизатора, например использование виртуального сервера. Для конфигурации данного режима работы в свойствах конфигурации проекта необходимо выбрать тип соединения "Ethernet".
Подключение модуля ESP8266 к Arduino осуществляется через последовательный интерфейс. Можно использовать как Software Serial, так и аппаратный Hardware Serial. Вариант подключения модуля выбирается в панели настроек подключения модуля. Модуль управляется посредством AT команд.
Рекомендуется использовать самую последнюю прошивку для ESP8266. Версия AT команд должна быть не ниже v0.40. Используйте инструкцию по обновлению прошивки ESP8266.
Питание модуля можно обеспечить от встроенного источника питания 3.3В на плате Arduino. Некоторые платы, например Arduino Nano может не обеспечить достаточной мощности на выводе 3.3V, в этом случае потребуется отдельный источник питания.
Подключение через Software Serial
Позволяет подключить модуль к произвольным контактам микроконтроллера. Какие контакты использовать, необходимо указать в панели настроек подключения модуля. Так же в панели настроек указывается скорость передачи данных для порта. Модуль ESP8266 по умолчанию настроен на скорость 115200 бит/сек. Для работы через SoftwareSerial необходимо предварительно настроить скорость передачи данных ESP8266 на более низкую скорость. Стабильная работа модуля возможна на скорости не более 19200 бит/сек. Для изменения скорости работы последовательного интерфейса модуля, необходимо его подключить к консоли для возможности выполнения AT команд. Скорость работы модуля может быть изменена при помощи AT команды "AT+UART_DEF=19200,8,1,0,0".
Есть некоторые ограничения на использование контакта RX для плат Arduino. Ограничения связаны с поддержкой прерываний на соответствующих контактах микроконтроллера.
Так же при использовании SoftwareSerial вы должны принять следующие ограничения:
- Нет возможности работы на больших скоростях передачи данных. Не рекомендуем использовать скорость соединения более 19200 бит/сек.
- Некоторые библиотеки, которые так же используют прерывания, могут работать не корректно, или же их использование может сделать неработоспособным данный способ подключения. Например библиотека Servo будет подергивать сервоприводы.
Пример подключения модуля ESP8266 для SoftwareSerial к контактам 2(RX) и 3(TX) на рисунке. Обратите внимание, что необходимо контакты подключить перекрестием, т.е. контакт Arduino 2(RX) к контакту TX модуля, и контакт 3(TX) к контакту RX модуля.
Подключение через Hardware Serial (аппаратный)
Позволяет подключить модуль к контактам микроконтроллера, поддерживающим один из аппаратных портов последовательного интерфейса. Для разных плат Arduino это разные порты и контакты. Возможна работа на максимальной скорости соединения 115200 бит/сек. Скорость передачи данных для Arduino указывается в панели настроек редактора. ESP8266 необходимо предварительно настроить на работу на той же скорости, что и Arduino. Настройку можно выполнить через AT команды. Следующие последовательные порты Arduino доступны:
- Arduino UNO и Nano: Serial (RX-0, TX-1);
- Arduino MEGA и MEGA2560: Serial (RX-0, TX-1), Serial1 (RX-19 и TX-18), Serial2 (RX-17 и TX-16), Serial3 (RX-15 и TX-14);
Какой порт использовать, а следовательно к каким контактам следует подключать модуль, необходимо указать в панели настроек подключения модуля. Следует так же иметь в виду, что для плат Arduino порт Serial задействован для программирования микроконтроллера, и если вы приняли решение использовать этот порт, при программировании необходимо отсоединять модуль ESP8266. Хорошим решением будет использовать на платах Arduino MEGA любой порт, отличный от Serial.
Пример подключения модуля для аппаратного Serial к контактам 0(RX) и 1(TX) на рисунке. Обратите внимание, что необходимо контакты подключить перекрестием, т.е. контакт Arduino 0(RX) к контакту TX модуля, и контакт 1(TX) к контакту RX модуля.
Продолжаем изучать сервис RemoteXY (предыдущая статья), в этой статье будут рассмотрены способы подключения различных модулей связи к ардуино и работы с ними в сервисе RemoteXY.
Конфигурация подключения
Способы подключения я буду демонстрировать на примере Arduino Nano и NodeMCU v3, в качестве модулей связи будут применяться Bluetooth модуль HC-05, Wi-Fi модуль ESP-01 и встроенный в NodeMCU модуль ESP-12.
Сразу опишу все преимущества и недостатки каждого типа подключения.
Bluetooth
- малый радиус действия (около 10 метров);
- зачастую планшеты на android, не имеющие слота под SIM карту, так же не имеют и bluetooth модуля.
- мобильное устройство может быть одновременно соединено с несколькими bluetooth устройствами;
- при этом не теряется связь с сетью интернет при подключении через wi-fi или мобильную сеть.
Wi-Fi как клиент
- не теряется связь с сетью интернет при подключении к ней через wi-fi;
- больший радиус связи, чем у bluetooth;
- модуль связи wi-fi есть во всех смартфонах и планшетах;
- можно настроить роутер для доступа к контролеру с любой точки планеты (этот способ связи я не буду рассматривать, так как я им сам не пользовался, а давать непроверенную информацию мне не позволяет моя совесть).
Wi-Fi как точка доступа
- невозможно одновременное подключение к контролеру и к сети интернет ни через сотовую связь, ни через другие сети Wi-Fi.
Таким образом у каждого способа связи есть свои преимущества
Bluetooth
Соединение по bluetooth настраивается при помощи модулей связи HC-05 и HC-06 для Android и модуля HC-10 для iOS и осуществляется по протоколу UART. Подключаться можно как через Hardware Serial, так и через Software Serial. Рассмотрим оба способа.
Hardware Serial
Аппаратные порты протокола UART выведены на 0 (RX) и 1(TX) выводы для плат UNO, Leonardo, Pro Mini, Nano, MICRO и 0 и 1 (Serial), 19 и 18 (Serial 1), 17 и 16 (Serial 2), 15 и 14 (Serial 3) для платы MEGA.
Чтобы настроить онлайн редактор на bluetooth соединение в панели настроек и свойств необходимо выбрать пункт «конфигурация» и нажать на любой пункт этого меню. Откроется меню конфигурации, в котором поочередно надо установить параметры: тип соединения, используемый контроллер, модуль связи и среда программирования. После необходимо нажать кнопку «Применить» и окно закроется.
Далее необходимо перейти в пункт «Подключение модуля» в панели настроек и свойств, установить интерфейс подключения «Hardware Serial», скорость обмена и порт.
Выпадающий список портов будет содержать только один пункт для всех плат кроме MEGA. Для плат MEGA будет доступно четыре аппаратных порта.
Ввиду того, что аппаратный порт Serial используется для программирования arduino, необходимо отсоединять bluetooth модуль на время программирования. Для плат Mega этот вопрос строит не так остро, так как на выбор предоставлено четыре порта.
Software Serial
Подключение через Software Serial позволяет использовать отличные от аппаратных порты. Но с некоторыми ограничениями, которые связанны с поддержкой прерываний.
Так для плат UNO и Nano для RX нельзя использовать вывод 13. Для Mega для RX можно использовать только выводы 8, 10, 11, 12, 13, 14,15, 50, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69. Для Leonardo и Micro для RX можно использовать только выводы 8, 9, 10, 11, 14,15, 16. Так же невозможна работа на скоростях выше 19200 бит/сек. Стоит заметить, что в онлайн редакторе интерфейса все эти ограничения учтены, и сам редактор вам просто не даст поставить значения скорости выше 19200, и предложит на выбор только подходящие выводы с учетом выбранной платы. Так зачем же я упомянул все эти ограничения? Ограничения на выбор портов можно обойти, когда онлайн редактор сгенерирует исходный код, ведь там номера портов указаны черным по белому.
Данная инструкция для владельцев устройств, работающих под управлением операционной системы android.
- Перейти в настройки устройства, выбрать пункт «bluetooth», включить его. Начнется поиск доступных bluetooth устройств.
- Выбирать необходимое устройство из списка, дождаться запроса пароля, ввести пароль и нажать «ОК»
- Устройство появится в списке подключенных устройств
- Перейти в программу RemoteXY, нажать на + в правом верхнем углу
- Выбрать устройство из списка доступных устройств
- Устройство подсоединено, сразу открывается интерфейс устройства.
Практическое задание
Создать интерфейс со следующими параметрами:
- Соединение – bluetooth;
- Устройство – на ваш выбор (я буду использовать Mega);
- Модуль – HC-05 (для владельцев устройств с iOS – HC-10);
- Среда программирования – ArduinoIDE;
- Интерфейс подключения – Hardware Serial;
- Порт – Serial (владельцы Mega могут попробовать любой другой доступный порт, я буду использовать Serial 1);
- Скорость обмена – 9600.
Разместить на рабочем поле редактора кнопку, свойства кнопки не менять. Исходный код скомпилировать в ArduinoIDE и загрузить в контроллер.
Далее необходимо провести сопряжение bluetooth модуля с вашим мобильным устройством, подключить программу RemoteXY к устройству. Если при нажатии на кнопку загорается светодиод на плате контроллера, значит всё сделано правильно.
Вторая часть задания: изменить проект так, что бы он использовал Software Serial, использовать выводы на свое усмотрение.
Wi-Fi как точка доступа
Подключение модуля ESP-01 производится аналогично модулю Bluetooth, так как оба вида модулей работают по протоколу UART. Подключение абсолютно аналогично, как для Software Serial, так и для Hardware Serial, со всеми ограничениями, описанными в разделе о подключении по Bluetooth.
Исключение составляет конфигурация подключения. Рассмотрим подключение модуля ESP-01 к arduino Mega2560 в качестве точки доступа.
В выпадающем меню «Подключение модуля» кроме пунктов интерфейс подключения, порт Serial/контакты TX/RX и скорость обмена появляются еще четыре пункта, характерных только для подключения устройства как точки доступа.
Имя (SSID) – имя точки доступа, к которой будет подключаться смартфон. Доступ к контроллеру может быть защищен паролем, если не стоит галочка «открытая точка». Пункт «Порт» можно не трогать, так как он по умолчанию устанавливается таким же в программе RemoteXY, его смена может потом привести к неожиданным последствиям при подключении к контроллеру (если пользователь забудет, какой порт указал при наладке устройства).
Отдельно стоит коснуться конфигурации устройств, построенных на модуле ESP-12: WeMos D1, D1 R2, D1 mini и NodeMCU v2, v3. Так как модуль связи встроен в эти платы, в меню «Подключение модуля» отсутствуют настройки интерфейса подключения.
Стоить заметить, что на изображении выше, подключение питания модуля ESP-01 подключено к выводу 3V3 на плате arduino nano. Тем не менее, мощность стабилизатора, установленного на плате nano, может не хватать для работы модуля ESP-01. Поэтому необходимо подключать его к внешнему источнику питания напряжением 3,3 вольта.
Подключение Wi-Fi модуля в режиме точки доступа к смартфону.
Для подключения Wi-Fi модуля в режиме точки доступа к смартфону необходимо:
- Перейти в настройки смартфона – беспроводные сети –Wi-Fi и убедиться, что созданная точка доступа находится в списке доступных устройств
- Выбрать необходимую точку доступа и, если требуется, ввести пароль, нажать кнопку «подключить»
- Войти в программу RemoteXY и нажать + в правом верхнем углу
- В появившемся списке доступных сетей выбрать необходимую сеть
- В некоторых случаях программа вновь может запросить пароль точки доступа, необходимо ввести его вновь и нажать подключить
- Устройство подсоединено, сразу открывается интерфейс устройства.
Практическое задание
Закрепим полученные знания на практике.
Первая часть задания: создать соединение со следующими параметрами:
- Соединение - Wi-Fi access point;
- Устройство – на ваш выбор (я буду использовать Mega);
- Модуль – ESP8266 Wi-Fi module;
- Среда программирования – ArduinoIDE;
- Интерфейс подключения – Hardware Serial;
- Порт – Serial (владельцы Mega могут попробовать любой другой доступный порт, я буду использовать Serial2);
- Скорость обмена – 115200;
- Имя (SSID) – оставить по умолчанию;
- Пароль – оставить по умолчанию;
- Порт – оставить по умолчанию.
Разместить на рабочем поле редактора кнопку, свойства кнопки не менять. Исходный код скомпилировать в ArduinoIDE и загрузить в контроллер.
Далее необходимо подключить смартфон к созданной точке доступа, подключить программу RemoteXY к устройству. Если при нажатии на кнопку загорается светодиод на плате контроллера, значит всё сделано правильно.
Вторая часть задания: изменить проект так, что бы он использовал Software Serial, использовать выводы на свое усмотрение.
Третья часть задания: изменить проект для подключения платы NodeMCU.
Wi-Fi как клиент
Режим работы в качестве клиента требует, что бы устройство подключалось к существующей точке доступа Wi-Fi. Возможен доступ к контроллеру, как из локальной сети, так и по сети интернет. Для подключения к контроллеру из сети интернет возможно лишь при правильной настройке маршрутизатора. Этот способ подключения я не буду рассматривать, рассмотрю лишь способ подключения по локальной сети.
При этом физически подключение модуля ESP-01 в качестве клиента существующей сети Wi-Fi к arduino не отличается от рассмотренного выше примера подключения модуля ESP-01 в качестве точки доступа, со всеми ограничениями, рассмотренными ранее.
Пример конфигурации для arduino и ESP-01
В выпадающем меню «Подключения модуля», кроме уже знакомых пунктов интерфейса подключения, порта Serial, контактов, порта и скорости обмена, появились пункты характерные для подключения модуля ESP-01 в качестве клиента:
- Имя (SSID) - имя точки доступа, к которой необходимо подключить модуль ESP-01
- Пароль - пароль точки доступа, к которой необходимо подключить модуль ESP-01 (если пароль не используется, то необходимо оставить строку пустой)
Так же приведу конфигурацию для платы NodeMCU v3.
Подключение Wi-Fi модуля как клиента существующей точки доступа Wi-Fi к смартфону.
Первым делом надо узнать IP-адрес модуля ESP-01 в локальной сети. Для этого необходимо использовать сканер сети. Я использую программу Network Scanner для android.
Приведу пример работы с этой программой:
- Дождаться окончания сканирование локальной сети
Далее необходимо запустить программу RemoteXY и дальнейшие шаги выполнять в ней:
- Ввести IP-адрес, полученный в программе Network Scanner
- Устройство подсоединено, сразу открывается интерфейс устройства.
Практическое задание
Закрепим полученные знания на практике.
Первая часть задания: создать соединение со следующими параметрами:
- Соединение - Ethernet TCP/IP;
- Устройство – на ваш выбор (я буду использовать Mega);
- Модуль – ESP8266 Wi-Fi module;
- Среда программирования – ArduinoIDE;
- Интерфейс подключения – Hardware Serial;
- Порт – Serial (владельцы Mega могут попробовать любой другой доступный порт, я буду использовать Serial2);
- Скорость обмена – 115200;
- Имя (SSID) – имя вашей точки доступа;
- Пароль – пароль вашей точки доступа;
- Порт – оставить по умолчанию.
Разместить на рабочем поле редактора кнопку, свойства кнопки не менять. Исходный код скомпилировать в ArduinoIDE и загрузить в контроллер.
Далее необходимо подключить смартфон к той же сети что и контроллер, просканировать локальную сеть для получения IP- адреса, подключить программу RemoteXY к устройству. Если при нажатии на кнопку загорается светодиод на плате контроллера, значит всё сделано правильно.
Вторая часть задания: изменить проект так, что бы он использовал Software Serial, использовать выводы на свое усмотрение.
Третья часть задания: изменить проект для подключения платы NodeMCU.
P.S. Использование смартфона в качестве точки доступа
Все современные смартфоны могут выступать в качестве точки доступа Wi-Fi. В начале этой главы я рассматривал достоинства и недостатки различных способов подключения устройства к смартфону. Так для способа Wi-Fi как точка доступа я указал недостаток: «невозможно одновременное подключение к контролеру и к сети интернет, ни через сотовую связь, ни через другие сети Wi-Fi». Использование смартфона, как точки доступа Wi-Fi, позволяет обойти это ограничение, при этом соединение между контроллером и смартфоном будет прямое, а доступ к сети интернет посредством сотовой связи останется доступным.
Для подключения контроллера к смартфону необходимо (все настройки смартфона показаны на примере смартфона под управлением ОС Android версии 5.1.1):
- Перейти в настройки смартфона, далее «точка доступа и модем» , «мобильная точка доступа»;
- Включить точку доступа, название сети и пароль использовать при настройке подключения модуля в редакторе интерфейса;
- Загрузить исходный код программы в контроллер, дождаться, когда модуль ESP-01 появится в списке подключенных устройств;
- Выбрать модуль ESP-01 из списка, появится окно с данными подключения, использовать IP-адрес в программе RemoteXY.
В операционных системах Android других версий интерфейс может отличаться, но порядок действий остается тем же.
P.P.S. В этой статье я не описал только один способ подключения, по глобальной сети, с настройкой роутера, виртуальными серверами и пробросом портов, того самого способа, который дает возможность подключаться к ардуино из любой точки планеты где есть интернет. Все рассмотренные способы предоставляют только локальный доступ, в небольшом радиусе действия.
Пока статья писалась, автор RemoteXY добавил функцию облачного сервера для связи смартфона и ардуино через интернет из любой точки мира. Теперь нет необходимости пробрасывать порты, устанавливать виртуальные сервера и прочее, теперь доступ к ардуино по интернет можно настроить намного проще.
mefi73 Опубликована: 30.03.2017 0 0Мной была заказана самая простая плата с ESP8266 — ESP-01, выглядит она так:
В старой ревизии платы на разьем были выведены только VCC, GND, URXD и UTXD.
В последней ревизии добавились RST, GPIO0, GPIO2 и CH_PD.
Всего есть 11 модификаций плат, различающихся количеством выводов и вариантом исполнения:
ESP-01: PCB antenna, after matching the distance to do about the open 400 meters, easy to use.
ESP-02: SMD package for submission limit, the antenna can be drawn with the IPX header casing.
ESP-03: SMD package, the built-in ceramic antenna technology, all available IO leads.
ESP-04: SMD package, customers can customize the antenna types, flexible design, all the IO leads.
ESP-05: SMD package, only leads to serial and RST pin, small external antenna.
ESP-06: bottom mount technology, leads all the IO ports, with metal shielding shell, can be had FCC CEcertification, recommended.
ESP-07: Semi-hole chip technology, all the IO leads, with metal shielding shell, can be had FCC CE certifiedIPX external antenna, can also be built-in ceramic antenna.
ESP-08: with the ESP-07, except that the antenna is in the form of customers can define their own.
ESP-09: Ultra-small size package, only 10 * 10 mm, four-layer board technology 1M bytes.
ESP-10: SMD interface, narrow-body design, 10 mm wide, suitable for light with controller.
ESP-11: SMD interface, ceramic antenna, small volume.
Распиновка разъёма ESP-01:
Назначение выводов платы ESP-01 такое:
VCC, GND — питание платы (+3.3В);
URXD,UTXD — выводы RS232 толерантны к 3.3В
RST — Аппаратный сброс (reset)
GPIO0, GPIO2 — выводы GPIO
CH_PD — Chip enable, для работы должен быть подключен к +3.3В.
Для переключения в режим обновления прошивки нужно подать низкий уровень на GPIO0 и высокий на CH_PD.
Для подключения платы ESP-01 к ПК я использовал USB-to-RS232 преобразователь на FT232R с выходами TTL 3.3В, можно использовать например такой.
Питание ESP-01 нужно строго 3.3В, поэтому пришлось воспользоваться DC-DC преобразователем, можно использовать такой.
С базовой прошивкой плата ESP-01 управляется AT командами, поэтому нам потребуется программа-терминал, я использовал CoolTerm.
Возможно 2 варианта использования модуля:
1. Использование платы ESP-01 совместно с доп.микроконтроллером, который будет управлять модулем по UART.
2. Написание собственной прошивки для чипа ESP8266 и его использование как самодостаточного устройства.
Естественно более выгодным является 2-й вариант, тем более потенциал чипа ESP8266 достаточно велик.
Для начала мы попробуем вариант №1, то есть управлять платой ESP-01 через RS232.
Схема подключения очень простая:
Вывод VCC — питание платы (+3.3В);
Вывод GND — общий;
Выводы URXD,UTXD — подключаем к конвертеру USB-to-RS232 (в режиме 3.3В)
Вывод CH_PD — подключаем к питанию платы (+3.3В);
В терминале (CoolTerm) устанавливаем скорость COM-порта 57600. Установить нужно именно такую скорость, т.к. если в чипе ESP8266 стоит старая прошивка (а скорее всего это так и есть), то он будет работать только с такой скоростью порта.
Жмем Connect, вводим команду AT, в ответ должно прийти OK. Если все так, то плата работает, можно двигаться дальше.
Процедура обновления прошивки
Вводим команду AT+GMR — проверка версии AT и SDK, в ответ выдает 0016000902, где 0016 — версия SDK, 0901 — версия AT
На текущий момент (06.11.2014) уже доступна прошивка 0018000902 (Версия SDK — 0018, в версия AT — 0902)
После обновления до версии 0018000902 изменится дефолтная скорость COM-порта с 57600 на 9600, но эту скорость в новой прошивке теперь можно задать командой AT+CIOBAUD. Смотрим AT+CIOBAUD=? доступные скорости и ставим командой AT+CIOBAUD=115200 скорость 115200, в ответ должно выдать ОК. Даем команду на рестарт: AT+RST. Меняем скорость порта в программе-терминал на 115200.
Настройка подключения к Wi-Fi
Теперь попробуем подключить нашу плату ESP-01 к Wi-Fi точке доступа.
Выполняем следующие команды:
1. Устанавливаем режим работы Wi-Fi командой: Доступны следующие режимы: 1 — STA, 2 — AP, 3 — BOTH
Пример:
2. Смотрим список точек доступа командой: AT+CWLAP
Пример
В скобках указывается: SECURITY, SSID, RSSI, BSSID, CHANNEL
SECURITY может принимать значения:
0 — OPEN, 1 — WEP, 2 — WPA-PSK, 3 — WPA2-PSK, 4 — MIXED (WPA-WPA2-PSK)
3. Подключаемся в нашей AP командой: Пример:
Подключение длится 2-5 секунд, после чего в случае успешного выполнения появится OK.
3. Посмотрим какой IP адрес получила наша плата командой: AT+CIFSR
Отключение от точки доступа делается командой AT+CWQAP.
Адрес получен, можно двигаться дальше.
Плата ESP-01 может выступать в качестве Soft-AP, для включения этого режима выполняем следующие команды:
1. Отключаемся от точки доступа: AT+CWQAP.
2. Меняем режим работы Wi-Fi командой: AT+CWMODE=2
3. Создаем свою AP командой: Пример:
4. Пробуем подключиться в нашей AP с компьютера. Посмотрим результат:
Как видно на картинке скорость только 54Мбит/с и еще меня смущают адреса DNS серверов, думаю они явно китайские, поставить свои через AT-команды нельзя.
Адрес AP можно узнать командой: AT+CIFSR
Пример:
Список клиентов нашей AP можно посмотреть командой: AT+CWLIF
Пример:
Настройка режима TCP-сервер
На плате ESP-01 можно запустить TCP-сервер для приема-отправки данных или она может выступать TCP-клиентом для приема-отправки данных на сервер.
Для запуска TCP-сервера выполним следующие команды:
1. Устанавливаем режим передачи командой mode = 0 — not data mode (сервер может отправлять данные клиенту и может принимать данные от клиента)
mode = 1 — data mode (сервер не может отправлять данные клиенту, но может принимать данные от клиента)
Пример:
2. Устанавливаем возможность множественных соединений: mode 0 — single connection
mode 1 — multiple connection
Проверить режим соединений можно командой AT+CIPMUX?
Пример:
3. Запускаем сервер на порту 8888: mode 0 — to close server
mode 1 — to open server
Пример:
Настройка режима TCP-клиента
Теперь поменяем роли, ПК — сервер, ESP-01 — клиент, пробуем:
1. Рестартуем плату AT+RST
2. Устанавливаем режим передачи командой mode = 0 — not data mode (клиент может отправлять данные серверу и может принимать данные от сервера)
mode = 1 — data mode (клиент не может отправлять данные серверу, но может принимать данные от сервера)
Пример:
3. Режим соединений ставим Multiple connection: AT+CIPMUX=1
4. На ПК в SocketTest запускаем сервер на порту 8888
5. Запускаем клиента на ESP-01
Для режима Single connection (+CIPMUX=0) формат такой Для режима Multiple connection (+CIPMUX=1) формат такой Возможные значения параметров:
id = 0-4
type = TCP/UDP
addr = IP адрес
port= порт
Пример:
6. Отправляем данные с ESP-01 на ПК
Для режима Single connection (+CIPMUX=0) отправка идет так: Для режима Multiple connection (+CIPMUX=1) отправка идет так: После выполнения AT+CIPSEND нужно ввести текст, завершение ввода и отправка осуществляется по Enter.
Пример:
Пример отправки и получения данных:
Как мы видим, плата успешно справляется с поставленными задачами, а именно — подключение к Wi-Fi в качестве клиента, может выступать в роли Soft-AP, на плате можно поднять TCP-сервер для приема-отправки данных, а можно быть TCP-клиентом.
В данной статье мы рассмотрели работу с платой ESP-01 через RS232, в качестве управляющего контроллера выступал ПК, можно без проблем подключить плату Arduino или любой микроконтроллер с UART и выполнять отправку-прием данных через Wi-Fi сеть между контроллерами или ПК.
В следующей статье (как позволит карма) я попробую рассказать о принципах написания собственных прошивок для чипа ESP8266, тем самым плата ESP-01 будет полностью автономной, ей будет не нужен доп.контроллер для управления всеми параметрами. Мы попробуем подключить к плате различные периферийные устройства.
Буду рад ответить на вопросы, хотя до конца я еще не узучил плату ESP-01.
Читайте также: