WiFi модуль Amica NodeMcu V2 Lua на чипах ESP8266 и CP2102

Цена:

600 р.
Код товара: 12372
Оригинальное название:
NodeMCU LUA Amica R2 ESP8266 Wifi Board

WeMos NodeMCU V2 Lua Amica Платформа разработки на базе современного WiFi-чипа ESP8266-12E

Ни для кого не секрет, что в настоящем современном мире, среди лидирующих средств беспроводной связи, преобладает популярнейшая во всех отношениях технология WiFi. Можно невооружённым глазом заметить, насколько быстро она развивается и одновременно совершенствует нашу жизнь, делая её значительно комфортнее во многих сферах. Уже привычный для большинства стандарт связи WiFi, обеспечивающий высокоскоростную передачу или приём данных по радиоканалу на частоте 2.4ГГц, позволил нам стать по-настоящему свободными от морально устаревших проводных соединений. И стоит ли упоминать, что само появление такой технологии привело к неизбежной массовой разработке умных устройств, которыми сейчас стремительно и безустанно наполняется наш быт.

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

Модуль разработчика NodeMCU V2 Lua призван до минимума упростить процесс проектирования устройства с "нуля". В его основе расположен не менее популярный чип беспроводной связи ESP-12E, сконструированный на ядре микроконтроллера ESP8266EX. Плата несёт в себе весь базовый функционал организации связи по WiFi и оснащена всеми доступными пользовательскими выводами, соединёнными с припаянными штырьковыми контактами с типовым шагом 2.54мм, удобным для большинства беспаечных макетных плат предварительного прототипирования. Встроенная в ESP-12E память придаёт модулю WeMos NodeMCU Lua V2 CP2102 практически автономную работоспособность, во многих случаях делая плату независимой от дополнительных внешних микроконтроллеров.

Технические данные

  • Модификация: NodeMCU DevKit 1.0
  • Контроллер: ESP8266EX Serial WiFi, однокристальная система на основе Tensilica L106 с ультра-низким энергопотреблением, разрядность 32-бит
  • Частота процессора: 80 МГц
  • Рабочее напряжение: 3.3 В
  • Питание: 5 В от USB, 6 - 12 В через вывод Vin (внешний источник)
  • Рабочий ток: 71-80 мА
  • Максимальный ток: 300 мА
  • RAM-память: 32 Кбайт + 80 Кбайт
  • Флеш-память: 32 МБит / 4 МБайт
  • Протоколы WiFi: 802.11 b/g/n
  • Диапазон частот: 2.4ГГц-2.5ГГЦ (2400М-2483.5М)
  • Режимы WiFi: Клиент, Программная точка доступа, Клиент+Программная точка доступа (station, softAP, station+softAP
  • Защита: WPA-PSK, WPA2-PSK
  • Шифрование: WEP, TKIP, AES
  • Сетевые протоколы: IPv4, TCP/UDP/HTTP/FTP
  • Выводы общего назначения (вход/выход, GPIO): до 17
  • Максимальный ток на контакт общего назначения: 12 мА, рекомендуемый 6мА
  • Аналоговые входы: 1, 10-бит
  • Связь по USB: чип CP2102 USB-UART
  • Технология STBC, 1x1 MIMO, 2x1 MIMO
  • Выходная мощность в режиме 802.11b: +20dBm
  • Интерфейсы: UART, HSPI, I2C, I2S, IrDA, GPIO, ШИМ
  • Интегрированные переключатель приёма/передачи, согласующий высокочастотный трансформатор, усилитель мощности
  • Интегрированные блоки: согласования сети, фазовой автоподстройки частоты, управления питанием, блоки регулирования
  • Антенна WiFi: PCB, разведена на плате в виде дорожки
  • Поддержка файловой системы SPIFFS
  • Встроенный стек протоколов TCP / IP
  • Поддержка до 5 одновременных клиентских подключений
  • Поддержка функций Smart Link для устройств на Andriod и iOS
  • Поддержка АТ-команд, Облачного Сервера и Наборов Разработки (SDK), обновление прошивки
  • Шаг между контактами: 2.54 мм
  • Светодиодная индикация: вывод D4 (GPIO2), вывод D0 (GPIO16)
  • Рабочая температура: -20°...+85°
  • Размеры: 49.0 х 25.6 х 4.5 мм

Порт USB, первое включение

Всё необходимое для "быстрого старта" есть на самой плате. Встроенный порт USB помогает подключаться к компьютеру напрямую при помощи обычного кабеля с разъёмом стандарта микроUSB. Благодаря ему и микрочипу преобразователя интерфейсов Silabs CP2102, на котором построено общение между USB и ESP8266, отпадает необходимость в использовании дополнительных устройств для организации связи с платой или для внутрисхемного программирования основной микросхемы. Порт USB предоставляет открытую возможность управлять модулем, вносить в него свои приложения или загружать программное обеспечение (прошивку). В ином случае, USB-порт может быть задействован для питания платы.

При первом подключении модуля NodeMCU V2 к компьютеру, может потребоваться установка драйвера для USB-TTL CP2102 преобразователя. Дистрибутив под нужную операционную систему ПК легко ищется на официальном сайте производителя микросхемы.

Распиновка WeMos NodeMCU V2 Lua (Диаграмма выводов, NodeMCU V2 Lua CP2102 подключение)

  Функциональное назначение выводов NodeMCU V2 Lua распиновка  

Модуль WiFI NodeMCU V2 WeMos Amica обладает цифровыми выводами общего назначения, работающими с логикой напряжений "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
  • EN (CHIP_EN, CH_PD, CH_PU) — контакт включения модуля в рабочий режим. Активен при высокоуровневом сигнале
  • GPIO16 — контакт общего назначения, ввод/вывод данных. Соединение с выводом RST выводит модуль из режима глубокого сна
  • GPIO0-GPIO15 — контакт общего назначения, ввод/вывод данных. Переназначаемый на другие функции. Выводы определяются по нумерации, например GPIO1 = 1 (основной EP8266 модуль) или D10 (NodeMCU)
  • VIN 5V — контакт питания модуля, нестабилизированное напряжение в диапазоне 6.0-12.0 В
  • 3.3V — контакт выходного напряжения внутрисхемного регулятора, рабочее напряжение ESP8266. Выводы 3.3V предназначены для питания подключаемых к плате сенсоров или датчиков. Суммарная максимальная нагрузка всех выводов 3.3V не должна превышать 300мА
  • GND — общий, заземление
  • RSV — контакты не подключены. Они зарезервированы под функции, которые могут появиться в будущих ревизиях плат WeMos NodeMCU

Выводы GPIO6-GPIO11 (SDIO) привязаны к встроенной памяти и не рекомендуются к использованию в других целях, кроме подключения внешней памяти. Все цифровые контакты ввода/вывода, за исключением GPIO16, поддерживают обработку прерываний.

Специальные функции GPIO

Обозначение контактов на плате разработчика NodeMCU Lua WeMos Amica значительно разнится от привычной маркировки выводов GPIO в модулях с ESP8266. Постоянно помнить их соответствие затруднительно, куда удобнее обращаться к выводам по их оригинальному названию при написании скетчей в Arduino IDE. Вспомогательная библиотека, входящая в состав пакета поддержки ESP8266, содержит все переадресуемые определения GPIO в соответствии с их расположением на плате NodeMCU Lua V2. Одновременно с этим, библиотека переназначает шину связи I2C на новые контакты.

  • Асинхронный последовательный интерфейс UART из 2х линий, устанавливает связь с другими устройствами по шине UART:
    • UART0_RX — контакт GPIO3
    • UART0_TX — контакт GPIO1
    • UART0_RTS — контакт GPIO15
    • UART0_CTS — контакт GPIO13
    • UART1_TX — контакт GPIO2, может использоваться для вывода отладочной информации
    Подключение других устройств к выводам осуществляется по схеме RX->TX, TX->RX.
  • Двунаправленный последовательный интерфейс IIC/I2C, позволяет коммутировать внешние датчики, сенсоры, дисплеи т.д.:
    • SDA — контакт GPIO2
    • SCL — контакт GPIO14
  • Основной интерфейс последовательной шины SPI, режимы главный/периферийный:
    • SPI_SCLK — контакт GPIO6
    • SPI_MISO — контакт GPIO7
    • SPI_MOSI — контакт GPIO8
    • SPI_HD — контакт GPIO9
    • SPI_WP — контакт GPIO10
    • SPI_CS1 — контакт GPIO1
    • SPI_CS2 — контакт GPIO0
  • Последовательный интерфейс HSPI в периферийном режиме, допускает подключение дополнительных устройств, совершающих обмен данными по шине SPI (дисплеи, микроконтроллеры и т.д.):
    • HSPI_CS - контакт GPIO15
    • HSPI_MISO - контакт GPIO12
    • HSPI_MOSI - контакт GPIO13
    • HSPI_SCLK - контакт GPIO14
    Коммутация с другими устройствами осуществляется по схеме CS->CS, SCLK->SCLK, MISO->MOSI, MOSI->MISO
  • PWM (ШИМ) — цифровая широтно-импульсная модуляция сигнала с разрядностью до 14-битвыводы GPIO4, GPIO12, GPIO14, GPIO15. Программный ШИМ настраивается на любой GPIO
  • Интерфейс электрической последовательной шины I2S. В основном, служит для сбора, обработки и передачи аудиоданных, или для приёма/передачи последовательных данных по двум раздельным шинам:
    • I2S1_DATA — приём, контакт GPIO12
    • I2S1_BCK — приём, контакт GPIO13
    • I2S1_WS — приём, контакт GPIO14
    • I2S0_BCK — передача, контакт GPIO15
    • I2S0_DATA — передача, контакт GPIO3
    • I2S0_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

Создание модифицированной прошивки с интерпретатором NodeMCU Lua

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

  • Страницей GitHub - NodeMCU firmware предоставлена возможность скачивать готовые варианты некоторых версий прошивок, а также загружать комплекты средств разработки SDK с открытым исходным кодом.
  • Сайтом облачного конструктора NodeMCU-build реализован интересный механизм гибкого и эффективного модифицирования кастомной прошивки. Конструктор формирует законченный файл прошивки и отправляет его на указанную электронную почту. Большой список подключаемых библиотек помогает составить немалое количество вариантов прошивок, "заточенных" под поставленные задачи определённые проекта. Исключение неиспользуемых библиотек позволит сэкономить свободную память модуля NodeMCU.
      Конструктор прошивки NodeMCU Lua  

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

Облачный конструктор генерирует два варианта прошивки: integer (целочисленная) и float (с плавающей точкой). Целочисленная версия не поддерживает операции с плавающей запятой и не допускает нецелых чисел. Она занимает меньше места в памяти Flash и в несколько раз быстрее выполняет вычисления. В целочисленной версии деление 3/2 равно 1, а не 1.5.

Обновление ПО платформы WeMos NodeMCU Lua, прошивка

Изначально, модуль поставляется с прошивкой, включающей в себя интерпретатор NodeMCU скриптового языка Lua, выполняющего команды наподобие АТ инструкций. Загрузка новой прошивки в память ESP8266 выполняется через порт USB или по воздуху. Причём загружаемая прошивка может быть как оригинальной, так и модифицированной с применением инструментов разработки ПО (SDK). Либо вообще быть написанной самостоятельно на языке С/С++.

Для внесения прошивки в модуль NodeMCU V2 воспользуйтесь хорошо известной программой Node MCU Flasher для Windows. Последняя версия доступна для загрузки из репозитория на сайте GitHub. Процесс записи предварительно скомпилированного файла (формат .bin) прошивки прост, состоит из нескольких шагов и не занимает много времени.

  1. Соедините плату Amica NodeMCU V2 с компьютером при помощи USB-кабеля.
  2. Если плата подключается впервые, установите драйвер для микросхемы USB-TTL преобразователя CP2102.
  3. В Диспетчере Устройств Windows, в разделе Порты (COM и LPT), найдите и запомните (запишите) назначенный плате номер COM-порта. Его необходимо будет указать в настройках программы перед прошивкой.
  4. Запустите Flasher, во вкладке "Config" выберите нужную прошивку и укажите адрес 0x00000. Если прошивка состоит из нескольких частей, то каждая её составляющая часть размещается в новой строке с указанием соответствующего адреса (см. документацию к прошивке).
      Выбор прошивки для ESP в NodeMCU Flasher  
  5. Настройки скорости и размера памяти во вкладке "Advanced":
      Настройка скорости и размера памяти WeMos ESP во вкладке Advanced NodeMCU Flasher  
  6. Вернитесь на вкладку "Operation", выберите номер выделенного COM-порта, и нажмите кнопку "Flash", тем самым запустив процесс записи прошивки. Дождитесь полного завершения операции. При этом нажимать кнопки "Flash" и "RST" не нужно, как это традиционно принято делать при обычной прошивке чипа ESP8266EX.
      Завершение прошивки ESP WeMos в NodeMCU Flasher  

Перед записью прошивки крайне рекомендуется полная очистка флешь-памяти. Чаще всего, после обновления, прошивка работает без нареканий. Если предварительно не производить чистку памяти, можно столкнуться с ситуацией, когда заново загруженная версия NodeMCU не совпадёт с предыдущей версией прошивки, вследствие чего плата попросту не запуститься в нормальном режиме. В таком случае, от пользователя потребуется запись файла инициализации модуля "esp_init_data_default.bin" из той версии SDK, на которой выполнялась сборка прошивки.

Программа Node MCU Flasher умеет записывать в память не только прошивки NodeMCU, но и оригинальные или кастомные прошивки с поддержкой АТ команд на основе существующих комплектов инструментов разработки (SDK) от компании-производителя Espressif System, выпускающей контроллеры ESP-12E WiFi.

Готовый вариант прошивки NodeMCU для микроконтроллера WeMos, собранный на интерпретаторе языка Lua версии 5.1.4, SDK версии 2.2.1, включая блоки: ADC, FILE, GPIO, MDNS, MQTT, NET, NODE, PWM, TMR, UART, WIFI, WPS.

Программирование модуля NodeMCU Lua ESP8266

Arduino IDE

Многим знакомый редактор Ардуино ИДЕ (Arduino IDE) дружит с модулями NodeMCU и способен загружать скетчи в флеш-память ESP8266. Установка дополнительной библиотеки научит их понимать друг-друга. Запустите редактор Ардуино, перейдите в пункт "Настройки" из меню "Файл". В строке "Дополнительные ссылки для менеджера плат" введите адрес:

http://arduino.esp8266.com/stable/package_esp8266com_index.json
  Установка платформы ESP8266 в среду разработки ARDUINO IDE  

Закройте окно и перейдите в "Менеджер плат", двигаясь по меню "Инструменты".

  Установка платформы ESP8266 в среду разработки ARDUINO IDE  

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

  Установка платформы ESP8266 в среду разработки ARDUINO IDE  

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

  Установка платформы 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);
}

 

ESPlorer IDE

Бесплатный удобный графический редактор с интегрированной средой разработки ESPlorer, поддерживающий одновременно языки программирования Lua и Python, а также умеющий работать с АТ командами. Загрузить его можно по этой ссылке (требует установку новой версии Java). Обладает множеством полезных функций и настроек, поддерживает несколько операционных систем.

  Рабочая панель ESPlorer  

В качестве примера воспользуйтесь демонстрационным кодом создания простого web-сервера (сохраните текст в файл с именем init.lua и запишите его в ESP):

-- Устанавливаем режим точки доступа

wifi.setmode(wifi.SOFTAP)

-- Задаём параметры беспроводной сети 

local ap_cfg={}
ap_cfg.ssid="MY-SSID"
ap_cfg.pwd="MY-PASSWORD"
wifi.ap.config(ap_cfg)

-- Создаем сервер.
-- При запросе от клиента выводим на консоль его данные
-- и посылаем ему "hello world" 

sv = net.createServer(net.TCP)

function receiver(sck, data)
  print(data)
  sck:close()
end

if sv then
  sv:listen(80, function(conn)
    conn:on("receive", receiver)
    conn:send("hello world")
  end)
end

При создании сервера, модулю назначается IP-адрес 192.168.4.1, первому подключаемому клиенту присваивается адрес 192.168.4.2

Внутренняя память WeMos NodeMCU Lua CP2102, файловая система SPIFFS

Плата оснащена микросхемой памяти, размер которой составляет 4 Мегабайта (32 Мегабита). Такого размера достаточно для хранения основной прошивки, пользовательского кода и, при необходимости, создания упрощённой файловой системы SPIFFS. Память всегда распределяется в определённых пропорциях. В среде Ардуино ИДЕ, настроенной на совместимость с платформой NodeMCU, по умолчанию, 1 Мегабайт выделяется под запись прошивки и исполняемой программы, увеличить этот размер никак нельзя. Остальные 3 Мегабайта остаются свободными или размечаются под хранение данных. Выполняя обновление прошивки, пользователь сам выбирает необходимость наличия файловой системы и её размер. В ней можно хранить данные скетча, файлы конфигурации или содержимое веб-сервера.

В большинстве случаев, скетчи умещаются в памяти без труда. Если речь заходит о написании и выполнении объёмного текста кода, пользователь может попробовать сэкономить память, воспользовавшись модифицированной прошивкой NodeMCU с интерпретатором языка Lua (основанной на NONOS-SDK), изменив её состав при помощи наборов разработчика NodeMCU SDK путём исключения или добавления поддержки определённых функций разрабатываемого проекта. Учитывая, что все исполняемые файлы программ на языке Lua хранятся в области SPIFFS, обновление прошивки модуля на ПО NodeMCU несколько по иному распределяет память, формируя файловую систему из оставшегося свободного пространства, не занятого самой прошивкой.

Структура файловой системы имеет небольшой ряд ограничений из-за конструктивных особенностей чипа ESP8266EX. Она не поддерживает разбитие памяти на разделы и не работает с папками, храня файлы в виде списка. Максимальный размер имени файла не должен превышать 32 символа, включая специальный символ, отведённый под окончание строки.

Перенести файлы в систему SPIFFS можно как из популярной среды программирования Arduino IDE, так и с помощью широко известного в ESP-сообществе java-редактора ESPlorer. По умолчанию, ни одной подобной функции в Ардуино ИДЕ не предусмотрено, и пользователю придётся установить необходимое небольшое дополнение за несколько шагов.

  1. Загрузите последнюю версию дополнения с сайта GitHub. Создайте на компьютере папку "tools" в директории скетчей и распакуйте в неё содержимое архива (по умолчанию путь C:/Users/Пользователь/Documents/Arduino/tools/ESP8266FS/tool/esp8266fs.jar). Перезапустите Ардуино ИДЕ.
  2. Откройте скетч или создайте новый и запишите его. Откройте папку скетча (выберите Скетч->Показать папку скетча) и создайте в ней папку "data", поместив туда необходимые для записи файлы. Убедитесь, что правильно выбран тип платы, используемый порт и закрыт Монитор последовательного порта.
  3. В меню "Инструменты" выберите пункт "ESP8266 Sketch Data Upload" и дождитесь надписи "SPIFFS Image Uploaded", символизирующей окончание записи образа файловой системы.

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

  ESP8266 SPIFFS All Files Read Demo Sample  

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

Техническая информация

Полезные ссылки

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2019г https://compacttool.ru