Как правильно подключить и настроить WiFi модуль ESP8266 ESP-07. Какие схемы подключения использовать для стабильной работы. Как обновить прошивку ESP8266 и начать использовать для проектов умного дома. Какие возможности открывает ESP8266 для домашней автоматизации.
Подключение и настройка ESP8266: пошаговая инструкция
WiFi модуль ESP8266 стал очень популярным решением для проектов домашней автоматизации и умного дома благодаря своей низкой стоимости и широким возможностям. Однако для новичков подключение и настройка ESP8266 может вызвать определенные трудности. Рассмотрим основные шаги по подключению и первоначальной настройке модуля ESP8266:
- Определите модификацию вашего модуля ESP8266 (ESP-01, ESP-07, ESP-12 и т.д.) и его распиновку.
- Подготовьте источник стабилизированного питания 3,3В. Важно не превышать напряжение 3,6В, иначе можно повредить модуль.
- Подключите основные выводы модуля:
- VCC и CH_PD к питанию 3,3В
- GND к земле
- GPIO15 к земле (если есть)
- Подключите UART модуля к USB-TTL преобразователю для связи с компьютером:
- TX модуля к RX преобразователя
- RX модуля к TX преобразователя
- Подключите GPIO0 к земле через кнопку/перемычку для перевода в режим прошивки.
- Подайте питание на модуль. При успешном старте должен загореться индикатор питания.
После базового подключения можно приступать к проверке работоспособности и настройке модуля через терминальную программу.
Схемы подключения ESP8266 для стабильной работы
Для долговременного использования ESP8266 рекомендуется использовать более надежные схемы подключения с подтягивающими резисторами:
- VCC подключается напрямую к питанию 3,3В
- CH_PD, RESET, GPIO0, GPIO2 подтягиваются к питанию через резисторы 4,7-10 кОм
- GPIO15 подтягивается к земле через резистор до 10 кОм
- Остальные GPIO также желательно подтянуть к питанию
- Добавить конденсатор 100 нФ между VCC и GND для стабилизации питания
Такая схема обеспечит более стабильный запуск и работу модуля ESP8266. Для автоматической загрузки прошивки рекомендуется использовать дополнительную обвязку с резисторами и конденсаторами на линиях RTS/DTR.
Обновление прошивки ESP8266: пошаговая инструкция
Для раскрытия полного потенциала ESP8266 рекомендуется обновить прошивку до актуальной версии. Процесс обновления прошивки включает следующие шаги:
- Скачайте последнюю версию прошивки с официального сайта Espressif
- Подключите ESP8266 по схеме для прошивки (GPIO0 к земле)
- Запустите утилиту для прошивки ESP8266 (например, ESP Flash Download Tool)
- Выберите файлы прошивки и укажите адреса загрузки
- После успешной прошивки перезагрузите модуль
Обновление прошивки позволит использовать новые возможности SDK и исправленные ошибки. Рекомендуется периодически проверять наличие обновлений прошивки.
Использование ESP8266 для домашней автоматизации
ESP8266 открывает широкие возможности для создания устройств умного дома и систем домашней автоматизации:
- Управление освещением и электроприборами через WiFi
- Сбор данных с различных датчиков (температура, влажность и т.д.)
- Создание WiFi-реле и выключателей
- Управление системами полива, вентиляции, отопления
- Интеграция с популярными системами умного дома (Home Assistant, OpenHAB и др.)
Благодаря низкой стоимости и широким возможностям, ESP8266 позволяет создавать эффективные и доступные решения для автоматизации дома. При этом модуль можно программировать на разных языках: C++, Lua, MicroPython и других.
Программирование ESP8266: выбор среды разработки
Для программирования ESP8266 доступны различные среды разработки и фреймворки:
- Arduino IDE — самый простой вариант для начинающих
- PlatformIO — продвинутая среда для разработки на C++
- ESPHome — упрощенное создание прошивок для умного дома
- MicroPython — программирование на Python
- NodeMCU — прошивка с интерпретатором Lua
Выбор среды разработки зависит от ваших навыков программирования и конкретных задач. Для новичков рекомендуется начать с Arduino IDE или ESPHome, которые имеют низкий порог входа.
Проекты на ESP8266: от простого к сложному
Рассмотрим несколько примеров проектов на ESP8266 разной сложности:
- Простой: WiFi-термометр
- Подключение датчика температуры DS18B20
- Отправка данных на сервер через WiFi
- Отображение температуры в веб-интерфейсе
- Средний: Умная розетка
- Управление реле через WiFi
- Измерение потребляемой мощности
- Интеграция с системами умного дома
- Продвинутый: Контроллер умного дома
- Управление несколькими устройствами
- Сбор данных с различных датчиков
- Создание сценариев автоматизации
- Веб-интерфейс для управления
Начните с простых проектов и постепенно усложняйте их, добавляя новую функциональность. Это позволит постепенно освоить все возможности ESP8266.
Оптимизация энергопотребления ESP8266
Для создания автономных устройств на батарейках важно оптимизировать энергопотребление ESP8266:
- Использование режима глубокого сна (deep sleep)
- Отключение неиспользуемых модулей (ADC, RF и т.д.)
- Снижение тактовой частоты процессора
- Оптимизация WiFi-соединения (быстрое подключение и отправка данных)
- Использование внешних датчиков с низким энергопотреблением
Правильная оптимизация позволит создавать устройства, работающие от батареек несколько месяцев или даже лет. Это особенно важно для датчиков, размещаемых в труднодоступных местах.
Безопасность устройств на базе ESP8266
При разработке устройств умного дома на ESP8266 важно уделить внимание вопросам безопасности:
- Использование шифрования при передаче данных (HTTPS, SSL/TLS)
- Надежная аутентификация устройств
- Регулярное обновление прошивок
- Отключение неиспользуемых сервисов и портов
- Использование брандмауэра для ограничения доступа
Пренебрежение вопросами безопасности может привести к взлому устройств и утечке конфиденциальных данных. Уделите этому аспекту должное внимание при разработке.
WiFi модуль ESP8266 ESP07 для домашней автоматизации
Миниатюрные WiFi модули ESP8266 довольно привлекательны для систем умного дома и домашней автоматизации. Их еще называют «убийцами NRF24L01». Здесь уже был обзор этого модуля
Я себе заказал более поздние модификации ESP07 и ESP12, которые отличаются меньшими размерами и большим числом выведенных GPIO, что не требует «хаков» для использования в них дополнительных портов ввода/вывода.
Данный модули разработаны китайской компанией Espressif System
Технические характеристики:
- WI-FI: 802.11 b/g/n с WEP, WPA, WPA2.
- Режимы работы: Клиент (STA), Точка доступа (AP), Клиент+Точка доступа (STA+AP).
- Напряжение питания 1.7..3.6 В.
- Потребляемый ток: до 215мА в зависимости от режима работы.
- Количество GPIO: 16.
- Flash память размером 512кб.
- RAM данных 80 кб
- RAM инструкций — 32 кб.
Про модификации модулей ESP8266 можно прочитать здесь
Заказывал я модули в январе.
Цена ESP-07 — $3.78, ESP-12 — $4.24. Покупал на премию за обзор статьи. Приехали за 31 день в запаянных пакетиках
ESP8266 ESP-07
ESP8266 ESP-12
Оживление модуля заняло довольно много времени
Для этого нужно подать на него 3.3В. Причем стабилизаторы у преобразователей USB/UART не тянут данный модуль по току, поэтому питание нужно внешнее.
Далее нужно посадить GPIO15 на землю, а CH_PD и GPIO0 подтянуть к VCC через резистор. В некоторых источниках еще указывается, что нужно подтянуть к VCC и GPIO2, но у меня все заработало и без этого.
RXD, TXD и GND подсоединяются через переходник USB/UART к компьютеру.
В результате собрал на макетке такую схему
Здесь сразу столкнулся со следующей сложностью — шаг дырочек у ESP07 — 2мм, а не 2.5 как у штырьковых разъемов, применяемых в Ардуино и прочих местах.
Пришлось к макетке паять на проволочках
Сразу вывел кнопку RESET и перемычку GPIO0 на землю, переводящую модуль в режим загрузки прошивки. А питание на модуль завел через линейный стабилизатор LM1117-N-3.3
После этого запустил программу CollTerm и на скорости 9600 получил приглашение модуля.
Команда AT+GMR выдала 0020000904 (Версия SDK — 0020, в версия AT — 0904)
Далее побаловавшись с AT командами запустил модуль как точку доступа и подключился к своей.
Для тех, кому лень, как мне, разбираться с АТ командами, есть программа ESP8266_config, позволяющая все это настроить.
Далее интересно было попробовать модуль в режиме самостоятельного контроля. Для этого решил прошить его NodeMCU со встроенным интерпретатором LUA.
Прошивку делал утилитой XTCOM_UTIL. Так как данная программа работает только с COM1-COM6, пришлось в диспетчере устройств изменить свой COM33 от USB/UART конвертера на COM6.
Далее прошивка не представляет труда: открываем порт и коннектимся. Скорость выбирается автоматически. Главное, не забыть посадить GPIO0 на землю (у меня для этого есть специальная перемычка). Скорость выбирается автоматически. Иногда коннект не устанавливался. Помогало нажатие кнопки RESET во время коннекта.
Далее выбираем файл с прошивкой
nodemcu-firmware-master\pre_build\latest\nodemcu_latest.bin
Теперь можно подключиться к модулю при помощи ESPlorer
У меня получилось запустить модуль давления/температуры BMP180, подключенный к GPIO2 и GPIO0
Для этого я загрузил файл bmp180.lua из готовых модулей, идущих вместе с прошивкой с GITHUB
И затем файл init.lau, выполняемый при загрузке ESP8266
tmr.alarm(1, 5000, 1, function() print('ip: ',wifi.sta.getip()) bmp180 = require("bmp180") bmp180.init(4, 3) tmr.stop(1) -- alarm stop end)
Запуск программы без задержки таймера приводил к неизменной ошибке.
После рестарата, код
bmp180.read(OSS) t = bmp180.getTemperature() p = bmp180.getPressure() -- temperature in degrees Celsius and Farenheit print("Temperature: "..(t/10).." C") -- pressure in differents units print("Pressure: "..(p * 75 / 10000).." mmHg")
Выдавал в консоль текущее давление и температуру.
А вот запустить выдачу данных параметров в режиме веб-сервера мне не удалось. Все дело в нехватки памяти. Отдельно веб сервер и BMP180 работали, а вместе вываливались в
PANIC: unprotected error in call to Lua API (error loading module 'bmp180' from file 'bmp180.lua': not enough memory)
Или просто на консоль валились обрывки кода LUA.
Модернизировать свою домашнюю метеостанцию с ходу не получилось.
Дальнейший мой путь был, собирать свою прошивку на фирменном SDK, как написано в этой статье . Но это уже другая история. Скажу только, что прошивки собираются без проблем, а вот запустить злополучный BMP180 так и не удалось.
Выводы
- Модули ESP8266 — это очень дешевое решения для построение сети умного дома и прочей домашней автоматизации с использованием WiFi
- Данные модули вполне годятся для замены NRF24L01+ в связке с Arduino и прочими «народными» контроллерами.
- Для работы в качестве самостоятельного контроллера ESP8266 имеет маловато ресурсов и довольно сырые прошивки
- Программирование ESP-модулей довольно трудоемкий процесс, который может отпугнуть новичков
- В целом ESP8266 имеют большие перспективы. Буду ждать развитие прошивок и средств разработки, а пока, буду применять их в связке с другими контроллерами (кроме проектов с WiFi розетками и выключателями )))
Полезные ссылки и литература
- Описание ESP8266 на сайте производителя
- Сайт esp8266.ru
- Цикл статей на geektimes.ru и на habrahabr.ru
- Англоязычный форум esp8266.com
- Обсуждение ESP8266 на форуме arduino.ru
Дальнейшее развитие событий по моему использованию ESP8266 буду публиковать в своем блоге
Кот попался, пока возился с макрофотографиями
Оказался довольно пыльным )))
подключение и обновление прошивки – esp8266
Модуль esp8266 подключен USB-TTL на 3,3 вольта
ESP8266 — быстрый старт для начинающих
Как проверить ESP8266
Как быстро подключить ESP8266
Как правильно подключить ESP8266
Как подключить ESP8266 через Arduino
Как подключить ESP8266 через RaspberryPi
Как настроить ESP8266
Как обновить прошивку ESP8266
Нижеприведенные инструкции и схемы не являются «правильными» с точки зрения схемотехники и не должны применяться в реальных конечных устройствах. Это упрощенные инструкции для быстрого старта, чтобы вы могли с минимальным набором компонентов запустить свой модуль ESP8266. При этом все эти упрощенные схемы реально работают и проверены автором лично на различных модулях ESP8266.
Как проверить ESP8266
Для проверки ESP8266, который вы только что приобрели, потребуется источник стабилизированного напряжения на 3,3 вольта.
Внимание! Допустимый диапазон напряжения питания модуля ESP8266 от 3,0 до 3,6 вольт. Подача повышенного напряжения питания на модуль гарантированно приведет к выходу ESP8266 из строя.
Чтобы проверить ESP8266 ESP-01 достаточно подключить три пина: VCC и CH_PD (chip enable) к питанию 3,3 вольт, а GND к земле. Если у вас не ESP-01, а другой модуль и на нем выведен GPIO15, то дополнительно еще потребуется подключить GPIO15 к земле.
При успешном старте заводской прошивки на модуле ESP8266 загорится красный светодиод (индикатор питания, на некоторых версиях модуля, например ESP-12, может отсутствовать) и пару раз мигнет синий (это индикатор передачи данных от модуля к терминалу по линии TX-RX, может иметь другой цвет) и в вашей беспроводной сети должна появится новая точка доступа с именем «ESP_XXXX», которую вы сможете увидеть с любого WiFi устройства. название точки доступа зависит от производителя прошивки и может быть другим, например AI-THINKER_AXXXXC. Если точка доступа появилась, то можно продолжить эксперименты далее, если нет, то еще раз проверьте питание, CH_PD, GND и если все подключено правильно то, скорее всего, у вас неисправный модуль, но есть надежда, что прошивка в модуле с нестандартными настройками и, возможно, вам поможет перепрошивка.
Как быстро подключить ESP8266
В минимальный набор для подключения и прошивки модуля ESP8266 входит:
1. Собственно сам модуль ESP8266
2. Беспаечная макетная плата
3. Набор проводов папа-мама для макетной платы или DUPONT M-F кабель
4. USB-TTL конвертер (ищите с переключателем на 5 и 3,3 вольт, либо версия на 3,3 вольта) на базе FTDI, PL2303 или аналогичном чипе. Идеальным будет вариант, когда на USB-TTL адаптере будут выведены DTR и RTS — это позволит быстро загружать прошивку из Arduino IDE, UDK, Sming без ручного переключения GPIO0 на землю.
В случае если у вас USB-TTL конвертер на 5 вольт, то вам дополнительно потребуется стабилизатор питания на чипе 1117 или аналогичном (ток не менее 300 мА, желательно с конденсаторной обвязкой в виде готового модуля, но сойдет и просто микросхема) и источник питания (для 1117 отлично подойдет пятивольтовая зарядка от смартфона). Вообще, лучше не питать ESP8266 от USB-TTL конвертера или Arduino, а использовать отдельный источник питания — это избавит вас от множества проблем.
В расширенный набор для постоянной и комфортной работы с модулем ESP8266 вам дополнительно потребуются разъемы питания, DIP переключатели, резисторы и светодиоды. Я также использую недорогой USB монитор (Charger Doctor — листайте список дальше, ищите в белом корпусе), который позволяет видеть потребляемый ток (с китайской точностью) и немного защищает шину USB от короткого замыкания по питанию (при КЗ дисплей монитора начинает мигать)
1. Модулей ESP8266 достаточно много и первое, что вам потребуется, это идентифицировать ваш модуль и определить его распиновку. На нашем сайте есть замечательная таблица с фотографиями модулей и их распиновкой. Далее в этом кратком пособии для начинающих, мы будем подразумевать, что работаем с модулем ESP8266 ESP-01 V090. Если у вас другой модуль (например, ESP-07 или ESP-12) и на нем выведен пин GPIO15 (MTDO, HSPICS), то этот пин необходимо притянуть к земле как для обычного старта модуля, так и для режима прошивки.
2. Убедиться два раза, что питающее напряжение для модуля составляет 3,3 вольта.
Внимание! Допустимый диапазон напряжения питания модуля ESP8266 от 3,0 до 3,6 вольт. Подача повышенного напряжения питания на модуль гарантированно приведет к выходу ESP8266 из строя. Питающее напряжение может быть и существенно ниже 3 вольт, заявленных в документации
3. Если вы счастливый обладатель USB-TTL конвертера на 3,3 вольта то подключите модуль, как на рисунке ниже (левая часть). Если у вас только пятивольтовый USB-TTL, то используйте в качестве инструкции правую часть рисунка.
На первый взгляд схема справа может показаться «лучше» из-за использования отдельного источника питания, но это не совсем так — при использовании USB-TTL конвертера на 5 вольт желательно добавить делитель на резисторах для согласования пятивольтовых и трехвольтовых уровней логики либо модуль преобразования уровней.
Внимание! На правом рисунке подключение UTXD (TX) и URXD (RX) модуля ESP8266 к пятивольтовой TTL логике вы осуществляете на свой страх и риск! Документация на SoC ESP8266 сообщает, что модуль толерантен только к 3. 3 вольтовой логике. В большинстве случаев подключение ESP8266 к пятивольтовой логике НЕ ПРИВОДИТ к выходу из строя ESP8266, однако именно вашему модулю может не повезти. Для исключение риска выхода модуля ESP8266 из строя рекомендуется использовать USB-TTL конвертер на 3,3 вольта, либо TTL 5v-3.3v конвертеры либо делитель на резисторах (на рисунке не показан). Более подробно о согласовании логических уровней можете прочитать здесь. Рисковые гики, вроде меня, подключают ESP8266 к пятивольтовой TTL логике напрямую и не заморачиваются.
Внимание! На правом рисунке показано подключение стабилизатора питания 1117 без дополнительной обвязки. Это работает, но все же, мы рекомендуем использовать схему подключения 1117 с конденсаторной обвязкой — сверьте схему подключения с даташитом на ваш стабилизатор либо используйте готовый модуль на базе 1117.
ESP8266 — подключение
Красный — питание 3,3в
Черный — GND
Желтый — на стороне ESP8266 — RX, на стороне USB-TTL — TX
Зеленый — на стороне ESP8266 — TX, на стороне USB-TTL — RX
Оранжевый — CH_PD (CHIP ENABLE) — должен быть всегда подтянут к питанию
Синий — GPIO0 — подключен через выключатель к земле для включения режима перепрошивки модуля. Для обычного старта модуля GPIO0 можно оставить никуда не подключенным.
Розовый на правой схеме — нестабилизированное питание 5-8 вольт
4. Для старта модуля разорвите цепь GPIO0 — GND и можете подавать питание (причем именно в таком порядке: сначала убеждаемся, что GPIO0 «висит в воздухе», затем подаем питание на VCC и CH_PD)
Внимание! В вышеприведенных, реально работающих, примерах подключения ESP8266 используется подключение выводов ESP8266 «напрямую» к земле и питанию, либо «висячее в воздухе», как у нас никуда не подключен RESET, что является абсолютно неправильным и пригодно только для пары первых экспериментов, хотя и вполне работоспособно на подавляющем большинстве модулей. «Напрямую» к питанию подключается только вывод VCC, остальные выводы: CH_PD, RESET, GPIO0, GPIO2, должны быть подтянуты (pullup) к питанию (VCC) через резистор от 4,7 до 50 кОм. «Напрямую», к минусу (общему проводу) питания подключаем только GND, а GPIO0 подтягиваем (pulldown) тоже через резистор до 10k к GND для перевода модуль в режим загрузки прошивки. Если вы планируете и дальше экспериментировать с ESP8266, то сделайте грамотное подключение, впрочем так же как и для любых других микроконтроллеров. Детальное описание pullup и pulldown выходит за рамки данной статьи, но вы сможете легко нагуглить описание правильного подключения портов ввода-вывода. «Правильное» подключение позволит вам избежать множества «чудес» и проблем и будет неизбежно необходимым при возникновении затруднений с запуском или перепрошивкой модуля ESP8266.
Как правильно подключить ESP8266
Если вы планируете заниматься с ESP8266 больше, чем один вечер, то вам потребуется вариант подключения, обеспечивающий более высокую стабильность. Ниже приводятся две схемы подключения: с поддержкой автозагрузки прошивки из Arduino IDE, UDK, Sming и без нее.
Схема подключения ESP8266 (без автозагрузки прошивки, прошиваемся предварительно установив перемычку BURN и перезагрузив модуль)
Схема подключения с поддержкой автозагрузки прошивки из Arduino IDE, UDK, Sming. Для Flash Download Tool и XTCOM_UTIL, возможно, потребуется отключение RTS/DTR. Если RTS и DTR вам отключать неудобно, то можно добавить в схему перемычки
На этих схемах не показано подключение ADC и свободных GPIO — их подключение будет зависеть от того, что вы захотите реализовать, но если хотите стабильности, то не забудьте притянуть все GPIO к питанию (pullup), а ADC к земле (pulldown) через подтягивающие резисторы.
Резисторы на 10k могут заменены на другие от 4,7k до 50k, за исключением GPIO15 — его номинал должен быть до 10k. Номинал конденсатора, который сглаживает высокочастотные пульсации, может быть другим.
Соединение RESET и GPIO16 через резистор deep sleep на 470 Ом вам потребуется, если вы будете использовать режим deep sleep: для выхода из режима глубокого сна модуль перезагружает сам себя, подавая низкий уровень на GPIO16. Без этого соединения глубокий сон будет вечным для вашего модуля.
На первый взгляд на этих схемах кажется, что GPIO0, GPIO2, GPIO15, GPIO1 (TX), GPIO3 (RX) заняты и вы не можете их использовать для своих целей, но это не так. Высокий уровень на GPIO0 и GPIO2, низкий на GPIO15 требуются только для старта модуля, а в последующем вы можете использовать их по своему усмотрению, только не забудьте обеспечить требуемые уровни до перезагрузки модуля.
Можно использовать и TX, RX как GPIO1 и GPIO3 соответственно, не забывая о том, что при старте модуля любая прошивка будет дергать TX, отправляя отладочную информацию в UART0 на скорости 74480, но после успешной загрузки вы можете использовать их не только как UART0 для обмена данными с другим устройством, но и как обычные GPIO.
Для модулей, имеющих меньшее количество разведенных пинов, как например, ESP-01 подключение неразведенных пинов не требуется, т.е. на ESP-01 разведены только: VCC, GND, GPIO0, GPIO2, CH_PD и RESET — вот только их и подтягиваете. Нет никакой необходимости припаиваться прямо к микросхеме ESP8266EX и притягивать неразведенные пины, только если вам это действительно необходимо.
Данные схемы подключения родились после множества экспериментов, проведенных нашими форумчанами и собраны по крупицам из разрозненной и недоступной изначально документации нашим сообществом, я всего лишь постарался объединить эти знания в одном месте. Множество советов по подключению вы найдете на нашем форуме. Там же вы сможете задать интересующие вас вопросы или найти помощь в решении проблем. Если вы увидели ошибку, неточность в этой статье или вам есть что добавить, то сообщите мне об этом в специальной теме на нашем форуме.
Внимание! Даже эти схемы нельзя назвать «идеальными». Совершенству нет предела: удобно подключить второй USB-TTL к UART1 (c ESP8266 можно взять только GND и UTXD1, т.е. GPIO2) для подключения отладочного терминала (потребуется второй USB-TTL конвертер) — тогда можно будет прошивать модуль ESP8266 через UART0 без отключения терминала отладки на UART1. Неплохо будет подключить резисторы малого номинала к выводам обоих UART, поставить диод в линию RTS, добавить конденсатор в линию питания для гашения низкочастотных импульсов и т.д. Очень удобно, например, сделано в этой отладочной плате: на все GPIO подключены светодиоды, на ADC подключен фоторезистор, но жаль, что нет кнопки RESET и перемычка только одна на GPIO0.
Правильным будет сказать вам, что не существует идеальной и в тоже время универсальной схемы подключения ESP8266. Все дело в том, что очень многое зависит от прошивки, которую вы собираетесь туда залить. Вышеприведенные схемы рассчитаны на новичков, которые только начинают осваивать ESP8266, для экспериментов. Для реальных проектов, возможно, вам придется немного изменить схему. Например, для прошивки TCP2UART нужно подключить RTS к GPIO15, а CTS к GPIO13. Также в реальных проектах рекомендую уделить особое внимание питанию.
Подключение ESP8266 через Arduino
Если у вас под рукой не оказалось USB-TTL конвертера на 3,3в, но есть Arduino со встроенным USB-TTL конвертером, то можно использовать такую схему подключения
ESP8266 подключение через Arduino
На что обратить внимание:
1. Arduino Reset подключен к GND (синий провод) чтобы не запускался микроконтроллер на Arduino, в данном виде мы используем Arduino как прозрачный USB-TTL конвертер
2. RX и TX подключены не «на перекрест», а прямо — RX — RX (зеленый), TX — TX (желтый)
3. Все остальное подключено так же, как и в предыдущих примерах
Внимание! В этой схеме также требуется согласовывать уровни TTL 5 вольт Arduino и 3.3 вольта на ESP8266, однако неплохо работает и так.
Внимание! На Arduino может быть установлен стабилизатор питания, который не выдержит ток, требуемый для ESP8266, поэтому прежде, чем производить подключение сверьтесь с даташитом на тот стабилизатор, который установлен именно у вас. Не подключайте другие энергопотребляющие компоненты одновременно с ESP8266 в связи с риском выхода из строя встроенного в Arduino стабилизатора питания.
Существует и другая схема подключения Arduino и ESP8266 с использованием SoftSerial. В виду того, что для библиотеки SoftSerial скорость порта в 115200 является слишком большой и не гарантирует стабильную работу, мы не рекомендуем использовать такой способ подключения, хотя есть люди, у которых все стабильно работает (правда только на скорости 9600). Скетч для такой схемы подключения (спасибо nec3540A)
Подключение ESP8266 через RaspberryPi
Да, можно и «из пушки по воробьям», если под рукой нет вообще никакого USB-TTL конвертера. Подключение через малинку аналогично Arduino, но не такое удобное, т.к. дополнительно потребуется стабилизатор питания на 3,3 вольта. RX, TX, GND малинки подключаем к ESP8266, VCC и GND берем со стабилизированного источника питания на 3,3 вольта. Обратите внимание на то, что необходимо соединить GND всех устройств: малинки, стабилизатора и ESP8266. Брать 3,3 вольта питания с малинки для ESP8266 я лично не пробовал, поэтому вам предлагать такой вариант не буду. Если встроенный в вашу версию малины стабилизатор держит до 300 миллиампер дополнительной нагрузки, то подключение ESP8266 вполне возможно. Если сами захотите рискнуть — пожалуйста.
Настройка ESP8266
Итак, ESP8266 модуль к USB порту мы подключили (через USB-TTL или Arduino) теперь нужно убедится, что драйвера к вашим USB-TTL или Arduino встали корректно и в системе появился новый виртуальный последовательный порт. Вам понадобится программа — терминал последовательного порта. Можете использовать любую на ваш вкус, но она должна удовлетворять следующему требованию: каждая команда, которую вы отправляете с компьютера в последовательный порт должна завершаться символами CR+LF.
Большой популярностью пользуется программа CoolTerm (есть версии для Win/MAC/Linux).
Ваш покорный слуга является автором open-source программы ESPlorer, получившей международное признание. ESPlorer позволит вам не вводить AT команды вручную и легко работать с lua скриптами под NodeMCU (об этом в другой раз) и вы вполне можете использовать ее и как обычный терминал. Обсуждение ESPlorer на нашем форуме и на esp826.com
С подключением к последовательному порту придется немного поколдовать: в связи с разнообразием прошивок для ESP8266, подключение может осуществляться на разных скоростях. Нужную скорость можно определить путем простого перебора трех вариантов: 9600, 57600 и 115200. Как осуществить перебор? Подключаетесь в терминальной программе к вашему виртуальному последовательному порту выставив следующие параметры: 9600 8N1, затем перезагружаете модуль, отключив CH_PD (chip enable) от питания (USB-TTL при этом остается подключенным к USB) и снова включаете (т. е. просто передергиваете CH_PD, почему не передергиваем питание — читаем здесь, также можно кратковременно замкнуть RESET на землю для перезагрузки модуля) и наблюдаете данные в терминале. Во-первых, светодиоды на ESP8266 должны гореть как описано в начале статьи в разделе Проверка ESP8266. Во-вторых, в терминале вы должны увидеть «мусор» из разных символов, оканчивающийся строкой «ready». Если «ready» мы не видим, то переподключаемся терминалом на другой скорости и снова перезагружаем модуль.
На одном из вариантов скорости «ready» вы все-таки увидите — поздравляем, ваш модуль готов к работе. Если нет, то добро пожаловать к нам на форум — мы постараемся помочь, но предварительно почитайте эту тему.
Немного подробнее о «мусоре». Дело в том, что при старте прошивки, UART модуля ESP8266 переключается на скорость передачи 74 880 (вот такие забавные эти китайцы) выдает в UART отладочную информацию, затем переключает скорость порта на 115200 (ну или на 9600 или 57600 в зависимости от версии прошивки), так вот эта отладочная информация и видится нам как мусор, т. к. мы подключаемся к модулю на другой скорости. Можете подключится к ESP8266 на скорости 74 880 (ESPlorer поддерживает эту скорость) и вы эту отладочную информацию увидите, будет что-то вроде этого:
wdt reset load 0x40100000, len 25052, room 16 tail 12 chksum 0x0b ho 0 tail 12 room 4 load 0x3ffe8000, len 3312, room 12 tail 4 chksum 0x53 load 0x3ffe8cf0, len 6576, room 4 tail 12 chksum 0x0d csum 0x0d
1 2 3 4 5 6 7 8 9 10 11 12 | wdt reset load 0x40100000, len 25052, room 16 tail 12 chksum 0x0b ho 0 tail 12 room 4 load 0x3ffe8000, len 3312, room 12 tail 4 chksum 0x53 load 0x3ffe8cf0, len 6576, room 4 tail 12 chksum 0x0d csum 0x0d |
НО! не увидите «ready» и не сможете управлять модулем, пока не переподключитесь на ту скорость, на которой работает прошивка.
Что делать дальше
Если у вас новый модуль, то, скорее всего, в нем прошита одна из старых кастомных AT прошивок. Скорее всего это какой-нибудь AI-THINKER AT v0.16 SDK v0.9.2. Проверить версию прошивку вы можете командой «AT+GMR», т.е. прямо в терминальной программе набираете AT+GMR без кавычек и жмете Enter. Модуль должен ответить «OK» и выдать версию прошивки (например, «0016000092» — в разных версиях AT прошивок формат вывода версии отличается). Управление модулем ESP8266 AT командами заслуживает отдельной статьи, однако вы легко сможете разобраться с этим и сами, воспользовавшись одним из наших справочников по AT командам:
На момент написания этой статьи актуальная версия прошивки для ESP8266:
версия AT команд v0.21, версия SDK v0.9.5
Обновление прошивки ESP8266
Модуль ESP8266 замечателен тем, что не требует специального программатора — обновление прошивки производится на том же железе, на котором вы подключаете модуль ESP8266 к компьютеру, т.е. тоже через USB-TTL конвертер (ну или Arduino или RPi). Для обновление прошивки на модуле ESP8266 проделайте следующее:
1. Скачайте новую версию прошивки с нашего сайта из раздела ESP8266 прошивки (вот ссылка на последнюю версию прошивки AT 0.21 SDK 0.9.5 на момент написания этой статьи)
2. Скачайте одну из утилит для прошивки ESP8266 в зависимости от вашей операционной системы из раздела ESP8266 Утилиты с нашего сайта
для Win систем подойдет XTCOM UTIL (удобно работать, если прошивка состоит из одного файла), мультиплатформенный esptool (требуется python, нужно указывать параметры в командной строке), FLASH DOWNLOAD TOOL (много настроек, удобно прошивать прошивки, состоящие из нескольких файлов, позволяет «собрать» прошивку в один файл из нескольких). Также вы найдете и другие программы для прошивки ESP8266 — попробуйте разные и пользуйтесь той, которая вам больше понравится.
3. Отключите от последовательного порта вашу терминальную программу
4. Отключите CH_PD от питания, подключите GPIO0 модуля к GND, подключите обратно CH_PD модуля.
5. Запускайте программу для прошивки модуля и загружайте новую прошивку в модуль ESP8266.
Загрузка прошивки в модуль обычно осуществляется на скорости 115200, но режим прошивки модуля поддерживает автоопределение скорости и прошивка может быть осуществлена на скорости от 9600 и выше. Максимальная скорость зависит от многих факторов (вашего USB-TTL конвертера, длины проводов и прочего) и может быть определена экспериментально на конфигурации именно вашего оборудования.
Все последние версии прошивок загружаются с нулевого адреса (0x00000).
Обсуждение этой статьи на нашем форуме
Обсуждение проблем при подключении ESP8266 на нашем форуме
В статье Обновление прошивки ESP8266 подробно описана загрузки прошивки в модуль с помощью программы XTCOM_UTIL.
Использованная литература
ESP8266 Datasheet — Specifications V4.1 — 08.09.2014 English
ESP8266 Datasheet — Beginners Guide V0.4.1 — 17.09.2014 English
ESP8266 AT Instruction Set v0.21 23.01.2015
ESP8266 Datasheet — Module Application Design Guide — 20.08.2014 English
Xtensa Instruction Set Architecture (ISA) Reference Manual
Обновление прошивки ESP8266
Для работы с RemoteXY модуль ESP8266 должен иметь прошивку с поддержкой AT-команд не ниже v0. 40. Для проверки версии прошивки, а также для обновления прошивки необходимо подключить модуль к компьютеру через последовательный порт. Модуль можно подключить как через плату Arduino, так и через переходник USB-UART.
Подключение через плату Arduino
При использовании Arduino в качестве преобразователя ATmega устанавливается в режим сброса и активен только внутренний преобразователь USB-UART. Для этого контакт RESET соединяется с землей. Пины TX и RX подключены к ESP8266 один к одному, а не крест-накрест, как если бы они были подключены к контроллеру в режиме работы.
Подключение через адаптер USB-UART
Адаптер должен иметь выходное питание 3,3В для ESP8266. Этот выход должен обеспечивать необходимый ток не менее 200 мА.
Контакт CPIO0 ESP8266 определяет режим работы модуля. Когда этот контакт не подключен, модуль работает в обычном режиме и отвечает за AT-команды. Когда этот контакт подключен к земле, модуль работает в режиме обновления прошивки. Модуль перейдет в режим обновления прошивки, когда вывод CPIO0 будет подключен к земле во время включения питания. Если этот контакт соединить с землей, когда модуль работает, модуль не перейдет в режим обновления прошивки.
Проверить текущую версию прошивки
Для отправки AT-команд и просмотра ответов необходимо использовать любой программный монитор последовательного порта. Очень подходит инструмент последовательного порта в Arduino IDE. Монитор последовательного порта необходимо настроить таким образом, чтобы командная строка отправлялась с конечными символами NL и CR. Скорость передачи по умолчанию 115200 бод.
Для использования модуля в обычном режиме контакт CPIO0 должен быть отключен.
Проверить текущую версию прошивки можно AT-командой: AT+GMR. Пример ответа модуля:
АТ+GMR Версия AT: 0.40.0.0 (8 августа 2015 г., 14:45:58)
Версия SDK: 1.3.0
Ай-Мыслитель Technology Co., Ltd.
Сборка: 1.3.0.2 11 сен 2015 11:48:04
ХОРОШО
Также необходимо знать объем флэш-памяти модуля ESP, от этого зависит адрес загрузки прошивки. В данном руководстве описывается обновленная прошивка модуля с объемом флэш-памяти 8Мбит (512КБ+512КБ) или 16Мбит (1024КБ+1024КБ), как наиболее распространенная. Размер флэш-памяти можно узнать, если отправить AT-команду из сброса: AT+RST.
AT+RST ХОРОШО ets 8 января 2013, первая причина: 2, режим загрузки: (3,1) загрузка 0x40100000, длина 1396, комната 16
хвост 4
контрольная сумма 0x89
загрузка 0x3ffe8000, длина 776, комната 4
хвост 4
контрольная сумма 0xe8
загрузка 0x3ffe8308, длина 540, комната 4
хвост 8
контрольная сумма 0xc0
сумма 0xc0 2-я загрузочная версия: 1.4(b1)
Скорость SPI: 40 МГц
Режим SPI: DIO
Размер и карта флэш-памяти SPI: 8 Мбит (512 КБ + 512 КБ)
перейти к запуску user1 @ 1000 #т#n не использовать данные памяти rtc
slЏ‚rlМя
Ай-Мыслитель Technology Co., Ltd. готовый
Средство для обновления прошивки
Для обновления прошивки необходимо скачать специальное приложение-утилиту и саму прошивку. Приложение для обновления прошивки ESP8266 будет использовать Flash Download Tools v2.4 с официального сайта Espressif Systems. Ссылка на страницу загрузки: http://espressif.com/en/products/hardware/esp8266ex/resources. Вы должны перейти в раздел «Инструменты».
Прошивка
Прошивку также можно скачать с официального сайта. Ссылка на страницу загрузки на официальном сайте: http://espressif.com/en/products/hardware/esp8266ex/resources. Вам необходимо перейти в раздел «SDKs & Demos» и скачать прошивку ESP8266 NONOS SDK версии не ниже v1.3.0. Эта версия прошивки стала поддерживать AT-команды v0.40.
Все загруженные файлы необходимо распаковать и поместить в каталог, где полный путь к файлу содержит только латинские символы, т.е. символы без языковой локализации.
Настройки
Запустить приложение Flash Download Tools v2.4 (одноименный .exe-файл). В открывшемся окне необходимо правильно выбрать загружаемые файлы и настроить режим подключения.
Загружаемые файлы находятся в папке «bin» с файлами прошивки. Для каждого файла необходимо указать действующий адрес загрузки. Используйте следующую таблицу для выбора файлов и адресов назначения:
Установить следующие параметры:
- SPIAutoSet — установить;
- Кристаллическая частота — 26M;
- FLASH SIZE – 8Мбит или 16Мбит в зависимости от объема флэш-памяти;
- COM-ПОРТ – выберите порт, который подключен к ESP;
- СКОРОСТЬ БОД – 115200
Для запуска процесса обновления прошивки необходимо нажать кнопку «СТАРТ».
Последовательность действий для обновления прошивки ESP8266
1. Подключите модуль ESP к компьютеру согласно схеме подключения в этой статье.
2. Запустите монитор последовательного порта. Отправьте AT-команды AT+RST и AT+GMR для определения текущей версии прошивки и объема памяти модуля. Этот шаг также позволяет проверить правильность подключения модуля.
3. Запустить приложение для обновления прошивки Flash Download Tools, правильно настроить загружаемые файлы и адреса, правильно выставить настройки.
4. Отключите питание модуля ESP8266.
5. Подключите контакт CPIO0 к земле.
6. Включите питание модуля ESP8266.
7. Нажмите кнопку «СТАРТ» в приложении для обновления прошивки.
8. Дождаться окончания обновления прошивки. По окончании процесса появляется надпись FINISH зеленого цвета.
9. Выключите питание модуля ESP8266 и отсоедините землю от контакта CPIO0.
10. Включите модуль и запустите монитор последовательного порта. Убедитесь, что модуль и новая версия прошивки работают, отправив AT-команду AT+GMR.
Как обновить прошивку ESP8266 — прошивка официальной прошивки AT
Это второй проект на ESP8266, и в этом проекте я покажу вам, как прошить официальную прошивку Espressif в ESP8266 с помощью Arduino. Этот проект также можно использовать, если вы хотите обновить прошивку ESP8266 до последней версии.
В предыдущем проекте ESP8266 мы видели, как написать собственную программу на ESP8266 с помощью Arduino IDE и управлять светодиодом с помощью контактов GPIO. В том же проекте я упомянул, что по умолчанию модуль ESP8266 ESP-01 поставляется с прошивкой AT Command.
Но если мы напишем собственную программу для доступа к выводам GPIO (как мы это делали в предыдущем проекте), существующая прошивка будет полностью стерта, а новая программа будет записана.
Несмотря на то, что WiFi-модуль ESP8266 производится Espressif Systems, SoC используется многими сторонними производителями для реализации своих собственных модулей. В моем случае у меня есть модуль ESP8266 ESP-01 от AI-Thinker.
Это приводит к множеству вопросов, например, является ли прошивка оригинальной или нет, является ли прошивка актуальной или нет и многими другими.
Итак, в этом проекте мы будем прошивать официальную прошивку Espressif Systems для модуля ESP8266, используя официальный инструмент ESP8266 Flasher Tool, предоставленный Espressif Systems, который представляет собой ИНСТРУМЕНТ ДЛЯ ЗАГРУЗКИ FLASH ESP8266, и Arduino UNO в качестве USB-последовательного интерфейса.
Прошивка ESP8266 может быть установлена по двум причинам: если вы хотите обновить прошивку ESP8266 до ее последней версии или полностью установить новую прошивку (в случае, если она была перезаписана какой-либо программой). Итак, приступим.
Схема
Настройка оборудования для обновления прошивки ESP8266
Прежде чем приступить к процессу обновления прошивки SoC ESP8266, важно настроить WiFi-модуль ESP8266 в режиме загрузки или режиме программирования.
Если вы помните, в проекте НАЧАЛО РАБОТЫ С ESP8266 И ARDUINO я упоминал, что контакты GPIO0 и RST модуля ESP8266 играют важную роль в его настройке в режиме загрузки.
Здесь мы реализуем ту же настройку. Итак, связи следующие.
- VCC до 3,3 В
- Земля на Землю
- TX к TX Arduino UNO
- RX-RX Arduino UNO (через преобразователь уровней)
- GPIO0 на землю
- RST к GND через кнопку
- CH_PD на 3,3 В
Схема для прошивки прошивки в ESP8266
На следующем изображении показана схема для включения режима прошивки в ESP8266. Чтобы перевести SoC ESP8266 в режим мигания, вывод GPIO0 должен быть подключен к GND, а мгновенный импульс GND — к выводу RST.
Необходимые компоненты
- Arduino UNO
- ESP8266 ESP-01 (любой модуль ESP8266)
- Резистор 1 кОм
- Резистор 2,2 кОм
- Кнопка
- Переключатель SPDT
- Соединительные провода
- Мини-макет
ВАЖНЫЕ ПРИМЕЧАНИЯ
- Прежде чем продолжить, обратитесь к предыдущему проекту по настройке Arduino IDE и подготовке Arduino UNO к прошивке прошивки.
- Я подключил контакт GPIO0 к GND напрямую. И после прошивки прошивки я отключил его от GND. Вы можете использовать переключатель SPDT для выполнения этого действия, то есть в одном положении GPIO0 подключен к GND, а в другом положении его можно использовать как GPIO.
- ESP8266 не выдерживает 5В. Он должен быть подключен к 3,3 В. Даже контакт RX ESP8266 подключен через преобразователь уровней.
Проверка текущей версии прошивки
Перед установкой прошивки мы сначала проверим существующую прошивку в модуле ESP8266, используя последовательную связь. Для этого нам нужно отключить вывод GPIO0 от GND. *ВАЖНЫЙ*.
После выполнения подключений в соответствии с приведенной выше принципиальной схемой (и отключения GPIO0 от GND), подключите USB-кабель Arduino к компьютеру и откройте любое программное обеспечение для последовательного мониторинга. Я использую последовательный монитор Arduino. Вы можете использовать любое программное обеспечение, такое как Putty, Terminal и т. д.
В Arduino IDE выберите правильный COM-порт и откройте Serial Monitor. Установите скорость передачи данных на 115200 и выберите вариант Both NL и CR в последовательном мониторе. После этого нажмите кнопку RST ESP8266 на секунду и отпустите. Модуль ESP8266 перезагрузится и отобразит «готов» после того, как на последовательном мониторе появятся некоторые мусорные данные.
Чтобы проверить версию прошивки, вам нужно ввести следующую AT-команду и нажать «Отправить». Эта команда вернет версию прошивки модуля ESP8266. Все AT-команды должны быть в верхнем регистре.
AT+GMR
Если вы заметили, моя прошивка от Ai-Thinker Technology, производителя моего модуля ESP8266 ESP-01, и она довольно старая. Версия набора команд AT — 0.21.0.0, а версия SDK — 0.9.5.
Теперь я заменю эту прошивку на прошивку Espressif (производитель SoC ESP8266).
ПРИМЕЧАНИЕ . Прежде чем продолжить, убедитесь, что контакт GPIO0 подключен к GND.
Загрузка последней прошивки ESP8266
Существует два типа SDK или комплектов разработки программного обеспечения для ESP8266: SDK без ОС и SDK RTOS. Non-OS SDK, как следует из названия, не основан на какой-либо ОС. Используя этот SDK, вы можете скомпилировать IOT_Demo и AT-команды. С другой стороны, RTOS SDK основан на FreeRTOS.
Я буду использовать Non-OS SDK (ну, технически, файлы прошивки на основе Non-OS SDK). Файлы прошивки ESP8266 представлены в виде двоичных файлов, т. е. файлов .bin.
Теперь, поскольку я буду использовать только набор AT-команд ESP8266, я буду загружать только бин-файлы, связанные с AT-командами. Чтобы загрузить прошивку AT Commands для ESP8266, перейдите по официальной ссылке здесь или скачайте напрямую по этой ссылке .
Существуют другие версии прошивки для модуля ESP8266. Сначала попробуйте процедуру, упомянутую в этом проекте, и если вам это удастся, вы можете попробовать установить другую прошивку ESP8266. Другие прошивки можно скачать из раздела SDK по ссылке, указанной выше.
Загрузка инструмента для загрузки флэш-памяти ESP8266
Следующим шагом является загрузка инструмента для обновления прошивки ESP8266. Именно для этой цели компания Espressif Systems разработала небольшое программное обеспечение. Он называется ESP Flash Download Tool.
Чтобы загрузить инструмент для загрузки встроенного программного обеспечения ESP8266, перейдите по ссылке по ссылке и в разделе «Инструменты» загрузите инструменты для загрузки флэш-памяти ESP или загрузите напрямую с по этой ссылке .
Теперь, когда мы загрузили прошивку и Flasher Tool для ESP8266, мы приступим к установке прошивки в ESP8266.
Установка прошивки в ESP8266
Чтобы прошить прошивку в ESP8266, сначала откройте Flash Download Tool или Flasher Software ESP8266. На момент работы над этим проектом у меня стоит версия 3.6.2.2. Итак, открываем файл приложения ESPFlashDownloadTool_v3.6.2.2.
Затем вы получите различные варианты, такие как средство загрузки ESP8266, средство загрузки ESP8285, средство загрузки ESP32 и средство загрузки ESP32D2WD. Выберите средство загрузки ESP8266.
После открытия ESP8266 Flash Download Tool нужно выбрать файлы прошивки, которые нам нужны для установки. Вам нужно загрузить четыре файла по четырем разным адресам. Следующая таблица даст вам список файлов и их соответствующие адреса.
ПРИМЕЧАНИЕ. Этот список предназначен для сопоставления флэш-памяти встроенного ПО по беспроводной сети (FOTA) для модулей ESP8266 с 1 МБ флэш-памяти. Для других размеров флэш-памяти см. Руководство по началу работы с ESP8266 по этой ссылке.
Файл | Адрес во флэш-памяти |
boot_v1.7.bin | 0x00000 |
пользователь 1.1024.новый.2.бин | 0x10000 |
esp_init_data_default.bin | 0xFC000 |
пустой.bin | 0xFE000 |
В ESP8266 Download Tool во вкладке SPI Download выберите необходимые файлы в опции «Download Path Config», нажав на кнопку (…). Кроме того, добавьте соответствующие адреса в отведенное место.
После выбора четырех файлов и заполнения адресов установите частоту кристалла на 26 МГц (обычно это 26 МГц, но если ваша плата ESP8266 имеет другой кристалл, введите это значение). Далее выберите размер вспышки. Поскольку у меня встроенная флэш-память 1 МБ, я выбрал вариант размера флэш-памяти 8 Мбит (что равно 1 МБ).
Наконец, выберите правильный COM-порт и установите скорость передачи данных на 115200. Убедитесь, что все последовательные терминалы закрыты.
Перед началом прошивки проверьте, что GPIO0 подключен к GND и подайте импульс LOW (нажмите кнопку Reset) на контакт RST.
Теперь нажмите кнопку СТАРТ. Должна начаться прошивка в ESP8266. Если вы заметили в ESP8266 Firmware Flash Tool, в тот момент, когда вы нажимаете START, вы получаете два MAC-адреса как AP и STA, а также информацию о модуле в разделе DETECTED INFO.
Если все пойдет хорошо, модуль ESP8266 должен быть обновлен новой прошивкой. Если есть какая-либо ошибка, отсоедините USB-кабель, подключите его еще раз и, нажав START, нажмите кнопку Reset на ESP8266.
Вы получите сообщение FINISH на инструменте, и после этого вы сможете закрыть инструмент. Отключите GPIO0 от GND и перезагрузите устройство.