No Image

Arduino mega 2560 подключение esp8266

СОДЕРЖАНИЕ
1 253 просмотров
12 декабря 2019

Микросхема ESP8266 – один из самых популярных инструментов для организации беспроводной связи в проектах умного дома. С помощью беспроводного контроллера можно организовывать связь по интерфейсу WiFi, обеспечивая проектам Arduino выход в интернет и возможность дистанционного управления и сбора данных. На основе ESP8266 созданы такие популярные платы как WeMos и NodeMcu, а также огромное количество самодельных проектов. В этой статье, мы узнаем, что из себя представляет ESP82266, какие бывают ее разновидности, как работать с ESP8266 в среде Arduino IDE.

Описание ESP8266

ESP8266 – микроконтроллер с интерфейсом WiFi, который имеет возможность исполнять программы из флеш-памяти. Устройство было выпущено в 2014 году китайской фирмой Espressif и практически сразу же стало популярным.

Контроллер недорогой, обладает небольшим количеством внешних элементов и имеет следующие технические параметры:

  • Поддерживает Wi-Fi протоколы 802.11 b/g/n с WEP, WPA, WPA2;
  • Обладает 14 портами ввода и вывода, SPI, I2C, UART, 10-бит АЦП;
  • Поддерживает внешнюю память до 16 МБ;
  • Необходимое питание от 2,2 до 3,6 В, потребляемый ток до 300 мА в зависимости от выбранного режима.

Важной особенностью является отсутствие пользовательской энергонезависимой памяти на кристалле. Программа выполняется от внешней SPI ПЗУ при помощи динамической загрузки необходимых элементов программы. Доступ к внутренней периферии можно получить не из документации, а из API набора библиотек. Производителем указывается приблизительное количество ОЗУ – 50 кБ.

Особенности платы ESP8266:

  • Удобное подключение к компьютеру – через USB кабель, питание от него же;
  • Наличие встроенного преобразователя напряжения 3,3В;
  • Наличие 4 Мб флеш-памяти;
  • Встроенные кнопки для перезагрузки и перепрошивки;
  • Все порты выведены на плату на две гребенки с шагом 2,5 мм.

Сферы применения модуля ESP8266

  • Автоматизация;
  • Различные системы для умного дома: Беспроводное управление, беспроводные розетки, управление температурой, дополнение к сигнализационным системам;
  • Мобильная электроника;
  • >Распиновка esp8266

Существует огромное количество разновидностей модуля ESP8266. На рисунке представлены некоторые из них. Наиболее популярным вариантом является ESP 01.

Исполнение программы требуется задавать состоянием портов GPIO0, GPIO2 и GPIO15, когда заканчивается подача питания. Можно выделить 2 важных режима – когда код исполняется из UART (GPIO0 = 0, GPIO2 = 1 и GPIO15 = 0) для перепрошивки флеш-карты и когда исполняется из внешней ПЗУ (GPIO0 = 1, GPIO2 = 1 и GPIO15 = 0) в штатном режиме.

Распиновка для ESP01 изображена на картинке.

  • 1 – земля, 8 – питание. По документации напряжение подается до 3,6 В – это важно учесть при работе с Ардуино, на которую обычно подают 5 В.
  • 6 – RST, нужна для перезагрузки микроконтроллера при подаче на него низкого логического уровня.
  • 4 – CP_PD, также используется для перевода устройства в энергосберегающий режим.
  • 7 и 0 – RXD0 и TXD0, это аппаратный UART, необходимый для перепрошивки модуля.
  • 2 – TXD0, к этому контакту подключается светодиод, который загорается при низком логическом уровне на GPIO1 и при передаче данных по UART.
  • 5 – GPIO0, порт ввода и вывода, также позволяет перевести устройство в режим программирования (при подключении порта к низкому логическому уровню и подачи напряжения) .
  • 3 – GPIO2, порт ввода и вывода.

Основные отличия Ардуино от ESP8266

  • ESP8266 имеет больший объем флеш-памяти, при этом у ESP8266 отсутствует энергонезависимая память;
  • Процессор ESP8266 быстрее, чем у Ардуино;
  • Наличие Wi-Fi у ESP8266;
  • ESP8266 потребляеn больше тока, чем для Ардуино;

Программирование ESP8266 в Arduino IDE

Программный комплект разработчика esp8266 включает в себя:

  • Компилятор из пакета GNU Compiler Collection.
  • Библиотеки, стеки протоколов WiFi, TCP/IP.
  • Средство загрузки информации в программу контроллера.
  • Операционная IDE.

Изначально модули ESP8266 поставляются с прошивкой от фирмы-изготовителя. С ее помощью можно управлять модулем с внешнего микроконтроллера, реализовывать работу с Wi-Fi как с модемом. Также существует множество других готовых прошивок. Некоторые из них позволяют настраивать работу модуля при помощи WEB-интерфейса.

Можно программировать из среды Arduino IDE. При ее помощи можно легко писать скетчи и загружать их в ESP8266, прошивать ESP8266, при этом не требуется сама плата Ардуино. Arduino IDE поддерживает все виды модулей ESP8266.

В настоящий момент для ESP8266 можно реализовать следующие функции:

  • Основные функции языка Wiring. Управлять портами GPIO можно точно так же, как и пинами на плате Ардуино: pinMode, digitalRead, digitalWrite, analogWrite. Команда analogRead(А0) позволяет считать значения АЦП. При помощи команды analogWrite (pin, value) можно подключить ШИМ на нужном выходе GPIO. При value=0 ШИМ отключается, максимальное значение достигает константы, равной 1023.С помощью функций attachInterrupt, detachInterrupt можно выполнять прерывание на любом порте GPIO, кроме 16.
  • Тайминг и delay. Используя команды millis и micros можно вернуть мс и мкс, которые прошли с момента старта. Delay позволяет приостановить исполнение программы на нужное время. Также функция delay(…) позволяет поддерживать нормальную работу Wi-Fi, если в скетче присутствуют большие элементы, которые выполняются более 50 мс. Yield() – аналог функции delay(0).
  • Serial и Serial1 (UART0 и UART1). Работа Serial на ESP8266 аналогична работе на ардуино. Запись и чтение данных блокируют исполнение кода, если FIFO на 128 байт и программный буфер на 256 байт заполнены. Объект Serial пользуется аппаратным UART0, для него можно задать пины GPIO15 (TX) и GPIO13 (RX) вместо GPIO1(TX) и GPIO3(RX). Для этого после функции Serial.begin(); нужно вызвать Serial.swap();. Аналогично Serial1 использует UART1, который работает на передачу. Необходимый пин для этого GPIO2.
  • Макрос PROGMEM. Его работа аналогична работе в Ардуино. Позволяет перемещать данные read only и строковые постоянные во flash-память. При этом в ESP8266 не сохраняются одинаковые константы, что приводит к дополнительной трате флеш-памяти.
  • I2C. Перед началом работы с шиной I2C выбираются шины с помощью функции Wire.pins(int sda, int scl).
  • SPI, OneWire – поддерживаются полностью.
Читайте также:  Антисептик антипирен для древесины технические характеристики

Использование esp8266 для связи Ардуино по WiFi

Перед подключением к Ардуино важно помнить, что у ESP8266 напряжение питания не может быть выше 3,6, в то время как на пате Ардуино напряжение равно 5 В. Соединять 2 микроконтроллера нужно с помощью резистивных делителей. Перед подключением модуля нужно ознакомиться с распиновкой выбранного ESP8266. Схема подключения для ESP8266-01 представлена на рисунке.

3,3 В с Ардуино – на Vcc&CH_PD на модуле ESP8266, Земля с Ардуино – к земле с ESP8266, 0 – TX, 1 – RX.

Для поддержки стабильной работы ESP8266 необходим источник постоянного напряжения на 3,3 В и максимальный ток 250 мА. Если питание происходит от конвертера USB-TTL, могут происходить неполадки и сбои в работе.

Работа с библиотекой Wi-Fi для ESP8266 схожа с библиотекой для обыкновенного шилда. Имеется несколько особенностей:

  • mode(m) – для выбора одного из трех режимов: клиент, точка доступа или оба режима единовременно.
  • softAP(ssid) – нужен для создания открытой точки доступа.
  • softAP(ssid, password) – создает точку доступа с паролем, который должен состоять не менее чем из 8 знаков.
  • WiFi.macAddress(mac) и WiFi.softAPmacAddress(mac)– определяет МАС адрес.
  • WiFi.localIP() и WiFi.softAPIP() – определение IP адреса.
  • printDiag(Serial); – позволят узнать данные о диагностике.
  • WiFiUDP – поддержка передачи и приема multicast пакета в режиме клиента.

Работа выполняется по следующему алгоритму:

  • Подключение USB-TTL к USB и к ESP.
  • Запуск Arduino >NodeMCU на базе esp8266

NodeMCU – это платформа, основанная на базе модуля esp8266. Используется для управления схемой на расстоянии при помощи интернета через Wi-Fi. Плата малогабаритная, компактная, стоит дешево, на лицевой стороне имеется разъем для USB. Рядом кнопки для отладки и перезагрузки микроконтроллера. Также установлен чип ESP8266. Напряжение питания – от 5 до 12 В, желательно подавать более 10 В.

Большим преимуществом платы является ее малое энергопотребление. Нередко их используют в схемах с автономным питанием. На плате расположены всего 11 портов общего назначения, из них некоторые имеют специальные функции:

  • D1 и D2 – для интерфейса I2C/ TWI;
  • D5-D8- для интерфейса SPI;
  • D9, D10 – для UART;
  • D1-D10 – могут работать как ШИМ.

Платформа имеет современное API для аппаратного ввода и вывода. Это позволяет сократить количество действий во время работы с оборудованием и при его настройке. С помощью прошивки NodeMCU можно задействовать весь рабочий потенциал для быстрой разработки устройства.

WeMos на базе esp8266

WeMos – еще один вид платформы, основанный на базе микроконтроллера esp8266. Соответственно, имеется Wi-Fi модуль, поддерживается Arduino IDE, имеется разъем для внешней антенны. Плата имеет 11 цифровых входов/выходов, которые (кроме D0) поддерживают interrupt/pwm/I2C/one-wire. Максимальное напряжение питания достигает 3,3 В. Также на платформе присутствует USB разъем. Аналоговый вход 1 с максимальным напряжением 3,2В.

Читайте также:  Газовая плита горение фото

Для работы с модулем нужно установить драйвер CH340 и настроить Ардуино IDE под ESP8266. Для этого нужно в меню настройки в строке «дополнительная ссылка для менеджера плат» добавить адрес http://arduino.esp8266.com/stable/package_esp8266com_index.json.

После этого требуется найти пакет esp8266 by ESP8266 и установить его. Затем нужно выбрать в меню инструменты микроконтроллер Wemos D1 R2 и записать нужный скетч.

Выводы по ESP8266

С помощью плат на основе микросхемы ESP8266 вы можете добавить в свои проекты возможности “большого интернета”, сделав их гораздо более интеллектуальными. Дистанционное управление, сбор и анализ данных на сервере, обработка голоса и работа с изображением – все это становится доступным, когда мы подключаем наш проект по WiFi к интернету. В следующих статьях мы подробно рассмотрим то, как можно программировать устройства на базе esp8266, а также уделим внимание таким популярным платам как WeMos и NodeMcu.

Продолжение 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, сообщающая нам (в данном случае ардуине), что был получен пакет.
— это 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, перегрузите модуль, зайдите в браузер и увидите.

На этом пока всё, добавить ещё кнопок или датчиков, я думаю не составит труда.

Как говорилось выше, заводская прошивка пока ещё «сырая», поэтому не стоит доверять ей ответственные задачи.

D_Jackas

Всем привет. Сегодня попробую вам рассказать историю о том как я подключал Robotdyn Mega +WiFi R3 ATmega2560+ESP8266. Ну поехали!

На самом деле, написал уже почти всю историю о том, как я покупал и прошивал все это дело. Но что-то переклинило и тупо все удалил. Попробую описать саму суть. Если честно, данное решение найдено в самом комьюнити Blynk’a и хотелось б сказать огромное спасибо пользователям [Merlin1105] и [bjorgvinben]. Но пришлось немного поломать голову, т.к. их ответы были в разных топиках.

И так! Для того чтоб нашла плата заработала нам необходимо:

  1. Прошить саму ESP
  2. Прошить саму Arduino

Теперь по порядку.

Скачиваем:

  • ESP8266 NONOS SDK V1.5.*.*
  • Flash Download Tools
  • Либо все одним архивом

Прошивка ESP:
Переключаем DIP переключатели, в режим прошивки ESP. Переключаем [5, 6, 7] контакты в положение ON, Остальные оставляем в положении OFF.
Запускаем Flash Download Tools, и указываем пути до бинарников с лед параметрами:

На этома прошивка ESP закончена. Идем дальше.

Прошивка Arduino Mega:
Переключаем DIP переключатели, в режим прошивки Arduino. Переключаем [3, 4] контакты в положение ON , Остальные оставляем в положении OFF.
Все так же можно использовать код из конструктора, а именно пример #17. Но есть один момент. Нужно [Serial1] изменить на [Serial3].
Т.е. код должен принять вот такой вид:

Далее переключаем переключатели чтоб получилось: [1, 2, 3, 4] в положении ON, остальные в положении OFF. Готово!
В принципе на этом вся история закончилась. Всем спасибо и удачи!

Комментировать
1 253 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector