Как подключить esp8266 к arduino
Продолжение ESP8266.
В предыдущей публикации мы познакомились с Wifi-модулем ESP, научились прошивать, и управлять им с помощью АТ-команд. Сейчас подключим к нему ардуину, которая будет управлять переферией и формировать ответ для клиента. Сам модуль (с заводской прошивкой) делать этого не умеет.
Некоторые действия, предложенные в статье, могут показаться лишними, но я решил быть последовательным в описании сабжа.
Как всё будет работать
Модуль ESP будет подключён к ардуине через программный порт (SoftwareSerial) и обмениваться с ней данными, а сама ардуина будет подключена к компьютеру стандартным способом, чтоб можно было через терминал следить за происходящим.
Компьютер подключён к домашнему роутеру (провод или wifi) и ESP будет подключаться к тому же роутеру по wifi.
Поскольку модуль будет подключаться к программному порту, то необходимо настроить ESP на скорость 9600. (вся инфа по работе с модулем находится здесь)
После этого не забудте переправить скорость терминала.
Ардуина
Подключите ESP к ардуине согласно рисунку…
При включении, ардуина настраивает модуль АТ-командами:
Сначала ресет, потом задаёт режим (клиент), конектится к домашнему роутеру, устанавливает ещё пару режимов, запускает ТСР-сервер, таймаут сервера (через сколько секунд он будет обрывать соединение) и показавает ip-адрес.
Когда клиент отправляет запрос модулю, модуль передаёт его в ардуину по UARTу, ардуина разбирает его, формирует ответ, отдаёт его обратно модулю (по UARTу) и модуль возвращает ответ клиенту. То есть реализуется обычный HTML протокол.
Откройте терминал, нажмите кнопочку ресет на ардуине и подождите несколько секунд, пока не загорится D13.
Если всё хорошо, то на все команды, модуль будет отвечать ОК. Если появятся надпись «busys» (это один из «глюков» заводской прошивки), то придётся передёрнуть питание или кратковременно закоротить пин RESET на «землю».
Всё ОК.
Зайдите в браузере по адресу 192.168.5.193:88 и увидите LED 13: OTKL, обновите страничку (нажмите F5) — надпись поменяется на LED 13: VKL и светодиод загорится. При этом в терминал будет выдаваться инфа:
Разберём поробнее информацию предоставленную модулем — +IPD,0,339:GET / HTTP/1.1.
Собственно ради этих строчек мы и подключали модуль к программному порту.
+IPD — это служебная команда ESP, сообщающая нам (в данном случае ардуине), что был получен пакет.
0 — это id соединения, как писалось выше, кол-во одновременных соединений (клиентов) может быть не больше четырёх.
339 — это длина пакета (видна только часть, остальное обрезано).
После двоеточия идут сами данные — GET-запрос и версия протокола.
Как только ардуина получает этот запрос от ESP, она его разбирает, включает/отключает светодиод:
Формирует и отправляет ответ в ESP, который в свою очередь отдаёт его клиенту:
И так по кругу, запрос-ответ.
Управление ардуиной с помощью обновления страницы не самое удобное решение ))), поэтому нужно приделать кнопку.
Для этого залейте новый скетч…
Изменения коснулись этих частей:
… и зайдите в браузер…
Нажатие на кнопку будет включать/отключать D13 и менять статус.
В силу того, что заводская прошивка несколько «сыровата» Вы столкнётесь с различными ошибками.
Например, если быстро нажимать на кнопку или зажать
на клавиатуре, то модуль очень скоро зависнет. Выражается это по разному, может просто не отвечать и не выводить ничего не на страницу, не в терминал, а может ничего не выводить на страницу, но при этом управлять светодиодом на ардуине (если просто обновлять страницу). Может вывести в терминал надпись «busys» и не реагировать не на что, а может и работать при этом. Одним словом, происходит масса непонятных вещей.
Одной из причин нестабильного поведения является ардуина, а точнее низкая скорость программного UARTа (SoftwareSerial) и как следствие не способность быстро отдавать ответ в ESP. Из-за чего на ТСР-сервере ESP увеличивается кол-во соединений (а их может быть не больше четырёх) и он «отваливается».
Частично можно решить проблемы следующим способом:
Не много модифицируем скетч, а точнее переключим общение ардуины с модулем на аппаратный UART и поднимим скорость до 115200.
Предварительно необходимо изменить скорость UARTа у ESP. Сделать это можно просто сбросив модуль к заводским настройкам (при условии, что у Вас стоит прошивка из предыдущей части), после этого скорость будет 115200.
Для этого в скетче, в функции void setup() замените
и прошейте ардуину. Теперь у модуля будет скорость 115200.
Далее залейте вот этот скетч:
Подключите ардуину к ESP вот так:
Нажмите ресет на ардуине, откройте терминал (115200) и ступайте в браузер.
Понажимайте часто кнопку , зажмите
и подержите, после этих «насильственных» действий модуль (скорее всего) будет по прежнему оставаться работоспособным.
В терминал будет сыпаться та инфа, которая «бегает» между ардуиной и ESP.
Если что-то не работает, «передёрните» питание на модуле.
В целях улучшения надёжности, можно активировать встроенный «сторожевой таймер», который будет перегружать модуль при зависаниях.
Однако нужно помнить, что после перезагрузки модуля прейдётся перегружать и ардуину, чтоб она дала команду запуска ТСР-сервера (AT+CIPSERVER=1,88).
Для активации таймера добавьте в void setup() вот эту строчку — GetResponse(«AT+CSYSWDTENABLE»,300);
В общем-то, если добавить в код ещё пару кнопок для управления пинами и вывод информации с каких-нибудь датчиков, то для «домашнего» использования, система вполне сойдёт…
Прошейте в ардуину новый скетч: (не забудте отключить RX,TX)
Подключите обратно RX,TX, перегрузите модуль, зайдите в браузер и увидите.
На этом пока всё, добавить ещё кнопок или датчиков, я думаю не составит труда.
Как говорилось выше, заводская прошивка пока ещё «сырая», поэтому не стоит доверять ей ответственные задачи.
Подключение ESP8266 к Arduino UNO
ESP8266 – популярный Wi-Fi модуль, без проблем работающий со всеми микроконтроллерами.
Большую популярность набирают перепрошитые модули, работающие самостоятельно, то есть без внешнего контроллера, однако в некоторых случаях бывает удобно подключиться к модулю по стандартному UART и обрабатывать пакеты, полученные ESP8266 из Интернета обычной Arduino Uno.
О таком подключение и работе с модулем мы сегодня и поговорим!
Для реализации проекта из этой статьи нам потребуются следующие компоненты:
Краткий обзор модуля
Мы будем использовать модуль ESP-01, так как он имеет минимальное количество GPIO – для работы с AT-командами нам нужно только 2 пина (интерфейс UART), остальными же пинами управлять командами невозможно, поэтому они не особо важны. Подключение ESP8266 будет производиться к Arduino Uno.
Модуль работает на ядре Tensilica с частотой до 160 МГц, что даёт значительный прирост производительности в сравнении с Arduino. Наплатная антенна способна передавать данные и получать пакеты на расстоянии до 100 м.
В модуль установлена память объёмом 512 Кб, в которую зашита стандартная AT-прошивка. Её можно заменить на стороннюю, но сегодня мы будем разбираться именно с самым простым вариантом.
Схема подключения к Arduino
Для подключения необходимо VCC и CH_PD подключить к питанию 3.3В, GND – к GND, TX и RX – к RX и TX соответственно (крест-накрест).
Можно использовать любую Arduino, причём лучше использовать свободный UART – любой, кроме нулевого – либо, если у платы их несколько (как у Arduino Mega), то второй хардварный, либо организовывать софтверный при помощи Software Serail.
И пример схемы подключения:
Работа с ESP8266 в Arduino IDE
Так как модуль подключается по UART, то и взаимодействовать с ним нужно по этому протоколу. В Arduino для этих целей применяется класс Serial.
Работу с ним мы уже рассматривали, вся задача – правильно сконфигурировать его. Крайне важно выбрать верную скорость: по умолчанию она равна 9600 бод, но если модуль не отзывается, имеет смысл попробовать на скоростях 115200, 57600.
Для теста связи попробуйте отправить модулю команду:
На неё он должен ответить “OK”, и пока вы этого не добьётесь, дальнейшие эксперименты бесполезны. Проверяйте подключение, пробуйте менять скорость, но обычно всё получается с первого раза.
У разных прошивок разный набор поддерживаемых команд. Узнать версию прошивки можно при помощи команды:
Набор команд для определённой прошивки можно скачать в разделе документации сайта esp8266.ru.
выполняет сканирование Wi-Fi сетей и выводит их список в удобном для разбора формате. А после того, как контроллер нашёл «свою» сеть, он может подключиться к ней при помощи команды:
Не забывайте отправлять окончания строки rn, без них модуль не будет воспринимать команды.
Для начала работы с беспроводными сетями надо установить режим работы модуля командой:
1 – режим клиента. Модуль может подключиться к любой точке доступа
2 – режим точки доступа. Модуль может создать свою Wi-Fi сеть
3 – смешанный режим. Модуль может подключиться к точке доступа и создать свою сеть.
Мы рассмотрели команды, назначение которых одинаково в большинстве прошивок. К сожалению, более сложные команды меняются с каждым обновлением, поэтому их необходимо уточнять в официальных спецификациях.
Дружимся с ESP
Здравствуйте, коллеги и энтузиасты!
В этой статье разберем подключение к платформе Интернета вещей наиболее популярных плат с интерфейсом Wi-Fi. Их можно использовать, чтобы управлять своим устройством дистанционно или чтобы снимать показания с сенсоров через интернет.
Несколько представленных в статье модулей (ESP-01, ESP-07, ESP-12E, ESP-12F) и плат (Goouuu Mini-S1, WeMos D1 mini и NodeMCU V2) базируются на контроллере ESP8266, использование которого позволяет простым и дешевым способом добавить в своё устройство беспроводную связь через Wi-Fi.
Так выглядит модельный ряд модулей на базе чипа ESP8266.
Все представленные модели можно программировать и загружать прошивки через Arduino IDE точно так же, как при работе с Arduino.
Настройка среды программирования Arduino IDE
По умолчанию среда IDE настроена только на AVR-платы. Для платформ, представленных ниже, необходимо добавить в менеджере плат дополнительную поддержку.
1) Открываем среду программирования Arduino IDE.
Находим в списке платформы на ESP8266 и нажимаем на кнопку Install (Установить).
6) Надпись INSTALLED сообщает, что дополнения успешно установлены.
7) Аналогичным образом устанавливаем дополнение для ESP32.
8) Теперь нам доступны к программированию платформы с модулем ESP8266 и ESP32.
9) Для подключения плат к платформе Интернета вещей используем библиотеку EspMQTTClient. Чтобы ее установить, в пункте меню Tools (Инструменты) выбираем Manage Libraries (Управлять библиотеками). Находим и устанавливаем библиотеку EspMQTTClient. Может появиться сообщение об установке дополнительных библиотек. Выбираем “Install all”.
Код прошивки
Для прошивки всех используемых ниже модулей используем один и тот же код.
Установка Wi-Fi соединения
Подключение к объекту на платформе Rightech IoT Cloud по протоколу MQTT
Отправка рандомных значений по температуре («base/state/temperature») и влажности («base/state/humidity») каждые 5 секунд (PUB_DELAY)
Получение сообщений о переключении света («base/relay/led1»)
Модули на базе ESP8266
Для работы с модулями на базе ESP8266 есть два варианта:
Работа с AT командами (в стандартной прошивке Wi-Fi модуль общается с управляющей платой через «AT-команды» по протоколу UART);
Wi-Fi модуль как самостоятельный контроллер (все представленные модули очень умные: внутри чипа прячется целый микроконтроллер, который можно программировать на языке C++ через Arduino IDE).
Через плату Arduino;
Через USB-Serial адаптер.
1. ESP-01
Внешний вид
Питание
Родное напряжение модуля — 3,3 В. Его пины не толерантны к 5 В. Если вы подадите напряжение выше, чем 3,3 В на пин питания, коммуникации или ввода-вывода, модуль выйдет из строя.
Настройка программного обеспечения ESP8266 в Arduino IDE
В этом материале мы установим программное обеспечение платы ESP8266 на Arduino IDE, установим драйвер устройства для коммуникационного чипа платы и загрузим эскиз Arduino, который подключается к домашней беспроводной сети Wi-Fi.
Для начала работы понадобятся:
Добавление поддержки платы ESP8266 в программное обеспечение Arduino
Скачайте и установите последнюю версию программного обеспечения Arduino IDE (скачать) на свой компьютер, если вы этого еще не сделали. Откройте приложение Arduino и перейдите к пункту меню:
По умолчанию приложение Arduino поддерживает чипы, используемые на официальных платах Arduino, но не ESP8266.
Эти платы могут быть запрограммированы «из коробки», потому что приложение Arduino уже знает о каждой и ее свойствах. Одна из замечательных особенностей Arduino заключается в том, что вы можете добавить поддержку других плат, и все, что вам нужно сделать, это сообщить Arduino, где можно найти их свойства.
Первым шагом этого процесса является предоставление URL-адреса менеджеру дополнительных плат. В текстовое поле в нижней части окна настроек (см. фото выше) вставьте именно этот текст:
Если поле не было пустым, когда вы открыли окно настроек, возможно, у вас уже установлены некоторые другие платы. Если это так, добавьте содержимое текстового поля к указанному выше URL-адресу, используя запятую для разделения нескольких URL-адресов.
Нажмите кнопку ОК, чтобы закрыть окно настроек. Теперь наше приложение Arduino знает, где найти информацию о платах ESP8266 в целом.
Чтобы получить конкретную информацию, перейдите в пункт меню:
Подождите некоторое время, пока менеджер плат загрузит содержимое, а затем начните вводить «ESP8266» в строку поиска.
В Feather Huzzah имеется удобный USB-коммуникационный чип, но для его нормальной работы требуется бесплатный драйвер. Без него ваша плата не будет отображаться в списке доступных последовательных устройств. Перейдите на страницу SiLabs (Silicon Lab: CP210x USB to UART Bridge VCP Drivers) и скачайте/установите драйвер, соответствующий вашей операционной системе (доступны Mac/Windows/Linux).
Всё получилось? Отлично, давайте протестируем всё на следующем шаге.
Подключение к Wi-Fi
Пришло время добавить код на плату. Откройте новый эскиз Arduino:
Удалите его содержимое по умолчанию. Скопируйте блок кода и вставьте его в пустой эскиз:
Рекомендуем изучить справочник программиста Ардуино, который подробно описывает различные блоки кода, переменные и другие особенности кода для плат.
Многие использовали этот блок кода в самый первый день знакомства с Arduino. Скажем так, на самом деле мы говорим «Привет, мир!» еще раз, но на этот раз, мигая встроенным светодиодом платы Adafruit Feather Huzzah (подключенного к контакту 0).
Этот код устанавливает переменную для вывода, подключенного к светодиоду, устанавливает этот вывод в качестве выхода, а затем в цикле повторяет схему включения/выключения.
Подключите плату к компьютеру с помощью USB-кабеля и проверьте свои настройки в меню «Сервис» (Tools).
В английской версии программы выглядеть всё будет так:
Чтобы запрограммировать вашу плату с помощью эскиза мигающего светодиода, нажмите кнопку «Загрузить» (Upload, круглая кнопка в левом верхнем углу со значком стрелки).
Кнопка станет желтой, и текст строки состояния внизу окна сообщит вам о том, что происходит. С помощью ползунка отрегулируйте размер черной консоли отладки под строкой состояния и просмотрите обновления в списке, поскольку приложение компилирует ваш код и загружает его на вашу плату.
Этот процесс будет казаться медленнее, чем вы привыкли, по сравнению с другими Arduino-совместимыми платами. Следите за баром (точки) состояния и терпеливо подтверждайте, что в строке состояния отображается текст «Готово к загрузке» (Done Uploading).
Если вместо этого получите сообщение об ошибке, прочитайте его и попытайтесь выяснить, в чем проблема (выбран неверный порт, плата не подключена, опечатка в коде). Если ваша плата или порт не отображаются в меню, попробуйте эти советы по устранению неполадок и не продолжайте, пока не будут выполнены все шаги настройки программного обеспечения:
Если все идет хорошо, красный светодиод на плате должен мигать. Если вы используете другую плату, ваш светодиод может быть подключен к другому выводу или его может не существовать вообще. Код все равно будет успешно загружен, но может не привести к желаемому результату. Благодаря следующему эскизу, который вы загрузите, ваша плата будет подключена к сети Wi-Fi.
Следующий пример кода поставляется с пакетом плат ESP8266 и уже доступен в вашем программном обеспечении Arduino. Получите доступ к нему, перейдя в:
Отредактируйте переменные, описывающие имя (имена) и пароль (пароли) беспроводной сети («SSID» и «passpasspass»). Если в вашей сети нет пароля, оставьте аргумент пароля пустым («»), но не опускайте его. Сохраните эскиз и загрузите его на свою плату.
Нажмите кнопку в правом верхнем углу окна Arduino, чтобы запустить Serial Monitor, и выберите 115200 в качестве скорости передачи. Нажмите кнопку сброса на плате Feather Huzzah, чтобы запустить программу с самого начала, и посмотрите, как информация о беспроводном соединении появляется на последовательном мониторе.
Вы должны увидеть сообщение об успешном подключении, а затем IP-адрес, назначенный вашему устройству. Если у вас не получается, дважды проверьте свои учетные данные Wi-Fi на опечатки и попробуйте снова. После подключения вы увидите сообщение: «Попытка подключения к 192.168.1.1» (Trying to connect to 192.168.1.1).
Поскольку 192.168.1.1 является локальной сетью, которая может существовать или не существовать, соединение, скорее всего, не будет установлено.
Обновите переменную хоста для любого понравившегося вам сайта, например «google.com», просто чтобы проверить ваше соединение. Загрузите новый эскиз на свою плату и откройте Serial Monitor, чтобы увидеть другой результат. Поздравляю, ваша плата только что пообщалась с интернетом.
Установка дополнительных библиотек
Теперь, когда у вас есть базовая настройка ESP8266, давайте установим несколько дополнительных библиотек Arduino, которые будут использоваться для последующих уроков. В вашем программном обеспечении Arduino перейдите в:
Затем найдите и установите последние версии следующих библиотек:
Вы также можете установить библиотеки вручную, скачав их и поместив в папку с библиотеками Arduino. Узнайте больше о библиотеках Arduino в нашем разделе Библиотеки и в статье Установка и подключение библиотек в Arduino IDE.
Подписка на (бесплатные) облачные сервисы
В конце нам необходимо создать бесплатные учетные записи на двух веб-сайтах облачных сервисов: Adafruit IO и IFTTT.
Перейдите на io.adafruit.com и нажмите «Войти» (Sign In), затем «Зарегистрироваться» (Sign Up), чтобы создать учетную запись. Вы должны использовать надежные, уникальные пароли. Вас могут попросить подтвердить ваш адрес электронной почты.
На IFTTT.com нажмите кнопку «Зарегистрироваться» (Sign up), чтобы создать учетную запись.
Я настоятельно рекомендую включить двухфакторную аутентификацию в вашей учетной записи IFTTT, так как вы, скорее всего, захотите связать ее с другими вашими личными учетными записями, такими как Twitter, Instagram, Fitbit и т.д.
Защитите свои учетные записи от хакеров и спам-ботов! Вам также нужно будет связать свои аккаунты Adafruit и IFTTT, что вы можете сделать через любой сайт. Пока вы на нем, установите приложение IFTTT, если у вас есть устройство iOS или Android.
Теперь, когда ваше программное обеспечение настроено, мы сможем в следующих материалах углубиться в аппаратное обеспечение.