Lolin new nodemcu v3 инструкция

Introduction: Get Started With ESP8266 (NodeMCU Lolin V3)

Component Required:

  • ESP8266 (NodeMCU Lolin V3)
  • Micro USB
  • Arduino IDE
  • Internet connection

NodeMCU lolin V3 Feature:

  • Open-source
  • Status LED
  • MicroUSB port
  • Interactive and Programmable
  • Low cost
  • ESP8266 with inbuilt wifi
  • USB to UART converter
  • GPIO pins

Step 1: Add ESP8266 to Arduino IDE

this is a way to add the NodeMCU lolin V3 board to the Arduino IDE:

  1. Open Arduino IDE.
  2. Click File > Preference.
  3. Add This URL «http://arduino.esp8266.com/stable/package_esp8266com_index.json» to Additional Board Manager URLs.
  4. Go to Tools > Board > Board Manager.
  5. Wait until the update is complete.
  6. Search esp8266 by ESP8266 Comunity, then install, wait until the installation is complete.
  7. After it finishes, Go to Tools > Board > NodeMCU 1.0 (ESP-12E Module).

Step 2: Port on NodeMCU Lolin V3

To use a Port on NodeMCU, it is different from Arduino.

An example is the use of «pinMode ()»

To make Port D5 on Arduino as Output, the code will be like this:

pinMode(5, OUTPUT);

And to make the D5 port on NodeMCU lolin V3 as Outout, the code will be like this:

pinMode(D5, OUTPUT)

If you don’t write the full port address when using NodeMCU lolin V3. What will be detected in the program is Port of ESP-12E which is in the Node.

See pictures for more details

Step 3: Example Sketch

NodeMCU lolin V3 has LEDs installed on it. The led is connected to Port D4. I will use these LEDs for example sketch.

Example Sketch:

#define LEDpin D4 //set led pin


// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LEDpin, OUTPUT); }

// the loop function runs over and over again forever void loop() { digitalWrite(LEDpin, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LEDpin, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }

Based on the example sketch that I made. LEDs will flash once every second.

На чтение 16 мин Просмотров 3к. Опубликовано

Экран последовательного порта ведомого устройства (Arduino Uno):

Вывод информации из последовательного порта Arduino Uno

Экран последовательного порта главного устройства (NodeMCU V3):

Вывод информации из последовательного порта NodeMCU

Содержание

  1. Самые популярные материалы в блоге
  2. За все время
  3. Установка ядра ESP8266 на ОС Windows
  4. Последовательная связь
  5. Настройка облачной части для работы с устройством
  6. Периферия и ввод/вывод
  7. Подготовка программного обеспечения
  8. Подключение и настройка девайса
  9. Прошивки для esp8266 NodeMcu
  10. Сбор прошивки в облачном сервисе
  11. Обновление прошивки Node Mcu
  12. Требования к питанию
  13. Приложение для смартфона
  14. On-board Switches & LED Indicator
  15. Комплектующие
  16. 13 People Made This Project!
  17. Платформы разработки для ESP8266
  18. Создание Azure-функции для генерации SAS
  19. Продолжение доступно только участникам
  20. Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
  21. Вариант 2. Открой один материал
  22. Подключение NodeMCU к компьютеру
  23. Распиновка NodeMcu v3
  24. Кнопки и светодиодный индикатор на плате
  25. Программируемый логический контроллер для автоматизации процессов
  26. Пример подключения светодиода к NodeMCU
  27. Собираем проект
  28. Краткое описание языка Lua

Самые популярные материалы в блоге

За все время

  • BMS — обзор контроллеров защиты аккумуляторных батарей
  • Установка ESP32 в Arduino IDE (Руководство для Windows)
  • Адресная светодиодная лента Arduino и WS2812B
  • Веб-сервер потокового видео ESP32-CAM (работает с Home Assistant)
  • Светодиодный индикатор TM1637 и Arduino — схема подключения

Установка ядра ESP8266 на ОС Windows

Перейдем к установке ядра Arduino ESP8266.

Во-первых, на вашем компьютере должна быть установлена ​​последняя версия Arduino IDE (Arduino 1.6.4 или новее). Если у вас его нет, мы рекомендуем вам обновить его сейчас.

Последняя версия Arduino IDE

Во-первых, нам нужно обновить диспетчер вкладок с помощью настраиваемого URL-адреса. Откройте Arduino IDE и выберите Файл → Настройки. Затем скопируйте приведенный ниже URL-адрес в текстовое поле Additional Links for Board Manager, расположенное в нижней части окна:

Рисунок 7 Установка платы ESP8266 в Arduino IDE с использованием json url
Рисунок 7 — Установка платы ESP8266 в IDE Arduino с использованием URL-адреса json

Хороший. Затем перейдите в PCB Manager, выбрав Tools → PCB → PCB Manager. Помимо стандартных плат Arduino, должно быть несколько новых записей. Отфильтруйте результаты поиска, набрав esp8266. Щелкните эту запись и выберите Установить.

Рис.8 Установка ядра ESP8266 в Arduino IDE Board Manager
Рисунок 8 — Установка ядра ESP8266 в диспетчере плат Arduino IDE

Определения и инструменты для платы ESP8266 включают полностью новый набор gcc, g ++ и других довольно больших скомпилированных двоичных файлов, поэтому загрузка и установка может занять несколько минут (размер сжатого файла ~ 110 МБ). Когда установка будет завершена, рядом с элементом появится УСТАНОВЛЕНО. Теперь вы можете закрыть диспетчер плат.

Последовательная связь

На плате используется контроллер USB-UART Silicon Labs CP2102, который преобразует сигнал USB в сигнал последовательного порта и позволяет компьютеру программировать и взаимодействовать с микросхемой ESP8266.

Последовательная связь

  • Конвертер USB-UART CP2102
  • Скорость связи 4,5 Мбит / с
  • Поддержка управления потоком

Рисунок 5 USB - преобразователь TTL CP2102
Рисунок 5 — Конвертер USB-TTL CP2102

Если на вашем компьютере установлена ​​старая версия драйвера CP2102, мы рекомендуем немедленно выполнить обновление.

Драйвер CP2102

Настройка облачной части для работы с устройством

Оставим на время наше устройство и создадим его двойника в облаке. В последнее время можно создать двойное устройство прямо на портале Azure, чтобы воспользоваться преимуществами новых функций. В группе настроек Центра Интернета вещей под названием Проводник выберите устройства Интернета вещей и нажмите + Добавить.

Чтобы подключить устройство к IoT Hub, нам нужно создать SAS (Shared Access Signature). Двойной ключ устройства используется для генерации SAS, который можно получить с помощью вспомогательной утилиты (Device Explorer, iothub-explorer, IoT Extension for Azure CLI 2.0). Но самый простой способ получить ключ по-прежнему существует на портале Azure, перейдя в Центр Интернета вещей → Устройства Интернета вещей.

IoT Explorer
IoT Explorer

SAS можно создать на устройстве или воспользоваться онлайн-службой. По сути, SDK может автоматически генерировать SAS (просто укажите в коде двойной ключ устройства).

Создание токена с помощью службы
Создание токена с помощью службы

Способ генерации токена SAS веб-службой в течение ограниченного времени немного более безопасен. Хотя есть определенный нюанс. Если вы отправляете службе только имя устройства, злоумышленник может заставить имена получить токен с другого устройства. Поэтому, чтобы немного обезопасить процесс, я предлагаю следующее решение: сохранить хеш Azure-ключа двойника устройства на устройстве. А в служебном коде перед генерацией SAS мы проверим, совпадает ли хеш с хешем ключа устройства. Следовательно, вы можете получить SAS, только если знаете имя устройства и хэш его ключа.

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

Оказывается, оба метода обычно не идеальны, если у хакера есть доступ к устройству. Защита вашего соединения с помощью VPN здесь тоже не поможет. В этом случае канал передачи будет защищен, но тот, кто получит устройство, сможет получить доступ к каналу. К сожалению, на NodeMCU, Arduino и т.п нет возможности хранить ключи / пароли в каком-либо безопасном хранилище.

Периферия и ввод/вывод

NodeMCU ESP8266 имеет в общей сложности 17 контактов GPIO, подключенных к разъемам по обе стороны от макетной платы. Эти результаты можно использовать для выполнения различных периферийных действий, в том числе:

  • вход АЦП — 10-битный канал АЦП;
  • интерфейс UART — интерфейс UART используется для загрузки кода через последовательную связь;
  • выходы PWM — выходы PWM могут использоваться для уменьшения яркости светодиодов или управления двигателями;
  • интерфейсы SPI, I2C: интерфейсы используются SPI и I2C для подключения всех типов датчиков и периферийных устройств;
  • интерфейс I2S — интерфейс I2S используется для передачи цифрового звука.

Вывод мультиплексного ввода / вывода

  • 1-канальный aDC
  • 2 интерфейса UART
  • 4 выхода ШИМ
  • Интерфейсы SPI, I2C и I2S

Рисунок 3 Вывод мультиплексированного GPIO ESP8266 NodeMCU
Рисунок 3 — Мультиплексированные контакты GPIO платы NodeMCU ESP8266

ESP8266 использует функцию мультиплексирования контактов (несколько периферийных устройств мультиплексируются на одном контакте GPIO). Это означает, что вывод GPIO может действовать как PWM / UART / SPI.

Подготовка программного обеспечения

NodeMCU в этом проекте из Китая, поэтому используется USB-чип CH341. Необходимо установить драйвер для CH341. Драйвер можно скачать ниже, разархивировать и установить на свой компьютер.

Затем для использования с Arduino IDE вам необходимо добавить библиотеку плат. Откройте IDE Arduino:

  • Инструменты -> Доска -> Менеджер (Инструменты -> Доска -> Менеджер доски).
  • Найдите «esp8266 от сообщества ESP8266» и установите.
  • Файл -> Настройки).
  • Заполните дополнительное поле URL-адреса Board Manager:
    http://arduino.esp8266.com/stable/package_esp8266com_index.json
  • Инструменты -> Плата -> NodeMCU 1.0 (Инструменты -> Плата -> NodeMCU 1.0).

В прикрепленном файле Arduino измените параметры соответствующим образом:

  • SSID к вашему Wi-Fi
  • пароль для вашего Wi-Fi

Вы также можете изменить контрольный вывод в NodeMCU.

Технические характеристики оборудования NodeMCU ESP8266 - Multiplex GPIO Pin

Подключение и настройка девайса

Чтобы устройство было распознано в Windows, драйвер должен быть загружен по следующей ссылке: CP210x USB to UART Bridge VCP Drivers.

Стандартная скорость последовательного порта NodeMCU составляет 115 200 бит / с. Вы можете установить другую скорость, но при первом сбросе устройства она вернется к 115 200. Важно, чтобы драйвер был установлен на точно такую ​​же скорость.

Собственность водителя
Собственность водителя

Прошивки для esp8266 NodeMcu

Платформа основана на стандартной прошивке MCU Node, в которую интегрирован интерпретатор языка Lua. Используя команды Lua, вы можете делать следующее:

  • Подключение к точке доступа Wi-Fi;
  • Работает как точка доступа Wi-Fi;
  • Войдите в режим глубокого сна, чтобы снизить энергопотребление;
  • Включение или выключение светодиода на выходе GPIO16;
  • Выполнение различных операций с файлами во флеш-памяти;
  • Найдите открытую сеть Wi-Fi, подключитесь к ней;
  • Вывод MAC-адреса;
  • Управление пользовательскими таймерами.

Чтобы запрограммировать NodeMCU, вы можете использовать Arduino IDE или ESPlorer SDK. Этот комплекс имеет ряд отличий:

  • Его можно запускать на многих разных платформах;
  • Поддержка нескольких открытых файлов;
  • Позволяет выделить код языка Lua;
  • Возможность грамотно отправлять файлы;
  • Возможность одновременной поддержки нескольких типов прошивок.

Для обеспечения правильной и стабильной работы необходимо обновить прошивку до последней версии. Есть несколько способов обновления: облачная служба, образ Docker и сборка на Linux. У каждого из этих методов есть свои плюсы и минусы. Первый способ самый простой и понятный.

Сбор прошивки в облачном сервисе

Облачный сервис имеет простой и понятный интерфейс. Работа начинается с ввода электронной почты. Далее вам будет предложено выбрать тип прошивки: стабильная или протестированная. Первый используется для обучения и создания большого количества объектов, поэтому рекомендуется выбирать его. Следующим шагом будет подключение необходимых модулей. По умолчанию уже записано несколько основных пунктов, остальные следует включать только при необходимости. Затем выбираются дополнительные параметры. Среди них — поддержка FatFS для чтения SD-карты или включения режима отладки.

После начала сборки по почте придет письмо, сигнализирующее о начале процесса. Через некоторое время придет и вторая буква — вам будет предложено выбрать версию float (дробные числа) или integer (целые числа).

После перехода по полученной ссылке вам нужно будет скачать bin-файл и поместить его в раздел Ресурсы — Двоичный. Там будет находиться файл nodemcu_integer_0.9.5_20150318.bin, который необходимо удалить. В результате содержимое папки будет выглядеть так.

Esp8266 NodeMcu

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

Для правильной и стабильной работы карты файл esp_init_data_default.bin должен быть перезаписан. Вы можете скачать его с официального сайта. Требуемый файл необходимо вернуть в систему для прошивки NodeMCU Flasher по пути Ресурсы — Двоичные файлы после удаления из него старого файла.

Затем вы можете подключить NodeMCU и начать обновление. Для начала нужно изменить настройки: в NodeMCU Flasher во вкладке Config вместо INTERNAL: // NODEMCU нужно выбрать файл собранной прошивки.

NodeMcu

Остальное оставьте без изменений, перейдите в «Операции» и нажмите «Вспышка». Как только прошивка закончится, нужно снова зайти в Config и в первой строке указать путь esp_init_data_default.bin. Он также указывает адрес, по которому вы хотите переместить этот файл. Для модуля NodeMCU следует выбрать адрес 0x3FC000. Затем вам нужно вернуться в «Операции» и нажать «Вспышка.

Далее необходимо переформатировать всю файловую систему ячейки. Для этого вам необходимо запустить ESPlorer, установить скорость передачи данных 115200 и перезапустить NodeMCU. После всех вышеперечисленных шагов выйдет новая версия прошивки. Плата отладки полностью прошита и готова к использованию.

Требования к питанию

Поскольку диапазон рабочего напряжения ESP8266 составляет от 3 В до 3,6 В, эта плата оснащена стабилизатором напряжения LDO для поддержания постоянного напряжения 3,3 В. Он может надежно подавать ток до 600 мА, чего должно быть более чем достаточно. ESP8266 потребляет до 80 мА во время передачи RF. Выход стабилизатора также выведен на клеммы по бокам платы и обозначен как 3V3. Эти контакты можно использовать для подачи питания на внешние компоненты.

Требования к питанию

  • Рабочее напряжение: от 2,5 до 3,6 В
  • Встроенный стабилизатор: 3,3 В, 600 мА
  • Рабочий ток: 80 мА
  • Потребление в спящем режиме: 20 мкА

Рисунок 2 Батареи ESP8266 NodeMCU
Рисунок 2 — Аккумуляторы NodeMCU ESP8266

ESP8266 NodeMCU получает питание через встроенный разъем MicroB USB. В качестве альтернативы, если у вас есть регулируемый источник питания 5 В, вы можете использовать вывод VIN для прямого питания ESP8266 и его периферийных устройств.

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

ESP8266 требует 3,3 В для питания и логического уровня 3,3 В для связи. Контакты GPIO не принимают 5В! Если вы хотите подключить плату к цепям 5 В (или выше), вам необходимо реализовать адаптацию логического уровня.

Приложение для смартфона

Мы используем MIT App Inventor (ссылка) для создания приложения для телефона Android. Вы можете бесплатно зарегистрироваться, используя свою учетную запись Gmail. Если вы просто хотите использовать приложение, загрузите zip-файл, распакуйте его и установите home3.apk на свой телефон.

Команда для каждого выходного контакта очень проста:

  • включить красный / выключить красный
  • включить зеленый / выключить зеленый
  • включить синий / выключить синий
  • включить желтый / выключить желтый
  • включить оранжевый / выключить оранжевый
  • включить коричневый / выключить коричневый

А если вы хотите изменить команды, перейдите в MIT App Inventor и измените home3.aiaas, как показано на изображениях ниже:

  • Проект -> Импортировать проект (.aia) (Проект -> Импортировать проект).
  • Перейдите в «Блокировать и редактировать команду).
  • После внесения изменений выберите: Сборка -> Приложение (сохранить .apk).
  • Установите ваше приложение

On-board Switches & LED Indicator

