Разве Node MCU v3 (LoLin) не имеет встроенного светодиода?
Пробуя простую программу мигания светодиодов, я не смог заставить работать встроенный светодиод на LoLin Node MCU v3. LED_BUILTIN Константа устанавливаются на контакт 16 / GPIO16 / D0.
Читая несколько статей и QA, я думаю, что платы Node MCU должны иметь встроенный светодиод на выводе 16. Однако, если я обращаюсь к этому порту, ничего не происходит.
С помощью того же кода я могу мигать светодиодом данных, который находится на выводе RX, вывод 2.
Отсутствует ли встроенный светодиод на MCU LoLin Node v3 или может быть, что светодиод на моей плате неисправен?
ESP8266 имеет встроенный светодиод, который подключен к D4, как указано на платах LoLin, который соответствует GPIO2. Стоит отметить, что светодиод активен на низком уровне. Другими словами . установка PIN 2 на «0» включит светодиод, а установка PIN 2 на «1» выключит светодиод
Это единственный светодиод на платах LoLin и отличается от других устройств, которые имеют светодиод на GPIO16.
Я бился головой об этом в течение получаса. Много противоречивой информации из-за разных производителей. Обратная логика немного странная, но, по крайней мере, работает.
Я поставил на пример мигания демонстрирующее контакт 2 на gist.github.com/jhorsman/6a93191ba31a48cf0cea75acd4c20cea
Отлично, это сэкономило мое время. Я был невежественен. Знаете ли вы, каковы другие различия в доске LoLin? Любые ссылки
Как создать точку доступа на ESP8266 за 5 минут. Управление по WI-FI
Давайте рассмотрим пример сканирования WIFI сетей.
Мы будем использовать библиотеку ESP8266WIFI.
Здесь ничего сложного. Запускается встроенная функция сканирования сетей и в цикле выводятся все найденные сети и уровень их сигнала. Затем ждём 5 секунд и снова сканируем.
У меня этот модуль нашёл сего 7 сетей. А вот ноутбук видит гораздо больше. Это говорит о том, что ESP встроенная в NodeMCU имеет гораздо меньшую чувствительность. А что можно было ожидать от антенны нарисованной на плате. Поэтому я в основном использую модули ESP-07 с керамической антенной и разъёмом для подключения внешней антенны. И к тому же ESP не видит сети с частотой 4 ГГц, а только 2,4 ГГЦ.
Теперь давайте рассмотрим второй пример.
Это создание своей точки доступа и вывод двух кнопок на страницу для управления светодиодом. Точно так же можно управлять не только светодиодами, но и различными нагрузками, например реле.
Для этого нам понадобится подключить несколько библиотек. Но они все входят в комплект ARDUINO ide и становятся доступными после того как вы выберете плату ESP.
Здесь мы пишем название своей новой сети. Я назвал её вот так, вы же можете называть как угодно.
И задаём пароль. Если вы не укажете пароль, то у вас будет открытая сеть и каждый сможет к ней подключиться. Оно вам надо?
Это html код который будет выводиться на странице. Это простой код который выведет две ссылки с надписями включить и выключить. А выше их будет отображаться статус указывающий текущее состояние светодиода. Включен или Выключен.
Дальше идут строчки кода которые в основном отвечают за вывод в ComPort. Я по возможности всё написал по русски, и думаю вам не составит труда разобраться что и за что отвечает.
Переходим на созданную сеть. У вас при первом подключении будет выведено окно для ввода пароля. Проверяем, чтобы не было ошибок с паролем, а иначе вы не сможете войти в эту сеть.
Дальше будет вопрос подключать ли общий доступ к устройствам. Можете выбрать что угодно. Я ответил ДА.
Вот мы и подключились к созданной нами сети.
Вводим IP адрес вашего устройства. И вы ничего не должны увидеть. У меня это просто загрузился кэш страницы. Нажимая на кнопки никакого результата на плате я не вижу.
Теперь нужно войти на локальный адрес самой ESP. Он вот такой 192.168.4.1
Вот теперь это уже реальная страница, что можно увидеть нажимая на кнопки. Как видите на плате включается и выключается светодиод. И как я уже говорил, это может быть реле и управлять большой нагрузкой.
Теперь переходим на свою обычную WIFI сеть. Обновляем страницу и видим, что доступ к интерфейсу пропал.
Ну и наконец третий пример.
Выведем UID номер карты на экран компьютера. Для этого загрузим следующий скетч.
Здесь у нас ещё прибавилось библиотек. Одну из них вам придётся установить, так как она не входит в комплект. Если не знаете как, о посмотрите последние видео о RFID модуле. Там подробно всё рассказано.
Мы будем работать с той же сетью, что и в предыдущем примере.
В этом HTML коде мы будем выводить номер карты которую прикладывают с считывателю карт. Это код из предыдущего видео, поэтому здесь рассказывать нечего.
Если в двух словах, то когда вы прикладываете карту к считывателю, то скетч считывает номер карты и отправляет его для вывода на web страницу.
Давайте посмотрим как это работает. Вводим IP адрес устройства и ничего не получаем. Так как мы находимся в своей обычной, домашней сети. Теперь переходим в созданную сеть. Перезагружаем страницу и всё мы не подключены. В следующем видео я расскажу как сделать так чтобы можно было видеть страницу из обычной WIFI сети, а если домашняя сеть пропадёт, то вы автоматически переключитесь на свою созданную сеть.
Переходим на локальный IP и видим текст и ожидание ввода карточки. Подносим карты к картридеру и видим, что их номера отображаются на странице.
На этом я заканчиваю это видео. Сегодня мы рассмотрели как создать точку доступа, просканировать все доступные сети. Поуправляли светодиодом из интерфейса браузера. Получили UID номер карты.
Если вам понравилось это видео, то не забудьте поставить лайк. Если есть какие вопросы или пожелания, то пишите их в комментариях
И поздравляю вас с Наступающим новым годом.
До встречи в новых видео.
Схема подключения WiFi реле на NodeMCU.
Давайте рассмотрим схему подключения. Чтобы в дальнейшем было понятно, для чего у нас та или иная строчка кода в прошивке. В проекте буду использовать отладочную плату NodeMCU. Вы можете использовать любую плату на ESP8266, с достаточным количеством pins для данного проекта.
Как видим, в данной схеме используются обычные тактовые кнопки. Вместо которых, можно использовать выключатели. Они будут выступать в роли кнопки с фиксацией. Для сборки на стенде использовал 2 выключателя и 2 лампочки, которыми буду управлять. Схема для тестирования проекта WiFi реле на NodeMCU будет выглядеть следующим образом.
6 thoughts on “ Подключение ESP8266 И DHT22 и отправка температуры на Majordomo ”
при проверке дает ошибку и останавливается на этой строчке
PubSubClient client(mqtt_server, 1883, callback, wifiClient);
Да, извиняюсь, видимо случайно удалил фигурную скобку, сейчас проверил, 100% рабочий код
Спасибо за статью. Я бы не советовал использовать VIN для подключения датчика! Данный пин не для этого.
Статья устарела сейчас используется ArduinoJson version 6…
я так понял никто скетч не грузил, потому как без dht.begin() в setup() получить данные с датчика невозможно
У меня на брокере стоит логин и пароль, как добавить в программу идентификацию при подключении к брокеру? Где прописать этот логин и пароль?
Управление светодиодом по Wi-Fi на платформе NodeMCU
В этот раз расскажем Вам что такое платформа NodeMCU.
Она полностью совместима со средой разработки Arduino IDE. Превосходит Arduino по скорости в 10 раз. Тактовая частота составляет 80 MHz. Имеет встроенный Wi-Fi модуль ESP8266.
В сегодняшнем примере разберем как на такой платформе используя беспроводной интерфейс управлять различными нагрузками. Опять же в примере в качестве нагрузки будет использован светодиод.
Для того чтобы устройство самостоятельно подключилось к точке доступа расположенной у Вас дома необходимо ввести имя сети и пароль для нее в соответствующие поля.
// Сюда название вашей Wi-FI сети и пароль.
const char* ssid = «ssid»;
const char* password = «password»;
Выбрали pin к которому будет подключена нагрузка.
После того как ввели эти данные загружаем весь код в плату.
/*
* http://server_ip/gpio/0 выключаем пин GPIO2
* http://server_ip/gpio/1 включаем пин GPIO2
*/
// Сюда название вашей Wi-FI сети и пароль.
const char* ssid = «ssid»;
const char* password = «password»;
// Поднимаем веб сервер
WiFiServer server(80);
void setup() Serial.begin(115200);
delay(10);
// подготавливаем пин для реле GPIO2
pinMode(2, OUTPUT);
digitalWrite(2, 0);
// подклюсаемя к сети WI-FI
Serial.println();
Serial.println();
Serial.print(«Connecting to «);
Serial.println(ssid);
while (WiFi.status() != WL_CONNECTED) delay(500);
Serial.print(«.»);
>
Serial.println(«»);
Serial.println(«WiFi connected»);
// Start the server
server.begin();
Serial.println(«Server started»);
// печатаем в монитор порта полученный IP адрес
Serial.println(WiFi.localIP());
>
void loop() // Смотрим, подключен ли к нам клиент
WiFiClient client = server.available();
if (!client) return;
>
// если клиент подключился печатаем
Serial.println(«new client»);
while(!client.available()) delay(1);
>
// читаем строку ссылки
String req = client.readStringUntil(‘r’);
Serial.println(req);
client.flush();
// присваиваем значение переменной val в зависимости от ссылки по которой перешли
int val;
if (req.indexOf(«/gpio/0») != -1)
val = 0;
else if (req.indexOf(«/gpio/1») != -1)
val = 1;
else Serial.println(«invalid request»);
client.stop();
return;
>
// работаем с GPIO2 и переменной val
digitalWrite(2, val);
// выводим html код
String s = «HTTP/1.1 200 OKrnContent-Type: text/htmlrnrnrnrnGPIO is now «;
s += (val)?»high»:»low»;
s += «n»;
// что там с клиентом..
client.print(s);
delay(1);
Serial.println(«Client disonnected»);
В мониторе порта плата нам напишет какой IP адрес был присвоен ей. И теперь, чтобы включить светодиод необходимо пройти по ссылке ip_адресс/gpio/1. А для того чтобы отключить светодиод переходим уже по другой ссылке ip_адресс/gpio/0.
Если Вам интересно и Вы обладаете небольшими навыками то можете попробовать сделать небольшую страничку с кнопками-ссылками, по нажатию на которые будут включаться/отключаться приборы и прочие устройства. Это не альтернатива нашим прошлым устройствам, а лишь демонстрация возможностей альтернативных платформа по созданию различных устройства.
Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте.
Так же у нас есть Telegram канал.
Вам понравился наш материал? Поделитесь с коллегами!
Yashalta2
Конструктивная критика приветсвуется, т.к. я новичек в этом деле! И более того, думаю, что моя инструкция не являются идеальным решением!
Нам понадобиться NodeMCU в моем случае это «NodeMCU D1 mini».
- Скачиваем прошивку
Идем на сайт https://github.com/arendst/Tasmota там спускаемся до пункта
Quick Install
Кликаем по ссылке «Download one of the released binaries from https://github.com/arendst/Tasmota/releases . »
и скачиваем либо то, что я указал стрелкой либо то, что я подчеркнул. https://ibb.co/ckfw7tS
Разницы нет ни какой между «tasmota-RU.bin» и «tasmota.bin» если не считать, что в первом случае у вас будет полностью русифицированный интерфейс. - Скачиваем прогу tasmotizer-1.1a.exe для прошивки «NodeMCU» https://github.com/tasmota/tasmotizer/releases
Я прошивал на Windows 10. Для Linux и Mac там решения есть при помощи pip3 install. - Прошивка:
a) Запустив скаченный файл tasmotizer-1.1a.exe у вас откроется окно прогрмаммы
б) Подключите ваш «NodeMCU» к ноуту по «usb» и в программе «Tasmotizer» укажитее порт к торому подключен ваш «NodeMCU», если нет порта то, нажмите кнопку «Refresh»!
в) Укажите путь до ранее скаченного файла «tasmota-RU.bin» или как в моем случае «tasmota.bin«. Или можно при наличии интернет соединенния в разделе «Select image» установить «точку/галочку» в пунтке «Release X.X.X» на момент написания это был релиз «Release 8.5.0» и в выподающем меню выбрать нужный «tasmota-RU.bin» файл.
г) Два пункта «Backup original firmware «Сохранить оригинальную прошивку» и «Erase before flashing«Стереть данные перед прошивкой» на Ваше усмотрение!
Думаю это важно если вы перепрошиваете продукцию в кторой есть «заводская» прошивка которая конектится с серверами в китае, я про «Backup original firmware» «Сохранить оригинальную прошивку». В нашем случае у нас «NodeMCU» пустая и галочка не нужна! А вот в пункте «Erase before flashing» «Стереть данные перед прошивкой» поставьте галочку!
д) Прошиваем! Жмем кнопку Tasmotize! https://ibb.co/Xy2g9N6
После того как прошили в Вашей WiFi сети появится новая сеть под названием «tasmota + номер» думаю цифры это последние цифры из Mac адреса устройства а может и нет. Это не важно! https://ibb.co/znW7cs0 Подключаетесь к этой сети у Вас должен открыться браузер, а в адресной строке http://192.168.4.1/ введите данные, пароль и логин от своей сети! Таким образом вы даете знать своему устройству «NodeMCU» куда ей подключатся.https://ibb.co/bvycxvr
У меня роутер выдает 2 частоты 2Mhz и 5Mhz поэтому я прописал их обе.
Все, готово!
Ниже я покажу пример как подключить два реле и две кнопки! При нажатии на кнопку №1 будет вкл/откл реле №1 и тоже самое со второй кнопкой. А т.к. в прошивке «Tasmota» вшита функция «MQTT» то, прошивка каждое изменение будет отправлять брокеру «MQTT» в нашем случае на «MD».
- Находим ваше устройство в настройках роутера и узнаем его «IP» адрес. Ну или любыми другими способами определяете «IP» вашей «NodeMCU»!
- Вбиваете «IP» адерес в браузере и попадает на прошивку «Tasmota»
- Прошивка заточена под БОЛЬШОЕ количество плат/устройств и каждое устройство имеет свое количество пинов и свой список возможной переферии! Поэтому первым делом нужно указать, что мы работаем с «NodeMCU»! Проделайте шаги согласно скрину https://ibb.co/vvHtLSp
В браузере вбиваете «IP» адрес «NodeMCU» — «Configuration» — «Configure Module» — выбираете из списка «18 Generic» — жмете кнопку «Save». - Теперь после того как мы указали прошивке с какой платой она взаимодействует. Скажем ей что у нас есть два реле которые управляются двумя кнопкаим и скажем где у нас в локальной сети MQTT сервер.
Снова идем «Configuration» — «Configure Module» и выставляем такие значения https://ibb.co/s5hYKQh и сохраняемся!
Здес не важно строго следовать моей расстановке пинов! У Вас может быть свое количество релей! Может 8 реле и ни одной кнопки, все управляется с веб. морды или «MD». Здесь вроде важно выбирать последовательность нумерации релей! Rele1, Rele2, Rele3. Что бы не было Rele1, Rele7, Rele5. (Хотя не уверен, отпишитесь если будете эксперементировать. Заранее благодарен!)
Также указываем настройки для «MQTT» идем «Configuration» — «Configure MQTT»https://ibb.co/SK8Cxrm
первым пунктом указываем «IP» «MajorDomo»
и второй пункт не важный! я изменил на свой топик tasmota, по дефолту там указан топик tasmota с 6-ю цифрами от Mac адреса устройства.
В итоге у Вас получится так https://ibb.co/fnDgpk1 - Теперь идем на «MajorDomo». У меня упрорно «MD» не хотел видеть сообщения от Tasmota! На какие только топики я не подписывался, ничего у меня не получалось! В итоге все заработало после того как я подписался на все топики! https://ibb.co/sK8DgZX
- А дальше как обычно!
Я создал Новый «Класс» -ESP3266 в нем «Объект» — Nodemcu — а в объекте создал «свойства» https://ibb.co/8dTWS2c
И привязался к этому объекту https://ibb.co/48KBMHv
Возможные баги: Все сделали но, MojorDomo не получает сообщения от «Nodemcu»! Я тогда просто убивал процесс и заново запускал его.
На последок, установим вход на веб. морду по паролю.https://ibb.co/LY2mmZM
PS — Tasmota ОЧЕНЬ жирная прошивка на наличие всяких плюшек! К примеру вы можете в самой прошивке указать, что при достижении такой то температуры отключить реле такое! Либо после того как отключат свет там то, включи здесь и т.д. и т.п. Все это описывается правилами «Rules» более подробно здесь https://tasmota.github.io/docs/Rules/
Tasmota поддерживает БОЛЬШОЕ количество устройств https://templates.blakadder.com/
Пример управления реле с «MD» если установлен пароль на веб. интерфейсе Tasmota.
Подробно здесь https://tasmota.github.io/docs/Commands/#with-web-.
Пример управления реле с «MD» если нет пароля на веб. интерфейсе Tasmota.
Пример, управление n-го количества реле с «MD» в команде дописываем номер реле»PowerX» которым управляем.
Пример получения статуса.
Пример управления при помощи терминала или «Bash»
Пишем свои правила: Более подробно здесь https://tasmota.github.io/docs/Rules/
К примеру Вам нужно каждый день включать «relay 1» в указаное Вами время! А «relay 2» и «relay 3» отключать!
- Нужно выяснить какое время установленно ва Вашем устройстве!
Вводим команду «Status 7» https://ibb.co/kHRqfsg
Если в выводе показывает отличное время от вашего то, при помощи команды «Timezone» установите свое правильное! К примеру «Timezone 2», установит Вам 2-ю временную зону.
Для проверки снова вводите команду «Status 7». Нужно, что бы время совподало с Вашим! - В прошивке «Tasmota» 16 таймеров! https://ibb.co/F5tqFzH
К примеру мы хотим установить таймер под номером 5.
Вы можете настроить таймер с веб. морды а можно сделать это в консоле введя команду.
В команде прописанно:
Устанавливаем таймер №5, время срабатывания в 14-00, каждый день на неделе (семь едениц), и будильник будет повторяться!
3) После того, как таймер настроили нужно создать правило «Rules»!
Создаем правило №1
Согласно нашему заданию, нам нужно, в указанное время включать «relay 1» остальные отключить.
В консоле вводим команду
4) Осталось активировать таймер! Это можно сделать с веб. интерфейса https://ibb.co/h9v1YxS либо ввести команду в консоли
Если нужно удалить созданное Вами правило №1 введите команду в консоли.
Rule1 «
Установите правильное местоположение вашего устройства прописав широту и долготу. Это нужно для правильного восхода/заката солнца
Введите команды к консоле.