Программирование модуля ESP8266 с помощью Arduino IDE
В двух предыдущих статьях на нашем сайте мы рассмотрели начало работы с модулем ESP8266 и его программирование с помощью AT команд. Также мы спроектировали плату для программирования модуля на основе адаптера FTDI, в которой можно легко переключаться между режимами использования AT команд и использования Arduino IDE.
В этой же статье мы рассмотрим программирование модуля ESP8266 с помощью среды Arduino IDE. Но перед этим необходимо рассмотреть ряд важных моментов. Модули ESP8266 поставляются с заранее загруженным в них программным обеспечением (прошивкой, firmware). Эта прошивка может использоваться для взаимодействия с модулем в режиме AT команд. Но если мы будем использовать Arduino IDE для взаимодействия с модулем, то эта прошивка будет перезаписана. После этого для взаимодействия с модулем нельзя будет использовать AT команды. Поэтому чтобы вернуть модулю ESP8266 эту способность мы должны в него снова загрузить его оригинальную прошивку (по умолчанию).
Необходимые компоненты
- Модуль ESP8266 (купить на AliExpress).
- Плата FTDI (3.3V) (купить на AliExpress).
- Arduino IDE.
Схема проекта
Схема для программирования модуля ESP8266 с помощью Arduino IDE представлена на следующем рисунке.
Более подробно назначение ее элементов и правила работы с нею рассмотрены в нашей предыдущей статье про основы работы с модулем ESP8266.
Программирование ESP8266 с помощью Arduino IDE
Работа с модулями ESP стала значительно проще после того как сообщество Arduino ввело их поддержку в своих продуктах (в частности, в Arduino IDE) и разработало специальную библиотеку для работы с ними. В результате этого появились легкие и интуитивно понятные механизмы программирования и работы с модулями ESP, что позволило не вдаваться в подробности изучения достаточно сложных для освоения AT команд.
В этой статье мы рассмотрим настройку Arduino IDE для работы с модулями ESP и загрузим в модуль простую программу для мигания светодиодом.
Шаг 1. Если у вас нет Arduino IDE, то вы можете скачать и установить ее по следующей ссылке.
Шаг 2. В Arduino IDE откройте пункт меню File -> Preferences чтобы открыть показанное на рисунке ниже диалоговое окно. В поле “Additional Board managers URL” вставьте ссылку http://arduino.esp8266.com/stable/package_esp8266com_index.json как показано на следующем рисунке. После этого нажмите OK.
Шаг 3. Откройте пункт меню Tool -> Boards -> Board Managers. В открывшемся менеджере библиотек выполните поиск библиотеки ESP8266 от сообщества esp8266, после чего установите ее.
Установка займет некоторое время.
Шаг 4. Откройте пункт меню Tools -> Boards -> Generic ESP8266 modules. Вы увидите окно, показанное на следующем рисунке.
Шаг 5. Попробуем загрузить тестовую программу мигания светодиодом в модуль. Эту программу можно найти по адресу: File -> Examples -> ESP8266 -> Blink.
Шаг 6. Подключите модуль ESP8266 и плату FTDI к схеме нашего проекта и убедитесь в том, что контакт GPIO0 замкнут на землю – для этого в нашей схеме достаточно просто переключить джампер, который используется для переключения между режимами AT команд и использования Arduino IDE. Затем подайте питание на модуль и нажмите кнопку сброса (reset) в нашей схеме. В этом случае конструкция нашего проекта должна выглядеть следующим образом:
Шаг 7. Теперь нажмите кнопку загрузки программы (upload) в модуль. Загрузка программы в модуль займет немного больше времени чем загрузка аналогичной программы в плату Arduino. Дождитесь завершения загрузки программы. После этого вы должны увидеть следующий экран:
Вы должны увидеть как на вашем модуле начнет мигать светодиод синего цвета – это будет означать что программа успешно загрузилась в модуль. Более подробно все эти процессы вы можете посмотреть на видео, приведенном в конце статьи.
После этого, если вы снова захотите управлять модулем с помощью AT команд, то они не будут работать. Чтобы они снова заработали, в модуль необходимо загрузить его первоначальную прошивку.
Загрузка прошивки в модуль ESP8266
После того как мы программировали модуль ESP8266 из Arduino IDE или по каким то другим причинам оригинальная прошивка модуля может повреждаться и тогда он уже не сможет работать с AT командами. В данном разделе мы рассмотрим каким образом можно восстановить оригинальную прошивку модуля
Схему проекта мы будем использовать ту же самую, приведенную выше в статье. Для загрузки оригинальной прошивки в модуль ESP8266 выполните следующую последовательность шагов.
Шаг 1. Скачайте инструменты для загрузки прошивки (Flash Download Tools) по этой ссылке. Саму прошивку можно скачать отсюда.
Шаг 2. Откройте программу для загрузки прошивки (Flash Download Tools), которую мы скачали в предыдущем шаге. Внешний вид главного окна этой программы показан на рисунке ниже. В нем нажмите на кнопку ESP8266 Download Tool.
Шаг 3. Откроется диалоговое окно, показанное на следующем рисунке. В нем необходимо установить частоту кристалла (Crystal Freq). Также установите в этом окне параметры Crystal Freq 26M, SPI Speed 40MHz, SPI mode QIO, Flash Size 8-bit, COM порт 20 (в вашем случае номер COM порта может отличаться) и скорость 115200 бод как показано на рисунке.
Шаг 4. Теперь нам необходимо сконфигурировать пути загрузки. В скачанном каталоге прошивки (на шаге 1) находится 5 bin (двоичных) файлов. Имена этих файлов, их расположение и адреса представлены в следующей таблице.
Имя файла | Местоположение | Адрес |
esp_init_data_default.bin | ESP8266_NONOS_SDK_V1.4.0_15_09_18\esp_iot_sdk_v1.4.0\bin | 0xFC000 |
blank.bin | ESP8266_NONOS_SDK_V1.4.0_15_09_18\esp_iot_sdk_v1.4.0\bin | 0xFE000 |
boot_v1.4(b1).bin or later | ESP8266_NONOS_SDK_V1.4.0_15_09_18\esp_iot_sdk_v1.4.0\bin | 0x00000 |
user1.1024.new.2.bin | ESP8266_NONOS_SDK_V1.4.0_15_09_18\esp_iot_sdk_v1.4.0\bin\at\512+512 | 0x01000 |
user2.1024.new.2.bin | ESP8266_NONOS_SDK_V1.4.0_15_09_18\esp_iot_sdk_v1.4.0\bin\at\512+512 | 0x81000 |
После конфигурации этих файлов они в программе должны выглядеть следующим образом:
Шаг 5. После этого подайте питание на схему, подключите контакт GPIO0 модуля на землю (ground) и на короткое время замкните контакт RST (сброса) на землю и затем отключите его от земли. В нашей схеме для замыкания GPIO0 на землю достаточно установить переключатель (джампер) в соответствующее положение, а сброс модуля осуществляется нажатием кнопки. Конструкция проекта в данном случае у вас будет выглядеть примерно следующим образом:
Шаг 6. В программе Flash Download Tools нажмите на кнопку START и прошивка начнет загружаться в ваш модуль ESP8266. Экран программы в это время будет выглядеть следующим образом:
После окончания загрузки прошивки вы должны увидеть экран с результатами загрузки, показанный на следующем рисунке. Если вы видите этот экран, это значит, что загрузка прошивки в ваш модуль осуществлена успешно.
После этого вы можете закрыть все окна и отключить подачу питания на модуль. Теперь состояние вашего модуля ESP8266 возвращено в исходное состояние и вы снова можете программировать его с использованием AT команд.
Более подробно все эти процессы вы можете посмотреть в представленном видео.
Видео, демонстрирующее работу проекта
Программирование ESP8266 в Arduino IDE «по воздуху» (OTA, Over The Air)
Фантастической особенностью любого микроконтроллера с поддержкой Wi-Fi, такого как ESP8266 NodeMCU, является возможность обновления его прошивки по беспроводной сети. Это называется программированием «по воздуху» (OTA, Over-The-Air).
Программирование ESP8266 в Arduino IDE «по воздуху» (OTA, Over The Air)
Что такое OTA программирование ESP8266?
OTA программирование позволяет обновлять/загружать новую программу в ESP8266 с помощью Wi-Fi вместо того, чтобы требовать от пользователя подключить ESP8266 к компьютеру через USB.
Функциональность OTA чрезвычайно полезна в случае отсутствия физического доступа к модулю ESP. Это помогает сократить время, затрачиваемое на обновление каждого модуля ESP при технической поддержке.
Одной из важных особенностей OTA является то, что один центральный объект может отправлять обновления нескольким модулям ESP, использующим одну и ту же сеть.
Единственным недостатком является то, что вам нужно для OTA добавлять дополнительный код в каждый загружаемый скетч, чтобы в следующем обновлении вы смогли снова использовать OTA.
3 простых шага по использованию OTA с ESP8266
- Установка Python версии 2.7.x. Первый шаг – установите на компьютер Python версии 2.7.x.
- Загрузка базовой OTA прошивки через последовательный интерфейс. Загрузите скетч, содержащий прошивку OTA. Этот шаг обязателен шаг, чтобы вы могли выполнять следующие обновления/загрузки через беспроводную сеть.
- Загрузка нового скетча по воздуху. Теперь вы можете загружать новые скетчи в ESP8266 из Arduino IDE по воздуху.
Шаг 1. Установка Python версии 2.7.x
Чтобы использовать функциональность OTA, вам необходимо установить Python версии 2.7.x, если он еще не установлен на вашем компьютере.
Перейдите на официальный сайт Python и загрузите 2.7.x (конкретный релиз) для Windows (установщик MSI).
Рисунок 1 – Скачать Python 2.7.x
Откройте установщик и следуйте указаниям мастера установки.
Рисунок 2 – Установка Python 2.7.x на ПК
В разделе настройки Python 2.7.x убедитесь, что включен последний параметр «Add python.exe to Path» (добавить python.exe в путь).
Рисунок 3 – Включите добавление python.exe в путь при установке Python
Шаг 2. Процедура загрузки скетча OTA через последовательный интерфейс
Заводской образ в ESP8266 не поддерживает возможность обновления через OTA. Поэтому вам нужно сначала загрузить на ESP8266 прошивку OTA через последовательный интерфейс.
Этот шаг обязателен для первой прошивки, чтобы вы могли выполнять следующие обновления/загрузки по беспроводной сети.
Дополнение ESP8266 для Arduino IDE поставляется с библиотекой OTA и примером BasicOTA. Вы можете получить к нему доступ через Файл → Примеры → ArduinoOTA → BasicOTA.
Рисунок 4 – Откройте скетч BasicOTA в Arduino IDE
Должен загрузиться следующий код. Но, прежде чем начать загружать скетч в модуль, вам нужно внести несколько изменений, чтобы он у вас заработал. Вам необходимо изменить следующие две переменные в соответствии с учетными данными вашей сети, чтобы ESP8266 мог подключиться к существующей сети.
После этих изменений загрузите скетч.
Теперь откройте монитор последовательного порта со скоростью 115200 бит/с. И нажмите кнопку RST на ESP8266. Если все в порядке, он выведет динамический IP адрес, полученный от вашего маршрутизатора. Запишите его.
Рисунок 5 – Запишите IP адрес, выделенный для ESP8266 NodeMCU
Шаг 3. Загрузите новый скетч «по воздуху»
А теперь давайте загрузим новый скетч по воздуху, т.е. через Wi-Fi.
Помните! Вам нужно добавлять код для OTA в каждый загружаемый вами скетч. В противном случае вы потеряете возможность прошивки через OTA и не сможете выполнять следующие загрузки через беспроводную сеть. Поэтому рекомендуется изменять приведенный выше код, включая в него ваш новый код.
В качестве примера мы включим простой скетч Blink в код BasicOTA. Не забудьте изменить переменные SSID и пароля на учетные данные вашей сети.
Изменения в программе BasicOTA выделены номерами строк.
В приведенной выше программе мы не использовали delay() для мигания светодиода, потому что ESP8266 во время delay() приостанавливает программу. Если следующий запрос OTA будет сгенерирован, когда ESP8266 приостановлен в ожидании прохождения задержки delay() , ваша программа пропустит этот запрос.
Как только вы скопируете приведенный выше скетч в Arduino IDE, выберите Инструменты → Порт, и вы должны увидеть что-то вроде этого: esp8266-xxxxxx at ip_адрес_вашего_esp. Если подобного не будет, возможно, вам придется перезапустить IDE.
Рисунок 6 – Выберите порт OTA в Arduino IDE
Выберите порт и нажмите кнопку «Загрузить». Через несколько секунд новый скетч будет загружен. И вы должны увидеть на плате мигающий светодиод.
Рисунок 7 – Рабта тестового скетча Blink на ESP8266 NodeMCU