Контакты

ESP8266 прошивка, программирование в Arduino IDE. Обновление прошивки ESP8266 Esp 01 схема подключения

Китайская компания 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); }

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

В этом уроке по ESP8266 мы используем модуль ESP-01 для управления светодиодом через Интернет. ESP8266 - дешевая, но эффективная платформа для общения через Интернет.

Он также прост в использовании с Ардуино. Пройдя этот урок, вы получите основные знания по управлению любым электрическим устройством через Интернет из любой точки мира!

Здесь мы будем использовать USB-to-TTL конвертер для программирования ESP8266 ESP-01. И мы будем использовать для разработки веб-сервера для удаленного управления светодиодом.

Как это работает

ESP8266 можно контролировать из локальной сети Wi-Fi или из Интернета (после переадресации портов). Модуль ESP-01 имеет контакты GPIO, которые могут быть запрограммированы для включения или выключения светодиода или реле через Интернет. Модуль можно запрограммировать с помощью конвертера Arduino USB-to-TTL через последовательные контакты (RX, TX).

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

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

1. Конвертер USB-to-TTL с использованием разъема DTR

Если вы используете конвертер USB-to-TTL с выводом DTR, загрузка будет идти гладко. Пожалуйста, имейте в виду, что серийный монитор не будет работать при этом.

USB TTL → ESP8266 ESP-01
GND → GND
TX → RX
RX → TX
RTS → RST
DTR → GPIO0

2. Конвертер USB в TTL без вывода DTR

Чтобы подключить конвертер USB-TTL без вывода DTR, мы должны использовать ручную передачу. Для этого мы используем две кнопки - см. следующую диаграмму:

USB TTL → ESP8266 ESP-01
GND → GND
TX → RX
RX → TX
Reset Button → RST
Flash Button → GPIO0

При загрузке кода нажмите кнопку "Загрузки" (Flash). Держите кнопку нажатой, в тот момент когда вы нажимаете один раз кнопку "Перезагрузка/Сброс" (Reset). Теперь вы можете отпустить кнопку Flash. ESP8266 теперь находится в режиме в котором вы сможете загрузить эскиз.

3. Использование Arduino Uno для загрузки кода в ESP8266

Вы можете использовать для запуска кода ESP8266 ESP-01. При загрузке кода следуйте той же процедуре, что во втором пункте, - удерживайте кнопку "Загрузки" нажатой, когда вы нажимаете один раз на сброс, а после отпускаете кнопку Flash.

ARDUINO → ESP8266 ESP-01
GND → GND
TX → TX
RX → RX
Кнопка Reset → RST
Кнопка Flash → GPIO0

Загрузка кода ESP8266

Используйте любой из приведенных выше способов и откройте , затем выберите плату ESP8266 в меню:

Tools → Board → Generic ESP8266 Module
(Инструменты → Плата → Модуль ESP8266)

Примечание. Если вы не установили и не настроили плату ESP8266 для Arduino, сделайте это, выполнив шаги выше этого руководства. Затем можете идти дальше.

Теперь скопируйте приведенный ниже код в Arduino IDE и нажмите кнопку загрузки. Измените SSID на точку доступа Wi-Fi и измените пароль на свой пароль Wi-Fi и скомпилируйте.

#include const char* ssid = "YOUR_SSID";//type your ssid const char* password = "YOUR_PASSWORD";//type your password int ledPin = 2; // GPIO2 of ESP8266 WiFiServer server(80);//Service Port void setup() { Serial.begin(115200); delay(10); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.print("Use this URL to connect: "); Serial.print("http://"); Serial.print(WiFi.localIP()); Serial.println("/"); } void loop() { // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String request = client.readStringUntil("\r"); Serial.println(request); client.flush(); // Match the request int value = LOW; if (request.indexOf("/LED=ON") != -1) { digitalWrite(ledPin, HIGH); value = HIGH; } if (request.indexOf("/LED=OFF") != -1){ digitalWrite(ledPin, LOW); value = LOW; } //Set ledPin according to the request //digitalWrite(ledPin, value); // Return the response client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // do not forget this one client.println(""); client.println(""); client.print("Led pin is now: "); if(value == HIGH) { client.print("On"); } else { client.print("Off"); } client.println("

"); client.println("Click here turn the LED on pin 2 ON
"); client.println("Click here turn the LED on pin 2 OFF
"); client.println(""); delay(1); Serial.println("Client disconnected"); Serial.println(""); }

Откройте последовательный монитор и откройте URL, показанный на вашем последовательном мониторе, через веб-браузер. Подключите GPIO 2 от ESP8266 к более длинному выводу светодиода. Теперь вы можете управлять светодиодом удаленно через Интернет!

Удалите все провода, которые были необходимы для загрузки кода. Модуль LM1117 используется для обеспечения регулируемого выхода 3,3 В. Это позволит вам сделать модуль ESP8266 или ESP-01 автономным.

Подключение ESP8266 к Интернету

В настоящее время модуль ESP8266 доступен только через локальную сеть Wi-Fi. Чтобы управлять устройствами из Интернета, вам необходимо выполнить переадресацию портов на маршрутизаторе.

Для этого найдите IP-адрес вашей системы либо с помощью команды «ifconfig» в вашем терминале, либо перейдите на страницу whatsmyip.org. Скопируйте свой IP-адрес. Теперь откройте настройку маршрутизатора и перейдите в настройки «Переадресация». Введите данные для «Сервисного порта» и «IP-адреса». Сервисный порт - это номер порта из вашего кода Arduino (служебный порт: 80):

WiFiServer server(80);//Service Port

IP-адрес тот, который вы указали ранее. Оставьте остальные настройки по умолчанию. Теперь перейдите в свой браузер и введите адрес: xxx.xxx.xx.xx: 80. Должна открыться страница для управления светодиодом.

Для работы с RemoteXY модуль ESP8266 должен иметь версию прошивки с поддержкой AT команд не ниже v0.40. Для проверки версии модуля, а так же для изменения прошивки в случае необходимости, подключите модуль к компьютеру через последовательный порт. Модуль можно подключить через плату Arduino или через USB-UART адаптер.

Подключение через плату Arduino

При использовании Arduino основной чип ATmega переводится в режим сброса, активным остается только встроенный USB-UART преобразователь. Для этого контакт RESET соединяется с землей. Контакты RX и TX подключаются к ESP8266 напрямую, а не крест накрест, как если бы они подключались для работы с контроллером.

Подключение через USB-UART адаптер

Преобразователь должен иметь выход источника 3.3V для питания ESP8266. Так же этот источник должен обеспечить необходимый ток не менее 200мА.



Контакт CPIO0 определяет режим работы модуля. При не подключенном контакте модуль работает в штатном режиме и выполняет AT команды. При замыкании контакта на землю, модуль переводится в режим обновления встроенной прошивки. Перевод модуля в режим прошивки требует, что бы контакт CPIO0 был подключен к «земле» в момент подачи питания на модуль. Если замыкать контакт при работающем модуле, перевод модуля в режим обновления прошивки не произойдет.

Проверка текущей версии

Для отправки AT команд и просмотра ответов необходимо использовать любую программу монитора последовательного порта. Очень хорошо подходит терминальная программа из Arduino IDE. В программе необходимо установить режим отправки команд с завершающим символом перевода строки и возвратом каретки. Скорость работы модуля по умолчанию 115200 бит/сек. Для работы модуля в штатном режиме контакт CPIO0 должен быть отключен.

Проверить текущую версию прошивки можно выполнив AT команду: AT+GMR. Пример ответа модуля:

AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0

Build:1.3.0.2 Sep 11 2015 11:48:04
OK

Так же стоит узнать размер флеш памяти вашего модуля, от этого зависят настройки адресов загрузки данных при обновлении прошивки. В данной инструкции описана прошивка модуля с размером флеш памяти 8Mbit(512KB+512KB) или 16Mbit(1024KB+1024KB), как наиболее распространенных. Размер флеш памяти можно узнать, выполнив AT команду сброса модуля: AT+RST.

Ets Jan 8 2013,rst cause:2, boot mode:(3,1)

Load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0

2nd boot version: 1.4(b1)
SPI Speed: 40MHz
SPI Mode: DIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

#т#n"t use rtc mem data
slЏ‚rlМя
Ai-Thinker Technology Co.,Ltd.

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

Для обновлении прошивки необходимо скачать программу для прошивки и саму прошивку. Программа для прошивки ESP8266 будем использовать Flash Download Tools v2.4 с официального сайта Espressif Systems. Ссылка на страницу загрузки на официальном сайте: . Необходимо перейти в раздел "Tools".

Ссылка на программу в нашем файловом хранилище: FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar

Прошивка

Прошивку так же можно скачать с официального сайта. Ссылка на страницу загрузки на официальном сайте: . Необходимо перейти в раздел «SDKs & Demos» и загрузить прошивку ESP8266 NONOS SDK версии не менее v1.3.0. Именно с этой версии прошивки реализована поддержка AT команд v0.40 и более.

Ссылка на прошивку в нашем файловом хранилище: esp8266_nonos_sdk_v1.4.0_15_09_18_0.rar

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

Настройка

Запускаем программу прошивки Flash Download Tools v2.4 (одноименный.exe файл). В открывшемся окне необходимо правильно указать загружаемые файлы и настройку соединения.


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

Установите следующие параметры настройки:

  • SPIAutoSet - установлен;
  • CrystalFreq - 26M;
  • FLASH SIZE – 8Mbit или 16Mbit в зависимости от размера флеш-памяти;
  • COM PORT – выберите порт, к которому подключена ESP;
  • BAUDRATE – 115200

Для старта прошивки необходимо нажать кнопку "START".

Последовательность шагов для прошивки ESP8266

1. Подключите модуль к компьютеру согласно схеме подключения в этой статье.

2. Запустите монитор последовательного порта. Выполните AT команды AT+RST и AT+GMR для определения текущей версии прошивки и размера памяти модуля. Этот шаг так же позволяет проверить правильность подключения модуля.

3. Запустите программу прошивки Flash Download Tools, правильно настройте загружаемые файлы, установите настройки.

4. Отключите питание модуля ESP8266.

5. Соедините контакт CPIO0 на землю.

6. Подайте питание на модуль ESP8266.

7. Нажмите в программе прошивки кнопку START

8. Дождитесь окончания прошивки модуля. По окончании прошивки появится надпись FINISH зеленого цвета.

9. Отсоедините питание модуля ESP8266. Отсоедините землю с контакта CPIO0.

10. Включите модуль, запустите монитор последовательного порта. Убедитесь в работоспособности модуля и новой версии прошивки выполнив AT команду AT+GMR.

После своего появления платы на базе Wifi чипа ESP8266, стали по настоящему народными. Огромные возможности и минимальная цена, которая даже на старте продаж и в розницу не превышала 5$ сделали свое дело. Вокруг чипа организовались сообщества в которых люди делятся информацией и создают программное обеспечение.

В чем же причина такой популярности, помимо низкой цены?

Все дело в том, что платы на ESP8266 это не просто модули для связи по WiFi. Чип по сути, является микроконтроллером со своими интерфейсами SPI, UART, а также портами GPIO, а это значит, что модуль можно использовать автономно без Arduino и других плат с микроконтроллерами.

Информация

Наши китайские товарищи уже производят около двенадцати разновидностей плат на базе ESP8266: с подключением внешней антенны, с керамической антенной, с PCB антенной, без антенны. Также на разных модулях выведено разное количество GPIO. Более подробно, можно прочитать на русскоязычном сайте .

В данном обзоре я буду использовать, одну из самых первых плат ESP-01 . Так же для полноценной работы с чипом потребуется конвертер USB/UART , рекомендую , обзор которого уже был на mysku.

Подключение

Распиновка разъёма ESP-01, представлена на рисунке:

Если в своих проектах вам не хватит двух выведенных GPIO, а заниматься «грязными хаками» нет желания, то я рекомендую сразу приобретать более новые платы, например ESP-07 или ESP-12 . Только имейте ввиду, что данные платы требуют самостоятельной разводки и в продаже для этого есть специальные мининаборы.

Фотографии данных плат


ESP-01 hacked by Dave Allan, как пример. Дополнительно вы получаете 4 GPIO: GPIO14, GPIO12, GPIO13 и GPIO15

Схема подключения:
- ESP-01 VCC к USB/UART VCC (+3.3В);
- ESP-01 GND к USB/UART GND;
- ESP-01 URXD к USB/UART TXD;
- ESP-01 UTXD к USB/UART RXD;
- ESP-01 CH_PD к USB/UART VCC (+3.3В);
- ESP-01 GPIO0 к USB/UART GND - только во время прошивки!..

Прошивка

Для ESP8266, существует SDK и оригинальная прошивка от Espressif Systems, но многих она не устраивает ввиду своей «сырости», поэтому выпускаются не оригинальные прошивки, такие как NodeMCU, Frankenstein и другие.

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

Обновляем оригинальную «заводскую» прошивку на NodeMCU:
- Загружаем утилиту для прошивания - ;
- Загружаем прошивку - ;
- Подключаем по ESP-01 к USB/UART по схеме которая представлена выше. Не забываем подключить GPIO0 к GND. Вставляем USB/UART в USB порт компьютера;
- Запускаем XTCOM_UTIL.exe, переходим в Tools -> Config Device, выбираем COM-порт к которому подключена плата, ставим скорость порта 57600, жмем Open, потом Connect, программа должна сказать «Connect with target OK!», закрываем окно настроек. Переходим в меню API TEST, выбираем (4) Flash Image Download, указываем путь к файлу «nodemcu_512k_latest.bin», адрес оставляем 0x00000, жмем DownLoad. Должна начаться загрузка прошивки, по окончании будет выдано сообщение;
- Отключаем питание платы, вывод GPIO0 отсоединяем от общего провода, включаем питание. Запускаем терминал Putty, CoolTerm или др. (ВНИМАНИЕ! Меняем скорость порта на 9600), проверяем готовность платы командой
> print(node.chipid())
10013490

Первый скрипт

Если при работе со скриптами у Вас будут проблемы, то рекомендуется подать питание 3.3V не от USB/UART, а от отдельного источника. Напряжение должно быть именно 3.3V, например через модуль стабилизированного питания на AMS1117 3.3V 800ma.

Для написания и загрузки скриптов в ESP8266, будет использоваться небольшая и удобная IDE - :

Наш первый скрипт, будет выключать и включать светодиод с периодичностью в 2 секунды:
- Отключаем питание, к GPIO2 подключаем резистор и светодиод. Включаем питание;
- Запускаем ESPlorer, выбираем нужный COM и скорость порта 9600, нажимаем Open;
- Вставляем код и нажимаем Save To ESP;

Pin = 4 --GPIO2 gpio.mode(pin, gpio.OUTPUT) for i=1, 10, 1 do gpio.write(pin, gpio.LOW) tmr.delay(2000000) gpio.write(pin, gpio.HIGH) tmr.delay(2000000) end
- Для повторного запуска нажимаем DoFile.

Подключаем датчик DHT11

Чтобы продемонстрировать, более продвинутую работу с прошивкой NodeMCU подключим к ESP-01 датчик DHT11:
- DHT11 VCC к USB/UART VCC
- DHT11 GND к USB/UART GND
- DHT11 Out к USB/UART GPIO2

Код от пользователя Pigs Fly с форума ESP8266.com

Works for DHT11 on ESP-07 (version w/16pins) and ESP-01 --Only 20141219 firmware tested. --Data stream acquisition timing is critical. There"s --barely enough speed to work with to make this happen. --Pre-allocate vars used in loop. bitStream = {} for j = 1, 40, 1 do bitStream[j]=0 end bitlength=0 pin = 4; gpio.mode(pin, gpio.OUTPUT) gpio.write(pin, gpio.LOW) tmr.delay(20000) --Use Markus Gritsch trick to speed up read/write on GPIO gpio_read=gpio.read gpio_write=gpio.write gpio.mode(pin, gpio.INPUT) --bus will always let up eventually, don"t bother with timeout while (gpio_read(pin)==0) do end c=0 while (gpio_read(pin)==1 and c<100) do c=c+1 end --bus will always let up eventually, don"t bother with timeout while (gpio_read(pin)==0) do end c=0 while (gpio_read(pin)==1 and c<100) do c=c+1 end --acquisition loop for j = 1, 40, 1 do while (gpio_read(pin)==1 and bitlength<10) do bitlength=bitlength+1 end bitStream[j]=bitlength bitlength=0 --bus will always let up eventually, don"t bother with timeout while (gpio_read(pin)==0) do end end --DHT data acquired, process. Humidity = 0 HumidityDec=0 Temperature = 0 TemperatureDec=0 Checksum = 0 ChecksumTest=0 for i = 1, 8, 1 do if (bitStream > 2) then Humidity = Humidity+2^(8-i) end end for i = 1, 8, 1 do if (bitStream > 2) then HumidityDec = HumidityDec+2^(8-i) end end for i = 1, 8, 1 do if (bitStream > 2) then Temperature = Temperature+2^(8-i) end end for i = 1, 8, 1 do if (bitStream > 2) then TemperatureDec = TemperatureDec+2^(8-i) end end for i = 1, 8, 1 do if (bitStream > 2) then Checksum = Checksum+2^(8-i) end end ChecksumTest=(Humidity+HumidityDec+Temperature+TemperatureDec) % 0xFF print ("Temperature: "..Temperature.."."..TemperatureDec) print ("Humidity: "..Humidity.."."..HumidityDec) print ("ChecksumReceived: "..Checksum) print ("ChecksumTest: "..ChecksumTest)


Прошу прощения за качество видео, снимал на телефон.

HTTP сервер

Пример подключения к Wifi точке доступа и ответ на запрос по HTTP.

Wifi.setmode(wifi.STATION) wifi.sta.config("SSID","password") print(wifi.sta.getip()) srv:listen(80,function(conn) conn:on("receive",function(conn,payload) print(payload) conn:send("

Hello, User.

") end) end)

Эпилог

Чип ESP8266 это безусловно прорыв, прежде всего в соотношении цена/качество. Конечно стоит упомянуть о существующих проблемах в оригинальных и не оригинальных прошивках, но работы ведутся и я надеюсь, что в будущем подобные чипы, будут встроены в каждый чайник. Планирую купить +158 Добавить в избранное Обзор понравился +103 +196

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

Для проверки ESP8266, который вы только что приобрели, потребуется .

Внимание! Допустимый диапазон напряжения питания модуля ESP8266 от 3,0 до 3,6 вольт. Подача повышенного напряжения питания на модуль гарантированно приведет к выходу ESP8266 из строя.

Чтобы проверить ESP8266 ESP-01 достаточно подключить три пина: VCC и CH_PD (chip enable) к питанию 3,3 вольт, а GND к земле. Если у вас не ESP-01, а другой модуль и на нем выведен GPIO15, то дополнительно еще потребуется подключить GPIO15 к земле.

При успешном старте заводской прошивки на модуле ESP8266 загорится красный светодиод (индикатор питания, на некоторых версиях модуля, например ESP-12, может отсутствовать) и пару раз мигнет синий (это индикатор передачи данных от модуля к терминалу по линии TX-RX, может иметь другой цвет) и в вашей беспроводной сети должна появится новая точка доступа с именем «ESP_XXXX», которую вы сможете увидеть с любого WiFi устройства. название точки доступа зависит от производителя прошивки и может быть другим, например AI-THINKER_AXXXXC. Если точка доступа появилась, то можно продолжить эксперименты далее, если нет, то еще раз проверьте питание, CH_PD, GND и если все подключено правильно то, скорее всего, у вас неисправный модуль, но есть надежда, что прошивка в модуле с нестандартными настройками и, возможно, вам поможет перепрошивка.

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

В минимальный набор для подключения и прошивки модуля ESP8266 входит:

Красный — питание 3,3в

Черный — GND

Желтый — на стороне ESP8266 — RX, на стороне USB-TTL — TX

Зеленый — на стороне ESP8266 — TX, на стороне USB-TTL — RX

Оранжевый — CH_PD (CHIP ENABLE) — должен быть всегда подтянут к питанию

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

Розовый на правой схеме — нестабилизированное питание 5-8 вольт

4. Для старта модуля разорвите цепь GPIO0 — GND и можете подавать питание (причем именно в таком порядке: сначала убеждаемся, что GPIO0 «висит в воздухе», затем подаем питание на VCC и CH_PD)

Внимание! В вышеприведенных, реально работающих, примерах подключения ESP8266 используется подключение выводов ESP8266 «напрямую» к земле и питанию, либо «висячее в воздухе», как у нас никуда не подключен RESET, что является абсолютно неправильным и пригодно только для пары первых экспериментов, хотя и вполне работоспособно на подавляющем большинстве модулей. «Напрямую» к питанию подключается только вывод VCC, остальные выводы: CH_PD, RESET, GPIO0, GPIO2, должны быть подтянуты (pullup) к питанию (VCC) через резистор от 4,7 до 50 кОм. «Напрямую», к минусу (общему проводу) питания подключаем только GND, а GPIO0 подтягиваем (pulldown) тоже через резистор до 10k к GND для перевода модуль в режим загрузки прошивки. Если вы планируете и дальше экспериментировать с ESP8266, то сделайте , впрочем так же как и для любых других микроконтроллеров. Детальное описание pullup и pulldown выходит за рамки данной статьи, но вы сможете легко нагуглить описание правильного подключения портов ввода-вывода. « » подключение позволит вам избежать множества «чудес» и проблем и будет неизбежно необходимым при возникновении затруднений с запуском или перепрошивкой модуля ESP8266.

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

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

Схема подключения ESP8266 (без автозагрузки прошивки, прошиваемся предварительно установив перемычку BURN и перезагрузив модуль)

Схема подключения с поддержкой автозагрузки прошивки из Arduino IDE, UDK, Sming. Для Flash Download Tool и XTCOM_UTIL, возможно, потребуется отключение RTS/DTR. Если RTS и DTR вам отключать неудобно, то можно добавить в схему перемычки

На этих схемах не показано подключение ADC и свободных GPIO — их подключение будет зависеть от того, что вы захотите реализовать, но если хотите стабильности, то не забудьте притянуть все GPIO к питанию (pullup), а ADC к земле (pulldown) через подтягивающие резисторы.

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

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

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

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

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

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

Внимание! Даже эти схемы нельзя назвать «идеальными». Совершенству нет предела: удобно подключить второй USB-TTL к UART1 (c ESP8266 можно взять только GND и UTXD1, т.е. GPIO2) для подключения отладочного терминала (потребуется второй USB-TTL конвертер) — тогда можно будет прошивать модуль ESP8266 через UART0 без отключения терминала отладки на UART1. Неплохо будет подключить резисторы малого номинала к выводам обоих UART, поставить диод в линию RTS, добавить конденсатор в линию питания для гашения низкочастотных импульсов и т.д. Очень удобно, например, сделано в этой отладочной плате : на все GPIO подключены светодиоды, на ADC подключен фоторезистор, но жаль, что нет кнопки RESET и перемычка только одна на GPIO0.

Правильным будет сказать вам, что не существует идеальной и в тоже время универсальной схемы подключения ESP8266. Все дело в том, что очень многое зависит от прошивки, которую вы собираетесь туда залить. Вышеприведенные схемы рассчитаны на новичков, которые только начинают осваивать ESP8266, для экспериментов. Для реальных проектов, возможно, вам придется немного изменить схему. Например, для нужно подключить RTS к GPIO15, а CTS к GPIO13. Также в реальных проектах рекомендую уделить особое внимание питанию.

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

Если у вас под рукой не оказалось USB-TTL конвертера на 3,3в, но есть Arduino со встроенным USB-TTL конвертером, то можно использовать такую схему подключения

На что обратить внимание:

1. Arduino Reset подключен к GND (синий провод) чтобы не запускался микроконтроллер на Arduino, в данном виде мы используем Arduino как прозрачный USB-TTL конвертер

2. RX и TX подключены не «на перекрест», а прямо — RX — RX (зеленый), TX — TX (желтый)

3. Все остальное подключено так же, как и в предыдущих примерах

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

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

С подключением к последовательному порту придется немного поколдовать: в связи с разнообразием прошивок для ESP8266, подключение может осуществляться на разных скоростях. Нужную скорость можно определить путем простого перебора трех вариантов: 9600, 57600 и 115200. Как осуществить перебор? Подключаетесь в терминальной программе к вашему виртуальному последовательному порту выставив следующие параметры: 9600 8N1, затем перезагружаете модуль, отключив CH_PD (chip enable) от питания (USB-TTL при этом остается подключенным к USB) и снова включаете (т.е. просто передергиваете CH_PD, почему не передергиваем питание — читаем , также можно кратковременно замкнуть RESET на землю для перезагрузки модуля) и наблюдаете данные в терминале. Во-первых, светодиоды на ESP8266 должны гореть как описано в начале статьи в разделе . Во-вторых, в терминале вы должны увидеть «мусор» из разных символов, оканчивающийся строкой «ready». Если «ready» мы не видим, то переподключаемся терминалом на другой скорости и снова перезагружаем модуль.

На одном из вариантов скорости «ready» вы все-таки увидите — поздравляем, ваш модуль готов к работе. Если нет, то добро пожаловать — мы постараемся помочь, но предварительно почитайте .

Немного подробнее о «мусоре». Дело в том, что при старте прошивки, UART модуля ESP8266 переключается на скорость передачи 74 880 (вот такие забавные эти китайцы) выдает в UART отладочную информацию, затем переключает скорость порта на 115200 (ну или на 9600 или 57600 в зависимости от версии прошивки), так вот эта отладочная информация и видится нам как мусор, т.к. мы подключаемся к модулю на другой скорости. Можете подключится к ESP8266 на скорости 74 880 ( поддерживает эту скорость) и вы эту отладочную информацию увидите, будет что-то вроде этого:

wdt reset load 0x40100000, len 25052, room 16 tail 12 chksum 0x0b ho 0 tail 12 room 4 load 0x3ffe8000, len 3312, room 12 tail 4 chksum 0x53 load 0x3ffe8cf0, len 6576, room 4 tail 12 chksum 0x0d csum 0x0d

wdt reset

load 0x40100000 , len 25052 , room 16

tail 12

chksum 0x0b

ho 0 tail 12 room 4

load 0x3ffe8000 , len 3312 , room 12

Что делать дальше

Если у вас новый модуль, то, скорее всего, в нем прошита одна из старых кастомных AT прошивок. Скорее всего это какой-нибудь AI-THINKER AT v0.16 SDK v0.9.2. Проверить версию прошивку вы можете командой «AT+GMR», т.е. прямо в терминальной программе набираете AT+GMR без кавычек и жмете Enter. Модуль должен ответить «OK» и выдать версию прошивки (например, «0016000092» — в разных версиях AT прошивок формат вывода версии отличается). Управление модулем ESP8266 AT командами заслуживает отдельной статьи, однако вы легко сможете разобраться с этим и сами, воспользовавшись одним из наших справочников по AT командам:

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

Обновление прошивки ESP8266

Модуль ESP8266 замечателен тем, что не требует специального программатора — обновление прошивки производится на том же железе, на котором вы подключаете модуль ESP8266 к компьютеру, т.е. тоже через USB-TTL конвертер (ну или Arduino или RPi). Для обновление прошивки на модуле ESP8266 проделайте следующее:

1. Скачайте новую версию прошивки с нашего сайта из раздела (вот ссылка на на момент написания этой статьи)

2. Скачайте одну из утилит для прошивки ESP8266 в зависимости от вашей операционной системы из раздела с нашего сайта



Понравилась статья? Поделитесь ей