На чтение 16 мин Просмотров 1.5к. Опубликовано 10.11.2021
Экран последовательного порта ведомого устройства (Arduino Uno):
Экран последовательного порта главного устройства (NodeMCU V3):
Содержание
- Самые популярные материалы в блоге
- За все время
- Установка ядра ESP8266 на ОС Windows
- Последовательная связь
- Настройка облачной части для работы с устройством
- Периферия и ввод/вывод
- Подготовка программного обеспечения
- Подключение и настройка девайса
- Прошивки для esp8266 NodeMcu
- Сбор прошивки в облачном сервисе
- Обновление прошивки Node Mcu
- Требования к питанию
- Приложение для смартфона
- On-board Switches & LED Indicator
- Комплектующие
- 13 People Made This Project!
- Платформы разработки для ESP8266
- Создание Azure-функции для генерации SAS
- Продолжение доступно только участникам
- Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
- Вариант 2. Открой один материал
- Подключение NodeMCU к компьютеру
- Распиновка NodeMcu v3
- Кнопки и светодиодный индикатор на плате
- Программируемый логический контроллер для автоматизации процессов
- Пример подключения светодиода к NodeMCU
- Собираем проект
- Краткое описание языка 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 в IDE Arduino с использованием URL-адреса json
Хороший. Затем перейдите в PCB Manager, выбрав Tools → PCB → PCB Manager. Помимо стандартных плат Arduino, должно быть несколько новых записей. Отфильтруйте результаты поиска, набрав esp8266. Щелкните эту запись и выберите Установить.
Рисунок 8 — Установка ядра ESP8266 в диспетчере плат Arduino IDE
Определения и инструменты для платы ESP8266 включают полностью новый набор gcc, g ++ и других довольно больших скомпилированных двоичных файлов, поэтому загрузка и установка может занять несколько минут (размер сжатого файла ~ 110 МБ). Когда установка будет завершена, рядом с элементом появится УСТАНОВЛЕНО. Теперь вы можете закрыть диспетчер плат.
Последовательная связь
На плате используется контроллер USB-UART Silicon Labs CP2102, который преобразует сигнал USB в сигнал последовательного порта и позволяет компьютеру программировать и взаимодействовать с микросхемой ESP8266.
Последовательная связь
- Конвертер USB-UART CP2102
- Скорость связи 4,5 Мбит / с
- Поддержка управления потоком
Рисунок 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
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 платы 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.
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 платы 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.
Подключение и настройка девайса
Чтобы устройство было распознано в 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
Платформа основана на стандартной прошивке 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, который необходимо удалить. В результате содержимое папки будет выглядеть так.
Обновление прошивки Node Mcu
Для правильной и стабильной работы карты файл esp_init_data_default.bin должен быть перезаписан. Вы можете скачать его с официального сайта. Требуемый файл необходимо вернуть в систему для прошивки NodeMCU Flasher по пути Ресурсы — Двоичные файлы после удаления из него старого файла.
Затем вы можете подключить NodeMCU и начать обновление. Для начала нужно изменить настройки: в NodeMCU Flasher во вкладке Config вместо INTERNAL: // 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 — Аккумуляторы 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 — загрузка новых программ
- Синий светодиод — программируется пользователем
Плата также имеет светодиодный индикатор, который программируется пользователем и подключается к контакту D0 платы.
Комплектующие
Необходимые детали перечислены ниже. Все это можно купить на Aliexpress или в любом другом интернет-магазине.
- NodeMcu V3 ESP8266 Китайская версия LoL1n v3.
- Релейный модуль с 8 реле (или отдельными релейными модулями).
- Смартфон Android.
Кроме того, нам потребуются сопутствующие детали: вентилятор, лампочки и т.д., которые мы будем включать или выключать со смартфона через приложение с помощью кнопок или голоса.
13 People Made This Project!
martini73 сделал это!
AengusR сделал это!
сирисак сделал это!
BrittB9 сделал это!
KegRaider сделал это!
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
План Pay-As-You-Go позволяет вам оплачивать только те вызовы функций, которые сделаны. Это самый дешевый вариант. В настоящее время один миллион вызовов функций бесплатен. Обратите внимание, что вспомогательное хранилище данных (Storage) создается вместе с функцией).
Создав приложение-функцию, вы можете создать саму функцию. В этом случае нам понадобится такая функция, как Webhook + API. Функция может быть открыта для всех (анонимный доступ) или доступна только обладателям специального кода. Код можно получить из окна работы с функцией, щелкнув ссылку Получить URL-адрес функции.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного периода даст вам доступ ко ВСЕМ материалам Hacker, позволит вам загружать PDF-файлы, отключить рекламу на сайте и увеличить вашу личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Интересует статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для вас! Обратите внимание, что этот метод подходит только для статей, опубликованных более двух месяцев назад.
Создать функцию 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.
Далее в меню «документы» выберите «esp8266» — «доска» «менеджер досок» и установите последнюю версию. После действий, выполненных в меню «инструменты» — «вкладка», вам нужно найти NodeMCU.
После того, как все необходимые данные установлены и скопированы, можно приступать к работе.
Распиновка NodeMcu v3
Модуль V3 имеет 11 контактов ввода / вывода общего назначения. Кроме того, некоторые выводы имеют дополнительные функции:
- D1-D10 — вывод с широтно-импульсной модуляцией;
- D1, D2 — контакты для интерфейса I²C / TWI;
- D5 — D8 — вывод для интерфейса SPI;
- D9, D10 — UART;
- A0 — вход от АЦП.
Кнопки и светодиодный индикатор на плате
На плате NodeMCU ESP8266 есть две кнопки. Одна из них с надписью RST, расположенная в верхнем левом углу, — это кнопка сброса, которая, конечно же, используется для сброса микросхемы ESP8266. Другая кнопка, FLASH, в нижнем левом углу — это кнопка загрузки, используемая при обновлении прошивки.
Кнопки и индикаторы
- RST — сброс микросхемы ESP8266
- FLASH — загрузка новой программы
- Синий светодиод — программируется пользователем
Рисунок 4 — Кнопки и светодиоды на плате NodeMCU ESP8266
Плата также имеет программируемый пользователем светодиод, который подключается к контакту D0 платы.
Программируемый логический контроллер для автоматизации процессов
Пример подключения светодиода к NodeMCU
Принципиальная схема подключения представлена на рисунке.
Окончательный макет макета выглядит так:
Сама плата работает от 3,3 В, поэтому для подключения светодиода нужно использовать резистор. В этом примере резистор 65 Ом используется для красного светодиода.
Аналогично к плате подключается фотодиод:
Плату 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 имеет более гибкие и более мощные конструкции.
Introduction: Getting Started With ESP8266(LiLon NodeMCU V3) Complete Guide for IoT Startup With Example(as Server)
Things You Need:
- NodeMCU Flasher Master (Flasher)
- NodeMCU Firmware (Firmware)
- Latest Arduino IDE (Arduino)
- NodeMCU V3
- Micro USB Cable
- LED
Features
- Open-source, Interactive, Programmable, Low cost, Simple, Smart, WI-FI enabled
- Arduino-like hardware IO
- Lowest cost WI-FI
Step 1: Installing the Firmware
In NodeMCU Boards the first thing you need is to install the Firmware to the board
the following method works for all NodeMCU Boards
- Open the NodeMCU flasher master folder than open the win32/win64 folder as your computer. now open the folder Release than double click ESP8266Flasher.
- Select the COM Port.
- Goto config tab
- click on the small gear and open up the firmware which you have downloaded
- go to the advenced tab and select the desired Baudrate
- Goto the Operation tab and click on Flash Button.
Step 2: Preparing the Arduino IDE
After Installing the firmware you are ready to do the programming with the ESP8266
- Install the Arduino IDE
- open the Arduino IDE from the desktop icon
- Click on File tab and than open preferences
- In the additional Boards Manager URLs add the following link (http://arduino.esp8266.com/stable/package_esp8266com_index.json) and click OK
- Goto Tools>Borads>Boards Manager
- In the search field type esp8266 click the esp8266 by ESP8266 Community option and click Install
Step 3: Code…
Now you can do whatever you want with your NodeMCU board
Following is an example for led blinking with NodeMCU board via webserver
- In arduino IDE goto tools>Boards>select NODEMCU 1.0 (ESP — 12E Module)
- again goto tools and select port.
- Change the Wifi name and password from the following code.
- Now click on Upload button to upload the following code.
- Connect the led’s positive leg on D9 pin of board and negative to the ground of the code.
- Power up the board and open the serial monitor from arduino IDE
- after connecting to the wifi it will show you the IP address.
- type that IP address on the web browser(Edge, Chrome, Firefox etc..)
- A webpage will open you can change the status of LED by turning it ON or OFF.
#include<ESP8266WiFi> const char* ssid = "Tenda"; //your WiFi Name const char* password = "12345678"; //Your Wifi Password int ledPin = 03; WiFiServer server(80); void setup() { Serial.begin(115200); delay(10); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); server.begin(); Serial.println("Server started"); Serial.print("Use this URL to connect: "); Serial.print("http://"); Serial.print(WiFi.localIP()); Serial.println("/"); } void loop() { WiFiClient client = server.available(); if (!client) { return; } Serial.println("new client"); while(!client.available()){ delay(1); } String request = client.readStringUntil('r'); Serial.println(request); client.flush(); int value = LOW; if (request.indexOf("/LED=ON") != -1) { digitalWrite(ledPin, HIGH); value = HIGH; } if (request.indexOf("/LED=OFF") != -1) { digitalWrite(ledPin, LOW); value = LOW; } client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println(""); client.println(""); client.print("Led is : "); if(value == HIGH) { client.print("On"); } else { client.print("Off"); } client.println(""); client.println(" On "); client.println(" Off "); client.println(" "); delay(1); Serial.println("Client disonnected"); Serial.println(""); } //code copied from link
If you encounter any problem comment it down
Добавлено 15 июля 2020 в 21:38
Интернет вещей (IoT) является одной из самых популярных областей в мире технологий. Физические объекты и цифровой мир связаны сейчас как никогда. Помня об этом, компания Espressif Systems (шанхайская компания по производству полупроводниковых устройств) выпустила крутой микроконтроллер с поддержкой Wi-Fi, ESP8266, по невероятной цене! С помощью него менее чем за 3 доллара можно контролировать и управлять устройством из любой точки мира – идеально подходит практически для любого проекта IoT.
Модуль ESP-12E
Отладочная плата оснащена модулем ESP-12E, содержащим микросхему ESP8266 с RISC микропроцессором Tensilica Xtensa® 32-bit LX106, который работает с регулируемой тактовой частотой от 80 до 160 МГц и поддерживает RTOS.
Характеристики ESP-12E
- 32-разрядный LX106 от Tensilica Xtensa®
- Тактовая частота от 80 до 160 МГц
- 128 КБ встроенной оперативной памяти
- 4 МБ внешней внешней флеш-памяти
- Приемопередатчик Wi-Fi 802.11b/g/n
Также данный модуль имеет 128 КБ ОЗУ и 4 МБ флеш-памяти (для хранения программ и данных), достаточных, чтобы справиться с большими строками, которые составляют веб-страницы, данными в JSON/XML и всем, что мы сегодня добавляем на устройства IoT.
ESP8266 содержит встроенный приемопередатчик Wi-Fi 802.11b/g/n HT40, поэтому он может не только подключаться к сети Wi-Fi и взаимодействовать с интернетом, но и устанавливать собственную сеть, позволяя другим устройствам подключаться напрямую к нему. Это делает ESP8266 NodeMCU еще более универсальным.
Требования к питанию
Поскольку диапазон рабочего напряжения ESP8266 составляет от 3 В до 3,6 В, данная плата для поддержания постоянного напряжения на уровне 3,3 В поставляется с LDO стабилизатором напряжения. Он может надежно обеспечивать ток до 600 мА, чего должно быть более чем достаточно, поскольку ESP8266 во время радиочастотных передач потребляет до 80 мА. Выход стабилизатора также выводится на выводы на сторонах платы и обозначен как 3V3. Эти выводы можно использовать для подачи питания на внешние компоненты.
Требования к питанию
- Рабочее напряжение: от 2,5 до 3,6 В
- Встроенный стабилизатор: 3,3 В, 600 мА
- Рабочий ток: 80 мА
- Потребление в спящем режиме: 20 мкА
Питание к ESP8266 NodeMCU подается через встроенный USB-разъем MicroB. В качестве альтернативы, если у вас есть стабилизированный источник напряжения 5 В, можно использовать вывод VIN для непосредственного питания ESP8266 и его периферии.
Предупреждение
ESP8266 требует 3,3 В для питания и логические уровни 3,3 В для связи. Контакты GPIO не допускают напряжение 5 В! Если вы хотите соединить плату со схемами 5 В (или выше), то необходимо реализовать согласование логических уровней.
Периферия и ввод/вывод
ESP8266 NodeMCU имеет в общей сложности 17 выводов GPIO, выведенных на разъемы с обеих сторон отладочной платы. Эти выводы могут использоваться для выполнения различных периферийных задач, в том числе:
- вход АЦП – канал 10-разрядного АЦП;
- интерфейс UART – интерфейс UART используется для загрузки кода по последовательной связи;
- выходы ШИМ – выводы ШИМ могут использоваться для регулировки яркости светодиодов или управления двигателями;
- интерфейсы SPI, I2C – интерфейсы используются SPI и I2C для подключения всевозможных датчиков и периферийных устройств;
- интерфейс I2S – интерфейс I2S используется для цифровой передачи звука.
Мультиплексируемые выводы ввода/вывода
- 1 канал АЦП
- 2 интерфейса UART
- 4 выхода ШИМ
- Интерфейсы SPI, I2C и I2S
В ESP8266 используется функция мультиплексирования выводов (несколько периферийных устройств мультиплексируются на один вывод GPIO). Это означает, что один вывод GPIO может действовать как PWM/UART/SPI.
Кнопки и светодиодный индикатор на плате
На плате ESP8266 NodeMCU находятся две кнопки. Одна из них, помеченная как RST, расположенная в верхнем левом углу, представляет собой кнопку сброса, которая, конечно же, используется для сброса микросхемы ESP8266. Другая кнопка, FLASH, в левом нижнем углу – это кнопка загрузки, используемая при обновлении прошивки.
Кнопки и индикаторы
- RST – сброс чипа ESP8266
- FLASH – загрузка новой программы
- Синий светодиод — программируется пользователем
На плате также имеется светодиодный индикатор, который программируется пользователем и подключен к выводу D0 платы.
Последовательная связь
На плате установлен контроллер USB-UART CP2102 от Silicon Labs, который преобразует USB сигнал в сигнал последовательного порта и позволяет компьютеру программировать и взаимодействовать с микросхемой ESP8266.
Последовательная связь
- USB-UART преобразователь CP2102
- Скорость связи 4,5 Мбит/с
- Поддержка управления потоком
Если на вашем компьютере установлена старая версия драйвера CP2102, рекомендуем выполнить обновление прямо сейчас.
Распиновка ESP8266 NodeMCU
С внешним миром ESP8266 NodeMCU соединяют всего 30 выводов. Ниже показана распиновка отладочной платы.
Для простоты мы сгруппируем выводы с аналогичными функциями.
Выводы питания – на плате расположено четыре вывода питания, а именно: один вывод VIN и три вывода 3.3V. Если у вас есть стабилизированный источник напряжения 5 В, вывод VIN можно использовать для непосредственного питания ESP8266 и его периферии. Выводы 3.3V – это выходы встроенного стабилизатора напряжения. Эти выводы могут использоваться для подачи питания на внешние компоненты.
GND – это вывод земли отладочной платы ESP8266 NodeMCU.
Выводы I2C используются для подключения всех видов датчиков и периферийных устройств на шине I2C в вашем проекте. Поддерживаются и I2C Master, и I2C Slave. Работа интерфейса I2C может быть реализована программно, а тактовая частота составляет максимум 100 кГц. Следует отметить, что тактовая частота I2C должна быть выше самой низкой тактовой частоты из ведомых устройств.
Выводы GPIO На ESP8266 NodeMCU имеется 17 выводов GPIO, которые можно назначать программно на различные функции, такие как I2C, I2S, UART, PWM, дистанционное инфракрасное управление, светодиодный индикатор и кнопка. Каждый включенный вывод GPIO может быть настроен либо на внутреннюю подтяжку к земле или к шине питания, либо установлен на высокоимпедансное состояние. При конфигурировании на вход для генерирования прерываний процессора он может быть настроен на срабатывание либо по фронту, либо по спаду.
Вывод ADC подает сигнал на имеющийся в NodeMCU, встроенный 10-разрядный прецизионный аналого-цифровой преобразователь последовательного приближения (SAR ADC). С помощью этого АЦП могут быть реализованы две функции: проверка напряжения питания на выводе VDD3P3 и проверка входного напряжения на выводе TOUT (но не одновременно).
Выводы UART ESP8266 NodeMCU имеет 2 интерфейса UART, то есть UART0 и UART1, которые обеспечивают асинхронную связь (RS232 и RS485) и могут обмениваться данными со скоростью до 4,5 Мбит/с. Для связи можно использовать UART0 (выводы TXD0, RXD0, RST0 и CTS0), который поддерживает управление потоком. UART1 (вывод TXD1) поддерживает только сигнал передачи данных, поэтому он обычно используется для печати журнала событий.
Выводы SPI ESP8266 имеет два интерфейса SPI (SPI и HSPI), поддерживающих и ведомый (slave), и ведущий (master) режимы. Эти интерфейсы SPI также поддерживают следующие функции SPI:
- 4 режима синхронизации передачи SPI;
- до 80 МГц и тактовые частоты, полученные делением 80 МГц;
- до 64 байт FIFO.
Выводы SDIO ESP8266 имеет защищенный цифровой интерфейс ввода/вывода (SDIO, Secure Digital Input/Output Interface), который используется для прямого подключения карт SD. Поддерживаются 4-битный 25 МГц SDIO v1.1 и 4-битный 50 МГц SDIO v2.0.
Выводы PWM На плате имеется 4 канала широтно-импульсной модуляции (PWM). Выход ШИМ может быть реализован программно и использован для управления двигателями и светодиодами. Частотный диапазон ШИМ регулируется от 1000 мкс до 10000 мкс, то есть от 100 Гц до 1 кГц.
Выводы управления используются, как ни странно, для управления ESP8266. Эти выводы включают в себя вывод включения микросхемы EN, вывод сброса RST и вывод пробуждения WAKE.
- Вывод EN – микросхема ESP8266 включена, когда на вывод EN подается высокий логический уровень. При низком логическом уровне микросхема работает на минимальной мощности.
- Вывод RST используется для сброса микросхемы ESP8266.
- Вывод WAKE используется для вывода чипа из глубокого сна.
Платформы разработки для ESP8266
Теперь перейдем к интересным вещам!
Существует множество платформ разработки, которые могут быть оснащены для программирования ESP8266. Вы можете использовать Espruino – JavaScript SDK и прошивка, эмулирующая Node.js, или использовать Mongoose OS – операционную систему для устройств IoT (рекомендуемая платформа от Espressif Systems и Google Cloud IoT), или использовать комплект разработки программного обеспечения (SDK), предоставляемый Espressif. или любую из платформ, перечисленных на Википедии.
К счастью, крутое сообщество ESP8266 сделало выбор IDE на шаг вперед, создав дополнение к Arduino IDE. Если вы только начинаете программировать для ESP8266, мы рекомендуем начать с этой среды разработки, и ее мы опишем в данном руководстве.
Это дополнение ESP8266 для Arduino IDE основано на работе Ивана Грохоткова и остальной части сообщества ESP8266. Для получения дополнительной информации смотрите репозиторий GitHub ESP8266 Arduino.
Установка ядра ESP8266 на ОС Windows
Давайте приступим к установке ядра ESP8266 Arduino.
Во-первых, на вашем компьютере должна быть установлена последняя версия Arduino IDE (Arduino 1.6.4 или выше). Если у вас ее нет, рекомендуем сейчас обновиться.
Для начала нам нужно обновить менеджер плат с помощью пользовательского URL. Откройте Arduino IDE и выберите Файл → Настройки. Затем скопируйте приведенный ниже URL в текстовое поле Дополнительные ссылки для менеджера плат, расположенное в нижней части окна:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Отлично. Затем перейдите к Менеджеру плат, выбрав Инструменты → Платы → Менеджер плат. Там, в дополнение к стандартным платам Arduino, должна быть пара новых записей. Отфильтруйте результаты поиска, введя esp8266. Нажмите на эту запись и выберите Установить.
Определения и инструменты для платы ESP8266 включают в себя полностью новый набор gcc, g++ и других достаточно больших скомпилированных двоичных файлов, поэтому загрузка и установка могут занять несколько минут (заархивированный файл весит ~110 МБ). После завершения установки рядом с записью появится надпись INSTALLED. Теперь можно закрыть менеджер плат.
Пример Arduino: мигалка
Чтобы убедиться, что ядро ESP8266 Arduino и NodeMCU правильно настроены, мы загрузим самый простой скетч – The Blink!
Для этого теста мы будем использовать встроенный светодиод. Как упоминалось ранее в этом руководстве, вывод платы D0 подключен к встроенному синему светодиоду и программируется пользователем. Отлично!
Прежде чем мы перейдем к загрузке скетча и игре со светодиодом, мы должны убедиться, что в Arduino IDE выбрана правильная плата. Откройте Arduino IDE и выберите пункт NodeMCU 0.9 (ESP-12 Module) в меню Инструменты → Плата.
Теперь подключите ESP8266 NodeMCU к компьютеру через USB-кабель micro-B. Как только плата будет подключена, ей должен быть назначен уникальный COM-порт. На компьютерах с Windows это будет что-то вроде COM#, а на компьютерах Mac/Linux он будет в виде /dev/tty.usbserial-XXXXXX. Выберите этот последовательный порт в меню Инструменты → Порт. Также выберите скорость загрузки: 115200
Предупреждение
Уделите больше внимания выбору платы, выбору COM порта и скорости загрузки. В случае некорректных настроек при загрузке новых скетчей вы можете получить ошибку espcomm_upload_mem.
После выполнения всех настроек попробуйте пример скетча, приведенного ниже.
void setup()
{
pinMode(D0, OUTPUT);
}
void loop()
{
digitalWrite(D0, HIGH);
delay(500);
digitalWrite(D0, LOW);
delay(500);
}
После загрузки кода светодиод начнет мигать. Возможно, чтобы ваш ESP8266 начал работать со скетчем, вам придется нажать кнопку RST.
Теги
Arduino IDEESP8266NodeMCUWi-FiМикроконтроллер
Время на прочтение
7 мин
Количество просмотров 321K
В этой статье я хочу поделиться опытом того, что делать, когда в руки впервые попадают платки ESP8266. Сразу оговорюсь, что ковыряние в таких железках, равно как и программирование, это моё хобби за мои деньги и в свободное от основной деятельности время. Поэтому прошу отнестись с определенной скидкой к степени критики данного материала.
Почему я это решил написать? Всё просто: я убил 3 недели времени на то, чтобы разобраться с чего начинать и как это работает. Кроме того, попробую собрать небольшой каталог ссылок по работе с ESP8266. Надеюсь, что эта информация поможет сэкономить вам хоть толику времени.
Итак, приступим!
Я заказал себе 3 варианта плат на известном китайском сайте:
- ESP8266 WIFI Serial Wireless Dev Test Board на основе ESP-12 (далее «Жёлтая плата») ($3.12)
- ESP8266 ESP-07 вместе с Adapter Plate For ESP8266 (далее ESP-07) ($2.30)
- LoLin V3 NodeMcu Lua на основе ESP-12 (далее «Лолин») ($3.12)
Причины, по которым я взял такой зоопарк:
- У Жёлтой платы уже встроены светодиодики, которыми можно сразу поморгать, для питания можно использовать не сказочные 3,3В, которые надо еще как-то добыть, а 3 батарейки типа АА или подключив 4,5В (что я и сделал).
- ЛоЛин меня подкупила тем, что подключается с помощью микро юсб кабеля и ей не нужны никакие UART конвертеры — в ней сразу он встроен на основе китайского чипа CH340, для которого можно легко найти драйвера как на win7x64 и на win10x64 (мои случаи), и, опять же питание от обычного адаптера с USB выходом, а не мудреные 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 светодиод горел синим с установленной перемычкой или зеленым без неё.
Я догадывался, что, возможно, китайцы спаять — спаяли, а прошить забыли (или криво прошили). Поэтому решил шить сам. Для прошивки я использовал 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-конвертер:
- Красный — питание 3,3в;
- Черный — GND;
- Желтый — на стороне ESP8266 — RX, на стороне USB-TTL — TX;
- Зеленый — на стороне ESP8266 — TX, на стороне USB-TTL — RX;
- Оранжевый — CH_PD (CHIP ENABLE) — должен быть всегда подтянут к питанию;
- Синий — GPIO0 — подключен через выключатель к земле для включения режима перепрошивки модуля. Для обычного старта модуля GPIO0 можно оставить никуда не подключенным;
- Серый — GPIO15 (MTDO, HSPICS) этот пин необходимо притянуть к земле;
- Если подключаете к Ардуино, то RX-RX, а TX-TX.
С помощью паяльника были объединены ESP-07 и адаптер. Адаптер рекомендую поскольку он в дальнейшем облегчает соединение беспаечным методом с помощью макетной платы и проводов. В данном случае для питания я использовал понижающий DC-DC преобразователь из Китая. В наличии были датчики DS18B20, их и было решено подключать.
HomesSmart сразу ставить не хотелось и выбор пал на такой вот пример. Не буду перепечатывать схему и код — они практически такие же. Заработало не сразу, но с гуглом и бубном завелось и полетели данные на Народный мониторинг.
Загружал скрипт через ESplorer.
Было на Ардуино
Стало на ESP8266
Жду компактный модуль питания 220AC — 3,3DC чтобы оптимизировать количество проводов.
LoLin V3 NodeMcu (Лолин)
Эту плату советовали сразу прошить прошивкой NodeMcu, что и было сделано через программу NodeMcu flasher. Сама прошивка собирается конструктором, что позволяет включить только самое необходимое.
Далее предполагалось подключение и управление 2-хканальным реле и управлять двумя бра в спальне. Тут хочу остановиться на одном ньансе. У китайского варианта такого реле есть перемычка JD-VCC — VCC — GND. По умолчанию она установлена на контакты JD-VCC — VCC.
Так вот, пермычку никогда нельзя устанавливать на 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 OKrnConnection: keep-alivernCache-Control: private, no-storernrn
<!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 адресс и видим страничку:
К моему огромному сожалению, я пока не разобрался как наводить красоту, например подключить файл 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, что никак не сказывается на работе с платой, кроме необходимости выбора соответствующего драйвера.
Описание и назначение выводов 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 |