Nodemcu 8266: NodeMCU (ESP8266) для начинающих: что такое, как подключить

Содержание

Архивы NodeMCU – esp8266

Основным компонентом или, скорее, само понятие Интернет вещей, о том, как подключать различные устройства к сети, так что бы они оба могли отправлять данные и получать команды. Различные технологии для решения этой проблемы из последнего это: Bluetooth, Wi-Fi, NFC, и т.д … которые уже существуют, но большинство из них сложны в установке и часто нуждаются в дополнительных аппаратных средств, таких как локальный сервер управления или приборы подключенные к ним.

Здесь я покажу вам, как создать и сконфигурировать простой автономный выключатель с управлением по Wi-Fi, которая может отправлять данные об окружающей среде в интернет и получать ДУ (дистанционное управление), чтобы включить / выключить переключатель. Этот проект, который может быть построен менее чем за 10 или 15 долларов США делает следующее: Читать далее →

Запись опубликована автором victor в рубрике ESP8266 для начинающих, NodeMCU, Все о ESP8266 с метками esp8266, NodeMcu.

ESPlorer

LUA, Python и AT команды в одном месте
Требуется установка последней версии JAVA

Поддержка платформ

  • Windows(x86, x86-64)
  • Linux(x86, x86-64, ARM soft & hard float)
  • Solaris(x86, x86-64)
  • Mac OS X(x86, x86-64, PPC, PPC64)

Чем отличается от других программ для ESP8266

  • Работает на множестве платформ
  • Поддержка нескольких открытых файлов
  • Подсветка кода LUA, python
  • Undo/Redo
  • Цветовые темы редактора: dark, Eclipse, IDEA, Visual Studio
  • Автозавершение кода по CTRL+Space
  • Умная» отправка файлов, с ожиданием ответа (без тупой отправки с фиксированной паузой между строками)
  • Поддержка нескольких прошивок одновременно: NodeMCU, AT, MicroPython (в процессе), Frankenshtein (в процессе)

Обсуждение на нашем форуме
Обсуждение на esp8266.com English

Скачать последнюю версию

Запись опубликована автором victor в рубрике ESP8266 для начинающих, ESPlorer, NodeMCU, Все о ESP8266 с метками esp8266, ESPlorer, MicroPython, NodeMcu.

LuaUploader

О прошивке для ESP8266 NodeMCU мы уже публиковали ранее материал, но хочется вернуться к этой теме снова. Во-первых, проект активно развивается, хоть и использует все еще SDK 0.9.2, во-вторых, появилось множество рабочих примеров скриптов, в-третьих, появились удобные инструменты, которые позволяют не только в один клик загружать lua-скрипты в ESP8266, но и много чего еще. В-четвертых, NodeMCU, на сегодняшний день пожалуй, самая стабильная прошивка из всех существующих. Ну и в-пятых, важным моментом я бы выделил появление модулей. Пока на сегодняшний день существует единственный модуль для цифрового датчика температуры DS18B20 от разработчиков NodeMCU. Оцените легкость использования:

t=require(«ds18b20») t.setup(9) print(t.read(nil,t.C))

t=require(«ds18b20»)

t. setup(9)

print(t.read(nil,t.C))

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

Не обойду стороной и появление новой утилиты для прошивки ESP8266. Особенностей две: автоматом определяет GPIO0, автор тот же, что и NodeMCU. Код, соответственно, так же закрыт.

NodeMCU-flasher

LuaUploader_1.0.2.zip

NodeMCU Flasher win32/win64

nodemcu

Раздел на нашем форуме, посвященный NodeMCU

ESPlorer — IDE для NodeMCU

P.S. Уже после выхода статьи появилась еще одна приятная новость: в NodeMCU увеличилось число поддерживаемых таймеров до 7.

Запись опубликована автором victor в рубрике ESP8266 для начинающих, NodeMCU, Все о ESP8266 с метками esp8266, ESPlorer, NodeMcu, NodeMCU flasher.

esp8266 nodemcu

Глючность прошивок с AT командами многих разочаровывает, в том числе и меня. Но я оптимистично смотрю в будущее и вижу … NodeMcu. Итак, что ЭТО может?  Эта прошивка может интерпретировать команды языка Lua. Причем не просто команды в терминале, как AT команды, а может создавать файлы во флеш памяти ESP8266 и выполнять их. Autorun, разумеется тоже есть — здесь это init.lua. С помощью lua-команд мы можем: Читать далее →

Запись опубликована автором victor в рубрике ESP8266 для начинающих, NodeMCU, Все о ESP8266 с метками esp8266, ESP8266 firmware, ESPlorer, NodeMcu.

Мы постарались собрать в одном месте всю доступную документацию, прошивки, примеры для esp8266

Запись опубликована автором victor в рубрике ESP8266 Espressif SDK, AT прошивки, ESP8266 для начинающих, ESP8266 и железные вопросы, ESPlorer, MicroPython, NodeMCU, Все о ESP8266 с метками datasheet, esp8266, ESP8266 купить.

Nodemcu esp8266 в Мурманске: 28-товаров: бесплатная доставка, скидка-60% [перейти]

Партнерская программаПомощь

Мурманск

Каталог

Каталог Товаров

Одежда и обувь

Одежда и обувь

Стройматериалы

Стройматериалы

Здоровье и красота

Здоровье и красота

Текстиль и кожа

Текстиль и кожа

Детские товары

Детские товары

Продукты и напитки

Продукты и напитки

Электротехника

Электротехника

Дом и сад

Дом и сад

Мебель и интерьер

Мебель и интерьер

Промышленность

Промышленность

Сельское хозяйство

Сельское хозяйство

Все категории

ВходИзбранное

Nodemcu esp8266

690

842

Wi-Fi контроллер ESP8266 Lua NodeMCU CP2102 Тип: Микроконтроллер, Размер: Длина 5. 000 Ширина 3.000

В МАГАЗИНЕще цены и похожие товары

520

800

Контроллер Wi-Fi ESP8266 NodeMCU V3 Lolin Тип: Микроконтроллер, Размер: Длина 15.000 Ширина 10.000

В МАГАЗИНЕще цены и похожие товары

472

800

Контроллер Wi-Fi ESP8266 NodeMCU WeMos Тип: Микроконтроллер, Размер: Длина 15.000 Ширина 10.000

В МАГАЗИНЕще цены и похожие товары

410

410

Контроллер Wi-Fi ESP8266 NodeMCU V3 Тип: Электронный модуль, Размер: Длина 10.000 Ширина 10.000

В МАГАЗИНЕще цены и похожие товары

1 329

1329

NodeMCU V3, Модуль разработки с Wi-Fi на базе чипсета ESP8266 (в комплекте 3шт) Тип: Электронный

В МАГАЗИНЕще цены и похожие товары

422

489

Беспроводной модуль NodeMCU V3 Esp8266 Ch440 Lua WI-FI & Плата-Контроллер последовательного порта CP2102

В МАГАЗИНЕще цены и похожие товары

449

731

Модуль ESP8266-12F NodeMcu WeMos D1 mini Тип: Электронный модуль, Микроконтроллер, Размер: Длина

В МАГАЗИНЕще цены и похожие товары

545

770

Wi-Fi контроллер ESP8266 NodeMCU Тип: Микроконтроллер, Размер: Длина 17. 000 Ширина 13.000 Высота

В МАГАЗИНЕще цены и похожие товары

Модуль для IoT /интернет вещей/, NodeMcu v3 Lua WI-FI ESP8266 Ch440

В МАГАЗИНЕще цены и похожие товары

10 600

Интернет вещей. Набор для экспериментов с контроллером NodeMCU ESP8266

В МАГАЗИНЕще цены и похожие товары

Контроллер NodeMCU совместимый на ESP8266 32M (CP2102)

ПОДРОБНЕЕЕще цены и похожие товары

Контроллер NodeMCU Lua V2 совместимый на ESP8266 (CP2102)

ПОДРОБНЕЕЕще цены и похожие товары

Контроллер NodeMCU совместимый на ESP8266 32M (Ch440G)

ПОДРОБНЕЕЕще цены и похожие товары

Контроллер NodeMCU Lua V3 совместимый на ESP8266 (Ch440G)

ПОДРОБНЕЕЕще цены и похожие товары

186

274

Модуль ESP-12F Nodemcu Esp8266, Wi-Fi, для Arduino

ПОДРОБНЕЕЕще цены и похожие товары

Модуль Wi-Fi ESP8266 с USB, NodeMCU Производитель: USB

ПОДРОБНЕЕЕще цены и похожие товары

390

480

Wi-Fi контроллер ESP8266 NodeMCU

ПОДРОБНЕЕЕще цены и похожие товары

Новый беспроводной модуль Ch440 NodeMcu V3 Lua WIFI Интернет вещей макетная плата на основе ESP8266

ПОДРОБНЕЕЕще цены и похожие товары

Wi-Fi модуль Keyes ESP8266-12F, умная плата разработки NodeMCU Lua LoT, объединение Wi-Fi MAC/BB/RF/PA/LNA

ПОДРОБНЕЕЕще цены и похожие товары

113

184

Мини NodeMcu Lua 4M Bytes WiFi Интернет вещей, макетная плата на основе ESP8266 ESP-12F 11, цифровой контакт для Arduino

ПОДРОБНЕЕЕще цены и похожие товары

244

488

WeMos- D1-Mini V3. 0 NodeMcu 4 Мб байт WIFI Интернет вещей макетная плата на основе ESP8266 для arduino- Nodemcu Прямая доставка

ПОДРОБНЕЕЕще цены и похожие товары

131

328

ESP8266 ESP-12 ESP-12F ESP12F Ch440G Ch440 V2 USB WeMos D1 мини WI-FI макетная плата NodeMCU Lua IOT доска 3,3 V с булавками

ПОДРОБНЕЕЕще цены и похожие товары

Nodemcu Lua Wi-Fi CP2102 (ESP8266)

ПОДРОБНЕЕЕще цены и похожие товары

116

191

Wemos D1 Mini V3.0.0 Беспроводной Wi-Fi Интернет вещей макетная плата на основе ESP8266 Ch440 Ch440G для Nodemcu V2 MicroPython

ПОДРОБНЕЕЕще цены и похожие товары

198

215

NODEMCU LUA WeMos D1 R3 простые модели WiFi для Arduino UNO R3 плата ESP8266 Тип: плата

ПОДРОБНЕЕЕще цены и похожие товары

Модуль Wi-Fi ESP8266, NodeMCU Производитель: Не определен

ПОДРОБНЕЕЕще цены и похожие товары

252

526

C5AE D1-Mini ESP8266 NodeMCU WiFi Интернет вещей 4M Bytes макетная плата-Wemos Тип: плата

ПОДРОБНЕЕЕще цены и похожие товары

165

275

Беспроводной модуль ESP32 NodeMCU-32S Lua WIFI Интернет вещей макетная плата на основе ESP8266 ESP-12E с антенной Pcb

ПОДРОБНЕЕЕще цены и похожие товары

характеристики, с чего начать или первый опыт.

Настройка программного обеспечения ESP8266 в Arduino IDE

Содержание

  1. ESP8266 и прочее Arduino
  2. ESP8266 ESP-07 вместе с Adapter Plate
  3. Добавление поддержки платы ESP8266 в программное обеспечение Arduino
  4. Проверка собранной схемы
  5. Перевод ESP-8266 в режим загрузки обновления
  6. Цели и причины
  7. Подключение оборудования
  8. Установка прошивки
  9. Последовательность шагов для прошивки ESP8266
  10. Что такое OTA программирование ESP8266?
  11. Программируем ESP8266 в Arduino IDE

ESP8266 и прочее Arduino

ESP8266 — это микроконтроллер китайского производителя Espressif с интерфейсом Wi-Fi. Помимо Wi-Fi, микроконтроллер отличается отсутствием флеш-памяти в SoC, программы пользователя исполняются из внешней флеш-памяти с интерфейсом SPI.

У устройства есть ряд особенностей:

  • Он не имеет корпуса, но при этом имеет малые габариты.
  • На его борту порядка десяти управляемых пинов (контактов) для подключения внешней периферии.
  • Нет встроенного блока питания, питание осуществляется от 5В.

ESP8266 ESP-07 вместе с Adapter Plate

Инструкция подключения ESP-07 (ESP-12) через UART-конвертер:

  • Красный — питание 3,3в;
  • Черный — GND;
  • Желтый — на стороне ESP8266 — RX, на стороне USB-TTL — TX;
  • Зеленый — на стороне ESP8266 — TX, на стороне USB-TTL — RX;
  • Оранжевый — CH_PD (CHIP ENABLE) — должен быть всегда подтянут к питанию;
  • Синий — GPIO0 — подключен через выключатель к земле для включения режима перепрошивки модуля. Для обычного старта модуля GPIO0 можно оставить никуда не подключенным;
  • Серый — GPIO15 (MTDO, HSPICS) этот пин необходимо притянуть к земле;
  • Если подключаете к Ардуино, то RX-RX, а TX-TX.

С помощью паяльника были объединены ESP-07 и адаптер. Адаптер рекомендую поскольку он в дальнейшем облегчает соединение беспаечным методом с помощью макетной платы и проводов. В данном случае для питания я использовал понижающий DC-DC преобразователь из Китая. В наличии были датчики DS18B20, их и было решено подключать.
HomesSmart сразу ставить не хотелось и выбор пал на такой вот пример. Не буду перепечатывать схему и код — они практически такие же. Заработало не сразу, но с гуглом и бубном завелось и полетели данные на Народный мониторинг.

Загружал скрипт через ESplorer.

Было на Ардуино

Стало на ESP8266

Жду компактный модуль питания 220AC — 3,3DC чтобы оптимизировать количество проводов.

Добавление поддержки платы ESP8266 в программное обеспечение Arduino

Скачайте и установите последнюю версию программного обеспечения Arduino IDE (скачать) на свой компьютер, если вы этого еще не сделали. Откройте приложение Arduino и перейдите к пункту меню:

Arduino -> Настройки (Arduino -> Preferences)

По умолчанию приложение Arduino поддерживает чипы, используемые на официальных платах Arduino, но не ESP8266.

Эти платы могут быть запрограммированы «из коробки», потому что приложение Arduino уже знает о каждой и ее свойствах. Одна из замечательных особенностей Arduino заключается в том, что вы можете добавить поддержку других плат, и все, что вам нужно сделать, это сообщить Arduino, где можно найти их свойства.

Первым шагом этого процесса является предоставление URL-адреса менеджеру дополнительных плат. В текстовое поле в нижней части окна настроек (см. фото выше) вставьте именно этот текст:

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

Нажмите кнопку ОК, чтобы закрыть окно настроек. Теперь наше приложение Arduino знает, где найти информацию о платах ESP8266 в целом.

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

Инструменты -> Плата: (название платы) -> Диспетчер плат (Tools -> Board:(board name) -> Boards Manager)

Подождите некоторое время, пока менеджер плат загрузит содержимое, а затем начните вводить «ESP8266» в строку поиска.

Когда вы увидите «esp8266 от сообщества ESP8266» (англ. — esp8266 by ESP8266 Community), вы можете перестать вводить в поиске и нажать «Установить» (Install), чтобы получить последний пакет для платы, установленный внутри вашего приложения Arduino.

В Feather Huzzah имеется удобный USB-коммуникационный чип, но для его нормальной работы требуется бесплатный драйвер. Без него ваша плата не будет отображаться в списке доступных последовательных устройств. Перейдите на страницу SiLabs (Silicon Lab: CP210x USB to UART Bridge VCP Drivers) и скачайте/установите драйвер, соответствующий вашей операционной системе (доступны Mac/Windows/Linux).

Проверка собранной схемы

Перед тем как переводить ESP-8266 в режим отновления прошивки, проверим работу собранной схемы:

  • Убедимся, что GIO0 отключена от GND. Иначе AT команды отправить в модуль нельзя.
  • Включим питание модуля.
  • Подключим USB-to-RS232 конвертер к ПК.
  • Зайдем в Control Panel -> System -> Device manager -> Ports (COM & LPT).
  • Если устройство Prolific USB-to-Serial Comm Port работает с ошибкой — нужно установить fix.
  • Если USB конвертер работает без ошибок — смоттри на каком COM порту он работает.
  • Запускаем ESPlorer и выставляем в настройках правильный COM порт и скорость. Жмем «Open».
  • Переходим на закладку «AT-based» и жмем кнопку «AT». Отправится команда AT, в ответ должна прийти «ОК». Хначит устрйоство работает нормально. То-же самое можно сделать любой терминальной программой работающей с последовательным портом, вроде PuTTY.
  • Далее жмем кнопку»RST». Отправится команда AT+RST для рестарта модуля.
  • Отправка команды AT+RST в ESP-8266.

AT+RST AT+RST OK WIFI DISCONNECT ets Jan 8 2013,rst cause:2, boot mode:(3,6) 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 rlЋ‚rlМя Ai-Thinker Technology Co. ,Ltd. ready WIFI CONNECTED WIFI GOT IP

  • Сохраним полученные параметры чипа. Они могут пригодится в дальнейшем.
  • Отправим AT+GMR для получения информации о текущей версии прошивки ESP-8266.
  • Отправка команды AT+GMR в ESP-8266

Получили следующую информацию о чипе:

  • SPI Speed : 40MHz
  • SPI Mode : DIO
  • SPI Flash Size & Map: 8Mbit(512KB+512KB)
  • 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

Для прошивки нужно скачать следующее ПО от разработчика чипа, компании Espressif:

  • Flash Downloads Tool.
  • Прошивка ESP8266 AT. Если нужны исходники, то ESP8266 NONOS SDK.
  • Документация по ESP8266.

Перевод ESP-8266 в режим загрузки обновления

Для перевода ESP-8266 в режим загрузки прошивки нужно:

  1. Отключить питание модуля и извлечь из USB порта USB-to-RS-232 конвертер.
  2. Замкнуть PIN GPIO0 на GND. Я использовал Dupont кабель. Кнопку нет смысла использовать. Вот здесь есть тонкий момент. На некоторых схемах используют две кнопки Flash и Reset и нажимают их попеременно для ввода в режим заливки обновления. В официальной документации дан вариант, который я описал. Но при этом я брикнул ESP8266 и пока не нашел способа восстановить.
  3. Включить питание модуля.
  4. Немного подождать и подключить USB-to-RS-232 конвертер.

Если нарушить последовательность, то программатор не найдет ESP-8266 модуль!

  • Запускаем ESP8266 Flash Download Tool.
  • Выбираем ESP8266 и задаем правильный порт и скорость.
  • Ничего не вводим и нажимаем Start
  • Если ESP 8266 корректно переведен в режиме скачивания прошивки, то практически мгновенно будет выдан статус Finish. И в «detected info» отобразится информация:
    • flash vendor: E0h : N/A
    • flash devID: 4016h
    • QUAD;
    • 32Mbit crystal;
    • 26 Mhz

В некоторых случаях брикнутые ESP 8266 удается восстановить с использованием инстурмента XTCOM_UTIL. Статья на эту тему.

Но здесь есть такой момент. Прошивки подходящие под эту утилиту неофициальные (специально сделанные) и очень древние. Хотя, можно «лить» и официальные, указав правильные адреса. Я не пробовал, но в статье пример.

У меня была ситуация, когда не мог залить официальную прошивку на купленный на Aliexpress ESP 8266 модуль. Но после того как залил древнюю прошивку через XTCOM_UTIL, залилась и прошивка через официальный ESP8266 Download Tool.

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

Если конвертер USB — RS-232 плохого качества, либо плохое качество соединений, то ESP8266 Download Tool может выдавать ошибку синхронизации. В Интернет рекомедуют снижать скорость до 9600, но это нельзя сделать с помощью этой утилиты. У неё минимальная скорость 115200. В этом случае можно воспользоваться консольной утилитой ESPTool от официального разработчика чипа компании Espressif. Я пробовал прошивать с помощью этой утилиты брикнутый чип, но безуспешно.

Таблицу адресов для заливки лучше брать в официальной документации, поскольку адреса завсят от чипа. Этот вопрос нужно смотреть тщательно, поскольку в Интернет адреса заданы для того чипа, который шил автор статьи. Адреса и схема распайки для программирования есть в ESP8266_SDK_Getting_Started_Guide, и адреса есть также в ESP8266_AT_Instructions_Set.

Сразу отмечу, что у меня нет достоверной информации, что если в ESP8266 Download Tool выставить флаг SpiAutoSet, то действительно производится проверка параметров чипа. Адреса точно никак не проверяются.

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

В Интернете не раз проскакивала информация, что ESP-8266 невозможно вывести из строя кривой прошивкой. Мне удавалось. После этого чип даже при повторном переводе в режим заливки образа не откликается на запросы. Пробовал скорость и 9600 и 115200 использовать и разные другие шаманства со всеми возможными утилитами

Если после прошивки ESP-8266 не получается подключиться к модулю на скорости 115200, нужно попробовать скорость 9600. В некоторых прошивках эта скорость выставлена по-умолчанию.

В некоторых случаях из-за качества соединений могут возникать проблемы с синхронизацией. Одно из решений — уменьшить скорость с 115200 до 9600:

  • AT+UART_DEF=,,,,
  • AT+UART_DEF=9600,8,1,0,0
  • AT+UART_DEF=115200,8,1,0,3

В некоторых случаях при переходе на другую скорость отклики от модуля в терминальной программе становятся очень медленными. Пока не разобрался с чем это связано. Помогает сброс к заводским настройкам командой AT+RESTORE.

Цели и причины

Это вторая статья автора об интегральной микросхеме ESP8266, содержащей полнофункциональный 32-битный RISC микроконтроллер и встроенную Wi-Fi схему 802. 11 b/g/n. Первая статья описывала использование Arduino IDE для программирования ESP8266 и содержит важную информацию, которая здесь повторяться не будет. Если вы не читали её, то рекомендуем сделать это.

В интернете нет недостатка в информации об ESP8266; на самом деле, может быть из неё слишком много… неправильной. Разработчики микросхемы, Espressif, по-видимому, решили не только не заниматься производством на стороне, но и избегать непосредственного участия в разработке линейки модулей ESP, которые используют микросхему ESP8266. Вместо этого, они предлагают информацию и услуги поддержки через форум для тех, кто готов с упорством и терпением ходить по лабиринту. Добавление к путанице – это существование другого форума, который, несмотря на то, что назван esp8266.com, не управляется компанией Espressif. Кроме того, существует множество перепродавцов, видеоблоггеров, и писателей, которые также предлагают информацию от качественной до спутанной настолько, что она может быть полностью неправильной.

ESP модули доступны в различных источниках, а прошивки, содержащиеся в чипах ESP8266 на модулях, почти всегда являются устаревшими и часто вызывают подозрения относительно их происхождения. Также иногда подозрительны «обновления» и инструменты, которые доступны в тех же источниках. Следовательно, целью этой статьи является документирование процедуры загрузки последней доступной прошивки непосредственно от Espressif и её установка с использованием инструмента программирования, предоставляемого Espressif.

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

Чтобы обновить прошивку на любом ESP8266, необходимо правильно подать на него питание и подключить его к компьютеру. Кроме того, необходимо добавить средства сброса микросхемы и перевода её в режим загрузки. На приведенной ниже схеме и фотографии показано рекомендуемое подключение; обратите внимание, что цвета проводов на схеме соответствуют цветам на фотографии. Как вы видите, я буду обновлять прошивку на модуле ESP-01, но ти же самые соединения будут работать и с другими модулями, если используются те же входы/выходы ESP8266, как показано на схеме.

Установка прошивки

Запустите ESP flash download tool и убедитесь, что ни в одном чекбоксе в левом верхнем углу окна GUI не поставлена галка. Введите COM порт, который вы используете, и скорость передачи 115200 в полях ввода в нижней части окна. Обратите внимание, что при вводе данных они записываются в окне журнала.

Подайте питание на свою сборку для программирования ESP и подключите её к компьютеру. Нажмите и удерживайте кнопку Reset, а затем нажмите и удерживайте кнопку Flash. Отпустите кнопку Reset, а затем отпустите кнопку Flash. Нажмите кнопку START окне GUI инструмента прошивки ESP. Программа загрузки флэш-памяти должна проверить ESP8266 в вашей сборке и создать отчет, похожий на тот, что приведен ниже. Нажмите и отпустите кнопку Reset на вашем макете, чтобы выйти из режима прошивки ESP8266 и возобновить нормальную работу.


Окно графического интерфейса ESP Flash Download Tool. Вывод информации о микросхеме ESP8266

Терминальное окно ESP Flash Download Tool. Вывод информации о микросхеме ESP8266

Обратите внимание, что теперь окно GUI содержит информацию об ESP8266, включая размер флэш-памяти (в примере 8 Мбит), тактовую частоту (в примере 26 МГц) и два MAC-адреса для чипа. Такая же информация содержится в окне журнала.

Затем кликните в окне GUI по чекбоксу с надписью «SpiAutoSet», что заставит инструмент загрузки автоматически выбрать правильные размер флэш-памяти и тактовую частоту.

Теперь нам нужно выбрать файлы для установки в ESP8266 и установить начальный адрес памяти для каждого файла. Чтобы обновить ESP чип, необходимо правильно установить четыре файла. Откройте «Руководство пользователя Espressif IOT SDK» и найдите раздел о записи образов во флэш-память. В версии 1.4 руководства он начинается со страницы 20. Затем найдите подраздел, который описывает версию поддерживаемую Cloud Update (FOTA), и в этом подразделе найдите таблицу о размере флэш-памяти в вашем ESP8266. В этом примере размер флэш-памяти составляет 8 Мбит, что равно 1024 килобайт, следовательно, в таблице 2 на странице 25 руководства содержится информация, необходимая для примера. Посмотрим на рисунок ниже.

Таблица адресов флэш-памяти для загрузки файлов прошивки ESP8266

Необходимы эти четыре файла: esp_init_data_default.bin, blank.bin, boot.bin и user1.bin. Адрес, по которому должен быть установлен каждый из файлов, отображается рядом с именем файла. Первые три из необходимых файлов находятся в каталоге esp_iot_sdk_v1.4.1_15_10_22, ранее скачанном с bbs.espressif.com, а четвертый расположен в AT_v0.50 bin files. Перейдите туда, где находятся эти загруженные файлы, и скопируйте пути к ним в поля ввода в верхней части окна GUI программы Flash Download Tool; введите правильный адрес для каждого файла в поле рядом с именем файла. Выполните следующие шаги для каждого файла:

  • кликните внутри поля ввода «set firmware path»;
  • кликните по кнопке … справа от поля ввода;
  • перейдите к месту хранения файла и кликните по файлу. GUI автоматически введет путь к файлу в поле ввода;
  • введите правильный адрес (из таблицы) для каждого файла.

Обратите внимание, что файлы, которые должны быть загружены, могут быть не такими, как те, что указаны в таблице в этом примере, но будут близки к ним.

Теперь кликните на четыре флажка слева от имени каждого из файлов. Окно графического интерфейса программы Flash Download Tool должно быть похоже на рисунок ниже. Дважды проверьте адреса по таблице.
Настройка параметров прошивки ESP8266 в программе Flash Download Tool

На своем макете прошивки ESP нажмите и удерживайте кнопку Reset, а затем нажмите и удерживайте кнопку Flash. Отпустите кнопку Reset, а затем отпустите кнопку Flash. Нажмите кнопку START окне GUI инструмента прошивки ESP. Должна начаться загрузка, и её прогресс должен быть показан в окне графического интерфейса и окне журнала Flash Download Tool, как показано ниже.

Отображение процесса загрузки прошивки ESP8266 в терминальном окне Flash Download Tool

Как показано выше, успешная операция прошивки флэш-памяти приведет к тому, что все файлы будут отправлены в ESP8266, а COM порт будет закрыт.

Последовательность шагов для прошивки 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.

Что такое OTA программирование ESP8266?

OTA программирование позволяет обновлять/загружать новую программу в ESP8266 с помощью Wi-Fi вместо того, чтобы требовать от пользователя подключить ESP8266 к компьютеру через USB.

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

Одной из важных особенностей OTA является то, что один центральный объект может отправлять обновления нескольким модулям ESP, использующим одну и ту же сеть.

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

  1. Установка Python версии 2.7.x. Первый шаг – установите на компьютер Python версии 2.7.x.
  2. Загрузка базовой OTA прошивки через последовательный интерфейс. Загрузите скетч, содержащий прошивку OTA. Этот шаг обязателен шаг, чтобы вы могли выполнять следующие обновления/загрузки через беспроводную сеть.
  3. Загрузка нового скетча по воздуху. Теперь вы можете загружать новые скетчи в ESP8266 из Arduino IDE по воздуху.

Чтобы использовать функциональность OTA, вам необходимо установить Python версии 2.7.x, если он еще не установлен на вашем компьютере.

Перейдите на официальный сайт Python и загрузите 2.7.x (конкретный релиз) для Windows (установщик MSI).
Откройте установщик и следуйте указаниям мастера установки.
В разделе настройки Python 2.7.x убедитесь, что включен последний параметр «Add python.exe to Path» (добавить python.exe в путь).

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

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

Дополнение ESP8266 для Arduino IDE поставляется с библиотекой OTA и примером BasicOTA. Вы можете получить к нему доступ через Файл → Примеры → ArduinoOTA → BasicOTA.

А теперь давайте загрузим новый скетч по воздуху, т.е. через Wi-Fi.

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

В качестве примера мы включим простой скетч Blink в код BasicOTA. Не забудьте изменить переменные SSID и пароля на учетные данные вашей сети.

Изменения в программе BasicOTA выделены номерами строк.

Программируем ESP8266 в Arduino IDE

В предыдущей статье про «народные» WiFi модули я делал обзор купленных почти за $2.6 ES-07 с платами адаптерами.

Сейчас расскажу о программировании модулей в среде Arduino IDE. Заодно в этой статье можно узнать, как сделать часы с синхронизацией времени по NTP протоколу.

Изначально с завода ESP8266 идут с прошивкой от компании Espressif. В данной прошивке реализована работа с WiFi модулем как с модемом, через AT команды, подаваемые в последовательный порт. В таком режиме хорошо управлять ESP-шкой с внешнего контроллера, тем же Arduono, правда интерфейс обмена данными с контроллером, на мой взгляд, довольно тормозной.

Компания Espressif выпускает SDK для этих модулей, позволяющей разрабатывать собственные прошивки. Здесь подробно описано о данном процессе. Здесь все хорошо по возможностям, но довольно сложно по среде разработки и программировании.

Можно воспользоваться готовыми прошивками со встроенными интерпретаторами. Например, в этой статье я экспериментировал с прошивкой NodeMCU, позволяющей реализовывать логику работы модуля на встроенном интерпретаторе LUA. Можно использовать прошивку со встроенным JavaScript. К недостаткам таких прошивок я бы отнес «прожорливость» встроенных интерпретаторов к ресурсам ESP, в первую очередь ОЗУ, медленную работу и небольшое количество готовых библиотек.

Есть еще ряд прошивок, которые позволяют настроить работу модуля через WEB-интерфейс. Например коммерческая HOME-SMART, работа с которой описана мною здесь. Данная прошивка дает быстрый старт на ряд применений, но, к сожалению, никаких возможностей к расширению и созданию собственных алгоритмов работы не имеет. Хотя авторы очень быстро развивают возможности данной прошивки и в новой версии недавно появилась возможность разработки собственных  модулей на Си к ней.

И, наконец, я подошел к еще одному способу программирования ESP8266 — из среды Arduino IDE. Мне, реализовавшему десятки проектов в этой среде, такой способ работы очень понравился. К тому же, большая часть библиотек для Arduino, не использующий внутренние порты и прочие аппаратные возможности микроконтроллера, отлично работают и на ESP-модулях. Очень хорошо работа с ESP8266 в среде Ардуино IDE описана в этой статье.

Хочу немного добавить, что купленные мною модули ESP-07 распаянные на платы-адаптеры уже практически готовы к использованию. Подключаем TX/RX и GND к TTL-USB конвертеру, например, такому. Подключаем питание 3.3В к VCC. Для загрузки прошивки GPIO0 присоединяем к земле. Собственно и все. Подключить GPIO0 и RESET к данному конвертеру у меня не получилось, но это оказалось не сильно нужно.  При подсоединенном GPIO0 к земле ESP находится в режиме загрузки прошивки во флэш-память, но после загрузки происходит запуск программы без отсоединения данного GPIO. Это позволяет вполне комфортно отлаживать свою программу. Нужно перед загрузкой только перезагрузить модуль передергиванием питания или кратковременно подав на вывод RESET на землю. Я припаял для этого специальную кнопку

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

Итак модуль подключен, среда настроена. Для ES07 все настройки ESP8266 ставятся «по умолчанию»:

Источники

  • https://sprut. ai/client/article/1545
  • https://habr.com/ru/post/394535/
  • https://ArduinoPlus.ru/programmnoe-obespechenie-esp8266-na-arduino-ide/
  • https://www.bizkit.ru/2018/12/25/11272/
  • https://radioprog.ru/post/212
  • https://remotexy.com/ru/help/esp8266-firmware-update/
  • https://radioprog.ru/post/885
  • http://samopal.pro/esp8266-4/

Программирование в NodeMCU — документация NodeMCU

Стандартная среда выполнения Lua предлагает поддержку обоих модулей Lua, которые могут определять несколько функций и свойств Lua в инкапсулирующей таблице, как описано в Справочном руководстве по Lua 5.3 (« LRM ») и, в частности, в LRM. Раздел 6.3. Lua также предоставляет C API, позволяющий разработчикам реализовывать модули в скомпилированном C.

Разработчики NodeMCU также могут разрабатывать и включать свои собственные модули C в свою собственную сборку встроенного ПО, используя этот стандартный API, хотя мы рекомендуем разработчикам загружать стандартный Lua Справочное руководство, а также купить копию книги Роберто Иерусалимского Programming in Lua edition 4 (« PiL «). Реализация NodeMCU расширяет стандартный Lua, как описано в справочном руководстве NodeMCU (« NRM «).

Те разработчики, которые хотят разрабатывать или модифицировать существующие модули C, должны иметь доступ к LRM, PiL и NRM и ознакомьтесь с этими справочными материалами. Это основные справочные материалы, и этот документ не повторяет этот контент, а скорее предоставляет некоторую информацию, относящуюся к NodeMCU, в дополнение к нему

С точки зрения разработки модулей C, разница очень незначительна. от разработки модулей на стандартном Lua.Все стандартные библиотечные модули Lua ( bit , coroutine , debug , math , string , table , utf8 ) используют C API для Lua, а версии NodeMCURM были обновлены для использования расширений NodeMCURM. поэтому их исходный код доступен для просмотра и использования в качестве шаблона стиля (см. соответствующий файл lXXXlib. c в папке GitHub NodeMCU lua53).

Основное функциональное изменение заключается в том, что NodeMCU поддерживает доступный только для чтения подкласс Таблица , известный как ROTable , который может быть статически объявлен в исходном коде модуля с помощью объявлений static const . Существуют также ограничения на допустимые типы для ключей и значений ROTable, чтобы гарантировать, что они совместимы со статическим объявлением; и, следовательно, ROTables хранятся в пространстве кода (и, следовательно, во флэш-памяти на устройстве IoT). Следовательно, в отличие от стандартных таблиц Lua, ROTables не занимают ресурсы оперативной памяти.

Также, в отличие от стандартного Lua, для регистрации модулей C используются две глобальные таблицы ROTable. Опять же, макросы статического объявления плюс «магия» компоновщика (использование фильтров make плюс компоновщик , раздел директивы) приводят к ранжированию этих таблиц ROTable во время процесса создания, и, поскольку все это основано на ROTable, интеграция модулей в сборки прошивки и их доступ из выполнения приложений Lua зависит от пространства кода, а не от данных в ОЗУ. структуры.

Обратите внимание, что динамическая загрузка модулей C не поддерживается в ESP SDK, поэтому любая регистрация библиотеки должна быть скомпилирована в исходный код, используемый в сборке микропрограммы. Наш подход прост, гибок и позволяет избежать накладных расходов на оперативную память стандартного подхода Lua. Специальный ROTable ROM является основой этого подхода. Глобальная таблица окружения имеет метаметод __index , ссылающийся на эту таблицу ПЗУ. Следовательно, любые не необработанные поиски в глобальной таблице также будут разрешаться в ПЗУ. Все базовые функции Lua (такие как print ) и любые библиотеки C (написанные по стандартам NodeMCU) имеют запись в таблице ROM и, следовательно, имеют глобальную видимость. Этот подход не мешает разработчикам использовать стандартные механизмы Lua, а скорее предлагает простую альтернативу использованию малой оперативной памяти.

Макрос NODEMCU_MODULE используется в каждом модуле для его регистрации в записи в ROM ROTable. Он также добавляет запись во вторую (скрытую) ROMentry ROTable. — Все записи ROM будут разрешены глобально. — Среда выполнения Lua сканирует ROMentry ROTable во время своего запуска и будет выполнять любые ненулевые значения CFunction в этой таблице. Это позволяет модулям C подключать любые одноразовые функции запуска, если они необходимы.

Обратите внимание, что стандартный make будет включать любые модули, найденные в папке app/modules в сборке прошивки , если был определен соответствующий макрос LUA_USE_MODULES_modname . Эти определения обычно задаются в общем включаемом файле user_modules.h , и эта практика обязательна для любых модулей, отправленных пользователем, которые добавляются в дистрибутив NodeMCU. Однако это не мешает разработчикам добавлять свои собственные локальные модули в папка app/modules и просто определение соответствующего LUA_USE_MODULES_modname встроенного.

Этот подход макрос + компоновщик делает необходимость в объявлениях luaL_reg и использовании luaL_openlib() ненужными, и они не разрешены в файлах приложений/модулей , принятых проектом.

Следовательно, библиотечный модуль NodeMCU C обычно имеет стандартную компоновку, аналогичную компоновке стандартных библиотечных модулей Lua, и использует тот же C API для доступа к среде выполнения Lua:

  • Блок #ìnclude для разрешения доступа к внешним ресурсам. Все модули будут включать записи для "module.h" и "lauxlib.h" . Они должны , а не ссылаться на любые другие lXXX.h включения из исходного каталога Lua, поскольку они являются частными для среды выполнения Lua. За ними могут следовать стандартные среды выполнения C, внешние библиотеки приложений и любые необходимые заголовки ресурсов SDK. Обратите внимание, что, хотя мы рекомендуем использовать стандартный API среды выполнения C для h> и т. д., SDK реализует только плохо документированное подмножество этого API, поэтому имейте в виду, что вы можете получить ошибки компоновщика, и в этом случае вам может потребоваться перекодировать некоторые вызовы, если вы используете нереализованные функции. .

  • Единственный внешний интерфейс для C-модуля должен быть через среду выполнения Lua и ее перехватчики NODEMCU_MODULE . Поэтому все функции и ресурсы должны быть объявлены статическими и быть приватными для модуля. Они могут быть упорядочены по желанию разработчика, при условии, конечно, необходимости соответствующих опережающих объявлений для соответствия правилам области видимости C.

  • Методы модуля

    обычно используют стандартный шаблон Lua static int somefunc (lua_State *L) { ... } .

  • ROTables обычно объявляются в конце модуля, чтобы свести к минимуму потребность в прямых ссылках и использовать макросы LROT , описанные в NRM. Обратите внимание, что таблицы ROTable поддерживают только статическое объявление строковых ключей и типов значений: функция C, упрощенные пользовательские данные, числовые значения, таблица ROTable. Таблицы ROTable также могут иметь метатаблицы ROTable.
  • Хотя алгоритм поиска ROTable представляет собой простое линейное сканирование записей ROTable, среда выполнения также поддерживает LRU-кеш обращений к ROTable, поэтому обычно более 95% обращений к ROTable обходят линейное сканирование и выполняют прямой доступ к соответствующей записи.
  • ROTables также достаточно легкие и хорошо интегрированы в среду выполнения Lua, поэтому обычная обработка метаметодов работает хорошо. Это означает, что разработчики могут использовать метод __index для реализации других записей, типизированных ключом и значением, с помощью функции индекса.
  • Модули
  • NodeMCU предназначены для компиляции с нашими средами выполнения Lua 5.1 и Lua 5.3. NRM обсуждает последствия и ограничения здесь. Однако обратите внимание, что:
  • Мы перенесли многие новые функции Lua 5.3 в NodeMCU Lua 5.1 API, поэтому в целом вы можете использовать API 5.3 для кодирования своих модулей. Опять же, NRM отмечает исключения, когда вам либо понадобится вариантный код, либо вы решите ограничиться средой выполнения 5.3. В этом последнем случае самый простой подход — #if LUA_VERSION_NUM != 503 , чтобы отключить содержимое 5.3, чтобы сборка 5.1 могла компилироваться и связываться. Обратите внимание, что все модули, находящиеся в настоящее время в папке app/modules , будут компилироваться и выполняться как в средах Lua 5.1, так и в средах 5.3.
  • Lua 5.3 использует 32-битное представление для всех числовых значений с отдельными подтипами для целого числа (хранится как 32-битное целое число со знаком) и числа с плавающей запятой (хранится как 32-битное число с плавающей запятой одинарной точности). Это обеспечивает ту же плотность хранения ОЗУ, что и целочисленные сборки Lua 5. 1, без потери использования плавающей запятой, когда это удобно. Поэтому мы решили, что нет смысла иметь отдельный вариант сборки Integer 5.3.
  • Мы рекомендуем разработчикам использовать полный набор вызовов API luaL_ , чтобы свести к минимуму многословность кода. Мы также добавили несколько оптимизаций доступа к реестру, которые упрощают и улучшают производительность во время выполнения при использовании реестра Lua для поддержки обратного вызова.
    • luaL_reref() заменяет существующую ссылку реестра на место (или создает новую при необходимости). Меньше кода и более быстрое выполнение, чем luaL_unref() плюс luaL_ref() конструкция.
    • luaL_unref2() выполняет unref и устанавливает статический хук int на LUA_NOREF .

Вместо включения простых примеров шаблонов модулей мы предлагаем просмотреть модули в нашем репозитории GitHub, например библиотеку utf8 . Обратите внимание, что хотя все существующие модули в папке app/modules компилируются и работают, мы планируем очистить основные модули, чтобы убедиться, что они соответствуют передовой практике.


Построен с помощью MkDocs с использованием темы, предоставленной Read the Docs.

Начало работы — документация NodeMCU

Основной процесс начала работы с NodeMCU состоит из следующих трех шагов.

  1. Соберите прошивку с нужными вам модулями
  2. Прошить прошивку на чип
  3. Загрузить код на устройство.

Обычно вы выполняете шаги 1 и 2 только один раз, но затем повторяете шаг 3 по мере разработки приложения. Если ваше приложение перерастает ограниченную встроенную оперативную память, вы можете использовать Lua Flash Store (LFS) для перемещения вашего кода Lua во флэш-память, освобождая гораздо больше оперативной памяти для переменных данных. Вот почему рекомендуется включить LFS на шаге 1, если вы разрабатываете более крупное приложение. Как показано ниже, существует другой подход к загрузке кода Lua.

Предупреждение

Для каждой из задач у вас есть несколько вариантов инструментов в зависимости от используемой ОС. Цветные прямоугольники представляют собой самоуверенный путь к началу вашего пути — так сказать, самый быстрый путь к успеху. Не стесняйтесь следовать ссылкам выше, чтобы получить более подробную информацию.

Выбор задач и ОС

Задача \ ОС Окна macOS Линукс
Сборка прошивки облачный конструктор облачный конструктор облачный конструктор
Докер Докер Докер
родной
Флэш-прошивка NodeMCU PyFlasher NodeMCU PyFlasher
esptool.py esptool. py esptool.py
Код загрузки ESPlorer (Java) ESPlorer (Java) ESPlorer (Java)
Инструмент NodeMCU (Node.js) Инструмент NodeMCU (Node.js) Инструмент NodeMCU (Node.js)
Задачи LFS ниже
Сборка прошивки с поддержкой LFS
облачный конструктор облачный конструктор облачный конструктор
Докер Докер Докер
родной
Сборка luac.cross не требуется, если вы используете веб-сервис Терри или Docker для последующей компиляции образа LFS не требуется, если вы используете веб-сервис Терри или Docker для последующей компиляции образа LFS не требуется, если вы используете веб-сервис Терри или Docker для последующей компиляции образа LFS
родной родной родной
загрузить из версии
Компиляция Lua в образ
LFS
веб-сервис веб-сервис веб-сервис
Докер Докер Докер
родной родной родной
Загрузить образ LFS универсальный универсальный универсальный

Как это читать

Пример использования: вы только начинаете работу с NodeMCU и предпочитаете ОС Windows (и не используете LFS), тогда синие квадраты в столбце «Windows» являются ориентиром . Вы:

  • собрать прошивку на облачном сборщике
  • загрузите и запустите NodeMCU PyFlasher для переноса прошивки на устройство
  • загрузите и запустите ESPlorer, для которого требуется Java, для передачи файлов Lua из вашей системы на устройство

Не хватает инструментов?

Наша цель — как можно быстрее познакомить вас с программированием на Lua для ESP8266, поэтому мы свели количество упомянутых здесь инструментов к минимуму; frightanic.com: Инструменты и IDE обсуждает другие инструменты и опции.

Осторожно

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

Cloud Builder

Cloud Builder на https://nodemcu-build.com позволяет выбрать ветку NodeMCU, модули и несколько других параметров конфигурации (например, SSL да/нет). После завершения сборки вы получите электронное письмо с двумя ссылками для загрузки кастомной прошивки:

  • один для NodeMCU с плавающей поддержкой
  • один для NodeMCU без плавающей поддержки , т. е. двоичный файл только для целых чисел

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

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

Для LFS

  1. Развернуть панель «Опции LFS»
  2. Выберите размер LFS, 64 КБ, вероятно, будет достаточно
  3. Выберите другие параметры и соберите

↑ вернуться к матрице

Обратите внимание, что эта служба не поддерживается командой NodeMCU. Тем не менее, им управляет член команды NodeMCU как физическое лицо.

NodeMCU PyFlasher

Автономный прошивальщик NodeMCU с графическим интерфейсом на основе Python, esptool. py (см. ниже) и wxPython. Запускаемый .exe доступен для Windows и .dmg для macOS.

Установка не требуется на Windows и macOS! Инструкции по запуску на других платформах доступны на сайте проекта.

  1. Установите драйверы для последовательного интерфейса USB. Какой драйвер вам нужен, зависит от используемого вами модуля ESP8266 или конвертера USB-to-serial.
  2. Подключите кабель USB к устройству и компьютеру.
  3. Загрузите и запустите PyFlasher
  4. Выберите последовательный порт, найдите двоичный файл микропрограммы и установите параметры флэш-памяти.

↑ вернуться к матрице

Обратите внимание, что этот инструмент не является официальным предложением NodeMCU. Тем не менее, он поддерживается членом команды NodeMCU в индивидуальном порядке.

esptool.py

esptool.py был запущен как усилия сообщества ESP8266, но с тех пор был принят Espressif. Это их официально рекомендуемый способ прошивки чипов ESPxxx.

  1. Установите драйверы для последовательного интерфейса USB. Какой драйвер вам нужен, зависит от используемого вами модуля ESP8266 или конвертера USB-to-serial.
  2. Установите Python 2.7 или Python >=3.4 в вашей системе, если он еще не доступен.
  3. Подключите кабель USB к устройству и компьютеру.
  4. $ pip install esptool (также устанавливает pySerial)
  5. $ esptool.py --port --baud <скорость передачи> write_flash -fm <режим flash> 0x00000 .bin

flash-mode — это qio для большинства ESP8266 ESP-01/07 (модули 512 Кбайт) и dio для большинства ESP32 и ESP8266 ESP-12 (модули >=4 МБ). Для ESP8285 требуется или .

Скорость передачи данных по умолчанию — 115200. Большинство аппаратных конфигураций должны работать со скоростью 230400 в зависимости от ОС, драйвера и модуля. Модули NodeMCU и WeMos обычно работают с 921600.

Более подробная информация доступна в репозитории esptool.py GitHub.

↑ вернуться к матрице

ESPlorer

TBD https://github.com/4refr0nt/ESPlorer

↑ вернуться к матрице

NodeMCU-Tool

Возможно, NodeMCU-Tool, для которого требуется Node.js, является лучшим инструментом для загрузки и выполнения кода, чем ESPlorer. Кроме того, в отличие от первого, он очень хорошо поддерживается. Однако мы также понимаем, что пользователи Windows в целом предпочитают графический интерфейс командной строке.

Список функций довольно длинный, но по сути NodeMCU-Tool предлагает:

  • загружать (Lua) файлы из вашей хост-системы на устройство
  • управление файловой системой устройства (удаление, загрузка/загрузка и т. д.)
  • запускать файлы на NodeMCU и отображать вывод через UART/последовательный порт

Быстрый запуск:

  1. Установите Node.js и NPM, если они еще не доступны
  2. Глобальная установка NodeMCU-Tool $ npm install nodemcu-tool -g
  3. Проверка установки с помощью runnin $ nodemcu-tool --version
  4. Загрузить файл Lua $ nodemcu-tool upload --port=/dev/ttyUSB0 helloworld. lua
  5. Запустить $ nodemcu-tool запустить helloworld.lua

Обратите внимание, что вам может понадобиться использовать префикс sudo для установки инструмента на шаге 2, а также, возможно, добавить флаг –unsafe-perm после команды установки.

↑ назад к матрице

Docker

Образ сборки Docker NodeMCU — это самый простой способ сборки компонентов, связанных с NodeMCU, локально на выбранной вами платформе.

Предложение:

  • сборка прошивки NodeMCU на основе локально клонированных исходников и конфигурации
  • локальная кросс-компиляция файлов Lua в образ LFS

Подробные инструкции доступны в файле README образа. Что касается доступных параметров конфигурации, проверьте документацию и изучите комментарии в app/include/user_config.h .

Для LFS

  1. В app/include/user_config.h отредактируйте строку #define LUA_FLASH_STORE 0x0 и отрегулируйте размер до необходимого. Обратите внимание, что это должно быть кратно 4 КБ.
  2. Создайте сборку, как если бы вы собирали этот образ в противном случае (т. е. см. его README)

↑ назад к матрице

Обратите внимание, что этот образ Docker не является официальным предложением NodeMCU. Тем не менее, он поддерживается членом команды NodeMCU в индивидуальном порядке.

Сборка

luac.cross

Локальная копия luac.cross нужна только в том случае, если вы хотите самостоятельно скомпилировать файлы Lua в образ LFS и используете Docker , а не .

Windows

Пользователи Windows могут скомпилировать локальную копию luac.cross исполняемый файл для использования на ПК разработки. Для этого вам нужно:

  • Чтобы загрузить текущие исходники NodeMCU (это ZIP-файл dev или ZIP-файл релиза) и распаковать в локальную папку, скажем C:\nodemcu-firmware ; выберите версии master/dev в соответствии с версией прошивки, которую вы хотите использовать. Если вам нужна целочисленная сборка, отредактируйте файл app/includes/user_config.h , чтобы выбрать это.
  • Выберите предпочтительный набор инструментов для сборки luac.cross исполняемый файл. Здесь у вас есть несколько вариантов:
  • Если вы являетесь пользователем Windows 10 с уже установленной подсистемой Windows для Linux (WSL), то это среда Linux, поэтому вы можете следовать приведенным ниже инструкциям по сборке Linux.
  • Менее ресурсоемким вариантом, который работает на всех вариантах ОС Windows, является использование Cygwin или MinGW, которые являются вариантами портов коллекции компиляторов GNU для Windows и которые могут компилироваться в собственные исполняемые файлы Windows. В случае с Cygwin установите Cygwin (выбрав ядро ​​Cygwin + gcc-core + gnu сделать в меню установки). В случае с MinGW вам снова нужна только очень простая среда сборки C, поэтому установите MINGW; вам нужны только ядро ​​GCC и mingw32-make. Оба они создают подсказку Cmd , какие пути в соответствующей цепочке инструментов GCC. Переключитесь на app/lua/luac_cross и запустите make для сборки компилятора в корневом каталоге прошивки NodeMCU. Вы делаете это, запуская make в Cygwin и mingw32-make -f mingw32-Makefile.mak в МинГВ.
  • Вы также можете использовать MS Visual Studio (доступна бесплатная версия сообщества). Просто откройте прилагаемый файл решения MS (msvc\hosttools.sln) и соберите его, чтобы получить файл Lua 5.1 luac.cross.exe. В настоящее время нет файла sln для версии Lua 5.3.
  • Если у вас есть встроенный исполняемый файл luac.cross , вы можете использовать его для компиляции кода Lua в образ LFS. Вы можете удалить его из иерархии nodemcu-firmware, так как эта иерархия папок больше не требуется и может быть удалена.

Linux

  • Убедитесь, что у вас установлен пакет инструментов GCC, необходимый для сборки.
  • Загрузите текущие исходные коды NodeMCU (этот ZIP-файл разработки или ZIP-файл выпуска) и распакуйте в локальную папку; выберите версии master/dev в соответствии с версией прошивки, которую вы хотите использовать. Если вам нужна целочисленная сборка, отредактируйте файл app/includes/user_config.h , чтобы выбрать это.
  • Изменить каталог на app/lua/luac_cross подпапку
  • Запустите make , чтобы построить исполняемый файл.
  • Если у вас есть встроенный исполняемый файл luac.cross , вы можете использовать его для компиляции кода Lua в образ LFS. Возможно, вы захотите переместить это из иерархии nodemcu-firmware, так как эта иерархия папок больше не требуется и может быть удалена.

macOS

То же, что и для Linux

↑ вернуться к матрице

Компилировать Lua в образ LFS

Выбрать файлы Lua для запуска из LFS

Самый простой способ — хранить все файлы Lua для вашего проекта в одном каталоге на вашем хосте. (Эти файлы будут скомпилированы luac.cross для создания образа LFS на следующем шаге.)

Например, чтобы запустить серверы Telnet и FTP из LFS, поместите следующие файлы в каталог вашего проекта:

  • lua_examples/ lfs/_init.lua. Вспомогательные подпрограммы и функции LFS.
  • lua_examples/lfs/dummy_strings.lua. Перемещение общих строк в LFS.
  • lua_examples/telnet/telnet_fifosock.lua. Простой сервер telnet (пример 1).
  • lua_examples/telnet/telnet_pipe.lua. Простой сервер telnet (пример 2).
  • lua_modules/ftp/ftpserver.lua. Простой сервер FTP .

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

Примечание

Вам понадобится компилятор luac.cross, который соответствует вашей конфигурации относительно float/integer, Lua 5. 1/5.3 и, возможно, версии.

Веб-служба кросс-компиляции Lua LFS Терри

https://blog.ellisons.org.uk/article/nodemcu/a-lua-cross-compile-web-service/

Примечание: ознакомьтесь с выбором файлов Lua first

Загрузите ZIP-файл со всеми вашими файлами Lua, готовыми для LFS. Веб-сервис перекрестно скомпилирует их в файл .img , готовый для загрузки на устройство. Он поддерживает образы LFS для вариантов встроенного ПО как с плавающей запятой, так и с целым числом.

Дополнительную информацию можно получить на сайте службы.

Обратите внимание, что эта служба не поддерживается командой NodeMCU. Тем не менее, им управляет член команды NodeMCU как физическое лицо.

Docker

Примечание: сначала ознакомьтесь с выбором файлов Lua

Тот же образ Docker, который вы использовали для сборки прошивки NodeMCU, можно использовать для компиляции файлов Lua в образ LFS.

  1. $ cd <ваша-nodemcu-прошивка-папка>
  2. $ docker run --rm -ti -v pwd :/opt/nodemcu-firmware -v {PathToLuaSourceFolder}:/opt/lua marcelstoer/nodemcu-build lfs-image

Родной для ОС

Примечание: сначала ознакомьтесь с выбором файлов Lua

Для Windows, если вы собирали с помощью WSL / Cygwin, вы сделаете это из соответствующего командного окна, оба из которых используют оболочку bash . Если вы использовали Visual Studio, просто используйте окно Windows cmd.

  1. $ cd <проект-каталог>
  2. $ luac.cross -o lfs.img -f *.lua

Вам нужно будет настроить пути img и lua в соответствии с их местоположением и убедиться, что luac.cross находится в вашем списке поиска $PATH . Например, если вы используете WSL и файлы вашего проекта находятся в D:\myproject , тогда путь Lua будет /mnt/d/myproject/*.lua (для cygwin замените mnt на cygwin ). Это создаст lfs.img , если нет ошибок компиляции Lua (при необходимости снова укажите явный путь к каталогу).

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

↑ вернуться к матрице

Загрузить образ LFS

Скомпилированный файл образа LFS (например, lfs. img ) загружается как обычный файл в файловую систему устройства (SPIFFS). Вы делаете это так же, как с файлами Lua, например. ESPlorer или NodeMCU-Tool. Также есть новый пример, HTTP_OTA.lua, в lua_examples , который может получать изображения из стандартной веб-службы.

После того, как файл образа LFS находится в SPIFFS, вы можете выполнить команду node.flashreload(), после чего загрузчик загрузит его во флэш-память и немедленно перезапустит модуль ESP с загруженным новым LFS, если файл образа действителен. Однако вызов вернется с ошибкой , если файл окажется недействительным, поэтому ваш код перепрошивки должен включать логику для обработки такого возврата ошибки.

Измени свою

файл init.lua

init.lua — это файл, который первым запускается прошивкой NodeMCU. Обычно он настраивает соединение WiFi и запускает основное приложение Lua. Предполагая, что вы включили файл _init , описанный выше, его выполнение добавит простой API для доступа к модулю LFS:

  • Отдельные функции могут выполняться напрямую, например. LFS.myfunc(a,b)
  • LFS теперь находится в требуемом пути, поэтому требуется 'myModule' работает как положено.

Выполните защищенный вызов этого кода _init : pcall(node.LFS._init()) и проверьте состояние ошибки. Более подробное описание см. в разделе «Методы и подходы к программированию» в официальном документе LFS.

Минимальный пример LFS

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

Чтобы использовать LFS, начните с версии прошивки NodeMCU с включенной LFS. См. раздел матрицы «Построить LFS включенная прошивка» для того, как это сделать. Загрузите ее на ESP8266 обычным способом (независимо от того, что для вашей установки).

Затем создайте файловую систему LFS. Это можно сделать несколькими способами, как обсуждалось выше; один из самых простых — использовать luac.cross -o lfs.img -f *lua на хост-компьютере. Не забудьте включить файл с именем hello_world.lua со следующим однострочным содержимым: print("Hello ESP8266 world!") Файл lua_examples/lfs/_init.lua обязательно должен быть включен в образ, так как это самый простой способ интегрировать систему LFS. Затем файл lfs.img можно загрузить в ESP8266, как и любой другой файл.

Следующий шаг — сообщить ESP8266, что LFS существует. Это делается с помощью node.LFS.reload(«lfs.img»), который инициирует сброс, за которым следует node.LFS._init() для лучшей интеграции LFS; вход в esp8266 и выполнение следующих команд дает обзор последовательности команд.

 >
> node.LFS.reload("lfs.img")
-- node.LFS.reload() вызывает здесь один или два сброса.
-- Вызвать LFS hello_world.
> узел.LFS.hello_world()
Привет, мир ESP8266!
-- ВЫПОЛНЕНО!
-- теперь еще немного идей и помощников
-- Список модулей в LFS.
> распечатать (узел.LFS.list)
функция: 3fff0728
> для k,v в парах(node.LFS.list()) do print(k,v) end
1 dummy_strings
2 _инит
3 привет_мир
-- интегрировать LFS с SPIFFS
> узел. LFS._init()
-- Теперь мы можем запускать и загружать файлы из SPIFFS или LFS, используя `dofile` и `loadfile`.
> dofile("hello_world.lua")
Привет, мир ESP8266!
-- `require()` теперь также работает так же.
-- если бы в SPIFFS был файл с именем "hello_world.lua", то он был бы выполнен. Но если нет поиска в LFS.
-- _init.lua также устанавливает глобальную LFS как копию node.LFS. Это несколько обратная совместимость и может быть удалена в будущем.
> распечатать (LFS)
таблица: 3fff06e0
>
 

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

Затем вы должны настроить процесс загрузки ESP8266, чтобы проверить наличие образа LFS и запустить необходимый модуль. После того, как таблица модулей LFS была зарегистрирована путем запуска lua_examples/lfs/_init.lua, запустить модуль LFS просто, например: LFS.hello_world() .

node.LFS.reload() нужно перезапускать, только если образ LFS обновлен; после загрузки образа LFS во флэш-память исходный файл (в SPIFFS) больше не используется и может быть удален.

Как только станет известно, что LFS работает, можно с пользой добавить такие модули, как lua_examples/lfs/dummy_strings.lua, вместе с эффективной проверкой ошибок.

↑ назад к матрице

Сборка прошивки — документация NodeMCU

Существует три основных способа сборки прошивки NodeMCU: облачный сервис сборки, образ Docker, выделенная среда Linux (возможно, виртуальная машина).

Tools

Cloud Build Service

NodeMCU «разработчикам приложений» нужна только готовая прошивка. Для них есть облачная служба сборки с приятным пользовательским интерфейсом и параметрами конфигурации.

Образ Docker

Случайным хакерам прошивки NodeMCU не нужен полный контроль над всей цепочкой инструментов. Они могут не захотеть настраивать виртуальную машину Linux со средой сборки. Докер спешит на помощь. Попробуйте сборку Docker NodeMCU.

Среда сборки Linux

Разработчики прошивки NodeMCU вносят свой вклад в проект на GitHub и могут захотеть создать свою собственную полноценную среду сборки с полной цепочкой инструментов. Проект NodeMCU по умолчанию включает готовую цепочку инструментов для Linux/x86-64. После работы с параметрами сборки ниже просто запустите процесс сборки с

 сделать
 

Настройка сборки по умолчанию сводит детализацию вывода к минимуму. Уровень детализации можно увеличить, установив для переменной среды V значение 1, как показано ниже. Другие доступные параметры см. в корневом файле Makefile .

 V=1 шт.
 

Примечание

Создание цепочки инструментов с нуля не входит в задачи NodeMCU. Дополнительные сведения см. в наборах инструментов ESP.

Git

Если вы решите выполнить сборку с использованием образа Docker или собственной среды, используйте Git для клонирования исходных кодов встроенного ПО вместо загрузки ZIP-файла с GitHub. Только клонирование с помощью Git извлечет упомянутые подмодули:

 git clone --recurse-submodules -b <ветка> https://github.com/nodemcu/nodemcu-firmware.git
 

Если не указывать необязательный параметр -b <ветвь> , выпуск будет клонирован.

Параметры сборки

В следующих разделах описаны некоторые параметры, которые у вас есть, если вы хотите создать собственную прошивку NodeMCU.

Выберите модули

Отключите модули, которые вы не будете использовать, чтобы уменьшить размер прошивки и освободить часть оперативной памяти. Доступная оперативная память ESP8266 довольно ограничена, и нехватка памяти может вызвать системную панику. 9Конфигурация по умолчанию 0043 предназначена для работы на всех модулях ESP, включая модули 512 КБ, такие как ESP-01, и включает только интерфейсные модули общего назначения, для которых требуется не более двух контактов GPIO.

Отредактируйте app/include/user_modules.h и закомментируйте оператор #define для модулей, которые вам не нужны. Пример:

 ...
#define LUA_USE_MODULES_MQTT
// #определить LUA_USE_MODULES_COAP
...
 

Поддержка TLS/SSL

Чтобы включить поддержку TLS, измените app/include/user_config. h и раскомментируйте следующий флаг:

 //#define CLIENT_SSL_ENABLE
 

Полная конфигурация хранится в app/include/user_mbedtls.h . Этот файл нужно редактировать, если вы создаете собственную прошивку и хотите изменить поведение mbed TLS. Дополнительные сведения см. в документации tls .

Отладка

Чтобы включить сообщения отладки во время выполнения для последовательной консоли, отредактируйте app/include/user_config.h

 #define DEVELOP_VERSION
 

LFS

LFS отключен по умолчанию. См. документацию LFS для поддерживаемых параметров конфигурации (например, как их включить).

Установка скорости передачи данных UART

Начальная скорость передачи данных во время загрузки составляет 115200 бит/с. Вы можете изменить это, редактирование BIT_RATE_DEFAULT в app/include/user_config.h :

 #define BIT_RATE_DEFAULT BIT_RATE_115200
 

Обратите внимание, что по умолчанию прошивка использует алгоритм автоматического определения скорости передачи, поэтому ввод нескольких символов во время загрузки вызовет прошивка для блокировки этой скорости передачи данных (между 1200 и 230400).

Двойная сборка (только Lua 5.3)

По умолчанию будет создана сборка, поддерживающая переменные с плавающей запятой (float) и целые числа. Чтобы повысить точность переменных с плавающей запятой, можно создать двойную сборку. Этот также используется по умолчанию в сборках Lua 5.1. Недостатком является то, что при хранение переменных. Вы можете изменить это либо раскомментировав LUA_NUMBER_64BITS в app/include/user_config.h :

 //#define LUA_NUMBER_64BITS
 

ИЛИ переопределив это командой make

 make EXTRA_CCFLAGS="-DLUA_NUMBER_64BITS ....
 

Целочисленная сборка (только Lua 5.1)

По умолчанию будет создана сборка, поддерживающая переменные с плавающей запятой (двойные числа). Чтобы уменьшить размер памяти, можно создать целочисленную сборку. Вы можете изменить это либо раскомментировав LUA_NUMBER_INTEGRAL в app/include/user_config.h :

 //#define LUA_NUMBER_INTEGRAL
 

ИЛИ переопределив это с помощью команда make , как это делается во время CI сборка:

 make EXTRA_CCFLAGS="-DLUA_NUMBER_INTEGRAL . ...
 

Отметьте свою сборку

Идентифицируйте свои сборки прошивки, задав переменную среды USER_PROLOG . Вы также можете отредактировать app/include/user_version.h . Переменная USER_PROLOG будет включена в NODE_VERSION_LONG .

 #define NODE_VERSION "NodeMCU " ESP_SDK_VERSION_STRING "." NODE_VERSION_XSTR(NODE_VERSION_INTERNAL) " " NODE_VERSION_LONG
#ifndef BUILD_DATE
#define BUILD_DATE "не указано"
#endif
 

Конфигурация модуля u8g2

Драйверы дисплея и встроенные шрифты скомпилированы в образ прошивки на основе настроек в app/include/u8g2_displays.h и app/include/u8g2_fonts.h . Подробнее см. в документации u8g2 .

Конфигурация модуля ucg

Драйверы дисплея и встроенные шрифты скомпилированы в образ микропрограммы на основе настроек в app/include/ucg_config.h . Для получения подробной информации см. документацию ucg .

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

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