NodeMCU ESP8266 имеет две кнопки. Одна, помеченная как RST, расположенная в верхнем левом углу, — это кнопка сброса, которая, очевидно, используется для сброса микросхемы ESP8266. Другая кнопка FLASH в нижнем левом углу — это кнопка загрузки, используемая при обновлении прошивки.

Переключатели и индикаторы

  • RST — сброс микросхемы ESP8266
  • FLASH — загрузка новых программ
  • Синий светодиод — программируется пользователем

Технические характеристики оборудования NodeMCU ESP8266 - кнопки сброса вспышки и светодиодные индикаторы

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

Комплектующие

Необходимые детали перечислены ниже. Все это можно купить на Aliexpress или в любом другом интернет-магазине.

  • NodeMcu V3 ESP8266 Китайская версия LoL1n v3.
  • Релейный модуль с 8 реле (или отдельными релейными модулями).
  • Смартфон Android.

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

13 People Made This Project!

Быстрый запуск Nodemcu (ESP8266) в среде Arduino IDE
martini73 сделал это!

Быстрый запуск Nodemcu (ESP8266) в среде Arduino IDE
AengusR сделал это!

Быстрый запуск Nodemcu (ESP8266) в среде Arduino IDEБыстрый запуск Nodemcu (ESP8266) в среде Arduino IDE
сирисак сделал это!

Быстрый запуск Nodemcu (ESP8266) в среде Arduino IDE
Быстрый запуск Nodemcu (ESP8266) в среде Arduino IDE
BrittB9 сделал это!

Быстрый запуск Nodemcu (ESP8266) в среде Arduino IDE
Быстрый запуск Nodemcu (ESP8266) в среде Arduino IDE
KegRaider сделал это!

Быстрый запуск Nodemcu (ESP8266) в среде Arduino IDE
Быстрый запуск Nodemcu (ESP8266) в среде Arduino IDE
PaulS557 сделал это!

Платформы разработки для ESP8266

А теперь самое интересное!

Существует множество платформ разработки, на которых можно программировать ESP8266. Вы можете использовать Espruino, JavaScript SDK и прошивку, которая эмулирует Node.js, или использовать Mongoose OS, операционную систему для устройств IoT (платформа, рекомендованная Espressif Systems и Google Cloud IoT), или использовать комплект для разработки программного обеспечения (SDK), предоставленный express или любой из платформ, перечисленных в Википедии.

К счастью, фантастическое сообщество ESP8266 сделало еще один шаг вперед в выборе IDE, создав надстройку для Arduino IDE. Если вы только начинаете программировать для ESP8266, мы рекомендуем вам начать с этой среды разработки, и мы опишем ее в этом руководстве.

Это дополнение ESP8266 для Arduino IDE основано на работе Ивана Грохоткова и остальных участников сообщества ESP8266. Для получения дополнительной информации см. Репозиторий Arduino ESP8266 GitHub.

Создание Azure-функции для генерации SAS

Самый простой онлайн-сервис — использовать Функции Azure. Это фрагменты кода, которые можно записать прямо на портал Azure в браузере. Серьезно, но таким образом вы также можете программировать со своего смартфона. Конечно, никто не запрещает создавать и отлаживать их из Visual Studio и только потом публиковать в Azure в скомпилированном виде. Задача функции — выполнять какие-то операции, как правило, не очень сложные. По идее микросервиса каждая функция может делать что-то одно, но очень хорошо (принцип единой ответственности).

вы можете создать приложение Azure Functions на портале, заполнив небольшую анкету.

Создать функцию Azure
Создать функцию Azure

План Pay-As-You-Go позволяет вам оплачивать только те вызовы функций, которые сделаны. Это самый дешевый вариант. В настоящее время один миллион вызовов функций бесплатен. Обратите внимание, что вспомогательное хранилище данных (Storage) создается вместе с функцией).

Создав приложение-функцию, вы можете создать саму функцию. В этом случае нам понадобится такая функция, как Webhook + API. Функция может быть открыта для всех (анонимный доступ) или доступна только обладателям специального кода. Код можно получить из окна работы с функцией, щелкнув ссылку Получить URL-адрес функции.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного периода даст вам доступ ко ВСЕМ материалам Hacker, позволит вам загружать PDF-файлы, отключить рекламу на сайте и увеличить вашу личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Интересует статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для вас! Обратите внимание, что этот метод подходит только для статей, опубликованных более двух месяцев назад.

Аватар

Подключение NodeMCU к компьютеру

Чтобы начать работу с NodeMcu, вам необходимо подключить плату к компьютеру. Первый шаг — установить драйвер CP2102 и открыть Arduino IDE. Далее нужно найти в «Файл» — «Настройки» и в окне «Дополнительные ссылки для менеджера карт» ввести ссылку http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json.

NodeMcu

Далее в меню «документы» выберите «esp8266» — «доска» «менеджер досок» и установите последнюю версию. После действий, выполненных в меню «инструменты» — «вкладка», вам нужно найти NodeMCU.

После того, как все необходимые данные установлены и скопированы, можно приступать к работе.

Распиновка NodeMcu v3

Модуль V3 имеет 11 контактов ввода / вывода общего назначения. Кроме того, некоторые выводы имеют дополнительные функции:

  • D1-D10 — вывод с широтно-импульсной модуляцией;
  • D1, D2 — контакты для интерфейса I²C / TWI;
  • D5 — D8 — вывод для интерфейса SPI;
  • D9, D10 — UART;
  • A0 — вход от АЦП.

Распиновка NodeMcu

Кнопки и светодиодный индикатор на плате

На плате NodeMCU ESP8266 есть две кнопки. Одна из них с надписью RST, расположенная в верхнем левом углу, — это кнопка сброса, которая, конечно же, используется для сброса микросхемы ESP8266. Другая кнопка, FLASH, в нижнем левом углу — это кнопка загрузки, используемая при обновлении прошивки.

Кнопки и индикаторы

  • RST — сброс микросхемы ESP8266
  • FLASH — загрузка новой программы
  • Синий светодиод — программируется пользователем

Рисунок 4 Кнопки и светодиоды на плате NodeMCU ESP8266
Рисунок 4 — Кнопки и светодиоды на плате NodeMCU ESP8266

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

Программируемый логический контроллер для автоматизации процессов

Установка платы ESP8266 в IDE Arduino с URL-адресом jasonУстановка ESP8266 Core из Arduino IDE Boards Manager

Пример подключения светодиода к NodeMCU

Принципиальная схема подключения представлена ​​на рисунке.

NodeMcu

Окончательный макет макета выглядит так:
NodeMcu

Сама плата работает от 3,3 В, поэтому для подключения светодиода нужно использовать резистор. В этом примере резистор 65 Ом используется для красного светодиода.

Аналогично к плате подключается фотодиод:

NodeMcu

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

NodeMcu

Собираем проект

Как вы можете видеть на изображении, NodeMCU работает при напряжении 3,3 В. Так что на борту есть регулятор напряжения. Вы можете включить его через порт USB, чтобы обеспечить 5 В постоянного тока, или подключить вывод VIN NodeMCU к источнику питания с максимальным диапазоном от 6 до 20 В.

На плате реле снимите перемычку между VCC — JDVCC. Поскольку реле 5 В, необходимо подать 5 В или меньше, но не менее 3,3 В. В противном случае реле не сработает.

В первом сценарии используется внешний источник питания 5 В. Для одновременной работы NodeMCU и всех реле минимум 1,5 А.

  • Подключите источник питания к JD-VCC и контакту GND на плате реле.
  • Подключите питание к VIN и GND NodeMCU
  • Подключите выходные контакты от NodeMCU к плате реле (D0 D1 D2 D5 D6 D7)
  • Подключите NodeMCU при 3,3 В к VCC на плате реле (у меня это работает, но в некоторых случаях 3,3 В недостаточно для активации реле; вы можете использовать VIN NodeMCU для VCC на плате реле, но он питает совместное использование не более доступно; это не будет проблемой, если только одно реле используется для управления лампочкой).

Во втором сценарии NodeMCU питается через USB-кабель от аккумулятора. Для платы реле используется внешний источник питания. Вместо 3,3 В вы можете подключить VIN NodeMCU к VCC на плате реле.

Краткое описание языка Lua

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

Время на прочтение
7 мин

Количество просмотров 324K

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

Почему я это решил написать? Всё просто: я убил 3 недели времени на то, чтобы разобраться с чего начинать и как это работает. Кроме того, попробую собрать небольшой каталог ссылок по работе с ESP8266. Надеюсь, что эта информация поможет сэкономить вам хоть толику времени.

image

Итак, приступим!

Я заказал себе 3 варианта плат на известном китайском сайте:

  1. ESP8266 WIFI Serial Wireless Dev Test Board на основе ESP-12 (далее «Жёлтая плата») ($3.12)
  2. ESP8266 ESP-07 вместе с Adapter Plate For ESP8266 (далее ESP-07) ($2.30)
  3. LoLin V3 NodeMcu Lua на основе ESP-12 (далее «Лолин») ($3.12)

Причины, по которым я взял такой зоопарк:

  1. У Жёлтой платы уже встроены светодиодики, которыми можно сразу поморгать, для питания можно использовать не сказочные 3,3В, которые надо еще как-то добыть, а 3 батарейки типа АА или подключив 4,5В (что я и сделал).
  2. ЛоЛин меня подкупила тем, что подключается с помощью микро юсб кабеля и ей не нужны никакие UART конвертеры — в ней сразу он встроен на основе китайского чипа CH340, для которого можно легко найти драйвера как на win7x64 и на win10x64 (мои случаи), и, опять же питание от обычного адаптера с USB выходом, а не мудреные 3,3В.
  3. Конкретно эту ESP-07 я брал под метеостанцию. Ртутно-аналоговый градусник выцвел, прибивать новый лениво, да и врёт он нагреваясь от стены дома прилично. Для начинающих рекомендую брать сразу Adapter Plate — удорожание всего на 20 центов, а удобств намного больше.

Для начала — проверка модулей.

Во всех инструкциях по запуску пишут, что если Вы подключили питание и появилась WiFi сеть «AI-THINKER xxxxxxx», значит устройство работает. С моими устройствами так и вышло — они все создали WiFi сеть, к которой можно было подключиться. Ура! Заработало! Обрадовался я, но рано.

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

Инструкция к Жёлтой плате

1. Android phone installation IOT.APK, IOS client be released later
2. shorting cap connected to the power to enter the programming mode, enter the normal operating state removed
3. Replace the battery, mobile search network «AI-THINKER» router
4. join the router (the router module form) password is: ai-thinker
5. after the success can be added directly to the control module of the mobile phone.
6. Enter the home router «SSID» and «Password» in the «Configure Device», then click on the icon at the top of the router, wait a few moments after the jump to join the router, connect the phone router WiFi, again «discovered device» to achieve control in the LAN.

Мой вольный перевод:

1. На устройство с Wi-Fi работающим на ОС Андроид (не работает на версии 5.0 и старше!) установите IOT.APK, Клиент для IOS будет выпущен позже
2. На плате необходимо снять пермычку, активирующую режим прошивки.
3. Перезагрузите модуль (отключить и подключить питание) и через минуту ищите на андроид устройстве Wi-Fi сеть «AI-THINKER»
4. Подключитесь к этой сети с паролем «ai-thinker»
5. После этого запустите установленной приложение IOT и нажмите на лупу. Плата должна автоматически определиться. После этого перемещайте ползунки, щелкайте выключателями и наблюдайте светодиоды на плате.

Нестыковка была в том, что моя сеть «AI-THINKER хххххххх» не спрашивала пароль, а сразу телефон к ней подключался. И приложение в упор не «видело» ESP после подключения. RGB светодиод горел синим с установленной перемычкой или зеленым без неё.

image

Я догадывался, что, возможно, китайцы спаять — спаяли, а прошить забыли (или криво прошили). Поэтому решил шить сам. Для прошивки я использовал ESP8266 Flasher. И тут вылез второй сюрприз: ни одна программа плату не распознавала, на команды не отвечала, прошивка не заливалась. Подключал через Ардуино и через UART-конвертер — ничего. Две другие платы уже успел перепрошить и помигать светодиодом, а тут глухо. Пока не догадался прозвонить контакты.

На этой плате отдельно выведены три контакты для прошивки: TX, RX, GND. Так вот оказалось, что TX разведен на RX самой ESP-12, соответственно RX — на TX. Т.е. просто надо было поменять местами два провода: к отдельно вынесенным трём контактам подключаем UART-конвертер по схеме:

TX-TX
RX-RX
GND-GND
Или Ардуино:
TX-RX
RX-TX
GND-GND

После такого открытия модуль ожил, была найдена оригинальная прошивка для мигания светодиодами (AI-THINKER-IOT-2014-10-17 165528.bin) и прошита все тем же ESP8266 Flasher. Появился пароль на точку доступа, и приложение сразу увидело Жёлтую плату. Единственный нюанс: для перепрошивки надо установить перемычку, для всех остальных случаев снять. И не забывать перезагружать устройство после перепрошивки.

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

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

image

  • Красный — питание 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.

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

image

Стало на ESP8266

image

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

LoLin V3 NodeMcu (Лолин)

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

Далее предполагалось подключение и управление 2-хканальным реле и управлять двумя бра в спальне. Тут хочу остановиться на одном ньансе. У китайского варианта такого реле есть перемычка JD-VCC — VCC — GND. По умолчанию она установлена на контакты JD-VCC — VCC.

image

Так вот, пермычку никогда нельзя устанавливать на VCC — GND — устроите КЗ! Эти три контакта используются для дополнительного питания реле, в случаях, когда управляющее может быть недостаточным для срабатывания реле. Присутсвие перемычки обозначает, что питание идет от «управляющих» контактов.

Скрипт был использован такой:

Текст скрипта

#================= init.lua =================
-- вводим имя сети и пароль сюда
ssid,pass = "SSID","PASSWORD";

if (file.open('wificonf') == true)then
   ssid = string.gsub(file.readline(), "\n", "");
   pass = string.gsub(file.readline(), "\n", "");
   file.close();
end

wifi.setmode(wifi.STATION)
wifi.sta.config(ssid,pass)
wifi.sta.autoconnect(1);
print('IP:',wifi.sta.getip());
--print('MAC:',wifi.sta.getmac());

led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
restart=0;

gpio.write(led1, gpio.HIGH);
gpio.write(led2, gpio.HIGH);


t=0
tmr.alarm(0,1000, 1, function() t=t+1 if t>999 then t=0 end end)

srv=net.createServer(net.TCP, 1000)
srv:listen(80,function(conn)
    conn:on("receive",function(client,request)
    -- парсинг для отслеживания нажатий кнопок _GET
            local buf = "";
        local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
        if(method == nil)then
            _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
        end
        local _GET = {}
        if (vars ~= nil)then
            for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                _GET[k] = v
            end
        end
    -- это начало веб сайта
       -- в начале ставим <html><body>, в конце каждой строки знак \
   -- в конце последней строки не ставим знак \, а </body></html>
    conn:send('HTTP/1.1 200 OK\r\nConnection: keep-alive\r\nCache-Control: private, no-store\r\n\r\n\
   <!DOCTYPE HTML>\
<html>\
 <head>\
        <meta charset="UTF-8" />\
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> \
        <meta name="viewport" content="width=device-width, initial-scale=1.0"> \
        <title>My control</title>\
   </head><body>\
        <div class="container">\
            <section class="color-1">\
                <p>\
                    <a href=\"?pin=ON1\"><button class="btn btn-4 btn-4a">Back ON</button></a>\
                    <a href=\"?pin=ON2\"><button class="btn btn-4 btn-4a">Bra ON</button></a>\
                </p>\
                <p>\
                    <a href=\"?pin=OFF1\"><button class="btn btn-5 btn-5a">Back OFF</button></a>\
                    <a href=\"?pin=OFF2\"><button class="btn btn-5 btn-5a">Bra OFF</button></a>\
                </p>\
            </section>\
        </div>\
</body></html>')
    -- это конец
    -- теперь опрос нажатых кнопок
        local _on,_off = "",""
        if(_GET.pin == "ON1")then
              gpio.write(led1, gpio.LOW);
        elseif(_GET.pin == "OFF1")then
              gpio.write(led1, gpio.HIGH);
        elseif(_GET.pin == "ON2")then
              gpio.write(led2, gpio.LOW);
        elseif(_GET.pin == "OFF2")then
              gpio.write(led2, gpio.HIGH);
        end
        
  
              
    conn:on("sent",function(conn) conn:close() end)
    collectgarbage();

    
    end)
    
end)

#========================================

Я не смог повторно найти ссылку на первоисточник. Но схема проста: К Лолин подключаем на выходы D3 и D4 реле 1 и реле 2 (led1 = 3 led2 = 4). Дальше заходим на выданный нашим роутером IP адресс и видим страничку:

image

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

Очень надеюсь что эта информация пригодиться хотябы одному человеку. И не судите строго за первую статью.

Ссылки

  • esp8266.ru — очень обширный ресурс по ESP8266
  • NodeMcu flasher (ESP8266 Flasher)
  • NodeMcu конструктор
  • Драйвер CH340 (для Windows)
  • Статья «ESP8266 — подключение и обновление прошивки»
  • AI-THINKER-IOT-2014-10-17 165528.bin — прошивка для Желтой платы
  • ESplorer
  • Народный мониторинг
  • Как отправлять данные датчиков DS18B20 на Народный мониторинг
  • Проект homes-smart

ESP8266 NodeMCU V3 (LoLin)

Распиновка (pinout) ESP8266 NodeMCU V3 «LoLin» совпадает с распиновкой ESP8266 NodeMCU V2 «Amica», за исключением двух зарезервированных у NodeMCU V2 выводов RSV (reserved). У NodeMCU V3 к ним подключена «земля» и напряжение 5V с USB-разъема.

Кроме использования двух зарезервированных выводов, плата NodeMCU V3 практически не отличается от V2. В обеих платах используются одинаковые микроконтроллеры ESP8266, они имеют одинаковое количество памяти. А к немногим отличиям можно отнести увеличенные габариты у V3, что неудобно при работе с макетными платами, и использование микросхемы CH340G в качестве моста USB – UART, вместо CP2102, что никак не сказывается на работе с платой, кроме необходимости выбора соответствующего драйвера.

ESP8266 NodeMCU V3 распиновка (pinout)


Описание и назначение выводов NodeMCU V3 ESP8266


GND — общий провод, «земля»


Выводы питания

Vin — вывод для подключения внешнего источника питания 5V. Стабилизатор AMS1117-3.3 позволяет подавать питание на Vin в широком диапазоне от 5 до 10 V. Хотя стабилизатор допускает подачу более высокого напряжения (до 15 V), но без дополнительного охлаждения может возникать перегрев чипа.

3.3V — контакт, на который подается выходное напряжение внутрисхемного стабилизатора. Может быть использован для питания подключаемых к плате датчиков. Суммарная максимальная нагрузка всех выводов 3.3V не должна превышать 300мА.

V USB — вывод, на который заведено напряжение 5V с USB-разъема.


Выводы GPIO

GPIO (General Purpose Interput Output) — контакты ввода/вывода общего назначения. Могут быть сконфигурированы как входы или выходы и программно назначены на различные функции.


Выводы управления

RST (Reset) — вывод используется для сброса микроконтроллера ESP8266.

EN (Chip Enable) — при подаче на контакт сигнала высокого уровня, микроконтроллер ESP8266 переходит в рабочий режим, при сигнале низкого уровня — в режим энергосбережения.

WAKE — контакт используется для пробуждения чипа ESP8266 из режима глубокого сна (deep-sleep mode).


АЦП (ADC)

ADC0 / TOUT — вывод встроенного 10-разрядного аналого-цифрового преобразователя (АЦП). Преобразованные значения лежат в интервале 0-1023. Платы разработки NodeMCU V2 и V3 поставляются с внутренним делителем напряжения, поэтому входной диапазон составляет от 0 до 3,3 В. Диапазон входного напряжения для АЦП в кристалле ESP8266: 0 — 1 В.


UART

UART (Universal Asynchronous Receiver-Transmitter) — асинхронный последовательный интерфейс устанавливает связь с другими устройствами по шине UART. У контроллера ESP8266 два модуля UART. Максимальная скорость передачи данных, заявленная производителем, 4,5 Mbps.


SPI

SPI (Serial Peripheral Interface) — последовательный периферийный интерфейс. NodeMCU имеет два SPI (SPI и HSPI) в ведущем и подчиненном режимах.


SDIO

SDIO — интерфейс безопасных цифровых входов/выходов, предназначен для коммутации с внешней флэш-памятью стандарта SD по последовательной шине.


Reserved

Зарезервированные выводы.


FLASH

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


Интерфейс I2C — последовательная асимметричная шина. I2C используется для подключения датчиков и периферийных устройств. NodeMCU ESP8266 не имеет аппаратных выводов I2C, но интерфейс можно реализовать программно. Поддерживаются как I2C Master, так и I2C Slave. Обычно в качестве контактов I2C используются следующие выводы.

  • GPIO5: SCL
  • GPIO4: SDA

PWM (pulse-width modulation) — широтно-импульсная модуляция (ШИМ) управляет мощностью методом пульсирующего включения и выключения вывода. NodeMCU поддерживает программный ШИМ на выводах, обозначенных на рисунке изгибающейся линией.


Материалы по теме:

  • NodeMCU схема (ESP8266, ESP32)
  • Скачать драйвер CH340 для NodeMCU
  • Скачать MicroPython ESP8266

Размещение этой статьи на других сайтах как полностью, так и частично разрешено только после согласования с администрацией myROBOT.RU


Компоненты умного дома

Теперь я хотел бы подробнее остановится на компонентной схеме умного дома. Все компоненты уместились в следующей схеме:

Компоненты умного дома

Слева-направо: сначала идет ваше устройство на ESP8266, далее это прошивка ESP Easy (ее ставим на ESP8266), прошивку подключаем к MQTT-брокеру (например WQTT.ru или свой брокер на своем сервере), веб-сервис WQTT.ru уже имеет подключение к Алисе (на своем брокере это подключение придется сделать самостоятельно, что в общем несложно, потому что это наша привычная работа программиста), далее сервер логики Node RED, который подключен к MQTT-брокеру и управляет всем умным домом. И в конце можно поставить Homebridge для связи умного дома с Homekit.

Как вы наверное догадались, homebridge с голосовыми помощниками не обязательные компоненты. Главное это MQTT-брокер и Node RED. Эти два сервера вам обеспечат практический полный функционал и доступ к настройке любой логики.

Думаю общая картинка умного дома уже появилась и можно переходить к самим компонентам в отдельности. В этой статье рассмотрим MQTT-брокер и само устройство. В следующих статьях будем рассматривать настройку прошивки ESP Easy и Node RED. Этого будет достаточно, чтобы запустить простейший вариант умного дома.

В качестве устройства у нас будет светодиод, который встроен в ESP8266 и сидит на пине GPIO2. Этот светодиод будет имитировать освещение в гостиной например. Также подключим кнопку, которая будет включать этот светодиод. И еще в нашем устройстве будут два датчика: DHT11 и BMP085 (влажности и барометр с термометром). 

В логику (которая будет хранится в Node RED) заложим управление кнопкой и светодиодом, оповещение по телеграму о резком похолодании в комнате и вывод значений датчиков в Homekit и Алису.

ESP8266 Pinout in Arduino IDE

Keep in mind that labels on NodeMCU silkscreen and that use in Arduino IDE are differed from each other. Consider the following table and the NodeMCU picture to use the right number of the pin in your sketch otherwise you will face the problems in using the correct GPIOs.

Arduino IDE Pins Index ESP-12E ESP8266 GPIO
A0 A0 ADC 0
D3 GPIO 0
1 D10 GPIO 1
2 D4 GPIO 2
3 D9 GPIO 3
4 D2 GPIO 4
5 D1 GPIO 5
12 D6 GPIO 12
13 D7 GPIO 13
14 D5 GPIO 14
15 D8 GPIO 15
16 D0 GPIO 16


Components Required

  • NodeMCU ESP8266
  • LED
  • Resistor 220 Ohms
  • Breadboard
  • Jumper Wire
  • Micro USB cable
  • ESP01

Connection Diagram NodeMCU with LED

Make the circuit diagram on bread board according to connection diagram shown below. Anode of the LED is connected to the D1 pin of the NodeMCU, the cathode of the LED is connected with the one terminal of the resistor and another terminal of the resistor is connected to the ground pin.

STM32 (STM32F103C8T6)

Данная отладочная плата известна также под названием проект “Blue pill”. Опенсорсное решение на базе ARM процессора. Плата призвана заменить собой платформу Arduino Nano и имеет следующие характеристики:

  • Архитектура Микроконтроллера ARM Cotrex M3
  • Разрядность 32 Бит
  • Максимальная частота 72 Мгц
  • Объем памяти программ (FLASH): 64 / 128 кБайт
  • Объем памяти данных (RAM): 20 кБайт
  • Выводы: 37
  • UART: 3
  • SPI: 2
  • I2C: 2
  • CAN: 1
  • USB: 1
  • АЦП: 2 АЦП, 10 каналов, время преобразования 1 мкс
  • Напряжение питания микроконтроллера 2 … 3,6 В
  • Напряжение питания платы 5 В
  • Ток потребления до 50 мА

По сравнению с основным конкурентом — Arduino Nano, характеристики более чем впечатляющие. Да и зона применения этого микроконтроллера гораздо шире. Однако без нюансов не обходится. Стоит учитывать, что напряжение питания у микроконтроллера на этой плате составляет в среднем 3,3 вольта, соответственно и логика работы микроконтроллера трехвольтовая. У Arduino Nano напряжение питания 5 Вольт и логика соответствующая.

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

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

На китайских торговых площадках мне встречались преобразователи на 4 и 8 каналов, стоят копейки, но позволяют избавиться от головной боли :). Вот ссылка на 4х канальный преобразователь:

Устройства на базе STM32 в последние годы все больше и больше набирают популярность. На них строят как примитивные устройства, так и квадрокоптеры. А с выходом marlin 2.0 количество 3Д принтеров на подобной платформе значительно увеличится.

Свои модули STM32  (STM32F103C8T6) я заказывал вот тут:

Ну а теперь поговорим о модулях на микроконтроллерах с WIFI.

Так или иначе рано или поздно любому радиолюбителю или инженеру становится скучно и не интересно разрабатывать автономные устройства, либо обстоятельства вынуждают разрабатывать устройства взаимодействующие друг с другом или через интернет. У Адруино есть шилды, которые позволяют подружить микроконтроллер с сетью, но прогресс не стоит на месте и был разработан новый микроконтроллер уже имеющий у себя на борту интерфейс wifi. Представляю Вашему вниманию микроконтроллер ESP8266.

Основные характеристики ESP8266 следующие:

  • Тактовая частота 80 МГц с возможностью разгона до 160 МГц без гарантии стабильности работы
  • Платформа 32 Бит
  • Поддержка Wifi стандартов b/g/n
  • Количество портов GPIO 14, из них доступно 11
  • Количество аналоговых входов 1
  • АЦП 10 Бит
  • Питания от 2,6 до 3,6 В
  • Потребляемая мощность до 215 мА в режиме передачи, 100 мА в режиме приема, 70 мА в режиме ожидания.
  • Поддерживаются три режима пониженного потребления, все без сохранения соединения с точкой доступа: Modem sleep (15 мА), Light sleep (0.4 мА), Deep sleep (15 мкА)

Имеются следующие интерфейсы:

  • UART
  • SPI
  • I2C

Вот основные особенности данного микроконтроллера. Как видим, есть свои достоинства и недостатки. К достоинствам можно отнести:

  • Производительная платформа
  • Наличие Wifi
  • Наличие поддержки самых востребованных интерфейсов
  • Наличие режимов низкого энергопотребления
  • Совместимость со средой Arduino IDE

К недостаткам можно отнести следующее:

  • Мало количество портов GPIO
  • Только один аналоговый вход
  • Высокое энергопотребление в режиме передачи

Однако, недостатки не такие уж и критичные и для ряда проектов просто несущественные.

За счет своей функциональности микроконтроллер ESP8266 приобрел широкую популярность в среде разработчиков устройств и модулей для умного дома и интернета вещей. О чем свидетельствует популярность модулей Sonoff, обзоры которых я делал ранее. (Обзоры модулей Sonoff). Также данные микроконтроллеры используются во всяких устройствах с Wifi на борту, таких как кондиционеры, роботы-пылесосы и т.д.

A Simple Webpage Server using ESPlorer

Set SSID and PASSWORD to your WiFi name and password.

— NodeMCU Examples— Simple Web page serverwifi.setmode(wifi.STATION)station_cfg={ssid=»SSID»,pwd=»password»}station_cfg.save=truewifi.sta.config(station_cfg)srv=net.createServer(net.TCP)srvlisten(80,function(conn)connon(«receive»,function(conn,payload)print(payload)connsend(«<h1>This is a simple webserver</h1>»)connsend(«<h2>Hello</h2>»)connsend(«Hello, Lolin NodeMCU V3.»)end)end)

Save the above text as simple_webserver.lua.

Now go to your router and find out the IP address assigned to the ESP
module (or use some more lua code shown as another example below to do
this) and then go to a browser and type that IP into the URL bar and
you should see something like this (the IP address will be different for
your system):

Served as a webpage.

Note: To stop the webserver as a program instruction rather than a hard reset use the lua code:

net.server:close()

Tools¶

Transferring application code to ESP8266/8285 is an essential task, one that you’ll perform quite frequently. Hence, it does make sense to try a few different uploading tools until you find one you feel comfortable with. https://frightanic.com/iot/tools-ides-nodemcu/ lists almost a dozen classical uploaders — in addition to IDEs or IDE-like applications which of course transfer code as well.

The NodeMCU firmware team does not give any recommendations as for which uploader to use nor are there any «NodeMCU approved» tools. The below listed tools are just three, in no particular order, which seem popular and/or reasonably well maintained.

ESPlorer

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

Supported platforms: macOS, Linux, Windows, anything that runs Java

nodemcu-uploader.py

Source: https://github.com/kmpm/nodemcu-uploader

Supported platforms: macOS, Linux, Windows, anything that runs Python

NodeMCU-Tool

Source: https://github.com/andidittrich/NodeMCU-Tool

Supported platforms: macOS, Linux Windows, anything that runs Node.js

Introduction¶

NodeMCU firmware is an IoT project («the Project») which implements a Lua-based runtime for SoC modules based on the Espressif ESP8266 and ESP32 architectures. This NodeMCU Reference Manual (NRM) specifically addresses how the NodeMCU Lua implementation relates to standard Lua as described in the two versions of the Lua language that we currently support:

  • The Lua 5.1 Reference Manual and
  • The Lua 5.3 Reference Manual (LRM)

Developers using the NodeMCU environment should familiarise themselves with the 5.3 LRM.

The Project provides a wide range of standard library modules written in both C and Lua to support many ESP hardware modules and chips, and these are documented in separate sections in our online documentation.

The NRM supplements LRM content and module documentation by focusing on a complete description of the differences between NodeMCU Lua and standard Lua 5.3 in use. It adopts the same structure and style as the LRM. As NodeMCU provides a full implementation of the Lua language there is little content herein relating to Lua itself. However, what NodeMCU does is to offer a number of enhancements that enable resources to be allocated in constant program memory — resources in standard Lua that are allocated in RAM; where this does impact is in the coding of C library modules and the APIs used to do this. Hence the bulk of the differences relate to these APIs.

One of our goals in introducing Lua 5.3 support was to maintain the continuity of our existing C modules by ensuring that they can be successfully compiled and executed in both the Lua 5.1 and 5.3 environments. This goal was achieved by a combination of:
— enabling relevant compatibility options for standard Lua libraries;
— back porting some Lua 5.3 API enhancements back into our Lua 5.1 implementation, and
— making some small changes to the module source to ensure that incompatible API use is avoided.

Further details are given in the section below. Notwithstanding this, the Project has now deprecated Lua 5.1 and will soon be moving this version into frozen support.

As well as providing the ability to building runtime firmware environments for ESP chipsets, the Project also offers a cross compiler that can be built for common platforms such as Windows 10 and Linux, and this enables developers to compile source modules into a binary file format for download to ESP targets and loading from those targets.

ESP-07

Особенности этого модуля — керамическая антенна и разъем для внешней антенны, металлический экран.

Подключение к IoT

Аппаратная часть

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

1) Собираем схему

ESP-07

USB-Serial

VCC

VCC

CH_PD (рекомендуется через резистор)

VCC

TX

RX

RX

TX

GND

GND

GPIO 15 (рекомендуется через резистор)

GND

GPIO 0 — сначала не подключен, но будет использоваться для перевода в режим программирования далее, поэтому к нему уже подведен провод

все остальные контакты не подключены

RTS, CTS — не подключены

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

2) Переводим в режим программирования (необходимо каждый раз выполнять перед прошивкой модуля)

2.1) Отключаем питание от модуля2.2. Подключаем пин GPIO 0  к GND

2.2) Подключаем пин GPIO 0  к GND

ESP-07

USB-Serial

VCC

VCC

CH_PD

VCC

TX

RX

RX

TX

GND

GND

GPIO 15 

GND

GPIO 0

GND

все остальные контакты не подключены

RTS, CTS — не подключены

2.3) Подключаем модуль к питанию

2.4) Железо готово, приступаем к программной части.

Программная часть

1) Выбираем плату: Tools (Инструменты) -> Board(Плата) Generic ESP8266 Module.

2) Вставляем подготовленный код.

3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.

4) Компилируем и загружаем скетч на плату.

5) Для обычной работы модуля (не для режима прошивки) пин GPIO 0 должен быть свободен, поэтому отключаем его от GND.

6) Переподключаем питание ESP-07 (например, вытаскиваем и вставляем обратно адаптер).

7) Видим появление данных на платформе.

В Китае

Introduction to NodeMCU V3

NodeMCU V3 is an open-source firmware and development kit that plays a vital role in designing your own IoT product using a few Lua script lines.

Multiple GPIO pins on the board allow you to connect the board with other peripherals and are capable of generating PWM, I2C, SPI, and UART serial communications.

The interface of the module is mainly divided into two parts including both Firmware and Hardware where former runs on the ESP8266 Wi-Fi SoC and later is based on the ESP-12 module.

The firmware is based on Lua – A scripting language that is easy to learn, giving a simple programming environment layered with a fast scripting language that connects you with a well-known developer community.

And open source firmware gives you the flexibility to edit, modify and rebuilt the existing module and keep changing the entire interface until you succeed in optimizing the module as per your requirements.

USB to UART converter is added on the module that helps in converting USB data to UART data which mainly understands the language of serial communication.

Instead of the regular USB port, MicroUSB port is included in the module that connects it with the computer for dual purposes: programming and powering up the board.

The board incorporates status LED that blinks and turns off immediately, giving you the current status of the module if it is running properly when connected with the computer.

The ability of module to establish a flawless WiFi connection between two channels makes it an ideal choice for incorporating it with other embedded devices like Raspberry Pi.

gpio.pulse.build¶

This builds the object from the supplied argument (a table as described below).

Parameter

this is view as an array of instructions. Each instruction is represented by a table as follows:

  • All numeric keys are considered to be pin numbers. The values of each are the value to be set onto the respective GPIO line.
    For example would set pin 1 to be high.
    Note this that is the NodeMCU pin number and not the ESP8266 GPIO number. Multiple pins can be
    set at the same time. Note that any valid GPIO pin can be used, including pin 0.
  • specifies the number of microseconds after setting the pin values to wait until moving to the next state. The actual delay may be longer than this value depending on whether interrupts are enabled at the end time. The maximum value is 64,000,000 — i.e. a bit more than a minute.
  • and can be used to specify (along with ) that this time can be varied. If one time interval overruns, then the extra time will be deducted from a time period which has a or specified. The actual time can also be adjusted with the API below.
  • and allow simple looping. When a state with and is completed, the next state is at (provided that has not decremented to zero). The count is implemented as an unsigned 32 bit integer — i.e. it has a range up to around 4,000,000,000. The first state is state 1. The is rather like a goto instruction as it specifies the next instruction to be executed.

Example

This will generate a square wave on pins 1 and 2, but they will be exactly out of phase. After 10 seconds, the sequence will end, with pin 2 being high.

Note that you must set the pins into output mode (either gpio.OUTPUT or gpio.OPENDRAIN) before starting the output sequence, otherwise
nothing will appear to happen.

NodeMCU, подключение к WiFi,http сервер и т.д. в Arduino IDE.

Продолжаем работать с платой NodeMCU в Arduino IDE. Как там говориться , так привычнее и ближе к сердцу. Поехали…

Подключение к WiFi.

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

Немного подробней о функциях. WiFi.status() возвращает статус подключения , может пригодиться :

  • WL_CONNECTED: если подключение выполнено успешно.
  • WL_IDLE_STATUS: когда WiFi-сеть переключается с одного статуса на другой.
  • WL_NO_SSID_AVAIL:если заданный SSID находится вне зоны доступа.
  • WL_CONNECT_FAILED: если неправильный пароль.
  • WL_DISCONNECTED: если модуль не находится в режиме станции.

Функция WiFi.mode()задает режим работы WiFi модуля :

  • WIFI_AP: точка доступа.
  • WIFI_STA: клиент.
  • WIFI_AP_STA: оба режима одновременно.

Включение HTTP сервера :

К сети мы подключились, давайте теперь настроим простой Web сервер. Для этого нам потребуется библиотека ESP8266WebServer. Сразу перейдем к скетчу :

Может немного изменить нашу функцию ответа сервера. Пусть будет html:

В функции ответа сервера мы может делать любые действия кроме самого ответа. Например давайте узнаем наш IP и выведем его на страничке:

источник

Как все это еще улучшить?

Улучшать можно бесконечно (в тех пределах, которые позволит оперативка, конечно)

Alertmanager-bot — telegram бот для отправки PUSH уведомлений в Telegram
 

cAdvisor — мониторинг ресурсов занятых каждым контейнером

 
Можно прикрутить на алармы amixr чтобы получать уведомления в виде звонков на телефон и SMS.

 
Добавить в prometheus мониторинг и статистику nginx

 
Добавить в prometheus мониторинг influx

 

Добавить в prometheus мониторинг чего-нибудь еще 🙂

 
Добавить контейнер Loki для просмотра логов в Grafana

 
Добавить контейнер с сервером OpenVPN, чтобы ходить в интернет через облако Oracle

 
Можно сделать стартовые скрипты создания пользователей, брать пароли из защищенного хранилища…

 
и много чего еще — было бы желание 🙂

 
 
 
 
Эта статья написана специально для пользователей мобильного приложения IoT Manager (telegraf ожидает сообщения MQTT в JSON формате)
Обсуждение этой статьи у нас на форуме

Обсуждение этой статьи в telegram канале Дмитрия Борисенко 

 
Спасибо, что дочитали до конца.

Recent Articles

  1. Learn how to use the TP4056 properly. There’s a right way, and a wrong way, to use it to safely charge Lithium Ion batteries.

  2. A tutorial on using the ADS1115 precision 16 bit ADC for low power use.

  3. Arduino Nano ISP: How to program an ATmega328P using an Arduino Nano as the ISP programmmer. One common problem: Programming a sketch into the chip without a reset control — solved here.

  4. I2C tutorial: Learn all about the 2 wire I2C serial protocol. Learn how easy it is to use, how it works and when to use it…

  5. How to test and use an Arduino Joystick including a new library to make it super easy.

  6. How to use the MCP4728, a versatile four channel DAC with built in voltage reference.

    The MCP4728 chip is a four channel 12 bit DAC, with memory that outputs voltage that you can use for calibration, anywhere you want a fixed voltage.

Доступ к веб-серверу

После загрузки скетча откройте монитор последовательного порта со скоростью 115200 бит/с и нажмите кнопку RESET на NodeMCU. Если всё в порядке, он выведет динамический IP адрес, полученный от вашего маршрутизатора, и покажет сообщение о том, что HTTP сервер запущен.

Рисунок 5 – Монитор последовательного порта – сервер запущен

Затем загрузите браузер и введите IP адрес, указанный в мониторе последовательного порта. ESP8266 NodeMCU должен выдать веб-страницу, показывающую температуру и относительную влажность.

Рисунок 6 – Веб-страница с температурой и влажностью с датчика DHT11/DHT22/AM2302 на веб-сервере ESP8266 (без CSS)

Создание веб-сервера NodeMCU ESP8266 с использованием режима WiFi Station (STA)

Как следует из заголовка, мы собираемся настроить наш ESP8266 NodeMCU в режим Station (STA) и создать веб-сервер для обслуживания веб-страниц для любого подключенного клиента в существующей сети.

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

const char* ssid = "YourNetworkName";  // Введите SSID
const char* password = "YourPassword";  //Введите пароль

Посте того как вы сделаете это, загрузите следующий скетч, и затем мы рассмотрим его более подробно.

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include "DHT.h"

// Раскомментируйте одну из строк ниже для того типа DHT датчика, который вы используете!
//#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

/*Укажите SSID & пароль*/
const char* ssid = "YourNetworkName";  // Enter SSID here
const char* password = "YourPassword";  //Enter Password here

ESP8266WebServer server(80);

// DHT датчик
uint8_t DHTPin = D8; 
               
// Инициализация датчика DHT
DHT dht(DHTPin, DHTTYPE);                

float Temperature;
float Humidity;
 
void setup() {
  Serial.begin(115200);
  delay(100);
  
  pinMode(DHTPin, INPUT);

  dht.begin();              

  Serial.println("Connecting to ");
  Serial.println(ssid);

  // подключаемся к локальной сети Wi-Fi
  WiFi.begin(ssid, password);

  // проверка подключения Wi-Fi 
  while (WiFi.status() != WL_CONNECTED) {
  delay(1000);
  Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected..!");
  Serial.print("Got IP: ");  Serial.println(WiFi.localIP());

  server.on("/", handle_OnConnect);
  server.onNotFound(handle_NotFound);

  server.begin();
  Serial.println("HTTP server started");

}
void loop() {
  
  server.handleClient();
  
}

void handle_OnConnect() {

 Temperature = dht.readTemperature(); // Получает значения температуры
  Humidity = dht.readHumidity(); // Получает значения влажности
  server.send(200, "text/html", SendHTML(Temperature,Humidity)); 
}

void handle_NotFound(){
  server.send(404, "text/plain", "Not found");
}

String SendHTML(float Temperaturestat,float Humiditystat){
  String ptr = "<!DOCTYPE html> <html>\n";
  ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  ptr +="<title>ESP8266 Weather Report</title>\n";
  ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
  ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
  ptr +="</style>\n";
  ptr +="</head>\n";
  ptr +="<body>\n";
  ptr +="<div id=\"webpage\">\n";
  ptr +="<h1>ESP8266 NodeMCU Weather Report</h1>\n";
  
  ptr +="<p>Temperature: ";
  ptr +=(int)Temperaturestat;
  ptr +="°C</p>";
  ptr +="<p>Humidity: ";
  ptr +=(int)Humiditystat;
  ptr +="%</p>";
  
  ptr +="</div>\n";
  ptr +="</body>\n";
  ptr +="</html>\n";
  return ptr;
}

Flashing with esptool

Get the esptool Python-based flasher

Connect GPIO 0 to gound and restart the ESP-8266 to enter flashing mode.

Flash with esptool

This is set to run rather slow to reduce the likelyhood of errors. It may take a few minutes to flash (7 when I did it), during which you should see the ESP-8266 serial transmit LED flash every few seconds.

After the esptool command exits, disconnect GPIO 0 from ground and restart to go back to run mode.

The interpreter can be accessed over serial with 9600 baud rate and CR+LF line ending. To see it do something basic, run

On startup, NodeMCU checks its internal memory for a file named init.lua and runs it if found. There are lua commands for writing this file without needing to reflash the firmware, and the luatool utility offers a streamlined way to do this.

There are many models of microcontroller development boards based on Espressif ESP8266 chip. Unfortunately, different boards have different pin layouts or configurations. This NodeMCU V3 ESP8266 Pinout guide is for the ESP8266-based devkit pictured below.

This particular board was purchased this January 2020 from a local supplier, makerlab-electronics.com.

image of nodemcu v3 development board showing the top view with pinout labels

NodeMCU V3 ESP8266 Development Board
image of the development kit showing the underside with header pins showing
Underside of NodeMCU V3 Devkit

NodeMCU V3 Development Board Specification

Based on the supplier’s website, the board’s specification is as follows:

  • Communication interface voltage: 3.3V.
  • Antenna type: Built-in PCB antenna is available.
  • Wireless 802.11 b/g/n standard
  • WiFi at 2.4GHz, support WPA / WPA2 security mode
  • Support STA/AP/STA + AP three operating modes
  • Built-in TCP/IP protocol stack to support multiple TCP Client connections (5 MAX)
  • D0 ~ D8, SD1 ~ SD3: used as GPIO, PWM, IIC, etc., port driver capability 15mA
  • AD0: 1 channel ADC
  • Power input: 4.5V ~ 9V (10VMAX), USB-powered
  • Current: continuous transmission: ≈70mA (200mA MAX), Standby: <200uA
  • Transfer rate: 110-460800bps
  • Support UART / GPIO data communication interface
  • Remote firmware upgrade (OTA)
  • Flash size: 4MByte

As an additional information, this board uses the UART chip CH340G. Remember that other ESP8266 boards use another UART chip, namely Silicon Labs CP2102.

Note the advertised GPIO:

D0 ~ D8, SD1 ~ SD3: used as GPIO, PWM, IIC, etc., port driver capability 15mA

Some websites even advertise the whole set of ESP8266 chip GPIO:

Digital I/O Pins (DIO): 17

Analog Input Pins (ADC): 1

But the fact is, some of the GPIOs are used by the development board for its proper operation. Using them would possibly crash your program. Or may give you unexpected results.

Six of the seventeen GPIOs, marked on the top of the board as S3, S2, S1, SC, S0, and SK, are all used by the board to interface with the 4MB external flash chip. This leaves us with:

Digital I/O Pins (DIO): 11

Analog Input Pins (ADC): 1

Now, if your program is using the hardware serial pins, labeled TX and RX, you are left with only nine (9) usable digital IO and one (1) analog-to-digital IO.

Therefore, in reality, these are the only available GPIOs:

Digital I/O Pins (DIO): 9 D0 thru D8

Analog Input Pins (ADC): 1 A0

picture of NodeMCU V3 with the board on its side and the usb connector is on its left

NodeMCU V3 Development Board Pinout (USB Connector on Left Side)
picture showing nodemcu v3 with the board on its side and the usb connector is on the right side
NodeMCU V3 Development Board Pinout (USB Connector on Right Side)
picture of development board with the complete pinout, board in upright position
NodeMCu V3 Development Board Pinout
(Board in Upright Position, USB Connector at the Bottom)

ARDUINO IDE PIN REFERENCE

When programming the NodeMCU V3 ESP8266 board with Arduino IDE, we may use the pin labels printed on the top of the board. That is, A0 for the ADC pin and D0 thru D10 for the digital pins (D9 is RX and D10 is TX).

For example, to reference GPIO D0,

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#define ledPIN1 D0 // or D1, D2, up to D8

#define ledPIN2 D9 // D9 and RX may be used interchangeably

// or #define LEDPIN2 RX

#define switchPIN D10 // D10 and TX may be used interchangeably

// or #define switchPIN TX

#define inVolts A0

pinMode(ledPIN1, OUTPUT);

pinMode(ledPIN2, OUTPUT);

pinMode(switchPIN, INPUT);  //for demo only, may not be necessary  

                          //DIOs are by default INPUT

digitalWrite(ledPIN1, HIGH);

digitalWrite(ledPIN2, LOW);

bool sw = digitalRead(switchPIN);

analogRead(inVolts);  // ADC A0 is for reading only

                      // can’t be used as OUTPUT

Summary of Available IO Pins

Board Label GPIO Normal Use Comments
A0 ADC0 Input only Analog input
D0 GPIO16 Wake up Pulled LOW, HIGH at boot
D1 GPIO5 SCL I2C
D2 GPIO4 SDA I2C
D3 GPIO0 FLASH Pulled HIGH, do not pull LOW
D4 GPIO2 BUILT-IN LED Pulled HIGH, do not pull LOW
D5 GPIO14 SCLK SPI
D6 GPIO12 MISO SPI
D7 GPIO13 MOSI SPI
D8 GPIO15 CS SPI, Pulled LOW, do not pull HIGH
RX GPIO3 RX May be used as Input, HIGH on boot
TX GPIO1 TX May be used as Output, HIGH on boot

Boot Modes

D8
GPIO15
D3
GPIO0
D4
GPIO2
BOOT MODE
LOW LOW HIGH UART Bootloader
LOW HIGH HIGH Boot program in flash
HIGH X X SDIO (not used on Arduino)

Related Articles on NodeMCU V3 ESP8266 Pinout and Configuration

Hardware

NodeMCU ESP32S Pin Configuration
How to Save and Restore ESP8266 and ESP32 Firmware
How to Test NodeMCU V3 Using Esptool
How to Connect a DS3231 to NodeMCU V3

Software

How to Install Arduino IDE on Windows 10
How to Set up Arduino IDE for ESP8266 Programming
How to Install Esptool on Windows 10

Hardware & Software

How to Use MCP4725 Module with Arduino
How to Use ADS1220 ADC Module with Arduino

References on NodeMCU V3 ESP8266 Pinout and Configuration

NodeMCU on Wikipedia – https://en.wikipedia.org/wiki/NodeMCU
ESP8266 on Wikipedia – https://en.wikipedia.org/wiki/ESP8266

Понравилась статья? Поделить с друзьями:

Это тоже интересно:

  • Lola games take it easy инструкция
  • Lokmanzade инструкция по применению отзывы
  • Lokmanzade ginsengli инструкция по применению
  • Logitech r400 инструкция на русском языке
  • Logitech mx keys mini инструкция

  • Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии