Программирование NodeMCU ESP8266 "по воздуху" (Over-the-Air, OTA)


Беспроводное программирование по технологии OTA (Over the Air – "по воздуху") – это процесс, позволяющий устройствам обновить свою прошивку или программное обеспечение беспроводным способом, без физического подключения к чему-либо. Для этого можно использовать такие технологии как Wi-Fi, Bluetooth, GPRS или 4G/3G вместо использования последовательной связи по проводам. Технология OTA используется для перепрограммирования различных устройств – микроконтроллеров, сотовых телефонов, компьютеров и т.п. В связи с широким распространением технологий интернета вещей технология OTA в настоящее время использует преимущественно частотные диапазоны с низкими скоростями передачи данных (868 MHz, 900 MHz, 2400 MHz).

Внешний вид проекта беспроводного программирования NodeMCU ESP8266 с помощью Arduino IDE

В данной статье мы рассмотрим беспроводное ("по воздуху") программирование платы ESP8266 NodeMCU с помощью Arduino IDE.

ESP8266 NodeMCU

Внешний вид платы NodeMCU ESP8266

NodeMCU – это платформа IoT (интернета вещей) с открытым исходным кодом. Она включает в себя прошивку (firmware), которая работает на дешевом Wi-Fi чипе (SoC) ESP8266 от компании Espressif Systems, и аппаратном обеспечении (hardware), основанном на модуле ESP-12. Она содержит контакты GPIO, SPI, I2C, ADC, PWM, UART и может программироваться с помощью среды Arduino IDE. Плата NodeMCU содержит в своем составе микросхему CP2102, которая обеспечивает преобразование интерфейса USB в логику TTL. Благодаря этому NodeMCU можно подключать напрямую к USB порту компьютера, в то время как обычный модуль ESP8266 можно подключать к USB порту компьютера только при помощи платы (модуля) FTDI.

Необходимые компоненты

  1. NodeMCU ESP8266 (купить на AliExpress).
  2. Кабель micro USB.
  3. Arduino IDE.

Подготовка NodeMCU для беспроводного программирования (OTA)

Подключите NodeMCU ESP8266 к компьютеру с помощью кабеля USB cable. Далее, чтобы нам загрузить прошивку в плату с помощью технологии OTA, нам сначала необходимо по кабелю загрузить скетч в NodeMCU ESP8266, который будет генерировать IP адрес – этот скетч в дальнейшем поможет нам осуществить беспроводное программирование платы. Для этого выберите последовательный порт, по которому плата подключена к компьютеру, в пункте меню Tools -> Port.

В среде Arduino IDE есть библиотеки и примеры для работы с модулями ESP8266. В Arduino IDE откройте пример BasicOTA как показано на следующем рисунке.

Открытие примера BasicOTA в Arduino IDE

Внесите изменения в код этого примера, заменив в нем значения параметров “your-ssid” и “your-password” на идентификатор сети и пароль для своей сети Wi-Fi. После этого можете загружать скетч в модуль.

Загрузка примера BasicOTA в плату NodeMCU ESP8266 с помощью Arduino IDE

После успешной загрузки скетча в модуль откройте окно монитора последовательной связи (serial monitor). В окне монитора последовательной связи установите скорость передачи (Baud Rate) равную 115200 и нажмите кнопку сброса (Reset button) на NodeMCU ESP8266. Подключение NodeMCU ESP8266 к сети Wi-Fi займет некоторое время поскольку при этом проверяются идентификатор сети и пароль на вход в нее. После успешного подключения модуля к сети Wi-Fi его IP адрес отобразится в окне монитора последовательной связи.

Отображение IP адреса платы NodeMCU ESP8266 в окне монитора последовательной связи

Объяснение программы для модуля ESP8266

Полный код программы для мигания светодиодом при помощи технологии OTA приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе подключим используемые библиотеки. Библиотека ESP8266WiFi.h содержит функции (операции) для работы с Wi-Fi, которые потребуются ему для соединения с сетью. Также она содержит методы и свойства для работы модуля ESP8266 в режиме станции или в режиме точки доступа. Библиотека ESP8266mDNS.h позволяет скетчу отвечать на широковещательные DNS запросы.

Инициализируем переменные для хранения идентификатора сети (SSID) и пароля (password) Wi-Fi сети, к которой будет подключаться наш модуль ESP. Для работы нашего проекта необходимо чтобы компьютер и модуль ESP были подключены к одной и той же сети.

Для модуля ESP8266 установим режим работы в качестве станции сети Wi-Fi. При подключении к сети Wi-Fi будут проверяться идентификатор сети и пароль. Если они корректны, то произойдет подключение к сети Wi-Fi, если они не корректны, то модуль ESP8266 будет перезагружаться каждую секунду.

IP адрес модуля ESP8266 будет выводиться в окно монитора последовательной связи когда модуль подключится к сети Wi-Fi. Для определения IP адреса модуля ESP8266 будет использоваться функция WiFi.localIP().

После успешной загрузки кода программы в модуль откройте монитор последовательной связи на скорости 115200 бод. Нажмите кнопку сброса на модуле и спустя несколько секунд вы увидите IP адрес модуля ESP8266 в окне монитора последовательной связи. После этого вы получите возможность беспроводной загрузки прошивки (программного обеспечения) в модуль ESP8266.

Беспроводная загрузка скетча мигания светодиодом в NodeMCU ESP8266

Перед загрузкой следующего скетча в модуль зайдите в пункт меню Tools в Arduino IDE и в нем измените PORT на IP адрес модуля ESP8266 – это нам понадобится для беспроводной загрузки прошивки (программного обеспечения) в NodeMCU.

Переключение на IP адрес модуля ESP8266 в Arduino IDE

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

После успешной загрузки скетча светодиод на плате NodeMCU ESP8266 начнет мигать каждую секунду. Вы также можете установить имя хоста (host name) и пароль в скетче в целях безопасности, пока загружаете прошивку в ESP8266.

Тестирование работы загруженного скетча мигания светодиодом

Исходный код программы (скетча)

Источник статьи

(Проголосуй первым!)
Загрузка...
1 416 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован.