Модуль разработки приложений WeMos NodeMCU с WiFi-контроллером ESP8266 на чипе USB-TTL CH340
Ни для кого не секрет, что в настоящем современном мире, среди лидирующих средств беспроводной связи, преобладает популярнейшая во всех отношениях технология WiFi. Можно невооружённым глазом заметить, насколько быстро она развивается и одновременно совершенствует нашу жизнь, делая её значительно комфортнее во многих сферах. Уже привычный для большинства стандарт связи WiFi, обеспечивающий высокоскоростную передачу или приём данных по радиоканалу на частоте 2.4ГГц, позволил нам стать по-настоящему свободными от морально устаревших проводных соединений. И стоит ли упоминать, что само появление подобной технологии привело к неизбежной массовой разработке умных устройств, которыми сейчас стремительно и безустанно наполняется наш быт.
С недавнего времени, благодаря активному совершенствованию электронных компонентов и всепоглощающему расширению зон покрытия сетей WiFi, а также с появлением облачных вычислений и возможностей межмашинных взаимодействий, родилась концепция сетей нового поколения, называемая "Интернет вещей". На её основе, многие производители стремятся выпускать собственные электронные продукты, способные общаться между собой посредством локальных сетей или обмениваться данными через глобальную сеть Интернет.
С технической стороны, модуль разработчика WeMos NodeMCU Lua WiFi-приложений претерпел небольшие изменения в сравнении с предшествующими его появлению моделями. Тем не менее, контроллер из семейства ESP8266 по-прежнему остаётся полноценным и надёжным универсальным инструментом, который может стать отличным подспорьем как для начинающих пользователей, делающих первые шаги навстречу изучению возможностей платформы WeMos, так и для профессионалов-энтузиастов или независимых разработчиков, желающих заниматься проектированием и воплощением в жизнь своих собственных электронных продуктов. Благодаря мощным и гибким интегрированным возможностям, WeMos сможет справляться с различного рода задачами, связанными и с организацией беспроводной связи, и с работой в вычислительных сетях, и с автоматизацией функции контроля или управления над совмещённой периферией в виде всевозможных датчиков и сенсоров, внешних микроконтроллеров, а также совместимых модулей расширений.
Технические характеристики
- Переработанный NodeMCU DevKit 1.0
- Контроллер: ESP8266EX Serial WiFi, однокристальная система на основе Tensilica L106 с ультра-низким энергопотреблением, разрядность 32-бит
- Тактовая частота: 80 МГц (до 160 МГц)
- Рабочее напряжение: 3.3 В
- Напряжение питания: 5 В
- Потребляемый ток: до 300 мА
- Флеш-память: 32 МБит / 4 МБайт
- Диапазон частот: 2.4ГГц-2.5ГГЦ (2412М-2484М)
- Режимы WiFi: Клиент, Программная точка доступа, Клиент+Программная точка доступа (station, softAP, station+softAP)
- Защита: WPA-PSK, WPA2-PSK
- Шифрование: WEP, TKIP, AES
- Протоколы WiFi: 802.11 b/g/n
- Выводы общего назначения (вход/выход, GPIO): до 17
- Аналоговые входы: 2 (на одном АЦП), разрядность 10-бит
- Максимальный ток на контакт общего назначения: 12 мА, рекомендуемый 6 мА
- Связь по USB: чип CH340G USB-TTL UART
- Технология STBC, 1x1 MIMO, 2x1 MIMO
- Выходная мощность в режиме 802.11b: +20dBm
- Интерфейсы: GPIO, UART, I2C, HSPI, PWM
- Скорость передачи данных: 300-4608000 бод, по умолчанию 115200 бод
- Встроенный переключатель приёма/передачи, согласующий высокочастотный трансформатор, усилитель мощности
- Встроенные блоки: согласования сети, фазовой автоподстройки частоты, управления питанием, блоки регулирования
- Антенна WiFi: PCB, разведена на плате в виде дорожки
- Поддержка Arduino, NodeMCU, MicroPhyton
- Поддержка файловой системы SPIFFS
- Поддержка функций Smart Link для устройств на Andriod и iOS
- Поддержка АТ-команд, Облачного Сервера и Наборов Разработки (SDK), обновление прошивки
- Светодиодная индикация: вывод D4 (GPIO2), вывод D0 (GPIO16)
- Шаг между контактами: 2.54 мм
- Рабочая температура: -20°...+85°
- Размеры: 48.8 х 25.6 х 4.2 мм
Модуль разработки пользовательских приложений WeMos NodeMCU Lua призван до минимума упростить процесс проектирования любого устройства практически с "нуля". Он несёт в себе весь базовый функционал организации связи по WiFi и оснащён всеми доступными выводами микросхемы ESP8266EX. Ширина платы и расстояние между контактами, имеющими типовой шаг 2.54мм (0.1"), удобны для использования с беспаечными макетными платами предварительного прототипирования. Процессор ESP и встроенная память придают модулю WeMos NodeMCU Lua практически автономную работоспособность, во многих случаях делая плату независимой от дополнительных внешних микроконтроллеров.
Если сравнивать с тем, что же было в предыдущем поколении (взять хотя бы оригинальный NodeMCU DevKit 0.9), то в обновлённой версии можно наблюдать ряд усовершенствований. Все компоненты теперь распаяны на одной центральной плате, добавлены управляемый светодиод GPIO16 и один модифицированный аналоговый вход А0, вместо ESP-12F установлен бескорпусной вариант передатчика ESP-12E, ширина платы заметно уменьшилась.
Обзор платы WeMos NodeMCU Lua CH340
Первое включение WeMos ESP8266, порт USB
Всё необходимое для "быстрого старта" есть на самой плате. Встроенный порт USB помогает подключаться к компьютеру напрямую при помощи обычного кабеля с разъёмом микроUSB. Благодаря ему и микрочипу преобразователя интерфейсов WCH CH340G, на котором построено общение между USB и ESP8266, отпадает необходимость в дополнительных адаптерах USB-UART/TTL для установления связи с платой. Порт USB предоставляет возможность управления модулем, позволяет вносить в него свои приложения или загружать программное обеспечение (прошивку). В ином случае, он используется только для питания платы.
При первом подключении модуля NodeMCU WeMos к компьютеру, скорее всего потребуется драйвер для USB-TTL CH340G преобразователя. Дистрибутив для операционной системы ПК Windows 32x, Windows 64x доступен по ссылке.
Распиновка WeMos NodeMCU Lua CH340 (Диаграмма выводов, NodeMCU Lua CH340 WeMos подключение)
Модуль WiFI NodeMCU WeMos обладает цифровыми выводами общего назначения, работающими с логикой напряжений "1" и "0". Под единицей подразумевается входящее/исходящее напряжение +0.75*Vin—3.6 вольта, называемое высоким сигналом. Под нулём - входящее/исходящее напряжение -0.3—0.25*Vin вольт, называемое низким сигналом. Некоторые выводы имеют встроенные подтягивающий или стягивающий резисторы. Большинство контактов могут быть смультиплексированы с различными интерфейсами (I2C, I2S, HSPI, UART, PWM). Рекомендуемый ток отдельного вывода составляет 6 миллиампер, предельный ток - 12 миллиампер.
Примечание! Избегайте превышение значений максимального тока более 12 миллиампер и напряжения более 3.3 вольта на контактах GPIO, способного повредить микроконтроллер.
- RST (EXT_RSTB, RESET) — контакт перезапуска модуля, активен при низкоуровневом сигнале
- ADC0 (TOUT) — Аналого-цифровой преобразователь (АЦП). Допустимое входное напряжение 0-1 В, диапазон преобразованных значений в интервале 0-1023
- A0 — Аналого-цифровой преобразователь (АЦП), совмещённый с контактом ADC0 через делитель напряжения. Допустимое входное напряжение 0-3.3 В, диапазон преобразованных значений в интервале 0-1023
- EN (CHIP_EN, CH_PD, CH_PU) — контакт включения модуля в рабочий режим. Активен при высокоуровневом сигнале
- GPIO16 — контакт общего назначения, ввод/вывод данных. Соединение с выводом RST выводит модуль из режима глубокого сна
- GPIO0-GPIO15 — контакт общего назначения, ввод/вывод данных. Переназначаемый на другие функции. Переназначаемый на другие функции. Выводы определяются по нумерации, например GPIO1 = 1 (основной ESP8266 модуль) или D10 (NodeMCU)
- VIN 5V — контакт питания модуля, напряжение в диапазоне 6.0-12.0 В
- 3.3V — контакт выходного напряжения внутрисхемного регулятора, рабочее напряжение ESP8266. Выводы 3.3V предназначены для питания подключаемых к плате сенсоров или датчиков. Суммарная максимальная нагрузка всех выводов 3.3V не должна превышать 300мА
- GND — общий, заземление
- NC — контакт не подключен. Он зарезервирован под функции, которые могут появиться в будущих ревизиях плат NodeMCU
Выводы GPIO6-GPIO11 (SDIO) привязаны к встроенной памяти и не рекомендуются к использованию в других целях, кроме подключения внешней памяти. Все цифровые контакты ввода/вывода, за исключением GPIO16, поддерживают обработку прерываний.
Специальные функции GPIO
- Асинхронный последовательный интерфейс UART из 2х линий, устанавливает связь с другими устройствами по шине UART:
- UART0_RX — контакт GPIO3
- UART0_TX — контакт GPIO1
- UART0_RTS — контакт GPIO15
- UART0_CTS — контакт GPIO13
- UART1_TX — контакт GPIO2, может использоваться для вывода отладочной информации
- Двунаправленный последовательный интерфейс IIC/I2C, позволяет коммутировать внешние датчики, сенсоры, дисплеи т.д.:
- SDA — контакт GPIO2
- SCL — контакт GPIO14
- Основной интерфейс последовательной шины SPI, режимы главный/периферийный:
- SPI_SCLK — контакт GPIO6
- SPI_MISO — контакт GPIO7
- SPI_MOSI — контакт GPIO8
- SPI_HD — контакт GPIO9
- SPI_WP — контакт GPIO10
- SPI_CS0 — контакт GPIO11
- SPI_CS1 — контакт GPIO1
- SPI_CS2 — контакт GPIO0
- Последовательный интерфейс HSPI в периферийном режиме, допускает подключение дополнительных устройств, совершающих обмен данными по шине SPI (дисплеи, микроконтроллеры и т.д.):
- HSPI_CS - контакт GPIO15
- HSPI_MISO - контакт GPIO12
- HSPI_MOSI - контакт GPIO13
- HSPI_SCLK - контакт GPIO14
- PWM (ШИМ) — цифровая широтно-импульсная модуляция сигнала с разрядностью до 14-бит, GPIO12, GPIO14, GPIO15. Программный ШИМ настраивается на любой GPIO
- Интерфейс электрической последовательной шины I2S. В основном, служит для сбора, обработки и передачи аудиоданных, или для приёма/передачи последовательных данных по двум раздельным шинам:
- I2SI_DATA — приём, контакт GPIO12
- I2SI_BCK — приём, контакт GPIO13
- I2SI_WS — приём, контакт GPIO14
- I2SO_BCK — передача, контакт GPIO15
- I2SO_DATA — передача, контакт GPIO3
- I2SO_WS — передача, контакт GPIO2
- Периферийный интерфейс IrDA (ИК дистанционное управление), реализуемый на программном уровне. Предназначен для модуляции несущей частоты 38кГц, демодуляции или кодирования NEC. Дальность передачи сигнала составляет около 1м:
- IR_Tx — контакт GPIO14
- IR_Rx — контакт GPIO5
- Интерфейс безопасных цифровых входов/выходов SDIO, предназначен для коммутации с внешней флеш-памятью стандарта SD по последовательной шине:
- SDIO_DATA_0 — контакт GPIO7
- SDIO_DATA_1 — контакт GPIO8
- SDIO_DATA_2 — контакт GPIO9
- SDIO_DATA_3 — контакт GPIO10
- SDIO_CMD — контакт GPIO11
- SDIO_CLK — контакт GPIO6
Режимы энергосбережения ESP8266EX
За исключением стандартных режимов полного функционирования и выключенного состояния, модуль WeMos NodeMCU Lua поддерживает энергосберегающие режимы, предназначенные для каждого определённого случая.
- Modem-sleep — настраивается для приложений, использующих функции ШИМ или I2S, заставляющие процессор работать. В случаях, когда WiFi-связь установлена и передача данных не требуется, схема WiFi-модема может быть отключена для экономии энергии. Например, в режиме DTIM3, когда ESP8266 "спит" 300 миллисекунд и просыпается на 3 миллисекунды для приёма от точки доступа пакетов беспроводных Маяков (Beacon), общее потребление тока составляет около 20мА.
- Light-sleep — используется в задачах, в которых поддерживается соединение WiFi и передача данных не требуется, при этом процессор может быть приостановлен. Например, режим коммутатора WiFi. Общее среднее потребление тока составляет около 2 мА.
- Deep-sleep — глубокий сон оптимален для приложений, которые не требуют подключения WiFi и передают данные c большими задержками по времени. К таким задачам относятся датчики температуры, выполняющие измерения каждые 100 секунд. Например, когда ESP8266EX "спит" 300 секунд и просыпается для соединения с точкой доступа (около 0.3-1 секунды), общее среднее потребление тока намного меньше 1 мА.
Программирование ESP8266 в среде Arduino IDE
Редактор Ардуино ИДЕ предоставит множество ознакомительных уроков для платы NodeMCU 1.0 (ESP-12E Model), стоит только зайти в раздел примеров, расположенный в "Файл"-"Примеры".
Начинать изучение основ программирования микроконтроллера всегда нужно с малого. Самым первым и простым примером в ознакомлении всегда был и остаётся скетч, мигающий встроенным на плате светодиодом. Нижеприведённый текст программы зажигает и гасит оба светодиода, и делает это с определённым эффектом.
int ledPin1 = D0; int ledPin2 = D4; void setup() { pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); } void loop() { for (int i=1; i<5; i++) { digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, LOW); delay(200); digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, HIGH); delay(200); } digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, HIGH); delay(200); digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); delay(200); digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, HIGH); delay(1000); }
Внутренняя память WeMos NodeMCU Lua ESP8266, файловая система SPIFFS
Плата оснащена микросхемой памяти, размер которой составляет 4 Мегабайта (32 Мегабита). Такого размера достаточно для хранения основной прошивки, пользовательского кода и, при необходимости, создания упрощённой файловой системы SPIFFS. В среде Ардуино ИДЕ, настроенной на совместимость с платформой NodeMCU, память всегда распределяется в определённых пропорциях. По умолчанию, 1 Мегабайт выделяется под запись прошивки и исполняемой программы, увеличить этот размер никак нельзя. Остальные 3 Мегабайта остаются свободными или размечаются под хранение данных. Выполняя обновление прошивки, пользователь сам выбирает необходимость наличия файловой системы и её размер. В ней можно хранить данные скетча, файлы конфигурации или содержимое веб-сервера.
В большинстве случаев, скетчи умещаются в памяти без труда. Если речь заходит о написании и выполнении объёмного текста кода, пользователь может попробовать сэкономить память, воспользовавшись модифицированной прошивкой NodeMCU с интерпретатором языка Lua (основанной на NONOS-SDK), изменив её состав при помощи наборов разработчика NodeMCU SDK путём исключения или добавления поддержки определённых функций разрабатываемого проекта. Учитывая, что все исполняемые файлы программ на языке Lua хранятся в области SPIFFS, обновление прошивки модуля на ПО NodeMCU несколько по иному распределяет память, формируя файловую систему из оставшегося свободного пространства, не занятого самой прошивкой.
Структура файловой системы имеет небольшой ряд ограничений из-за конструктивных особенностей чипа ESP8266EX. Она не поддерживает разбитие памяти на разделы и не работает с папками, храня файлы в виде списка. Максимальный размер имени файла не должен превышать 32 символа, включая специальный символ, отведённый под окончание строки.
Перенести файлы в систему SPIFFS можно как из популярной среды программирования Arduino IDE, так и с помощью широко известного в ESP-сообществе java-редактора ESPlorer. По умолчанию, ни одной подобной функции в Ардуино ИДЕ не предусмотрено, и пользователю придётся установить необходимое небольшое дополнение за несколько шагов.
- Загрузите последнюю версию дополнения с сайта GitHub. Создайте на компьютере папку "tools" в директории скетчей и распакуйте в неё содержимое архива (по умолчанию путь C:/Users/Пользователь/Documents/Arduino/tools/ESP8266FS/tool/esp8266fs.jar). Перезапустите Ардуино ИДЕ.
- Откройте скетч или создайте новый и запишите его. Откройте папку скетча (выберите Скетч->Показать папку скетча) и создайте в ней папку "data", поместив туда необходимые для записи файлы. Убедитесь, что правильно выбран тип платы, используемый порт и закрыт Монитор последовательного порта.
- В меню "Инструменты" выберите пункт "ESP8266 Sketch Data Upload" и дождитесь надписи "SPIFFS Image Uploaded", символизирующей окончание записи образа файловой системы.
Загрузите скетч, демонстрирующего сводные данные о файловой системе и содержащихся в ней ранее добавленных файлах. Скетч выполняется один раз после перезапуска платы и выводит информацию в последовательный порт. Пример выполнения:
Поменяйте в тексте программы и в настройках монитора последовательного порта скорость на 74800 бод, чтобы загрузочная информация ESP8266 стала читаемой (первая строка на картинке).
Создание модифицированной прошивки с интерпретатором NodeMCU Lua
Развитием ESP-8266 и её технической поддержкой занимаются не только энтузиасты мирового сообщества, но и профессиональные команды сторонних независимых разработчиков. Благодаря их кропотливым трудам, в настоящее время пользователю доступны различные способы создания собственной прошивки:
- Веб-ресурсом GitHub - NodeMCU firmware предоставлена возможность скачивания готовых вариантов некоторых версий прошивок, там же доступны комплекты средств разработки SDK с открытым исходным кодом.
- Веб-ресурсом облачного конструктора NodeMCU-build реализован интересный механизм гибкого и эффективного создания модификаций кастомной прошивки. Конструктор формирует готовый файл прошивки и отправляет его на указанную электронную почту. Большой список из подключаемых библиотек, с использованием системы выбора, помогает составить немалое количество вариантов прошивок, "заточенных" под поставленные задачи определённого проекта. В тоже время исключение неиспользуемых библиотек позволяет сэкономить свободную память модуля WeMos .
Веб-страница располагает большой подборкой информации с подробным объяснением множества функций подключаемых библиотек, включая методы работы с внешней или внутренней файловой системой и др.
Облачный конструктор генерирует два варианта прошивки: integer (целочисленная) и float (с плавающей точкой). Целочисленная версия не поддерживает операции с плавающей запятой и не допускает нецелых чисел. Она занимает меньше места в Flash-памяти и в несколько раз быстрее выполняет вычисления. Для общего понимания, в целочисленной версии деление 3/2 равно 1, а не 1,5.
Обновление ПО платформы WeMos NodeMCU Lua, прошивка
Микроконтроллер WeMos полностью поддерживает работу на прошивке, включающей в себя интерпретатор NodeMCU скриптового языка Lua, выполняющего команды наподобие АТ инструкций. Загрузка новой прошивки в память ESP8266 выполняется через порт USB или по воздуху. Причём загружаемая прошивка может быть как оригинальной, так и модифицированной с применением инструментов разработки ПО (SDK). Либо вообще быть написанной самостоятельно на языке С/С++.
Для внесения прошивки в память модуля WeMos, воспользуйтесь инструментом esptool-ck. Исходный код прошивки NodeMCU доступен в репозитории GitHub.
В качестве альтернативного варианта, подойдёт хорошо известная программа Node MCU Flasher для Windows. Последняя версия доступна для загрузки из репозитория GitHub. Процесс записи предварительно скомпилированного файла (формат .bin) прошивки прост, состоит из нескольких шагов и не занимает много времени.
- Соедините плату NodeMCU WeMos с компьютером при помощи USB-кабеля.
- Если плата подключается впервые, установите драйвер для микросхемы USB-TTL преобразователя CP2102.
- В Диспетчере Устройств Windows, в разделе Порты (COM и LPT), найдите и запомните (запишите) назначенный плате номер COM-порта. Его необходимо будет указать в настройках программы перед прошивкой.
- Запустите Flasher, во вкладке "Config" выберите нужную прошивку и укажите ей адрес 0x00000. Если прошивка состоит из нескольких частей, то каждая её составляющая часть размещается в новой строке с указанием соответствующего адреса (см. документацию к прошивке).
- Настройки скорости и размера памяти во вкладке "Advanced":
- Вернитесь на вкладку "Operation", выберите номер выделенного COM-порта, и нажмите кнопку "Flash", тем самым запустив процесс записи прошивки. Дождитесь полного завершения операции.
Перед записью прошивки, крайне рекомендуется полная очистка флешь-памяти. Чаще всего, после обновления, прошивка работает без нареканий. Если предварительно не производить чистку памяти, можно столкнуться с ситуацией, когда заново загруженная версия NodeMCU не совпадёт с предыдущей версией прошивки, вследствие чего плата попросту не запуститься в нормальном режиме. В таком случае, от пользователя потребуется запись отдельного файла инициализации модуля "esp_init_data_default.bin" из той версии SDK, на которой выполнялась сборка прошивки.
Программа Node MCU Flasher умеет записывать в память не только прошивки NodeMCU, но и оригинальные или кастомные прошивки с поддержкой АТ команд на основе существующих комплектов инструментов разработки (SDK) от компании-производителя Espressif System, выпускающей контроллеры ESP.
Готовый вариант прошивки NodeMCU для микроконтроллера WeMos, собранный на интерпретаторе языка Lua версии 5.1.4, SDK версии 2.2.1, включая блоки: ADC, FILE, GPIO, MDNS, MQTT, NET, NODE, PWM, TMR, UART, WIFI, WPS.
Программирование ESP8266 WeMos в среде ESPlorer
Откройте редактор ESPlorer, в правой верхней части окна терминала укажите COM-порт (#1), к которому подключена плата контроллера WeMos. Затем, установите скорость 115200 бод (#2) и откройте порт для установления связи с платой (#3). После выполнения ручного сброса контроллера (#4), ESP8266 выдаст загрузочную информацию о версии прошивки (#5) и включится в рабочий режим.
Написанная на языке Lua, программа может состоять из двух и более частей исполняемого кода, но всегда должна начинаться с файла инициализации. В левой части окна напишите простую команду (#6), сохраните её в файле с именем "init.lua" (#7) и прошейте в память кнопкой Save to ESP (#8). Результат выполнения сразу же отобразится в окне терминала (#9). Получить информацию о размере файловой системы, свободном и занятом пространстве (#10), а также списке файлов с кодом .lua в памяти (#11), позволит кнопка Reload (#12).
Добавление платформы WeMos ESP8266 в Ардуино ИДЕ
Запустите редактор Ардуино, перейдите в пункт "Настройки" из меню "Файл". В строке "Дополнительные ссылки для менеджера плат" введите адрес:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Закройте окно и перейдите в "Менеджер плат", двигаясь по меню "Инструменты".
Для быстрого нахождения нужного дополнения, в строке поиска укажите esp8266. Нажмите "Установить" и дождитесь надписи Installed, означающей завершение процесса.
Все платформы, входящие в состав пакета установки, теперь доступны для программирования.
Техническая информация
- Документация ESP-12E v1.0 (англ., PDF)
- Документация ESP8266EX v1.0 (англ., PDF)
Полезные ссылки
- Документация DevKit 1.0
- Описание NodeMCU API
- АТ инструкции ESP8266 v1.5.4 (англ., PDF)
- AT инструкции ESP8266 v3.0.2 (англ., PDF)
- АТ команды ESP8266 в примерах v1.3 (англ., PDF)
Нет отзывов об этом товаре.
Нет вопросов об этом товаре.