No Image

Esp8266 nodemcu v3 подключение датчиков

СОДЕРЖАНИЕ
1 865 просмотров
12 декабря 2019

NodeMcu – платформа на основе ESP8266 для создания различных устройств интернета вещей (IoT). Модуль умеет отправлять и получать информацию в локальную сеть либо в интернет при помощи Wi-Fi. Недорогой модуль часто используется для создания систем умного дома или роботов Arduino, управляемых на расстоянии. В этой статье мы рассмотрим описание платы, отличие версий и распиновку последней версии модуля Esp8266 NodeMcu v3. Также мы коротко рассмотрим язык Lua, на котором нужно писать программы для NodeMcu.

Описание ESP8266 NodeMcu v3

Технические характеристики модуля:

  • Поддерживает Wi-Fi протокол 802.11 b/g/n;
  • Поддерживаемые режимы Wi-Fi – точка доступа, клиент;
  • Входное напряжение 3,7В – 20 В;
  • Рабочее напряжение 3В-3,6В;
  • Максимальный ток 220мА;
  • Встроенный стек TCP/IP;
  • Диапазон рабочих температур от -40С до 125С;
  • 80 МГц, 32-битный процессор;
  • Время пробуждения и отправки пакетов 22мс;
  • Встроенные TR переключатель и PLL;
  • Наличие усилителей мощности, регуляторов, систем управления питанием.

Существует несколько поколений плат NodeMcu – V1(версия 0.9), V2(версия 1.0) и V3 (версия 1.0). Обозначения V1, V2, V3 используются при продаже в интернет-магазинах. Нередко происходит путаница в платах – например, V3 внешне идентична V2. Также все платы работают по принципу open-source, поэтому их могут производить любые фирмы. Но в настоящее время производством плат NodeMcu занимаются Amica, DOIT и LoLin/Wemos.

Отличия от других модификаций

Платы поколения V1 и V2 легко отличить – они обладают различным размером. Также второе поколение оснащено улучшенной модификацией чипа ESP-12 и 4 Мб флэш-памяти. Первая версия, устаревшая, выполнена в виде яркой желтой платформы. Использовать ее неудобно, так как она покрывает собой 10 выходов макетной платы. Плата второго поколения сделана с исправлением этого недостатка – она стала более узкой, выходы хорошо подходят к контактам платы. Платы V3 внешне ничем не отличаются от V2, они обладают более надежным USB-выходом. Выпускает плату V3 фирма LoLin, из отличий от предыдущей платы можно отметить то, что один из двух зарезервированных выходов используется для дополнительной земли, а второй – для подачи USB питания. Также плата отличается большим размером, чем предыдущие виды.

Где купить модули NodeMCU и ESP8266

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

Питание модуля NodeMcu

Подавать питание на модуль можно несколькими способами:

  • Подавать 5-18 В через контакт Vin;
  • 5В через USB-разъем или контакт VUSB;
  • 3,3В через вывод 3V.

Преимущества NodeMcu v3

  • Наличие интерфейса UART-USB с разъемом micro USB позволяет легко подключить плату к компьютеру.
  • Наличие флэш-памяти на 4 Мбайт.
  • Возможность обновлять прошивку через USB.
  • Возможность создавать скрипты на LUA и сохранять их в файловой системе.

Недостатки модуля NodeMcu

Основным недостатком является возможность исполнять только LUA скрипты, расположенные в оперативной памяти. Этого типа памяти мало, объем составляет всего 20 Кбайт, поэтому написание больших скриптов вызывает ряд трудностей. В первую очередь, весь алгоритм придется разделять на линейные блоки. Эти блоки необходимо записать в отдельные файлы системы. Все эти модули исполняются при помощи оператора dofile.

При написании нужно соблюдать правило – при обмене данными между модулями нужно пользоваться глобальными переменными, а при вычислении внутри модулей – локальными. Также важно в конце каждого написанного скрипта вызывать функцию collectgarbage (сборщик мусора).

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

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

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

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

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

После этого в меню «документы» – «плата» «менеджер плат» выбрать «esp8266» и установить последнюю версию. После проделанных действий в меню «инструменты» – «плата» нужно найти NodeMCU.

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

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

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

Итоговый макет макет выглядит следующим образом:

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

Похожим способом к плате подключается и фотодиод:

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

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

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

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

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

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

Для обеспечения корректной и стабильной работы нужно обновить прошивку до последней версии. Существует несколько способов обновления – облачный сервис, Docker Image и компилирование в Linux. Каждый из этих способов обладает своими плюсами и минусами. Наиболее простым и понятным является первый способ.

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

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

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

После перехода по полученной ссылке нужно будет скачать файл bin и поместить его в Resources – Binaries. Там будет расположен файл nodemcu_integer_0.9.5_20150318.bin, который нужно удалить. В итоге содержимое папки будет выглядеть следующим образом.

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

Для правильной и стабильной работы платы требуется перезаписать esp_init_data_default.bin. Скачать его можно на официальном сайте. Нужный файл нужно поместить снова в систему для прошивки NodeMCU Flasher по пути Resources – Binaries, предварительно удалив из него старый файл.

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

Остальное оставить без изменений, перейти на Operations и нажать Flash. Как только окончится прошивка, нужно снова перейти на Config и в первой строке указать путь esp_init_data_default.bin. Также дополнительно указывается адрес, куда нужно переместить этот файл. Для модуля NodeMCU следует выбрать адрес 0x3FC000. После этого нужно снова вернуться на Operations и нажать Flash.

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

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

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

Мигание светодиодами на Lua

Можно рассмотреть простейшую схему – мигание светодиодом. Этот пример поможет изучить работы с контактами GPIO. Светодиод нужно подключить как показано на схеме.

Затем нужно записать следующий скетч в левое окно ESPlorer:

gpio.mode (pin_number, gpio.OUTPUT) // установка рабочего режима на выход

gpio.write (pin_number, gpio.HIGH)// установка высокого уровня

gpio.write (pin_number, gpio.LOW)// установка низкого уровня

gpio.serout (1, gpio.HIGH, <+990000,990000>, 10, 1) // установка мигания светодиодом 10 раз

После нужно сохранить скрипт с названием init.lua. Сразу после этого начнется автоматическая загрузка написанного кода в отладочную плату и его выполнение. Если операция выполнена успешно, отладочная плата начнет мигать светодиодом.

Важно отметить, что плата самостоятельно выполняет скрипт, подключение к компьютеру нужно только для подачи питания.

Товары

  • Технические характеристики модуля
  • Примеры использования (скриптовый язык Lua)
  • Примеры использования (скетч в среде программирования Arduino IDE)

NodeMCU Lua – плата на основе популярного модуля ESP8266 (рисунок 1) предназначена для создания IoT устройств (устройств Интернета вещей), которым необходима передача или получение данных в интернет с помощью технологии Wi-Fi.

Технические характеристики модуля

  • Процессор 32-битный
  • WiFi – 802.11 b/g/n
  • Напряжение питания 3,3 В
  • Внешнее питание 3.6–20 В
  • Ток потребления: режим передачи данных– 200 мА, режим приёма данных – 60 мА
  • Подсоединение к компьютер – вход microUSB
  • Имеет встроенную flash память 4 Mб
  • Поддержка в базовой прошивке интерпретатора Lua
  • Возможность обновления прошивки по Wi-Fi
  • Наличие встроенного датчика температуры
Читайте также:  Гидродровокол с бензиновым двигателем

В чем же преимущества данной платы на основе модуля ESP8266? Во-первых, на плате присутствует интерфейс UART-USB с разъемом micro USB, что позволяет подключать его к компьютеру без переходников. Во вторых, она имеет выводы для всех доступных контактов ESP8266. А это 11 портов ввода-вывода общего назначения, некоторые из которых имеют дополнительные функции (см. рисунок 1).

Рисунок 1. Назначение выводов NodeMcu

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

  • использование платы в качестве WiFi точки доступа
  • подключаться (в том числе и автоматическое) к точке доступа WiFi
  • режим пониженного энергопотребления (уход в сон)
  • перенаправлять вывод
  • выполнять операции со списком файлов в flash-памяти
  • управление пользовательским таймером и таймером WatchDog
  • управление GPIO1 выводами
  • создание веб-сервера
  • обмениваться даннымиI2C — устройствами
  • считывать данные на выводе АЦП

Можно не только выполнять команды Lua в терминале, но и cоздавать файлы в flash-памяти ESP8266 и вызывать их на иcполнение. Рассмотрим примеры напиcания программ для модуля на языке Lua, а также в среде программирования Arduino IDE.

Примеры использования (скриптовый язык Lua)

Рисунок 2. Окно программы ESPlorer.

Напишем скрипт создания простейшего веб-сервера, чтобы при обращении к модулю по HTTP с него выдавалась информация. Создадим для этого файл server1.lua и запишем в него код, представленный в листинге 1. Листинг 1 Сохраним файл server1.lua в модуле и запустим. Для проверки работы севера подключимся к точке доступа модуля и наберем в браузере ее адрес: http://192.168.4.1 (рисунок 3). Для запуска сервера при загрузке модуля необходимо в конце нашего autorun-файла init.lua добавить строку: dofile(server1.lua)

Рисунок 3. Обращение к серверу на NodeMCU

Примеры использования (скетч в среде программирования Arduino IDE)

Рассмотрим пример подключения аналогового датчика освещенности (фоторезистора) к плате NodeMCU ESP8266 и отправку данных по протоколу MQTT в интернет на сервер http://www.mqtt-dashboard.com/.

Схема соединений представлена на рис. 8.

Рисунок 8. Схема подключения.

Для написания скетча необходима библиотека pubsubclient для общения с брокером MQTT . Разархивируйте скачанный файл в папку библиотеки IDE Arduino. Откройте в Arduino IDE скетч _2.ino. Вам необходимо внести в скетч изменения параметров SSID и пароля для точки подключения платы NodeMCU к вашей WiFi сети.

const char* password = "your_wifi_password";

Загружаем скетч на нашу плату NodeMCU, открываем монитор последовательного порта и если соединения указаны правильно, увидим следующий результат (рисунок 9).

Рисунок 9. Соединение с брокером по сети.

После того, как NodeMCU подключился к wifi и брокеру MQTT, он публикует данные о освещенности для брокера MQTT по теме OsoyooData (рисунок 10).

Рисунок 10. Отправка данных датчика освещенности.

Мы будем использовать на любом устройстве (например планшете или компьютере) MQTT-клиент, чтобы подписаться на тему OsoyooData от того же брокера MQTT и получать значения освещенности в реальном времени.

Предисловие: Содержание данного поста на первый взгляд может не подходить для форума «ARDUINO для автомобиля», но если внимательно посмотреть, я думаю найдется, что то полезное…
1. Введение.
По случаю попали ко мне в руки WIFI модуль ESP8266 (ESP-01) и датчик температуры DS18B20. Задача – построить автономный датчик температуры, данные с которого можно посмотреть на компьютере/планшете. В будущем эти данные должны использоваться для контроля в «умном доме»…
Чип ESP8266 очень подходит для этого, так как обладает небольшими размерами, ценой, а самое главное, что его контроллер может заменить Arduino – он может сам выполнять все необходимые действия.
Вариантов модулей на чипе ESP8266 множество — все о ESP8266 можно прочесть тут — esp8266.ru/ больше чем здесь, я думаю вы на русском языке не найдете.

У меня ESP-01 – у которого только два управляемых выхода – GPIO 0 и GPIO 2:

Что касается датчика температуры DS18B20 – тоже достаточно популярное устройство, а главное он цифровой – значит, выдает готовые значения и работает по протоколу 1-Wire – можно будет использовать библиотеку OneWire. Кроме того специально для температурных датчиков Dallas DS18B20 есть Arduino-библиотека DallasTemperature. milesburton.com/Main_Page…mperature_Control_Library

Что касается построения такого WIFI датчика температуры – устройство ни уникальное – в интернете есть описания подобных схем на тех же компонентах, но программируются на языке Lua – вариант geektimes.ru/post/255594/. Но судя по описанию – там тоже все не просто так. Да и не хотелось «учить» еще один язык…
Я к Arduino уже как то привык.
Поэтому решено искать варианты Arduino скетчей. Тем более что и тут есть наработки:
— датчик температуры для проекта «Народный мониторинг» —
arduinolab.pw/index.php/2…o-monitoringa-na-esp8266/ — его я тоже попробовал.
А вот тут от того же автора скетч который позволяет выводить параметры температуры через браузер – именно его я использовал. vk.com/doc148062645_43703…630&dl=4f5f570366aac0e93a
Но оказалось, что бы его загрузить предстоит кое-что сделать.

Читайте также:  Гортензия крупнолистовая ю энд ми лов

2. Нужно:
1. Модуль ESP8266 (ESP-01);
2. Датчик температуры DS18B20;
3. USB-UART-TTL адаптер – например CР2102 (+драйвер);
4. Резистор 4,7 кОм;
5. Провода мама – мама/папа;
6. Изолента/термоусадка;

3. Настройка ADRUINO IDE для работы с WIFI ESP8266.
Для того, что бы загружать скетчи через ADRUINO IDE непосредственно на модуль ESP8266 необходимо провести апгрейд ADRUINO IDE – загрузить в него программу «ESP8266» для поддержки модуля (см. ссылку github.com/esp8266/arduino).
Как сказано на одном из сайтов:
«Программа ESP8266 поставляется с библиотеками, которые позволяют через интерфейс WiFi с помощью протоколов IP, TCP, UDP обмениваться данными с WEB, SSDP, mDNS и DNS серверами, использовать flash память для создания файловой системы, обеспечить работу с SD картами, сервоприводами, работать с периферийными устройствами по шинам SPI и I2C.»

Для этого нужно:
1. Зайти в меню «Файл» — выбрать «Настройки».

2. В ячейку "Дополнительные ссылки для Менеджера плат" внести ссылку arduino.esp8266.com/stabl…age_esp8266com_index.json

3. Зайти в меню «Инструменты» в «Плата:…» — выбрать «Менеджер плат…».

4. В закладке «Менеджер плат» нужно найти нужную прошивку — в поле указать например esp8266 – в окне высветится нужная прошивка.

5. Установить выбранную прошивку «esp8266» – щелкнуть на поле с прошивкой – появится кнопка «Установить» — нажать. Установка займет некоторое время – будет скачивать около 153 Мб.
6. После завершения установки в меню «Инструменты» в закладке «Плата:…» ниже перечня плат Arduino появится новые платы – «ESP8266 Modules».

7. Выбрать нужный модуль – в общем случае это «Generic ESP8266 Module».

4. Подключение ESP8266 к компьютеру для перепрошивки.
Как правильно подключить модуль много и хорошо написано – например тут:
esp8266.ru/esp8266-podklu…bnovlenie-proshivki/#full
Я для подключения ESP8266 к компьютеру для перепрошивки использовал USB-UART-TTL адаптер CР2102.

Схема подключения обычная да UART, за исключением двух особенностей:
1. Для включения модуля нужно подать +3,3В на вывод модуля CH_PD. Я припаял перемычку с VCC.
2. На время загрузки скетча необходимо подать «минус» на вывод модуля GPIO 0.

Если речь идет о настройке/отладки нескольких модулей имеет смысл сделать специальный комплект проводов для подключения.

Так же есть особенность с питанием модуля.
Во первых, он должен питаться от 3,3 В.
Во вторых, он очень прожорливый – мощности питания от USB-UART-TTL адаптера ему не хватало – компьютер постоянно сообщал, что к нему «подключено неизвестное устройство, при установке которого возникли проблемы».

Поэтому для питания модуля нужно организовать отдельное питание.
Если предполагается использовать более высокое напряжение — нужно использовать понижающий стабилизатор.
В моем случае я использовал две батареи АА 1,5В соединенные последовательно – но испытания показали хватает не на долго (возможно батареи были севшие).
ВНИМАНИЕ! При подключении внешнего источника питания при прошивке нужно соединить его с минусом USB-UART-TTL адаптера.

5. Загрузка скетча.
Если все сделали – можно начинать загрузку скетча:
vk.com/doc148062645_43703…630&dl=4f5f570366aac0e93a
Но для начала нужно в строчках с именем сети и пароля указать имя и пароль вашей сети:
const char *ss ;
const char *password = "…";
Процесс загрузки визуально отличается от привычной загрузки – он будет сопровождаться рядом точек в окне статуса загрузки (см. фото).

Если этого не происходит и появилось сообщение об ошибке – включите и выключите питание модуля WIFI.
Если загрузка прошла успешно, уберите перемычку с GPIO 0 и «массы».
Откройте Serial порт в Arduino IDE и убедитесь, что модуль начал работать и самое важно – запишите IP адрес вашего модуля:
Connected to «Название вашей сети»
IP address: 192.168.ХХ.ХХ
MDNS responder started
HTTP server started Теперь можно отключать USB-UART-TTL адаптер и подключать датчик температуры.

6. Подключение датчика температуры.
Схема подключения датчика температуры типовая (см. рисунок).

Потребуется правда поработать паяльником – припаять сопротивление 4,7 кОм и датчик температуры, а так же перемычку включения питания (см. ранее).

Есть еще один вывод который может пригодится — вывод RST – «Сброс» — для этого нужно подать на него «минус». Пару раз пригодилась эта «кнопка» — возможно потому, что схема собрана на весу…

7. Работа датчика.
Если все прошло правильно датчик начнет помаргивать синим светодиодом и излучать в WIFI эфир температуру. А вот что бы эта температура стала «видима» нужно в браузере указать IP адрес вашего модуля (мы его знаем из пункта 5) и на экране появится вот такая картинка:

Комментировать
1 865 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector