Настройка esp8266 wifi iot

Обновлено: 06.07.2024

Вкладка debug содержит разную полезную информацию, в том числе и реальный размер чипа флеш памяти в строке Flash real size, а так же размер памяти, установленный в прошивающей программе Flash set size, который важен для правильной поддержки OTA.

-Вариант с поддержкой OTA с объемом памяти чипа 1мбайт и выше. Необходимо обязательно выбирать в прошивающей программе размер памяти 1мбайт !! Модули с размером flash памяти 512кб не поддерживаются режимом OTA !!

-Вариант без поддержки OTA.Если размер получаемого файла(одним файлом) более 496кб, то требуется поддержка flash памяти не менее 1 мегабайта !! По сравнению с режимом OTA в этом варианте количество включенных опций можно включить значительно меньше.

Возможность дальнейшего обновления прошивки по OTA доступна только у кого есть активированные ключи !

Если у вас имеются проблемы со стартом прошивки, то обязательно смотрим ниже абзац про решение проблем с прошивкой !

Сборка прошивки в конструкторе

Конструктор позволяет собрать прошивку под свои требования, включив в прошивку только те функции и датчики, которые нужны.

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

Некоторые опции имеют дополнительные настройки, которые находятся в значке-шестеренке. Там можно выбрать доступное количество например термостатов или других опций.

При первоначальной сборке прошивки рекомендуется воспользоваться опцией OTA , чтобы следующее обновление было возможно через интернет без использования подключения программатора. С опцией OTA количество опций можно включить больше, но требуется чтобы память на модуле была не меньше 1 мегабайта !!

Кроме OTA так же рекомендуется включать опции NVS настройки 2 и Экспорт/Импорт настроек. NVS настройки 2 решает проблему со смещением(повреждением) настроек при изменении списка или настроек опций при обновлении прошивки.

При сборке прошивки можно выбирать разный SDK. Рекомендуемая версия SDK 1.3.0. В новых версиях замечена проблема с режимом точки доступа (Safe Mode)(. ) , но нет проблем с надежностью связи с роутером. SDK - это набор библиотек и функций от производителя чипа для работы устройства.

После нажатия кнопки "скомпилировать" через некоторое время конструктор прошивки выдаст ссылки для скачивания:

В режиме без OTA можно прошить файлы прошивки одним файлом - тогда все настройки модуля, если они были сбросятся. Если вы обновляете прошивку и не хотите чтобы настройки удалились, то необходимо обновлять прошивку двумя файлами по адресам, которые указаны в имени файла.

В режиме OTA достаточно залить прошивку одним файлом. Но 0x81000.bin может потребоваться, если вы хотите обновить прошивку по кабелю после использования OTA, когда загружен файл user2.bin(отображается в debug) - в этом случае обновление прошивки одним файлом не обновит активную прошивку.

Подключение модуля для прошивки

Для прошивки ESP8266 необходим USB-UART переходник или Arduino. ESP8266 необходимо обеспечить напряжение питания 3.3в и током 200..300мА. Питание 3.3в от ARDUINO или от USB-UART подключать не рекомендуется - модуль может работать не стабильно из-за нехватки тока. Рекомендуется использовать стабилизатор вида 1117.

Подключение ESP8266 к USB-UART: Необходимо подключить общие выводы GND(минус). RX у USB-UART на TX ESP, TX у USB-UART на RX ESP. Подключаем так же источник питания 3.3в.

Подключение ESP8266 к Arduino: Необходимо подключить общие выводы GND(минус).RX у Arduino на RX ESP, TX у Arduino на TX ESP. Подключаем так же источник питания 3.3в. RESET у Arduina необходимо подключить к GND.

На модуле ESP8266 вывод CH_EN необходимо подключить к +3.3в для того, чтобы включить чип.

GPIO 0 на время программирования, перед включением питания необходимо подключить к GND(земля). После успешной прошивки GPIO 0 нужно отключить от GND. Если на модуле выведен GPIO 15, то его необходимо подключить на GND через резистор 10кОм на постоянной основе !!

Если у вас модуль esp8266 имеет уже на борту USB-UART (например Wemos, NodeMCU) , то указанные выше действия проводить не требуется.

Прошивка модуля

Для начала необходимо установить драйвера для вашего USB-UART переходника или Arduinы.

Прошивка через Nodemcu Flasher: Устанавливаем на вкладке Advanced Параметр Flash size в соответствии выбранным размером flash памяти (в байтах). Режим работы flash ставим QIO (при использовании GPIO 9/10 - DIO). Остальные параметры не трогаем. Указываем на вкладке Config путь на файл прошивки с адресом 0x0000. На вкладке Operation выбираем COM порт и жмем кнопку FLASH.

Прошивка через Flash download tool: Действия аналогичны.

Для модулей ESP8285 и модулях с памятью PN25F08B требуется установка режима памяти DOUT !!

Прошивка через esptool. Пример команды esptool.py --port /dev/ttyUSB0 write_flash -fs 8m 0x00000 esp8266.bin . где -fs 8m размер flash памяти модуля в мегабитах !

Скорость COM порта рекомендуется ставить не выше 115200.

Перед первой прошивкой рекомендуется залить в модуль blank по адресу 0x0000 , особенно, если в модуле до этого использовалась какая либо другая прошивка.

Прошивка файла ESP INIT DATA

Рекомендуется прошить в модуль файл esp_init_data_default.bin с калибровками по умолчанию, эти настройки влияют на работу wifi и adc. В большинстве случаев модули работают корректно без этого файла. Последние SDK могут вообще не запускаться без данного файла.

Адрес прошивки файла зависит от установленного размера flash памяти:

0x7c000 для 512 kB.

0xfc000 для 1 MB.

0x3fc000 для 4 MB.

0xffc000 для 16 MB.

Запуск модуля

При первом включении модуль включается в режим safe mode автоматически так как не содержит имени точки доступа. В режиме safe mode в эфире появится точка с именем WiFi-IoT, к которой можно подключится используя смартфон или ноутбук.

В режим safe mode еще можно попасть, замкнув между собой RX и TX и перезапустив модуль или нажать 3 раза подрят (с интервалом нажатия около секунды) кнопку RESET на ESP8266.

Далее возможны два варианта подключения к модулю:

Далее настраиваем подключение на свой роутер на вкладке main веб интерфейса. Необходимо вбить в поля WiFi options данные своей точки доступа. Для подключения к роутеру выбираем режим "Station mode". После нажатия кнопки set ниже появится IP адрес, на который можно заходить внутри своей беспроводной сети.

Далее обновляем страницу и видим внизу IP адрес, на который уже можно будет заходить внутри Вашей локальной сети.

Тут же вы можете установить свой логин и пароль на странички настроек веб интерфейса. Длинна логина и пароля не более 8 символов. Пароль затребуется на все вкладки настроек. А при установленной опции "Full Security" и на все GET запросы управления. В режиме safe mode пароль не запрашивается !

На данной вкладке можно задать имя модулю, которое будет отображаться на главной и в системе flymon, а так же в топике на MQTT сервере.

Указанные выше действия выполнять не требуется, если прошивка была собрана с опцией Настройки по умолчанию , где были заранее прописаны параметры роутера и IP адрес. После успешной прошивки и перезагрузки сразу можно заходить на указанный IP адрес модуля внутри своей wi-fi сети.

Решение проблем с прошивкой

Иногда, после сторонних прошивок или мусора модуль может не запустится и необходимо выполнить дополнительные действия. Необходимо затереть flash память пустым бланком по адресу 0x00000. Далее уже прошиваем саму прошивку снова.

У некоторых пользователей даже после зачистки бланком модуль не стартует или стартует только при установленном режиме 512 кб или 4мб, возможно это связано с низким качеством flash памяти или частичной её несовместимостью с чипом ESP8266. По некоторым сведениям от пользователей помогает замена чипа памяти.

ВАЖНО !! Если модуль не может получить IP адрес. Висит постоянно статус connect , то рекомендуется вписать IP адрес вручную ниже. Для этого необходимо выбрать режим Static IP и вписать IP модуля и IP шлюза(IP роутера). После этого можно заходить на модуль уже внутри сети по IP адресу, который указали в настройках..

Иногда статус connect может висеть, если тип шифрования на роутере включен, который не поддерживается чипом ESP8266.

Решение проблем с компиляцией.

Ошибка компиляции возможна из-за:

1. Превышен размер IRAM области памяти, прошивка не умещается. Требуется уменьшить количество опции или выбрать другой SDK. Чем новее SDK , тем меньше влазит опций. Проблема нехватки памяти не так заметна при использовании RTOS прошивки.

2. Ошибка в коде - маловероятная причина, но возможна после обновления кода или конфликта опций ранее не замеченный. Сообщить об ошибке можно через обратную связь на сайте или в чате Телеграм, указав код ошибки.

Сохранение настроек в файл

Этот метод является устаревшим, рекомендуется воспользоваться опцией Экспорт/Импорт настроек.

А теперь поговорим о прошивке микропроцессора ESP8266 для получения всех вкусностей.
Это не страшно и не сложно )))

Огромное достоинство этой прошивки - не надо уметь программировать, то есть абсолютно. Собираем из кубиков нужные задачи и все готово. А как это работает уже и не важно )))
Таже отмечу замечательную возможность перепрограммирования системы "по воздуху", то бишь через WiFi/ Первый раз прошиваем по проводу, а потом все легко и просто летает само.

Как писал рядом прошиваемся либо через конвертер usb либо напрямую подключаем плату кабелем.

Для начала скачаем программу прошивальщик.
Их много есть, но как по мне - так это nodemcu-flasher
Скачиваете нужную вам версию (Win32 или Win64) и устанавливаете на компьютер.



Вот как это выглядит. Тут даже чайнику становиться понятно, что и как. Ставим галочки около тех функций которые нам нужны на модуле и создаем прошивку, которую можно сохранить , изменить и скачать. Около каждого элемента есть подсказка, желательно, ооочень желательно, их читать, чтобы потом "не было мучительно больно за бесславно прожитые часы" в поисках ошибок и непоняток.

Теперь я остановлюсь на сложных моментах :

Главное - не пожалейте 100 рублей и купите прошивку официально, упростите себе жизнь на порядок. Даже если вас устраивают все бесплатные опции, через неделю захочется что то добавить и будут танцы с бубнами .

1. Профилей прошивок можно создать много и каждому присвоить собственное имя. Следует понимать, что одну прошивку можно привязать к любому числу модулей ESP8266. но каждому конкретному модулю соответствует только одна конкретная прошивка. Если изменить прошивку в конструкторе и не обновить ее в модуле, то в дальнейшем это будут разные вещи. В самом модуле всегда можно посмотреть имя и номер загруженной прошивки (ip_adr/debug - > OTA Profile name: Бутерброд).
2. Не надо выбирать самое свежее SDK (Software Development Kit или набор программ разработчика самого модуля ESP8266), пользуйтесь рекомендованным. Оно проверенное и надежное, другое можно использовать когда точно знаешь чего хочешь.
3. Ни в коем случае не стремитесь включить все функции - не пройдет. Проблема не в прошивке, а в модуле. У него просто не хватит памяти на всё. На модуле надо прошивать ТОЛЬКО то что будет использоваться.
4. Читайте WiKi ! Там практически все описано и показано, метод научного втыка тут врядли сработает.
5. При первоначальной сборке прошивки прошивайте опцию OTA , чтобы следующее обновление было возможно без использования проводов и подключения программатора.
6. Внимание! При обновлении по воздуху методом ОТА закачивается последняя скомпилированнная в вашем конструкторе прошивка, она может быть и от другого модуля, будьте внимательны. При обновлении по воздуху методом Auto ОТА закачивается обновленная прошивка для данного конкретного модуля.



Вот теперь настало время прочитать основную инструкцию и прошить свой модуль.


"Ё мое, что же я наделал . "















Да вот, как то так, приблизительно.

Про основные настройки в самом модуле можно посмотреть тут.

Практически все данные которые есть в модуле можно передавать в свою базу данных организованную на сервере на Raspberry Pi или другом аналогичном компьютере и смотреть все это в виде красивых картинок.
Подробнее о настройке Raspberry смотрите в тут и тут.
В настройки ESP необходимо добавить опцию TCP/UDP Клиент


ESP8266+mqtt mosquitto, instapush, twitter, SMTP, ThingSpeak

Содержание

Делаем отдельную WiFi сеть для IoT

Настраиваем OpenWRT

Настраиваем MQTT брокер mosquitto

Настройка MQTT-Spy

Пишем прошивку в Arduino IDE, подключаем ESP8266 к mosquitto

Устанавливаем и настраиваем mqttwarn

Передаем данные с ESP8266 на ThingSpeak

Передаем данные c ESP8266 по EMAIL

Передаем с ESP8266 на смартфон PUSH уведомления

Управляем ESP8266 GPIO со смартфона

ESP8266 публикует в Twitter состояние GPIO

Поднимаем Dynamic DNS и делаем bridge с CloudMQTT

Делаем отдельную WiFi сеть для IoT

Мы будем использовать не обычную WiFi точку доступа из ближайшего магазина и не народный MR3020, а для того, чтобы решение получилось максимально доступно для широкого круга умельцев, а не только для линуксоидов, которые не признают ничего, кроме командной строки в терминале, мы возьмем, практически за те же деньги, роутер от китайского стартапа Gl.iNET, созданный специально для DIY. Вот наша партнерская ссылка для покупки этого устройства на Aliexpress для тех, кто готов поддержать наш сайт одновременно экономя на покупках с нашим партнером Aliexpress.

Для тех, кто побаивается линуксов вообще и OpenWRT в частности, сообщаю, что мы будем работать c OpenWRT в русифицированном WEB интерфейсе. Сам я не обладаю большим опытом работы в linux и фанатом командной строки не являюсь, поэтому и вам постараюсь показать простые приемы, которые, возможно, и не блещут изяществом.

Русифицированный интерфейс OpenWRT

Русифицированный интерфейс OpenWRT

В принципе, все что будет описано в данной статье будет работать и на китайских роутерах за десять баксов, однако малый размер их оперативки существенно сужает возможность применения их в задачах, которые мы будем им ставить. Даже подключив свап раздел на USB флешке мы получим монстра, который постоянно качает в свап и обратно страницы памяти и наши приложения будут летать просто как черепахи. Вот скриншот по свободной памяти на моем роутере в обычном режиме работы:

Свободная и занятая память при работе всех нужных нам приложений

Свободная и занятая память при работе всех нужных нам приложений

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

Обратите внимание, что у Gl.iNET есть две модели роутеров: 6408A и 6416A, которые имеют на борту 8 и 16 Мб флеш памяти соответственно. Сейчас разницы в цене у них практически нет, так что постарайтесь взять 16-ти мегабайтную модель. Если вы будете повторять все, что будет описано в данной статье, то все равно придется подключать USB флешку для раcширения overlay раздела, потому что размер всех установленных пакетов у меня уже перевалил за 50 Мбайт.

Для владельцев больших домов или квартир с железобетонными перегородками будет интересен вариант с внешней антенной. Хотя, имея достаточный скилл пайки, внешнюю антенну можно примастрячить самому.

Далее мы будем строить такую сеть:

IoT Home Network

ESP8266 IoT Home Network

Как видите, мы не будем вообще использовать функции маршрутизации IP пакетов, наш роутер будет работать в качестве Ethernet моста в той же подсети, что и остальные устройства. Это позволит нормально функционировать протоколу mDNS без пробрасывания UDP портов, отменит необходимость прописывать маршруты из локальной сети в сеть IoT, и при этом мы будем использовать DHCP сервер вашего основного маршрутизатора. Однако, самое главное, что мы получим в результате: две независимые WiFi сети. Это позволит нам переводить ESP8266 в режим 802.11b или 802.11g для снижения энергопотребления в случаях, когда не требуется высокая скорость подключения без ущерба в скорости для остальных WiFi устройств, требовательных к скорости подключения к интернет.

В итоге должно получиться что-то вроде этого (кстати, приколитесь в каком радиовакууме я живу)

Настраиваем OpenWRT

Этот раздел я писал по памяти, за точность и правильную последовательность действий не ручаюсь. В ваших интернетах полно статей как это сделать. Если вы обнаружили неточность или ошибку то, пожалуйста, сообщите мне об этом, я поправлю статью.

Перед отключением от локальной сети и интернета (напоминаю, что наш OpenWRT роутер будет иметь адрес 192.168.1.1), я рекомендую приготовить следующие программы:

Мне было проще подключиться к роутеру через USB-TTL и все настроить в терминале


Модуль ESP-01 с чипом ESP8266 предназначен для связи устройства с беспроводными сетями по WiFi.

Видеообзор

Общие сведения

ESP-01 — плата-модуль WiFi на базе популярного чипсета ESP8266EX . На борту платы находится микросхема Flash-памяти объёмом 2 МБ, чип ESP8266EX, кварцевый резонатор, два индикаторных светодиода и миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Flash-память необходима для хранения программного обеспечения. При каждом включении питания, ПО автоматически загружается в чип ESP8266EX.

По умолчанию модуль настроен на работу через «AT-команды». Управляющая плата посылает команды — Wi-Fi модуль выполняет соответствующую операцию.

Но внутри чипа ESP8266 прячется целый микроконтроллер, который является самодостаточным устройством. Прошивать модуль можно на разных языках программирования. Но обо всё по порядку.

Работа с AT командами

Подключение и настройка

В стандартной прошивке Wi-Fi модуль общается с управляющей платой через «AT-команды» по протоколу UART.

На всех платах Iskra и Arduino присутствует хотя бы один аппаратный UART — HardwareSerial. Если же по каким то причинам он занят другим устройством, можно воспользоваться программным UART — SoftwareSerial.

HardwareSerial

На управляющей плате Iskra JS и платах Arduino с микроконтроллером ATmega32U4 / ATSAMD21G18 данные по USB и общение через пины 0 и 1 осуществляется через два раздельных UART . Это даёт возможность подключить Wi-Fi модуль к аппаратному UART на пинах 0 и 1 .

Список поддерживаемых плат:


Для примера подключим модуль Wi-Fi к платформе Iskra Neo.

Прошейте управляющую платформу кодом ниже.

Код прошивки

SoftwareSerial

Некоторые платы Arduino, например Uno, прошиваются через пины 0 и 1 . Это означает невозможность использовать одновременно прошивку/отладку по USB и общение с Wi-Fi модулем. Решение проблемы — программный UART . Подключите пины TX и RX ESP-модуля к другим контактам управляющей платы и используйте библиотеку SoftwareSerial.


Для примера подключим управляющие пины Wi-Fi модуля TX и RX — на 8 и 9 контакты управляющей платы. Прошейте управляющую платформу кодом ниже.

Код прошивки

HardwareSerial Mega

На платах форм-фактора Arduino Mega 2560 аппаратный UART, который отвечает за передачу данных через пины 1 и 0 , отвечает также за передачу по USB. Это означает невозможность использовать одновременно UART для коммуникации с Wi-Fi модулем и отладки по USB.

Но на платах такого форм-фактора есть ещё дополнительно три аппаратных UART:

Список поддерживаемых плат:


Подключите Wi-Fi модуль к объекту Serial1 на пины 18 и 19 на примере платы Mega 2560 Прошейте управляющую платформу кодом ниже.

Код прошивки

Примеры работы

Рассмотрим несколько примеров по работе с «AT-командами»

Тестовая команда «AT»

Настройка режима работы

Wi-Fi модуль умеет работать в трёх режимах:

Переведём чип в смешанный режим командой:

После установки модуль должен ответить «OK»:


В отличии от аппаратного UART (HardwareSerial), за работу программного UART (SoftwareSerial) отвечает микроконтроллер, который назначает другие пины в режим работы RX и TX , соответственно и данные которые приходят от Wi-Fi модуля обрабатывает сам микроконтроллер во время программы. По умолчанию скорость общения Troyka Wi-Fi равна 115200 , что значительно выше чем позволяет библиотека SoftwareSerial. В итоге часть информации которая приходит с Wi-Fi модуля будет утеряна. Если вы используете плату с HardwareSerial подключением модуля можете пропустить пункт настройки скорости и сразу перейти к дальнейшей работе с модулем.

AT установка скорости общения

Для корректной работы с большими объемами необходимо понизить скорость соединения модуля и микроконтроллера. Для этого используйте «AT-команду»:

После проделанной операции, измените скорость программного UART в скетче программы и прошейте плату.

По итогу программный UART успеет обработать каждый пришедший байт с Wi-Fi модуля.

AT сканирование WI-FI сетей

Откройте Serial-порт и отправьте на модуль «AT-команду» для сканирования всех доступных Wi-Fi сетей:


Для продолжение работы используйте перечень «AT-команд»

Wi-Fi модуль как самостоятельный контроллер

ESP-01 (ESP8266) — очень умный модуль. Внутри чипа прячется целый микроконтроллер, который можно программировать на языке C++ через Arduino IDE и JavaScript через Espruino Web IDE .

Настройка железа

Ввиду отсутствия у платформы ESP-01 собственного USB-порта, понижающего преобразователя и отсутствия толерантности к 5 вольтам, подключите её к компьютеру, используя один из перечисленных способов:

Схема через Arduino Uno

Для сборки программатора понадобится:


Соберите схему, представленную ниже.

Необходимо каждый раз выполнять перед прошивкой модуля.

Притяните пин 0 к 3.3V — фиолетовый провод через резистор к питанию.

Схема через USB-Serial адаптер

Для сборки программатора понадобится:


Соберите схему, представленную ниже.

Необходимо каждый раз выполнять перед прошивкой модуля.

Притяните пин 0 к 3.3V — фиолетовый провод через резистор к питанию.

Программирование на C++


Для начала работы с платформой ESP на языке C++ скачайте и установите на компьютер интегрированную среду разработки Arduino IDE. По умолчанию среда программирования настроена только на AVR-платы. Для платформы ESP-01 добавьте в менеджере плат поддержку платформ на модуле ESP8266.


В пункте меню Инструменты Плата выбирайте Generic ESP8266 Module .

После выполненных действий модуль ESP-01 готов к программированию через Arduino IDE.

Подробности о функциях и методах работы ESP-01 (ESP8266) на языке C++ читайте на ESP8266 Arduino Cores.

Программирование на JavaScript


Для старта с платформой ESP-01 на языке JavaScript скачайте и установите интегрированную среду разработки Espruino Web IDE.

После выполненных действий модуль ESP-01 готов к программированию через Espruino Web IDE.

Подробнее о функциях и методах работы ESP8266 на языке JavaScript читайте на Espruino.

Восстановление стандартной АТ-прошивки

После программирования платформы в режиме самостоятельного контроллера может понадобиться восстановить на модуле стандартную AT-прошивку. Для этого необходимо воспользоваться утилитой Flash Download Tool.

Элементы платы


Чип ESP8266EX

Чип ESP8266 — выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле). В основе кристалла входит процессор семейства Xtensa — 32-х битный Tensilica L106 с частой 80 МГц с ультранизким энергопотреблением, радиочастотный трансивер с физическим уровнем WiFi IEEE 802.11 b/g/ и блоки памяти SRAM. Мощности процессорного ядра хватает для работы сложных пользовательских приложений и цифровой сигнальной обработки.

Программное приложение пользователя должно храниться на внешней микросхеме Flash-памяти и загружаться в ESP8266EX через один из доступных интерфейсов (SPI, UART, SDIO и др.) каждый раз в момент включения питания системы.

Чип ESP8266 не содержит в себе Flash-память и многих других компонентов для пользовательского старта. Микросхема является основой на базе которой выпускаются модули с необходимой периферией, например ESP-01.

Светодиодная индикация

Имя светодиода Назначение
LED Индикаторный светодиод подключённый к цифровому пину 1
POWER Индикатор питание на модуле

Распиновка


Пины питания

3.3V: Вывод питания модуля. Потребляемый ток не менее 250 мА.

Пины ввода/вывода

В отличии от большинства плат Arduino, родным напряжением платформы ESP-01 является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Большее напряжение может повредить модуль!

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

Читайте также: