Как прошить esp8266 через arduino ide

Media UniX

freebsd команды, настройка, установка сервера и не только

Прошивка esp8266 в Arduino IDE

В статье будет идти речь о прошивке esp8266 (ESP-12-F). Заметка довльно короткая, но, возможно, пригодится. Нам понадобится:
1) Плата ESP8266. У меня версия ESP-12-F.
2) USB-UART адаптер
3) провода

Итак, сначала разберёмся с подключением ESP к компьютеру.
1) Надо соединить пин GND и GPIO15 (если таковой имеется) на esp8266.
2) Надо соединить пин GND и GPIO0 на esp8266. Это необходимо сделать только для прошивки и перед подключением к ПК, после прошивки, GND и GPIO0 нужно разомкнуть.
3) Надо соединить пин VCC и EN на esp8266
3) Прошивать я буду с помощью USB-UART. Поэтому соединить его с esp8266 надо следующим образом:
USB-UART — esp8266
RXD — TXD0
TXD — RXD0
GND — GND
3V3 — VCC

4) Теперь подключаем USB-UART к компьютеру.
У меня определилось новое устройство:

команды, esp8266, настройка, установка

5) Прошивку будем осуществлять с помощью Arduino IDE. Объяснять, как она устанавливается я не буду, потому что установка Arduino IDE не отличается от установки любого другого ПО. Когда Arduino IDE уже будет установлена и запущена, переходим в Файл -> Настройки и в строке «Дополнительные ссылки для Менеджера плат» указываем следующую ссылку:
http://arduino.esp8266.com/stable/package_esp8266com_index.json

команды, esp8266, настройка, установка

Настройки Arduino IDE

Нажимаем «ОК» и переходим в раздел Инструменты — > Плата -> Менеджер плат.
В открывшемся окне находим строку с «esp8266 by ESP8266 Community», выделяем её и нажимаем «Установка».

команды, esp8266, настройка, установка

Менеджер плат Arduino IDE

Произойдёт загрузка характеристик плат, инструментов. Надо немного подождать окончания установки, после чего закрыть окно менеджера плат.
Далее переходим в «Инструменты» — «Плата» — «Generic ESP8266 Module»
После этого идём в «Инструменты» — «Порт» — указываем номер порта (у меня COM7)
И ещё раз в «Инструменты» — «Upload Speed» — Проверяем, что стоит скорость 115200

Теперь в Arduino IDE можно написать простейший скетч, который будет моргать нам светодиодом, расположенным на борту ESP8266.
Скетр такой:
#define LED 2

void setup() <
pinMode(LED, OUTPUT);
>
void loop() <
digitalWrite(LED, HIGH);
delay(2000);
digitalWrite(LED, LOW);
delay(2000);
>

Нажимаем кнопку &#171;Загрузка&#187; в Arduino IDE и наблюдаем моргание светодиодом.
Примечание. в ESP-12F светодиод прикреплен к GPIO2 (&#171;#define LED 2&#187; в скетче выше), в других ESP8266 он может висеть на другом GPIO, поэтому отталкивайтесь от своей версии ESP.
На этом, думаю, можно закончить эту небольшую заметку по прошивке ESP8266 в Arduino IDE.

ESP8266 «Обновление по воздуху» OTA (Over the Air)

«Обновление по воздуху» OTA (Over the Air) представляет собой процесс загрузки нового встроенного программного обеспечения в модуль с микроконтроллером ESP8266 посредством интерфейса Wi-Fi, вместо последовательного проводного соединения.

Эта функция чрезвычайно полезна когда нет физического доступа к модулю ESP.

Загрузка новых примеров по беспроводной связи из среды разработки Arduino IDE необходима для следующих случаев:

  • в ходе разработки встроенного ПО — как более быстрая альтернатива загрузке нового кода по проводному последовательному интерфейсу;
  • для обновления встроенного ПО для нескольких модулей ESP, находящихся в вашей сети.

Шаг 1. Загрузка кода BasicOTA.ino через последовательное проводное соединение

Чтобы загрузить ПО в микроконтроллер ESP8266 через беспроводное соединение, необходимо сначала загрузить готовый пример из файла BasicOTA.ino.

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

1) Подключите модуль с микроконтроллером ESP8266 к компьютеру с помощью кабеля USB.

2) В меню «Инструменты» («Tools») выберите свою плату на микроконтроллере ESP. Также необходимо выбрать последовательный порт к которому подключена плата.

3) Откройте файл с примером BasicOTA.ino: «File > Examples > Arduino OTA > BasicOTA.ino» («Файл > Примеры > Arduino OTA > BasicOTA.ino»). Или скопируйте следующий код примера в среду Arduino IDE.

Примечание: в коде необходимо изменить идентификатор SSID и пароль (переменная password) на данные, соответствующие вашей сети.

4) Нажмите кнопку «Загрузка» («Upload») в среде Arduino IDE и дождитесь сообщения «Done uploading» (Загрузка завершена).

5) Откройте окно последовательного COM-порта (Serial Monitor) среды Arduino IDE и настройте скорость передачи на 115 200 бод.

Если вы ввели верные учётные данные вашей сети, то через несколько секунд должны увидеть IP-адрес микроконтроллера ESP.

Шаг 2. Загрузка нового скетча «по воздуху»

Теперь микроконтроллер ESP8266 готов принять обновление ПО «по воздуху». Можно отключить ESP8266 от компьютера и подать питание на него от любого источника (например, от мобильного аккумулятора).

Если ESP8266 подключён через беспроводной интерфейс к маршрутизатору, то у вас должно получиться обновить встроенное ПО.

1) Запустите среду Arduino IDE. В меню «Инструменты» («Tools») выберите пункт «Port» (Порт).

Вы должны увидеть что-то похожее на «esp8266-xxxxxx at your_esp_ip_address» (esp8266-xxxxxx по вашему_ip-адресу_esp).

2) Скопируйте следующий скетч в среду Arduino IDE и загрузите его в микроконтроллер ESP8266. В этом примере раз в секунду мигает встроенный светодиод платы ESP12-E NodeMCU.

Примечание: в коде необходимо изменить идентификатор SSID и пароль (переменная password) на данные, соответствующие вашей сети.

3) Нажмите кнопку «Загрузка» («Upload») в среде Arduino IDE и подождите сообщение «Done uploading» (Загрузка завершена).

4) Вы должны увидеть как раз в секунду мигает встроенный светодиод на плате.

Заключение

Теперь вы можете обновлять ПО устройства на микроконтроллере ESP8266 без физического доступа к нему.

Самые популярные материалы в блоге

За все время
За сегодня

Запись значений температуры на карту microSD с помощью ESP32

10 комментариев . Оставить новый

Обязательно наличие интернета для прошивки ?

Не нужен интернет. Локальная сеть

esp8266 v2.0 немного отличается компоновка (фото https://i.ibb.co/LgRv86y/ff.jpg), отказывается прошиваться по воздуху, ни через OTA Arduino IDE ни через web.

В терминале:
Update: sketch.ino.nodemcu.bin
sleep disable
Update Success: 374944
Rebooting…

ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 3656, room 16
tail 8
chksum 0x0c
csum 0x0c
v9c56ed1f
@cp:0
ld
e:
ets Jan 8 2013,rst cause:3, boot mode:(3,6)

Может кто-то сталкивался?

Дело было в версии управляющей платформы в менеджере плат, переход на версию 2.5.1 решил проблему.

Ну и где же урок? В этой заметке рассказывается лишь о том, как прошить в микроконтроллер конкретный, специально адаптированный для OTA, скетч для мигания светодиода. Понимаю, что вместо него можно прошить и любой другой скетч, но после этого микроконтроллер перестанет воспринимать ОТА-обновления.
На самом деле нужно было рассказать о том, как адаптировать произвольный скетч для &#8220;восприятия&#8221; ОТА-обновлений &#8211; какие строчки добавлять в декларации, какие прописывать в &#8220;setup&#8221; и &#8220;loop&#8221;. Тогда бы от этой инструкции был толк.

Забавно, но всегда найдётся вонючка, которому все не так. Нахаляву написали инструкцию, а вы ещё не довольны, что не с перламутровыми пуговицами. Надо иногда подключать мозг и кодить, не все в этом мире дается бесплатно. А за материал спасибо, наконец разобрался, как шить esp8266 по OTA

Ну правильно написал. А то не урок а фигня получилась, которую не знаешь как применить.

Чтобы OTA заработало:
1) Подключаем библиотеку
#include
2) В setup прописываем
ArduinoOTA.begin();
2.5) Если хотим меняем параметры до вызова ArduinoOTA.begin();
ArduinoOTA.setHostname(&#8220;Имя&#8221;);
//ArduinoOTA.setPort(порт);
ArduinoOTA.setPassword((const char *)&#8221;пароль&#8221;);
ArduinoOTA.begin();
3) В loop прописываем
ArduinoOTA.handle();
4) Подключение к wifi организовываем как больше нравится, но до вызова. ArduinoOTA.begin().

СпасиБо !
Вы сильно помогли.
Уже переживал за гнздо телефона.
Это гениальное для меня открытие

Модуль Wi-Fi ESP8266 (ESP-01): подключение, распиновка, прошивка в IDE

Модуль 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»

Откройте монитор порта. Настройте скорость соединения — 9600 бод. Конец строки — NL & CR . Введите команду AT и нажмите «Отправить». Это — базовая команда для проверки работы Wi-Fi модуля. В ответ получим «OK»: Если ответа нет или появляются непонятные символы — проверьте правильность подключения и настройки скорости обмена данными.

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

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 сетей:

При наличии доступных WI-FI сетей в ответ получим сообщение:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

После выполненных действий модуль 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 Индикатор питание на модуле

Распиновка

Пины питания

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

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

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *