Nodemcu подключение: NodeMCU (ESP8266) для начинающих: что такое, как подключить

Nodemcu не передает данные по mqtt в wirenboard7 — подключение

atlo

#1

С Наступающим всех Новым годом!
Помогите разобраться.
Есть два устройства nodemcu с подключенным к нему dht22 . которые прошиты прошивкой через esphome и которые передают данные по протоколу mqtt на wirenboard.
Код прошитый на двух устройствах nodemcu идентичен(писан в esphome).
На оба устройства поподаю через web интерфейс и вижу данные. Но по протоколу mqtt на wirenboard приходят только данные с одного устройства со второго данных нет.
Уже даже код скопирован с рабочего и прошил на второе устройство(изменил только имя устройства в коде и менял api), результат тот же данные по mqtt не вижу.
Со первого данные вижу(рисунок) ниже

В логах второго при подключение пишет

[W][api. connection:071]: 10.1.3.168: Socket operation failed: CONNECTION_CLOSED errno=11
Может кто встречал, что за ошибка и как ее исправить.
.

BrainRoot

#3

Добрый день. Нет ли каких-то ошибок на брокере пи подключении? Нуи если подключаться к еще одному брокеру, для проверки?

AlexandrD

#4

Не факт, что ваш случай, но я как-то сталкивался с таким: если подключиться к одному броккеру с двух разных устройств, у которых явно задан одинаковый идентификатор клиента, то второе устройство не подключалось с ошибкой.

BrainRoot

#5

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

atlo

#6

На брокере не нашел, только на клиенте. Гляну позже повнимательней

atlo

#7

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

atlo

#8

mac адреса у них разные(отличаются в пару последних символов)
Попробую отключить первое и через пару часиков включу второе(посморю что будет)

NodeMCU (Lua) — Wi-Fi

Начиная свое знакомство с микроконтроллером ESP8266, первым делом захочется подключиться к Wi-Fi и попробовать сетевые возможности данного микроконтроллера. Для работы с Wi-Fi в NodeMCU существует специальный модуль, который так и называется WiFi module. Данный модуль позволяет устанавливать различные режимы работы и настраивать подключения к Wi-Fi сети.

Существует три режима работы Wi-Fi в ESP8266

  1. Клиент. (STA)
  2. Точка доступа. (AP)
  3. Совмещенный режим. (STA + AP)
  4. Wi-Fi выключен.

Клиент

Один из самых часто используемый режимов работы это режим клиента. Для того чтобы подключиться достаточно несколько строк кода, где нужно указать SSID и пароль вашей Wi-Fi сети.

cfg = {}  
cfg.ssid = "MY-NET"     -- SSID 
cfg.pwd = "myPassword"  -- пароль
cfg.save = false  -- не сохранять настройки (по умолчанию true)
wifi.setmode(wifi.STATION) -- выбор режима
wifi.sta.config(cfg)    -- установка настроек и подключения к Wi-Fi

Точка доступа

В режиме точки доступа, ESP8266 создает свою собственную сеть, к которой могут присоединиться другие устройства (телефон, ПК и т. д). Максимальное количество устройств, которые могут быть одновременно подключены — пять. Данный режим часто используется как промежуточный этап перед подключением ESP8266 к WiFi в режиме клиента. Например, для первоначальной настройки.

cfg={
 ssid="NODE-XXXXXX",
 pwd="password"
}
wifi.setmode(wifi.SOFTAP)
wifi.ap.config(cfg)

Если пароль не указывать, то будет создана открытая точка. При подключении, ESP8266 по умолчании выдается ip адрес 192.168.4.1, а клиенту 192.168.4.2

Совмещенный режим

Совмешенный режим Station + AP, когда ESP8266 создает свою собственную сеть и одновременно подключается к другой сети.

!!! Имейте ввиду что при использовании  совмещенного режима используется один и тот же канал для обеих сетей, поскольку ESP8266 может прослушивать только один канал.

cfg_ap={
 ssid="NODE-XXXXXX",
 pwd="password"
}
cfg_sta={ 
ssid="NET", 
pwd="password" 
}
wifi.setmode(wifi.STATIONAP)
wifi.ap.config(cfg_ap)
wifi.sta.config(cfg_sta)

События

Для отслеживания различных событий существую функция callback на которую можно подписаться.

wifi.eventmon.register(wifi.eventmon.STA_CONNECTED, function(T) print("STA_CONNECTED") -- вызовется при подключении к сети dofile('my_script.lua') end) wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T) print("STA_DISCONNECTED") -- вызовется при отключении от сети end

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

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

Поиск сетей

Чтобы иметь возможность сканировать доступные сети, в модули существует функция

wifi.sta.getap(), но доступ к этой функция есть только в режиме клиента или совмещенный. При попытки запустить ее из режима точки доступа, выдаст ошибку с предупреждением.

function listap(t)  -- callback функция
    for k,v in pairs(t) do -- разбираем таблицу
        print(k.." : "..v)  -- выводим значения в консоль
    end
end
wifi.sta.getap(1, listap) -- 1 это формат данных возвращаемой таблицы

Сегодня я постарался написать об основных функциях которые потребуются для работы ESP8266 с Wi-Fi сетями, о других возможностях Wi-Fi модуля можно узнать если внимательно изучить документацию.

NodeMcu — прошивка с открытым исходным кодом, основанная на ESP8266 wifi-soc.

Дом

Характеристики

Примеры

DevKit

中文

Fork me on GitHub

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

Аппаратный ввод-вывод, подобный Arduino

Расширенный API для аппаратного ввода-вывода, который может значительно сократить избыточную работу по настройке и управлению оборудованием. Пишите как на arduino, но в интерактивном режиме на языке Lua.

Сетевой API в стиле Nodejs

API, управляемый событиями, для сетевых приложений, который облегчает разработчикам написание кода, работающего на MCU размером 5 мм * 5 мм в стиле Nodejs. Значительно ускорьте процесс разработки приложений для Интернета вещей.

Самый дешевый WI-FI

Менее 2 долларов США WI-FI MCU ESP8266 интегрированный и простой в создании прототипа набор для разработки. Мы предоставляем лучшую платформу для разработки приложений IOT по самой низкой цене.

Комплект разработчика

Комплект разработчика на основе ESP8266 объединяет GPIO, ШИМ, IIC, 1-Wire и АЦП на одной плате. Усильте свою разработку самым быстрым способом в сочетании с прошивкой NodeMcu!

USB-TTL в комплекте, подключи и работай

10 GPIO, каждый GPIO может быть PWM, I2C, 1-wire

СЕРТИФИЦИРОВАННЫЙ FCC модуль WI-FI, антенна на печатной плате

Примеры

Несколько примеров для игры

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

печать (wifi.sta.getip())
--ноль
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","пароль")
печать (wifi.sta.getip())
--192.168.18.110
              
             

Arduino как доступ к IO

контакт = 1
gpio.mode(pin,gpio.OUTPUT)
gpio.write(pin,gpio.
HIGH) gpio.mode(pin,gpio.INPUT) печать (gpio.read (булавка))

HTTP-клиент

-- Простой http-клиент
conn=net.createConnection(net.TCP, ложь)
conn:on("получить", function(conn, pl) print(pl) end)
соединение:подключить(80,"121.41.33.127")
conn:send("GET / HTTP/1.1\r\nХост: www.nodemcu.com\r\n"
    .."Connection: keep-alive\r\nAccept: */*\r\n\r\n")
              
             

HTTP-сервер

-- простой http-сервер
srv=net.createServer(net.TCP)
srv:слушай(80,функция(подключение)
    соединение: вкл ("получить", функция (соединение, полезная нагрузка)
    печать (полезная нагрузка)
    conn:send("<h2> Привет, NodeMcu.</h2>")
    конец)
конец)
              
             

ШИМ

светодиод функции (r,g,b)
    pwm.setduty(1,r)
    pwm.setduty(2,g)
    pwm.setduty(3,b)
конец
pwm.setup(1 500 512)
pwm.setup(2 500 512)
pwm.setup(3 500 512)
ШИМ.старт(1)
ШИМ.старт(2)
ШИМ.старт(3)
светодиод(512,0,0) -- красный
светодиод (0,0,512) -- синий
              
             

Мигающий светодиод

лайтон=0
tmr. alarm(0,1000,1,функция()
если лайтон==0 то
    лайтон=1
    светодиод (512 512 512)
    -- 512/1024, рабочий цикл 50 %
еще
    лайтон=0
    светодиод (0,0,0)
конец
конец)
              
             

Бутстрап

--init.lua будет выполнен
файл.открыть("init.lua","w")
file.writeline([[print("Привет, мир!")]])
файл.закрыть()
node.restart() — это перезапустит модуль.
              
             

Использовать таймер для повторения

tmr.alarm(1,5000,1,function() print("alarm 1") end)
tmr.alarm(0,1000,1,function() print("alarm 0") конец)
tmr.alarm(2,2000,1,function() print("alarm 2") end)
-- через некоторое время
tmr.stop (0)
              
             

Телнет-сервер на чистом lua

-- простой телнет-сервер
s=net.createServer(net.TCP,180)
s:слушай(2323,функция(с)
    функция s_output(str)
      если (с~=ноль)
        затем c: отправить (стр)
      конец
    конец
    узел.выход(s_output, 0)
    -- перенаправить вывод в функцию s_ouput.
    c: on («получить», функция (c, l)
      узел. ввод(л)
      --подобно pcall(loadstring(l)), поддержка нескольких отдельных строк
    конец)
    c: on («отключение», функция (c)
      узел.выход(ноль)
      --unregist функция перенаправления вывода, вывод идет на последовательный
    конец)
    print("Добро пожаловать в мир NodeMcu.")
конец)
              
             

Взаимодействие с датчиком

-- считывание температуры с DS18B20
т = требуется ("ds18b20")
т.настройка(9)
адреса=t.addrs()
-- Всего номеров DS18B20, предположим, что это 2
печать (таблица.getn (адреса))
-- Первый DS18B20
печать (t.read (адреса [1], t.C))
печать (t.read (адреса [1], t.F))
печать (t.read (адреса [1], t.K))
-- Второй DS18B20
печать (t.read (адреса [2], t.C))
печать (t.read (адреса [2], t.F))
печать (t.read (адреса [2], t.K))
-- Просто читать
печать (t.read())
-- Просто читать как по Цельсию
печать (t.read (ноль, t.C))
-- Не забудьте отпустить его после использования
т = ноль
ds18b20 = ноль
package.loaded["ds18b20"]=ноль
              
             

Свяжитесь с нами

© 2014-2018 Команда NodeMcu

浙ICP备14038071号-1    

浙公网安备 33011002011205 号

Как подключить ESP8266 к WiFi

В предыдущих проектах ESP8266 я дал краткое введение в модуль ESP8266 WiFi, как начать работу с ESP8266 и Arduino, какова конфигурация контактов модуля ESP8266 ESP-01 и как запрограммируйте ESP8266, используя Arduino в качестве интерфейса USB-to-Serial.

Я также показал вам, как установить прошивку (программу AT-команд) на встроенное ПЗУ WiFi-модуля ESP8266.

[адсенс1]

Одна вещь (и это важно), которую я пропустил (не намеренно), это показать вам, как подключить ESP8266 к сети WiFi.

Итак, без лишних слов, позвольте мне показать вам, как подключить ESP8266 к WiFi и использовать его в нашем IoT (Интернете вещей) и других проектах на основе WiFi.

ПРИМЕЧАНИЕ:

  • Прежде чем продолжить, я настоятельно рекомендую вам обратиться к двум более ранним проектам по WiFi-модулю ESP8266: НАЧАЛО РАБОТЫ С ESP8266 И ARDUINO и КАК ОБНОВИТЬ/ПРОШИВАТЬ ПРОШИВКУ ESP8266 .
  • Есть много важных вещей, таких как конфигурация выводов модуля ESP8266 (ESP-01), как подключить ESP8266 к Arduino и т. д., о которых вы должны знать заранее, прежде чем приступать к подключению ESP8266 к WiFi.

Внешний вид

Обзор

Крошечный WiFi-модуль ESP8266 (ESP-01) творит чудеса в сообществе DIY, поскольку он позволяет таким устройствам, как Arduino, получать доступ к веб-страницам, подключаясь к Интернету.

WiFi-модуль ESP8266 может быть подключен к любому другому микроконтроллеру (например, Arduino или 8051) через UART, и с помощью AT-команд микроконтроллер может управлять ESP8266 (подключаться к WiFi, обновлять прошивку и т. д.).

Итак, чтобы использовать WiFi-модуль ESP8266 в наших проектах, связанных с Интернетом, нам нужно сначала подключить ESP8266 к WiFi, а затем получить к нему доступ из Интернета.

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

Режимы работы WiFi модуля ESP8266

Существует три режима работы WiFi модуля ESP8266 WiFi. Это:

  • Режим станции (STA)
  • Программная точка доступа (AP)
  • Мягкая точка доступа + станция
Режим станции (STA)

В режиме станции (STA) WiFi-модуль ESP8266 будет подключен к сети WiFi, которая уже настроена точкой доступа, например WiFi-маршрутизатором.

Программная точка доступа (AP)

Второй режим работы — режим точки доступа (AP). В этом режиме модуль ESP8266 действует как точка доступа и обеспечивает сеть Wi-Fi для других станций (например, мобильных устройств или ноутбуков).

Обычно точка доступа может предоставлять интернет своим станциям через проводную сеть, но поскольку проводного интерфейса нет, этот режим точки доступа называется Soft Access Point.

Модуль ESP сначала настраивается в режиме программной точки доступа, а затем настраивается в режиме станции. Это полезно, когда имя пользователя (SSID) и пароль сети Wi-Fi неизвестны.

Программная точка доступа + станция

В третьем режиме WiFi-модуль ESP8266 настроен на работу как в режиме станции, так и в режиме программной точки доступа.

Все эти режимы работы устанавливаются с помощью AT-команд. В этом уроке я расскажу о AT-командах, которые необходимы для подключения ESP8266 к сети WiFi. В отдельном уроке я расскажу о некоторых важных и полезных AT-командах ESP8266.

[адсенс2]

Принципиальная схема

Необходимые компоненты

  • Модуль Wi-Fi ESP8266 (ESP-01)
  • Arduino UNO (достаточно адаптера USB-Serial)
  • Кнопка
  • Ползунковый переключатель
  • Резистор 1 кОм (1/4 Вт)
  • Резистор 2,2 кОм (1/4 Вт)
  • Соединительные провода

Как подключить ESP8266 к сети WiFi с помощью AT-команд?

Прежде чем посмотреть, как подключить ESP8266 к сети Wi-Fi, вы должны помнить, что WiFi-модуль ESP8266 загружается с прошивкой AT-команд.

Пожалуйста, обратитесь к проекту « КАК ПРОШИВАТЬ ПРОШИВКУ НА ESP8266 », прежде чем приступать к подключению WiFi-модуля ESP8266 к сети WiFi.

Итак, после подключения ESP8266 в режиме программирования и проверки наличия прошивки AT-команд, подключите Arduino к компьютеру и откройте последовательный монитор.

В моем случае я установил скорость 115200 бод, а также выбрал опцию «Both NL & CR» в последовательном мониторе Arduino. Измените эти настройки в соответствии с вашими требованиями.

Сначала введите следующую команду, чтобы проверить, успешно ли установлено соединение.

Затем я перезапущу модуль ESP8266 с помощью следующей команды, просто чтобы убедиться, что я начинаю все сначала.

AT+RST

Теперь мне нужно установить режим работы как режим станции. Для этого используйте следующую команду.

AT+CWMODE=1

Режим работы установлен как режим станции (STA). Теперь, чтобы просмотреть список всех ближайших сетей WiFi, используйте команду, показанную ниже.

AT+CWLAP

Чтобы присоединиться к сети, используйте следующую команду.

AT+CWJAP=»SSID»,»PASSWORD»

Вместо SSID введите имя вашей сети Wi-Fi, а вместо PASSWORD введите пароль.

В течение нескольких секунд вы получите ответ с подтверждением подключения WIFI. Чтобы проверить IP-адрес WiFi-модуля ESP8266, введите команду.

AT+CIFSR

Альтернативный способ подключения WiFi-модуля ESP8266 к сети WiFi

Если вы устали вводить все эти AT-команды для подключения WiFi-модуля ESP8266 к сети Wi-Fi, то есть альтернативный способ. В этом методе я буду программировать WiFi-модуль ESP8266 (что означает, что прошивка AT-команды будет стерта). Код для этого показан ниже.

ПРИМЕЧАНИЕ: В коде введите данные вашей сети Wi-Fi вместо «ssid» и «пароль».

Перед программированием выберите «Универсальный модуль ESP8266» из плат, а также выберите правильный COM-порт. Более подробную информацию о программировании WiFi-модуля ESP8266 (пример Blink) можно найти здесь: НАЧАЛО РАБОТЫ С ESP8266 И ARDUINO .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *