ESP8266 прошивка, программирование в Arduino IDE. Микроконтроллер ESP8266: подключение и настройка Установка ESP8266 в IDE Arduino

… Вообщем, этот материал не ограничивается только одной темой Ардуино.

Тема ESP8266 - довольно таки непростая. Но, если работать с этими Wi-Fi модулями в среде разработки Arduino IDE - порог вхождения опускается до приемлемого для обычного ардуинщика уровня. Да и не только ардуинщика, а любого человека, у которого есть желание сварганить что-то по теме IoT(интернет вещей) , причём не затрачивая много времени читая документацию для микросхемы и изучение API для этих модулей.

Данное видео, полностью дублирует материал, представленный в статье ниже.

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

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

Для начала, на офф.сайте качаем последнюю версию Arduino IDE , на данный момент это 1.6.7. Более старые версии типа 1.0.5. не подойдут, потому что банально не имеют нужного функционала, а танцы с бубном нас не интересуют, не так ли?

Запускаем среду разработки и тут же идём в Файл/Настройки:

Http://arduino.esp8266.com/stable/package_esp8266com_index.json

Потом идём Инструменты/Плата:/Менеджер плат...:

Перед нами появится окно менеджера плат, листаем его до самого низа, и если всё сделано правильно мы увидим что-то подобно этому:

Кликаем курсором по надписи "esp8266 by ESP8266 Community " после этого, у нас появилась кнопка «Установка», выбираете нужную версию, я беру последнюю, на сегодняшний день это 2.1.0. и устанавливаю её. Среда разработки закачает нужные ей файлы(около 150 мегабайт) и напротив надписи "esp8266 by ESP8266 Community " появится «INSTALLED» то есть установлено:

Листаем список плат вниз и видим, что в списке у нас появилось много разных ESP, берём «Generic ESP8266 Module»:

Идём в «Инструменты» и выбираем нужный COM порт(у меня это COM32) Arduino или USB UART конвертора , потом ставим Upload Speed:«115200»:

Выставляем скорость 74880 и «NL & CR» и опять же отключаем и подаём питание и он ответит кое какой отладочной информацией:

Заметьте, 74880 - не основная скорость ESP8266, просто он всего лишь на ней отправляет отладочную информацию. Если модуль ничего не отправляет в консоль, тогда возможно что-то подключили не так как надо.

По умолчанию скорость должна быть 115200, но в отдельных случаях может быть и 9600 и другие… Так что попробуйте подобрать.

После подбора нужной скорости отправляем модулю «AT» и он должен ответить что всё «ОК». Команда «AT+GMR» выводит информацию о прошивке.

Прежде чем начать прошивать ESP8266 в Arduino IDE я советую дочитать статью до конца.

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

Давайте зашьём мигалку штатным светодиодом:

// By MrПоделкинЦ youtube.com/RazniePodelki // special to geektimes.ru/post/271754/ #define TXD 1 // GPIO1/TXD01 void setup() { pinMode(TXD, OUTPUT); } void loop() { digitalWrite(TXD, HIGH); delay(1000); digitalWrite(TXD, LOW); delay(1000); }

Замигал? Значит всё сделано правильно. Откуда я взял что светодиод подключен на первый пин? В предыдущей статье есть картинка с распиновкой разных модулей , и там есть разметка портов, при использовании загрузчика Arduino(пины отмечены розовым цветом).

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

А теперь как прошить назад родную прошивку , да и как вообще прошивать модуль сторонними загрузчиками. Для ESP8266 есть такая программа как NodeMCU Flasher , которая изначально предназначена для прошивки загрузчика NodeMCU . Но как оказалось, она отлично прошивает и другие прошивки.

Я прикреплю к статье архив с данной программой и прошивкой для удобства, но всегда можно скачать новую версию NodeMCU Flasher.

В папке «nodemcu-flasher-master» есть 2 папки Win64 и Win32 и в зависимости от того какая разрядность у вашей ОС выбираем нужную. Дальше в папке Release запускаем «ESP8266Flasher.exe» и видим интерфейс программы:

Выбираем нужный COM порт и идём во вкладку «Config», убираем хрестик около «INTERNAL://NODEMCU» и ставим его на один пункт ниже, как на скрине:

(Если захотите прошить загрузчик NodeMCU - убираете хрестик там где его не было, и ставите - где он был, то есть около «INTERNAL://NODEMCU»).

Потом жмём по шестеренке и выбираем где лежит наша прошивка, прошивка как правило в формате *.bin(в прикреплённом архиве это «v0.9.5.2 AT Firmware.bin» которая лежит в основной папке), и так же выбираем «0x00000» как и выше.

Возвращаемся опять на вкладку «Operation» переводим модуль в режим программирования и жмём «Flash»:

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

Проверяем AT-командой «AT+GMR» сделали ли мы всё верно:

Как видите всё нормально прошилось.

Wi-Fi модуль ESP-01 – самый популярный модуль серии ESP8266. Общение с компьютером или микроконтроллером осуществляется с через UART с помощью набора AT-команд. Кроме того, модуль можно использовать как самостоятельное устройство, для этого необходимо в него загрузить свою прошивку. Программировать и загружать прошивки можно через Arduino IDE версии выше 1.6.5. Для прошивки модуля понадобится переходник UART-USB. Модуль ESP-01 может получить широкое распространение для использования в устройствах IoT (Интернет вещей).

Технические характеристики модуля

  • Wi-Fi 802.11 b/g/n
  • Режимы WiFi: клиент, точка доступа
  • Выходная мощность - 19,5 дБ
  • Напряжение питания - 1.8 -3.6 В
  • Ток потребления - 220 мА
  • Портов GPIO: 4
  • Тактовая частота процессора - 80 МГц
  • Объём памяти для кода
  • Оперативная память - 96 КБ
  • Размеры - 13×21 мм

Подключение

Рассмотрим режим AT-команд. Для этого подключим модуль к компьютеру через переходник USB-UART. Назначение выводов модуля (см. рисунок 1):
  • VCC - +3.3 В
  • GND - земля
  • RX, TX - выводы UART
  • ВыводCH_PD - Chip enable
  • GPIO0, GPIO2 - цифровые контакты
Модулю требуется внешнее питание 3.3 В.

Рисунок 1. Назначение контактов модуля ESP-01

Схема подключения для общения с модулем в режиме AT-команд (рисунок 2):

Рисунок 2. Схема подключения модуля ESP-01 к компьютеру по последовательному порту

Рисунок 3. Схема в сборе

Для отправки команд AT-команд в ОС Mac OS X можно использовать программу CoolTerm, в операционной системе Windows программу Termite. Узнать скорость COM-порта для соединения с модулем можно только экспериментально, для разных прошивок она может быть разной. Для моего модуля скорость оказалась равной 9600 бод. Кроме того установить обмен удалось только после отключения и повторного подключения к питанию вывода CH_PD. После подключения набираем в терминале AT и должны получить в ответ от модуля OK. Команда AT+GMR выдает номер версии прошивки модуля, команда AT+RST - перезагружает модуль (см. рис. 4). Список основных AT-команд можно посмотреть в этом документе (ESP8266ATCommandsSet.pdf).

Рисунок 4. Отправка AT-команд в модуль из программы Termite

Если режим AT команд для вас не удобен, плату можно настроить с помощью программы AppStack ESP8266 Config, скачать которую можно по ссылке http://esp8266.ru/download/esp8266-utils/ESP8266_Config.zip . Внешний вид программы представлен на рисунке 5. Настройка модуля осуществляется с помощью графического интерфейса, при этом выполнение команд можно видеть в мониторе программы (см. рис. 6). В мониторе также можно послать AT-команды из командной строки.

Рисунок 5. Программа AppStack ESP8266 Config

Рисунок 6. Serial monitor программы AppStack ESP8266 Config

Есть два варианта использования данного модуля:

  • в связке с микроконтроллером (например Arduino), который будет управлять модулем по UART;
  • написание собственной прошивки для использования ESP8266 в качестве самостоятельного устройства.

Пример использования

Рассмотрим пример подключения к модулю ESP-01 датчика влажности и температуры DHT11 и отправки данных в облачный сервис ThingSpeak (https://thingspeak.com/). Нам понадобятся следующие детали:
  • модуль ESP-01
  • макетная плата
  • датчик влажности и температуры DHT11
  • резистор 10 кОм
  • соединительные провода
  • блок питания 3 - 3.6В
Сначала подключим датчик DS18B20 к модулю ESP-01. DS18B20 – цифровой датчик температуры, работающий по однопроводному интерфейсу 1-Wire. Схема подключения датчика DS18B20 к модулю показана на рис. 7.

Рисунок 7. Схема подключения датчика DHT11 к модулю ESP-01.

Затем необходимо завести профиль в сервисе ThingSpeak. В сервисе есть инструкции для отправки данных в сервис и получения данных из сервиса.

Рисунок 8. Схема в сборе.

Программу будем писать в среде Arduino IDE для ESP8266. Будем использовать библиотеки ESP8266WiFi.h (встроенную) и OneWire.h. Загрузим на плату Arduino скетч из листинга 1 – получение данных с датчика температуры и отправка данных в сервис ThingSpeak. Необходимо внести свои данные для WiFi точки доступа для модуля ESP-01:

  • const char *ssid;
  • const char *password;
а также параметр privateKey для вашего приложения в сервисе ThingSpeak. Листинг 1 // сайт // Подключаем библиотеку для работы с esp8266 #include // Подключаем библиотеку DHT для работы с DHT11 #include // пин подключения контакта DATA #define DHTPIN 4 // датчик DHT11 #define DHTTYPE DHT11 // создание экземпляра объекта DHT DHT dht(DHTPIN, DHTTYPE); // ssid WiFi сети подключения const char ssid = "********"; // Пароль WiFi сети подключения const char password = "******"; // Сервер ThingSpeak const char* host = "184.106.153.149"; // API KEY вашего приложения ThingSpeak const char* privateKey = "****************"; // переменные для хранения температуры и влажности float temp; float humidity; // переменная для интервала измерений unsigned long millis_int1=0; void setup() { // запуск последовательного порта Serial.begin(115200); delay(10); Serial.print("Connect to WiFi"); Serial.println(ssid); // Соединяемся по WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } Serial.println("WiFi connected"); // запуск dht dht.begin(); } void loop() { // ждем интервал 10 минут if(milis()-millis_int1>=10*60000) { Serial.print("connect to ThingSpeak"); Serial.println(host); // Используем WiFi клиент WiFiClient client; if (!client.connect(host, 80)) { Serial.println("connection failed"); return; } // получить данные температуры temp = get_data_temperature(); humidity = get_data_humidity(); // Создаем URL с запросом для сервера String url = "/update?key="; url += privateKey; url += "&temp="; url += temp; url += "&humidity="; url += humidity; // Отправляем запрос на сервер client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); delay(10); // ответ сервера ThingSpeak while(client.available()){ String req = client.readStringUntil("\r"); Serial.print(req); } } } Теперь в сервисе ThingSpeak мы можем смотреть график показаний нашего датчика температуры DHT11 (рисунок 9).

Рисунок 9. График показаний датчика температуры DS18B20 в сервисе ThingSpeak.

Часто задаваемые вопросы FAQ

1. Модуль не отвечает на AT-команды
  • Проверьте правильность подключения модуля;
  • Проверьте правильность подключения контактов Rx,Tx к переходнику UART-USB ;
  • Проверьте подключение контакта CH_PD к 3.3 В;
  • Подберите экспериментально скорость обмена по последовательному порту.
2. Модуль ESP-01 не получает данные температуры от датчика DHT11
  • Проверьте правильность подключения датчика DHT11 к модулю.
3. Не передаются данные в сервис ThingSpeak
  • Проверьте подключение модуля к точке доступа WiFi;
  • Проверьте подключение точки доступа WiFi к сети интернет;
  • Проверьте правильность запроса к сервису ThingSpeak.

Китайская компания Espressif в 2014 году, начала продавать Wi-Fi модули, на чипах ESP8266. который сразу завоевал большую популярность у радиолюбителей из-за своей дешевизны и большими возможностями. На сегодняшний день существует большое количество различных модулей основанных на чипе ESP8266, в этой статье расскажу о ESP-01.

Технические параметры

Напряжение питания: 3 В ~ 3.6 В
Максимальный рабочий ток: 220 мА
Рабочая частота: 2.4 ГГц
Режимы: P2P (клиент), soft-AP (точка доступа)
Количество GPIO: 2.
Flash память: 1024 кб.
Выходная мощность в режиме 802.11b: +19.5dBm
Поддержка беспроводного стандарта: 802.11 b / g / n
Габариты: 24.8мм х 14.3мм х 8мм

Общие сведения о ESP-01

По сути, чип ESP8266 представляет собой миниатюрный микроконтроллер с Wi-Fi передатчиком, который может функционировать в условиях полной автономии, без дополнительной платы Arduino. С помощью модуля ESP-01 можно передавать данные о температуре, влажности, включать реле и так далее. Для удобства использования чипа ESP8266, производитель изготовил серию модулей от ESP-01 по ESP-14. Первый в этой серии, это модуль ESP-01 (существует еще ESP-01S, о нем чуть позже), являющийся одним из известным, из-за свой цены и небольшими размерами, всего 14,3 мм на 24,8 мм. Но в нем, есть два недостатка, это ограниченное количество программированных выводов GPIO и их неудобное расположение (неудобно макетировать).


Модуль ESP-01 представляет собой небольшую плату, черного цвета, на которой расположены два основных чипа, это микроконтроллером ESP8266 и flash память на 1 Мб. Рядом расположен кварцитовый резонатор и напечатанная антенна. На плате установлены два светодиода, красный и голубой. Красный светодиод, светится когда на модуле есть питание, а синий мигает при выполнении команд (в NSP-01S удален красный светодиод, из-за постоянного потребления электроэнергии). Для подключения модуля ESP-01, предусмотрено восемь выводов (два ряда по четыре вывода, шагом 2.54 мм), два из готовых являются цифровым входами-выходом, поддерживающие широтно импульсную модуляцию. Хотя модуль имеет по умолчанию два вывода GPIO, можно использовать другие доступные контакты, если у вас есть необходимый инструмент для пайки.


Назначение выводов
GND: «-» питание модуля
GPIO2: (Digital I / O программируемый)
GPIO0: (Digital I / O программируемый, также используется для режимов загрузки)
RX: UART прием
TX: UART передача
CH_PD: (включение / отключение питания, должны быть выведены на 3.3 В непосредственно или через резистор)
RST: сброс, необходимо потянуть к 3.3В
VCC: «3.3В» питание модуля

Подключение модуля
Для работы модуля ESP-01, необходим источник питания постоянного тока, который должен выдавать 3.3 В и током не менее 250 мА. К сожалению, штатный стабилизатор установленный на Arduino не способен выдать необходимой ток для работы ESP-01 (если решите все равно подключить ESP-01, ждите нестабильную работу и постоянную перезагрузку). Кроме того, логические сигнал, данного модуля, рассчитан на 3.3 В, то есть на вывод RX необходимо подавать напряжение 3.3В, а с вывода TX будет напряжение равное 3.3 В (так же и для других выводов). Если необходимо подключить модуль к Arduino или другим контроллерам, которые выдают на логический вывод 5 В, необходимо использовать резисторы или модуль логических уровней, если подключать напрямую, модуль выйдет из строя.

Внимание! ESP-01 очень капризные к питанию, необходимо использовать внешний стабилизатор напряжения на 3.3В, в качестве первого примера буду использовать адаптер USB

С таблице выше, видно, что модуль ESP-01 может работать в нескольких режимах сна, с минимальным потреблением тока, вызываются они программном путем, кроме последнего «Power Off», чтобы задействовать данный режим, необходимо установить перемычку, между GPIO16 и RST, позже приведу пример.

Установка ESP8266 в IDE Arduino

Скачиваем с сайта arduino.cc программу IDE Arduino
Далее, необходимо установить ESP плату в IDE Arduino, для этого запускаем программу IDE Arduino, открываем: Файл -> Настройка .
В новом открытом окне, в поле «Дополнительные ссылки для Менеджера плат: » добавляем ссылку:

Http://arduino.esp8266.com/stable/package_esp8266com_index.json

В открытом окне, ищем «esp8266 by ESP8266 Communit y» и нажимаем «Установить «. Установка займет несколько минут, затем появиться надпись «Installed «, жмем «Закрыть «

Нажимаем «Инструменты -> Платы -> Generis ESP8266 Module «.

Теперь необходимо подключить модуль ESP-01 к компьютеру через специальный адаптер USB на чипе CH340G


Настраиваем частоту процессора «CPU Frequency: «80 MHz» «, скорость «Upload Speed: «115200» » и выбираем «Порт «.

Затем загружаем скетч, который заставит ESP8266 мигать светодиодом.

/* Тестировалось на Arduino IDE 1.8.5 Дата тестирования 15.06.2018г. */ #define TXD 1 // GPIO1 / TXD01 void setup() { pinMode(TXD, OUTPUT); } void loop() { digitalWrite(TXD, HIGH); delay(1000); digitalWrite(TXD, LOW); delay(1000); }

Многие пользователи уже успели обратить свое внимание на чип ESP8266-12, выпущенный компанией Espressif. Стоимость его значительно дешевле по сравнению со стандартной платой Bluetooth-адаптера, да и при меньших габаритах он отличается значительно более широкими возможностями. Теперь все домашние любители получили возможность работы в сети Wi-Fi сразу в двух режимах, то есть подключать свой компьютер к каким-либо точкам доступа или же включать его в качестве такой точки.

С другой стороны, нужно правильно понимать, что такие платы представляют собой не просто шилды, предназначенные только для связи по Wi-Fi. Сам по себе ESP8266 представляет собой микроконтроллер, имеющий собственные UART, GPIO и SPI-интерфейсы, то есть его можно использовать как абсолютно автономное оборудование. Многие после выхода данного чипа назвали его самой настоящей революцией, и с течением времени такие устройства начнут встраиваться даже в самые простые виды техники, но пока устройство является сравнительно новым и какой-либо стабильной прошивки на него нет. Многие специалисты по всему миру стараются изобретать собственные прошивки, ведь заливать их в плату на самом деле не составляет особого труда, но несмотря на различные трудности, устройство уже сейчас можно назвать вполне пригодным к работе.

На данный момент рассматривается только два варианта применения данного модуля:

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

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

Глядя на удобство использования и хорошие характеристики, многие люди среди множества микроконтроллеров отдают свое предпочтение модели ESP8266. Подключение и обновление прошивки данного устройства является предельно простым и доступным, и производится на том же железе, на котором осуществляется подключение оборудования к компьютеру. То есть так же через USB-TTL-конвертер или, если кто-то предпочитает другие варианты подключения, может осуществляться через RPi и Arduino.

Как проверить?

Для того чтобы проверить работоспособность только что купленного устройства, вам нужно будет использовать специальный источник стабилизированного напряжения, рассчитанный на 3,3 вольта. Сразу стоит отметить, что реальный диапазон напряжения питания данного модуля составляет от 3 до 3,6 вольт, а подача повышенного напряжения сразу приведет к тому, что вы просто-напросто выведете из строя свой ESP8266. Прошивка и прочее программное обеспечение после подобной ситуации может начать некорректно работать, и вам уже нужно будет ремонтировать устройство или как-то его исправлять.

Чтобы определить работоспособность данной модели микроконтроллера, нужно просто подключить три пина:

  • CH_PD и VCC подключаются к питанию 3,3 вольт.
  • GND подключается к земле.

Если вами используется не ESP-01, а какой-либо другой модуль, и на нем уже изначально присутствует выведенный GPIO15, то в таком случае вам и его нужно будет дополнительно подключить к земле.

Если заводская прошивка запустилась нормально, то в таком случае можно увидеть а затем пару раз мигнет синий. Однако стоит отметить, что красный индикатор питания имеют не все устройства серии ESP8266. Прошивка на некоторых устройствах не предусматривает загорание красного индикатора, если в модуле он отсутствует (в частности, это относится к модели ESP-12).

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

Если точка действительно появляется, вы можете продолжать эксперименты, в противном случае нужно будет проводить повторную проверку питания, а также корректность подключения GND и CH_PD, а если все подключено верно, то, скорее всего, вы все-таки стараетесь использовать сломанный модуль или же на нем просто-напросто установлена прошивка с нестандартными настройками.

Как его быстро подключить?

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

  • сам модуль;
  • беспаечную макетную плату;
  • полноценный набор проводов мама-папа, предназначенные для макетной платы, или же специальный кабель DUPONT M-F;
  • USB-TTL конвертер на основе PL2303, FTDI или же каком-нибудь аналогичном чипе. Наиболее оптимальный вариант - если на USB-TTL адаптер также выводятся RTS и DTR, так как за счет этого можно добиться достаточно быстрой загрузки прошивки из какого-нибудь UDK, Arduino IDE или Sming, не имея даже необходимости в ручном переключении GPIO0 на землю.

Если вами используется конвертер на 5 вольт, то в таком случае нужно будет приобрести дополнительный стабилизатор питания на базе чипа 1117 или каком-либо аналогичном, а также источник питания (для стандартного 1117 вполне неплохо подойдет даже обыкновенная зарядка от смартфона на 5 вольт). Рекомендуется не использовать Arduino IDE или USB-TTL в качестве источника питания для ESP8266, а применять отдельный, так как за счет этого можно избавиться в конечном итоге от массы проблем.

Расширенный набор для обеспечения комфортной и постоянной работы с модулем предусматривает необходимость в использовании дополнительных резисторах, светодиодах и DIP-переключателях. Помимо этого, можно также использовать недорогой USB монитор, который позволит вам постоянно наблюдать за количеством потребляемого тока, а также обеспечит небольшую защиту шину USB от возникновения

Что нужно делать?

В первую очередь стоит отметить тот факт, что в ESP8266 управление может быть несколько разным в зависимости от того, какая конкретно модель вами используется. Таких модулей сегодня представлено достаточно много, и первое, что будет нужно, - это провести идентификацию используемой вами модели и определиться с ее распиновкой. В данной инструкции мы будем говорить о работе с модулем ESP8266 ESP-01 V090, и если вами используется какая-то другая модель с выведенным пином GPIO15 (HSPICS, MTDO), вам нужно будет притянуть его к земле как для стандартного старта модуля, так и для использования режима прошивки.

После этого дважды убедитесь в том, что питающее напряжение для подключенного модуля составляет 3,3 вольта. Как говорилось выше, допустимый диапазон составляет от 3 до 3,6 вольт, и в случае повышения устройство выходит из строя, но при этом питающее напряжение может быть даже значительно ниже 3 вольт, которые заявлены в документах.

Если вы используете USB-TTL конвертер на 3,3 вольта, то в таком случае подключите модуль точно так же, как на левой части картинки ниже. Если же вами применяется исключительно пятивольтовый USB-TTL, то обратите внимание на правую часть рисунка. Многим может показаться, что правая схема более эффективная за счет того, что в ней применяется отдельный источник питания, но на самом деле в случае применения USB-TTL конвертера на 5 вольт крайне желательно сделать также дополнительный делитель на резисторах, чтобы обеспечить согласование трехвольтовых и пятивольтовых уровней логики, или же просто использовать модуль преобразования уровней.

Особенности подключения

На правом рисунке присутствует подключение UTXD (TX), а также URXD (RX) данного модуля к пятивольтовой логике TTL, и проведение таких процедур осуществляется только на свой страх и риск. К ESP8266 описание говорит о том, что модуль эффективно работает только с 3,3-вольтовой логикой. В преимущественном большинстве случаев даже в случае работы с пятивольтовой логикой оборудование не выходит из строя, но изредка происходят такие ситуации, поэтому подобное подключение является не рекомендованным.

Если у вас нет возможности использовать специализированный USB-TTL конвертер на 3,3 вольта, можно применить делитель на резисторах. Также стоит отметить, что на правом рисунке стабилизатор питания 1117 подключается без дополнительной обвязки, и это действительно рабочая технология, но все-таки лучше всего пользоваться схемой подключения 1117 с конденсаторной обвязкой - нужно сверить ее с ESP8266 datasheet на ваш стабилизатор или использовать уже полностью готовый модуль, основывающийся на базе 1117.

Чтобы запустить модуль, нужно разорвать цепь GPIO0-TND, после чего можно подавать питание. При этом стоит отметить, что делать все нужно именно в таком порядке, то есть сначала убедитесь в том, что GPIO0 «висит в воздухе», и только потом уже подавайте питание на CH_PD и VCC.

Как подключать правильно?

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

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

Резисторы на 10k при необходимости можно заменить на какие-либо другие в диапазоне от 4,7k до 50k, исключая GPIO15, так как его номинал должен быть не более 10k. Номинал конденсатора, сглаживающего высокочастотные пульсации, может быть несколько иным.

Соединение RESET и GPIO16 через использование резистора deep sleep на 470 Ом может стать необходимым при использовании соответствующего режима, так как для того, чтобы выйти из режима глубокого сна, модуль осуществляет полную перезагрузку, осуществляя подачу низкого уровня на GPIO16. При отсутствии данного соединения режим глубокого сна для вашего модуля будет длиться вечно.

На первый взгляд, может показаться, что GPIO0, GPIO1 (TX), GPIO2, GPIO3 (RX) и GPIO15 заняты, поэтому использовать их для своих целей не получится, но на самом деле это далеко не так. Достаточно высокий уровень на GPIO0 и GPIO2, а также низкий на GPIO15 могут потребоваться только для первоначального запуска модуля, а в дальнейшем уже можно применять их на свое усмотрение. Единственное, что стоит отметить, - не забывайте обеспечивать нужные уровни до того, как осуществлять полную перезагрузку вашего оборудования.

Также можно использовать TX, RX в качестве альтернативы GPIO1 и GPIO3, но при этом не стоит забывать о том, что после старта модуля каждая прошивка начинает «дергать» ТХ, параллельно занимаясь отправкой отладочной информации в UART0 со скоростью 74480, но, после того как будет проведена успешная загрузка, их можно использовать не только в качестве UART0 для того, чтобы сделать обмен данных с другим устройством, но и в качестве стандартных GPIO.

Для модулей, у которых присутствует небольшое количество разведенных пинов (к примеру, ESP-01), не требуется подключения неразведенных пинов, то есть на ESP-01 разводятся только: GND, CH_PD, VCC, GPIO0, GPIO2 и RESET, и именно их вам нужно будет подтягивать. Нет никакой потребности в том, чтобы припаиваться непосредственно к микросхеме ESP8266EX, а затем притягивать неразведенные пины, если только это вам действительно нужно.

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

Подключение через Arduino

Если у вас по какой-то причине не оказалось USB-TTL конвертера на 3,3 вольт, то в таком случае модуль WiFi ESP8266 можно подключить через Arduino со встроенным конвертером. Здесь вам нужно будет сначала обратить свое внимание на три основных элемента:

  • При использовании в работе с ESP8266 Arduino Reset изначально подключен к GND, чтобы исключить возможность запуска микроконтроллера, и в данном виде он использовался в качестве прозрачного USB-TTL конвертера.
  • RX и TX подключались не «на перекрест», а напрямую - RX-RX (зеленый), ТХ-ТХ (желтый).
  • Все остальное подключается точно так же, как указано выше.

Что нужно учитывать

В данной схеме также требуется согласование уровней TTL 5 вольт Arduino, а также 3,3 вольта на ESP8266, но при этом неплохо может функционировать и так.

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

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

Подключение через RaspberryPi

Если вы не располагаете вообще никакими USB-TTL конвертерами, то в таком случае можно использовать RaspberryPi. В данном случае для ESP8266 программирование и подключение осуществляется практически идентично, но при этом здесь все не так удобно, а дополнительно нужно будет использовать также стабилизатор питания на 3,3 вольта.

Для начала RX, TX и GND нашего устройства подключаем к ESP8266, а GND и VCC берем со рассчитанного на 3,3 вольта. Здесь отдельное внимание следует уделить тому, что нужно провести соединение всех GND устройств, то есть стабилизатора RaspberryPi и ESP8266. Если же встроенный в вашу модель устройства стабилизатор может выдерживать до 300 миллиампер дополнительной нагрузки, то в таком случае подключение ESP8266 осуществляется вполне нормально, но это все делается только на свой страх и риск.

Настраиваем параметры

Когда вы разобрались, как подключить ESP8266, нужно убедиться в том, что драйвера к вашим устройствам установлены корректно, вследствие чего в системе был добавлен новый последовательный виртуальный порт. Здесь нужно будет использовать программу - терминал последовательного порта. В принципе, утилиту можно подобрать любую на свой вкус, но при этом вы должны правильно понимать, что любая команда, которая будет отправляться вами в последовательный порт, в конце должна иметь завершающие символы CR+LF.

Достаточно широким распространением пользуются утилиты CoolTerm и ESPlorer, причем последняя позволяет не вводить ESP8266 самостоятельно, и при этом дает проще работать с lua скриптами под NodeMCU, поэтому ее можно вполне использовать в качестве стандартного терминала.

Для нормального подключения к придется проделать немало работы, так как прошивки для ESP8266 в большинстве своем являются разнообразными и активация может проводиться на разных скоростях. Чтобы определиться с наиболее оптимальным вариантом, вам нужно будет перебрать три основных варианта: 9600, 57600 и 115200.

Как перебирать?

Для начала подключитесь в терминальной программе к последовательному виртуальному порту, выставляя параметры 9600 8N1, после чего проводите полную перезагрузку модуля, отключая CH_PD (chip enable) от питания, после чего снова активируйте его, передергивая CH_PD. Также можно провести кратковременное замыкание RESET на землю для того, чтобы перезагрузить модуль, и наблюдать за данными в терминале.

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

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

Как обновлять прошивку?

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

Для начала скачивайте новую версию прошивки с официального сайта, а также скачивайте специальную утилиту для прошивки. Здесь отдельное внимание следует уделить тому, какая операционная система установлена на той машине, с которой работает ESP8266. Подключение устройства лучше всего проводить к системам старше Windows 7.

Для стандартных ОС Windows вполне оптимально будет использовать программу под названием XTCOM UTIL, которая особенно удобной в работе, если прошивка состоит только из одного файла. Лучшим мультиплатформенным вариантом стоит назвать утилиту esptool, которая, правда, требует python, а также необходимость указания параметров через командную строку. Помимо этого, в ESP8266 подключение основных функций позволяет удобно сделать программа Flash Download Tool, которая имеет достаточно большое количество настроек, а также удобную технологию установки прошивок из нескольких файлов.

Далее отключайте свою терминальную программу от последовательного порта, а также полностью отключайте CH_PD от питания, присоединяйте GPIO0 модуля к GND, и после этого CH_PD можно будет вернуть обратно. В конечном итоге просто запускайте программу для модульной прошивки и загружайте ее в ESP8266 реле.

В преимущественном большинстве случаев прошивка загружается в модуль со скоростью в районе 115200, но при этом специальный режим предусматривает автоматическое распределение скорости, вследствие чего прошивка может проводиться на скорости более 9600, обновляя доступные функции ESP8266. Arduino использовался для подключения или USB-TTL - здесь не играет особой роли, и здесь предельная скорость уже зависит от длины проводов, используемого конвертера и целого ряда других факторов.

Моуль esp-01
Схема правильного подключения модуля esp-01 для программирования и прошивки.

Прошивка модуля производится переводом в режим программирования, для этого зажимает кнопку FLASH затем не отпуская кратковременно нажимаем на кнопку RESET и отпускаем FLASH.
Модуль переведён в режим программирования.
В терминале в этот момент можно увидеть

ets Jan 8 2013,rst cause:2, boot mode:(1,6)
boot mode:(1,6) - перезагрузка по RESET в режим программирования
boot mode:(1,7) - перезагрузка по питанию в режим программирования - что не совсем правильно.

Для прошивки буду использовать программу NODEMCU FIRMWARE PROGRAMMER
(К топику будет приложен архив с программой)
Распаковываем архив и запускаем в моём случае 32 разрядную версию программы\Win32\Release\ESP8266Flasher.exe
Настраиваем под модуль, в моём случае это 1 Мегабайт флэш памяти или 8 Мегабит.




Первым делом требуется стереть память пустым файлом в 1 Мб.
Это необязательный пункт. Стирание можно пропустить и перейти к прошивке.
У кого память больше или меньше - требуется пустой файл соответствующего размера.
Далее определяемся какая нужна прошивка!
Можно использовать как готовые прошивки на NODEMCU так и с конструктора собрать с нужными себе модулями.
Например одна из старых проверенных NODEMCU

Конструктор wifi-iot.com/
Конструктор nodemcu-build.com/
или качаем последнюю

Проблемы при прошивке
Если модуль esp8266 не прошивается, проверьте подтяжки и корректность замыкания на GND GPIO0. А также не перепутаны ли RX TX.
В терминале можно проверить чтобы выдавалось boot mode:(1,6) или boot mode:(1,7).

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

Если модуль после успешной прошивки не работает и в порт шлёт без конца мусор(может мигать светодиод передачи данных), случается это при прошивке последних сборок Nodemcu то дополнительно потребуется прошить файл в область памяти в зависимости от чипа памяти.
С сайта nodemcu взята информация по памяти.
0x7c000 для 512 kB, модули такие как ESP-01,03,07
0xfc000 for 1 MB, модули типа ESP8285, PSF-A85 но и некоторые разновидности esp-01,01s
0x1fc000 for 2 MB
0x3fc000 for 4 MB, тип модуля ESP-12E, NodeMCU devkit 1.0, WeMos D1 mini идр

Если ничего не помогает, то пишите…

Добавлю официальнаг группа производителя оборудования