Аппаратное обеспечение для программирования модуля ESP8266
Модуль ESP8266 имеет 8 контактов. Его внешний вид и распиновка показаны на следующих рисунках.
Назначение контактов модуля ESP8266:
1 – земля, 8 – питание
По документации напряжение подается до 3,6 В – это важно учесть при работе с Ардуино, на которую обычно подают 5 В.
6 – RST, нужна для перезагрузки микроконтроллера при подаче на него низкого логического уровня.
4 – CP_PD, также используется для перевода устройства в энергосберегающий режим.
7 и 0 – RXD0 и TXD0, это аппаратный UART (последовательный порт), необходимый для перепрошивки модуля.
2 – TXD0, к этому контакту подключается светодиод, который загорается при низком логическом уровне на GPIO1 и при передаче данных по UART.
5 – GPIO0, порт ввода и вывода, также позволяет перевести устройство в режим программирования (при подключении порта к низкому логическому уровню и подачи напряжения).
3 – GPIO2, порт ввода и вывода.. К сожалению, модуль ESP8266 не является «дружественным» к макетной плате (breadboard friendly) и поэтому его нельзя на ней непосредственно закрепить
Также, в отличие от платы Arduino у него нет собственного драйвера для преобразования интерфейса USB в интерфейс последовательного порта (USB to Serial driver), следовательно, нам необходимо будет использовать FTDI USB to TTL Serial Adapter Module (модуль адаптера FTDI для преобразования USB в логику TTL) чтобы взаимодействовать с данным модулем. Прежде чем собирать схему нашего проекта убедитесь в том, что используемая вами плата FTDI может работать при напряжении 3.3V
К сожалению, модуль ESP8266 не является «дружественным» к макетной плате (breadboard friendly) и поэтому его нельзя на ней непосредственно закрепить. Также, в отличие от платы Arduino у него нет собственного драйвера для преобразования интерфейса USB в интерфейс последовательного порта (USB to Serial driver), следовательно, нам необходимо будет использовать FTDI USB to TTL Serial Adapter Module (модуль адаптера FTDI для преобразования USB в логику TTL) чтобы взаимодействовать с данным модулем. Прежде чем собирать схему нашего проекта убедитесь в том, что используемая вами плата FTDI может работать при напряжении 3.3V.
Итак, как мы знаем, наш модуль ESP8266 мы должны запитывать от напряжения 3.3V. Но поскольку во время загрузки программного обеспечения (прошивки) модуль может потреблять ток до 0.8A, то он может работать некорректно если мы запитаем его от платы адаптера FTDI, поэтому мы соберем отдельную цепь для его питания на основе регулятора напряжения LM317.
Пример Arduino: мигалка
Чтобы убедиться, что ядро ESP8266 Arduino и NodeMCU правильно настроены, мы загрузим самый простой скетч – The Blink!
Для этого теста мы будем использовать встроенный светодиод. Как упоминалось ранее в этом руководстве, вывод платы D0 подключен к встроенному синему светодиоду и программируется пользователем. Отлично!
Прежде чем мы перейдем к загрузке скетча и игре со светодиодом, мы должны убедиться, что в Arduino IDE выбрана правильная плата. Откройте Arduino IDE и выберите пункт NodeMCU 0.9 (ESP-12 Module) в меню Инструменты → Плата.
Рисунок 9 – Выбор отладочного модуля NodeMCU в Arduino IDE
Теперь подключите ESP8266 NodeMCU к компьютеру через USB-кабель micro-B. Как только плата будет подключена, ей должен быть назначен уникальный COM-порт. На компьютерах с Windows это будет что-то вроде COM#, а на компьютерах Mac/Linux он будет в виде /dev/tty.usbserial-XXXXXX. Выберите этот последовательный порт в меню Инструменты → Порт. Также выберите скорость загрузки: 115200
Рисунок 10 – Выбор COM порта в Arduino IDE
Предупреждение
Уделите больше внимания выбору платы, выбору COM порта и скорости загрузки. В случае некорректных настроек при загрузке новых скетчей вы можете получить ошибку espcomm_upload_mem.
После выполнения всех настроек попробуйте пример скетча, приведенного ниже.
После загрузки кода светодиод начнет мигать. Возможно, чтобы ваш ESP8266 начал работать со скетчем, вам придется нажать кнопку RST.
Рисунок 11 – Рабта тестового скетча Blink на ESP8266 NodeMCU
Подключение оборудования к вашему 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
Вы можете использовать Arduino UNO для запуска кода ESP8266 ESP-01. При загрузке кода следуйте той же процедуре, что во втором пункте, — удерживайте кнопку «Загрузки» нажатой, когда вы нажимаете один раз на сброс, а после отпускаете кнопку Flash.
- ARDUINO → ESP8266 ESP-01
- GND → GND
- TX → TX
- RX → RX
- Кнопка Reset → RST
- Кнопка Flash → GPIO0
Поиск адресов DS18B20 в шине
Мы знаем, что каждому DS18B20 назначен уникальный 64-битный адрес, помогающий отличать их друг от друга. Сначала мы найдем этот адрес, чтобы пометить каждый датчик соответствующим образом. Затем этот адрес можно использовать для считывания показаний каждого датчика по отдельности.
Следующий скетч обнаруживает все датчики DS18B20, присутствующие на шине, и выводит их адреса на шине 1-Wire в монитор последовательного порта.
Чтобы идентифицировать каждый датчик по его адресу, необходимо подключать только один датчик за раз. Затем вы можете пометить каждый датчик.
Теперь откройте монитор последовательного порта. У вас должно получиться примерно следующее.
Рисунок 5 – Нахождение адресов 1-Wire всех датчиков DS18B20 на шине
Скопируйте все адреса по мере необходимости в следующий скетч.
Некоторые правила работы с языком Lua на NodeMCU
1. Не пишите длинные скрипты. Размер памяти ESP8266 не бесконечен. Разбивайте программу на функциональные модули и делайте их в виде отдельных скриптов, запуская их с помощью dofile(). Например, код подключения к Wifi:
можно вынести в отдельный скрипт «wifi.lua» и выполнить его из основного скрипта командой dofile(«wifi.lua»).
2. Переменные, которые используются только в текущем скрипте объявляйте как local. В конце скрипта, когда переменная уже не нужна, присваивайте ей значение nil и явно вызывайте сборщик мусора collectgarbage()
Желаю успехов.
Смотри также:
- ESP8266 NodeMCU Первое знакомство. Делаем WiFi розетку
- ESP8266 NodeMCU. PWM
- ESP8266 NodeMCU. ADC
- ESP8266 NodeMCU. timer, rtc, SNTP, cron
- ESP8266 NodeMCU. Файловая система + SD карточка
- ESP8266 NodeMCU. UART
- GPS-трекер на базе ESP8266
- GPS-трекер + Дисплей SSD1306
- ESP8266 NodeMCU. SSD1306. U8G
- ESP-01 (ESP8266) upgrade flash memory to 4MB
- ESP8266 NodeMCU. I2C. BME280/
- Метеостанция на ESP8266
Краткое описание языка Lua
Язык Lua обладает простым синтаксисом и мощными конструкциями описания данных, которые основаны на массивах и расширяемой семантике. Этот мощный язык программирования используется для создания программного обеспечения, расширения различных игр. В отличие от остальных языков Lua обладает более гибкими и более мощными конструкциями.
Мигание светодиодами на Lua
Можно рассмотреть простейшую схему – мигание светодиодом. Этот пример поможет изучить работы с контактами GPIO. Светодиод нужно подключить как показано на схеме.
Затем нужно записать следующий скетч в левое окно ESPlorer:
gpio.mode (pin_number, gpio.OUTPUT) // установка рабочего режима на выход
gpio.write (pin_number, gpio.HIGH)// установка высокого уровня
gpio.write (pin_number, gpio.LOW)// установка низкого уровня
gpio.serout (1, gpio.HIGH, <+990000,990000>, 10, 1) // установка мигания светодиодом 10 раз
После нужно сохранить скрипт с названием init.lua. Сразу после этого начнется автоматическая загрузка написанного кода в отладочную плату и его выполнение. Если операция выполнена успешно, отладочная плата начнет мигать светодиодом.
Важно отметить, что плата самостоятельно выполняет скрипт, подключение к компьютеру нужно только для подачи питания
Товары
- Технические характеристики модуля
- Примеры использования (скриптовый язык Lua)
- Примеры использования (скетч в среде программирования Arduino IDE)
NodeMCU Lua – плата на основе популярного модуля ESP8266 (рисунок 1) предназначена для создания IoT устройств (устройств Интернета вещей), которым необходима передача или получение данных в интернет с помощью технологии Wi-Fi.
Динамическая загрузка данных датчиков с помощью AJAX
Если ваша веб-страница много весит, то полное ее обновление не слишком практично. Лучше использовать асинхронный Javascript и Xml (AJAX), чтобы мы могли запрашивать данные с сервера асинхронно (в фоновом режиме), не обновляя страницу.
Для выполнения AJAX на веб-страницах в JavaScript обычно используется объект . Он тихо выполняет GET-запрос на сервер и обновляет элемент на странице. AJAX – это не новая технология или другой язык, а просто существующие технологии, используемые по-новому. Кроме того, AJAX также позволяет:
- запрашивать данные с сервера после загрузки страницы;
- получать данные с сервера после загрузки страницы;
- отправлять данные на сервер в фоновом режиме.
Ниже приведен скрипт AJAX, который мы будем использовать. Поместите этот скрипт непосредственно перед закрывающим тегом .
Скрипт начинается с тега , так как AJAX-скрипт – это не что иное, как javascript, и поэтому нужно писать его в теге . Чтобы данная функция вызывалась повторно, мы будем использовать функцию javascript . Она принимает два параметра: функцию для выполнения и интервал времени (в миллисекундах), через который выполнять указанную функцию.
Сердцем этого скрипта является функция . Внутри этой функции создается объект . Данный объект используется для запроса данных с веб-сервера.
Функция вызывается каждый раз, когда изменяется . Свойство хранит состояние . Возможны следующие значения:
- 0: запрос не инициализирован;
- 1: установлено подключение к серверу;
- 2: запрос получен;
- 3: обработка запроса;
- 4: запрос завершен, и ответ готов.
Свойство содержит статус объекта . Возможны следующие значения:
- 200: OK;
- 403: запрещено;
- 404: страница не найдена.
Когда равен 4, а – 200, ответ готов. Теперь обновляется содержимое элемента (содержащего значения температуры).
Затем HTTP-запрос инициируется с помощью функций и .
Как проверить 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 и если все подключено правильно то, скорее всего, у вас неисправный модуль, но есть надежда, что прошивка в модуле с нестандартными настройками и, возможно, вам поможет перепрошивка.
Код
1 /********* 2 Руи Сантос 3 Более подробно о проекте на: http://randomnerdtutorials.com 4 *********/ 5 6 int pin = 2; 7 8 void setup() { 9 // Переключаем контакт GPIO2 в режим вывода данных (OUTPUT): 10 pinMode(pin, OUTPUT); 11 } 12 13 // Код в блоке loop() будет повторяться вновь и вновь: 14 void loop() { 15 digitalWrite(pin, HIGH); // включаем светодиод 16 // («HIGH» - это уровень напряжения) 17 delay(1000); // ждем секунду 18 digitalWrite(pin, LOW); // выключаем светодиод, 19 // переключая напряжение на «LOW» 20 delay(1000); // ждем секунду 21 }
См.также
AliExpress — глобальная виртуальная (в Интернете) торговая площадка, предоставляющая возможность покупать товары производителей из КНР
Подключаем реле с нагрузкой
Внимание! Напряжение более 40 Вольт опасно для жизни человека! Будьте внимательны и аккуратны, собирая схему и подключая бытовые приборы. Не прикасайтесь к токоведущим частям
А теперь вместо светодиода подключим модуль реле, а в качестве нагрузки — скажем лампу, обогреватель, компрессор для аквариума, вентилятор и т.п.
При подключении реле могут быть нюансы. Если блок реле с оптической развязкой (с оптопарой), то, скорее всего, Вам ничего переделывать не придется. Если блок реле без оптической развязки, как у меня, тогда придется переделать работу с GPIO, поскольку во первых реле включается низким уровнем, а не высоким, а во вторых высокий уровень ESP8266 – это 3.3В, для 5-ти вольтового блока реле этого не достаточно, поэтому мне пришлось настроить выход как OPENDRAIN, после чего все заработало как надо.
Финальная версия скрипта выглядит так:
Теперь мы можем включать и выключать “розетку” с мобильного телефона с помощью программы RoboRemoFree или с помощью браузера. Разумеется, с обычного компьютера через браузер тоже можно управлять.
Все это хорошо, но что дальше? Если у нас будет 5, 10, 20 подобных устройств? Как их объединить, чтобы не надо было подключаться к каждому устройству отдельно. Для этого существует протокол MQTT, но это будет отдельная тема. А пока мы изучим возможности ESP8266 и NodeMCU.
Подключение нескольких датчиков DS18B20 ESP8266 NodeMCU
Подключить датчики DS18B20 к ESP8266 NodeMCU довольно просто.
Рисунок 1 – Распиновка датчика температуры DS18B20 в корпусе TO-92 и в водонепроницаемом корпусе
Начните с параллельного соединения всех датчиков DS18B20, то есть соединения всех выводов GND, затем всех выводов VDD, и последнее, всех сигнальных выводов. Затем подключите VDD к выходу 3.3V на NodeMCU, GND – к GND на NodeMCU, и сигнальных выводов к цифровому выводу D2 на ESP8266 NodeMCU.
Затем, чтобы обеспечить стабильность передачи данных, необходимо добавить один подтягивающий резистор 4,7 кОм между сигнальной шиной и шиной питания.
Рисунок 2 – Подключение нескольких датчиков температуры DS18B20 к ESP8266
Web интерфейс
Есть и другой путь — можно сделать Web интерфейс и управлять светодиодом еще и через браузер.
Тот же скрипт + Web интерфейс:
Небольшое пояснение как работает web-сервер вообще, и наш скрипт в частности. Стандартный порт для web-сервера — 80. Т.е. когда Вы в браузере набираете http://192.168.4.1/, то браузер подключается к серверу (192.168.4.1) на порт 80 и отправляет запрос. Запрос выглядит примерно так:
GET / HTTP / 1.1 Host: 192.168.4.1 User-Agent: Mozilla / 5.0 (Windows NT 5.1; rv: 2.0.1) Gecko / 20100101 Firefox Accept: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8 Accept-Language: ru-RU, ru; q = 0.8, en-US; q = 0.5, en; q = 0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Upgrade-Insecure-Requests: 1
Для нас представляет интерес первая строка запроса: «GET / HTTP/1.1». В ней указан URL. Если в браузере набрать http://192.168.4.1/on , тогда в первой строке запроса будет «GET /on HTTP/1.1». А если в браузере набрать http://192.168.4.1/off тогда будет «GET /off HTTP/1.1». Именно эту строку и анализирует скрипт и в зависимости от полученного URL включает или отключает светодиод.
Далее скрипт отправляет html страничку. Но после отправки нужно разорвать подключение. Поскольку отправка занимает некоторое время, а ждать окончания отправки технически глупо, на событие «sent» (отправлено) подключим функцию со строкой sck:close(). Это делается в строке: sck:on(«sent», function(sck) sck:close() end). После чего выполняется отправка html страницы sck:send(response). Скрипт продолжает работу. Когда ответ будет полностью отправлен, сработает sck:close().
Страницы большого размера таким образом отправить не получится. Весомое содержимое нужно отправлять кусками. Подробнее об этом будет рассказано в другой статье.
Загружаем скрипт «init.lua»
На этом этапе ESP8266 (напрямую или через FTDI-программатор) должна быть подключена к ПК. Если подключена, вернитесь в IDE ESPlorer. Посмотрите в правый верхний угол программы и выполните следующие действия:
- Нажмите на кнопку Refresh;
- Выберите COM-порт, к которому подключена ESP8266 (напрямую или через FTDI-программатор);
- Задайте скорость передачи данных на 9600 бод;
- Кликните на кнопку Open;
Затем посмотрите в левый верхний угол IDE ESPlorer и выполните следующее:
- Выберите вкладку NodeMCU+MicroPython;
- Выберите вкладку Scripts;
- Создайте новый файл под названием «init.lua»;
Скопируйте Lua-скрипт (который мы написали в предыдущем разделе) в окно кода (как показано на скриншоте ниже):
Следующий шаг – сохранить код на ESP8266. Для этого нажмите на кнопку Save to ESP, которая находится в левом нижнем углу IDE ESPlorer.
В области справа будут показаны команды, которые будут отправлены ESP8266. Они должны быть примерно такими же, как на скриншоте ниже:
Примечание: Если вам нужно удалить файл «init.lua» с ESP8266, то это делается очень просто. Просто впишите file.remove(“init.lua”) и нажмите на кнопку Send (см. скриншот выше). Если вам нужно удалить все файлы, хранящиеся на ESP8266, воспользуйтесь командой file.format().
Оптимальное подключение ESP8266
Подключение ESP8266 | Примечание | USB-TTL |
---|---|---|
VCC | ESP8266 подключайте к внешнему источнику питания >300мА, 3,3V | |
GND | все контакты GND должны быть соединены вместе: ESP8266, USB-TTL и источника питания | GND |
TX (UTXD) | RX | |
RX (URXD) | TX | |
GPIO0 | подтягивающий к питанию резистор 10k | DTR (если на вашем USB-TTL не разведен пин DTR, то вам придется вручную переключать GPIO0 на землю для перевода ESP8266 в режим прошивки) |
RESET (RSBT, REST) | подтягивающий к питанию резистор 10k, также можете добавить кнопку, соединяющую RESET и GND для ручного сброса модуля | RTS (если на вашем USB-TTL не разведен пин RTS, то вам придется вручную перезагружать модуль ) |
CH_PD (CH_EN) | подтягивающий к питанию резистор 10k | |
GPIO15 (MTDO) | подтягивающий к земле резистор 10k (для тех модулей, где выведен пин GPIO15) |
|
GPIO2 | подтягивающий к питанию резистор 10k (на схеме не показан, но рекомендуется для увеличения стабильности) |
|
GPIO16 | для успешного выхода из режима Deep Sleep необходимо соединить пины ESP8266 GPIO16 и RESET через резистор 470 Ом (на схеме не показан) |
Примечания.
1. Не на всех модулях выведены все пины. Перед приобретением модуля ознакомьтесь с видами модулей и их распиновкой.
2. Если на вашем USB-TTL конвертере выведены пины CTS и DSR — для автозагрузки прошивки они вам не помогут, т.к. работают только на вход.
3. Для стабильной работы ESP8266 требуется источник стабилизированного питания 3,3 вольт, ток более 250 миллиампер. Использование питания от USB-TTL конвертера может привести к нестабильности в работе.
Минимальное подключение ESP8266
Минимальное подключение ESP8266 (повышенная стабильность)
NodeMCU на базе esp8266
Большим преимуществом платы является ее малое энергопотребление. Нередко их используют в схемах с автономным питанием. На плате расположены всего 11 портов общего назначения, из них некоторые имеют специальные функции:
- D1 и D2 – для интерфейса I2C/ TWI;
- D5-D8- для интерфейса SPI;
- D9, D10 – для UART;
- D1-D10 – могут работать как ШИМ.
Платформа имеет современное API для аппаратного ввода и вывода. Это позволяет сократить количество действий во время работы с оборудованием и при его настройке. С помощью прошивки NodeMCU можно задействовать весь рабочий потенциал для быстрой разработки устройства.
Подключение NodeMCU к компьютеру
Для начала работы с NodeMcu нужно подключить плату к компьютеру. Первым шагом будет установка драйвера CP2102 и открытие Arduino IDE. Затем нужно найти в «Файл» – «Настройки» и в окно «дополнительные ссылки для менеджера плат» вставить ссылку http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json.
После этого в меню «документы» – «плата» «менеджер плат» выбрать «esp8266» и установить последнюю версию. После проделанных действий в меню «инструменты» – «плата» нужно найти NodeMCU.
После того, как все необходимые данные будут установлены и скопированы, можно будет начать работать.
Подключение ESP8266 через RaspberryPi
Да, можно и «из пушки по воробьям», если под рукой нет вообще никакого USB-TTL конвертера. Подключение через малинку аналогично Arduino, но не такое удобное, т.к. дополнительно потребуется стабилизатор питания на 3,3 вольта. RX, TX, GND малинки подключаем к ESP8266, VCC и GND берем со стабилизированного источника питания на 3,3 вольта
Обратите внимание на то, что необходимо соединить GND всех устройств: малинки, стабилизатора и ESP8266. Брать 3,3 вольта питания с малинки для ESP8266 я лично не пробовал, поэтому вам предлагать такой вариант не буду
Если встроенный в вашу версию малины стабилизатор держит до 300 миллиампер дополнительной нагрузки, то подключение ESP8266 вполне возможно. Если сами захотите рискнуть — пожалуйста.
Способы программирования ESP8266
Существует два основных способа работы с модулем ESP8266. Первый – это использование AT команд. Второй – использование Arduino IDE. Давайте более подробно разберем эти способы.
Все модули ESP8266 поставляются с завода с заранее загруженной в них прошивкой (default firmware). Фактически, прошивка модуля – это набор SDK+API. Эта прошивка (встроенная программа) и позволяет производить программирование модуля ESP8266 с помощью AT команд.
Второй способ непосредственного программирования модуля ESP8266 – это использование интегрированной среды Arduino IDE (сама плата Arduino при этом не нужна) со всеми ее библиотеками.
Любой проект на ESP8266 можно реализовать с помощью любого из этих двух методов. Но если вы будете использовать Arduino IDE для программирования модуля ESP8266 вы, скорее всего, уже не сможете использовать AT команды потому что исходный SDK (software development kit, набор инструментальных средств разработки программного обеспечения) модуля может быть поврежден. В этом случае вы должны будете во время прошивки модуля ESP использовать настройки по умолчанию.
Примеры использования (скриптовый язык Lua)
Рисунок 2. Окно программы ESPlorer.
Напишем скрипт создания простейшего веб-сервера, чтобы при обращении к модулю по HTTP с него выдавалась информация. Создадим для этого файл server1.lua и запишем в него код, представленный в листинге 1. Листинг 1 Сохраним файл server1.lua в модуле и запустим. Для проверки работы севера подключимся к точке доступа модуля и наберем в браузере ее адрес: http://192.168.4.1 (рисунок 3). Для запуска сервера при загрузке модуля необходимо в конце нашего autorun-файла init.lua добавить строку: dofile(server1.lua)
Рисунок 3. Обращение к серверу на NodeMCU
Обновление прошивки ESP8266
Модуль ESP8266 замечателен тем, что не требует специального программатора — обновление прошивки производится на том же железе, на котором вы подключаете модуль ESP8266 к компьютеру, т.е. тоже через USB-TTL конвертер (ну или Arduino или RPi). Для обновление прошивки на модуле ESP8266 проделайте следующее:
для Win систем подойдет XTCOM UTIL (удобно работать, если прошивка состоит из одного файла), мультиплатформенный esptool (требуется python, нужно указывать параметры в командной строке), FLASH DOWNLOAD TOOL (много настроек, удобно прошивать прошивки, состоящие из нескольких файлов, позволяет «собрать» прошивку в один файл из нескольких). Также вы найдете и другие программы для прошивки ESP8266 — попробуйте разные и пользуйтесь той, которая вам больше понравится.
3. Отключите от последовательного порта вашу терминальную программу
4. Отключите CH_PD от питания, подключите GPIO0 модуля к GND, подключите обратно CH_PD модуля.
5. Запускайте программу для прошивки модуля и загружайте новую прошивку в модуль ESP8266.
Загрузка прошивки в модуль обычно осуществляется на скорости 115200, но режим прошивки модуля поддерживает автоопределение скорости и прошивка может быть осуществлена на скорости от 9600 и выше. Максимальная скорость зависит от многих факторов (вашего USB-TTL конвертера, длины проводов и прочего) и может быть определена экспериментально на конфигурации именно вашего оборудования.
Все последние версии прошивок загружаются с нулевого адреса (0x00000).
В статье Обновление прошивки ESP8266 подробно описана загрузки прошивки в модуль с помощью программы XTCOM_UTIL.
Использованная литература