Что такое NodeMCU и как его подключить к WiFi сети. Какие режимы работы поддерживает модуль ESP8266. Как настроить NodeMCU в качестве клиента или точки доступа WiFi. Какие команды использовать для конфигурации WiFi на NodeMCU.
Что такое NodeMCU и модуль ESP8266
NodeMCU — это популярная платформа для разработки IoT-устройств на базе модуля ESP8266. ESP8266 представляет собой недорогой WiFi-чип с поддержкой стека TCP/IP и микроконтроллером. NodeMCU объединяет ESP8266 с флэш-памятью, регулятором питания и USB-TTL преобразователем на одной плате, что упрощает разработку.
Основные характеристики NodeMCU:
- WiFi 802.11 b/g/n
- 32-битный микроконтроллер
- GPIO, PWM, ADC, I2C, SPI, UART
- Поддержка языка Lua
- Открытое ПО и аппаратное обеспечение
- Низкая стоимость (около $5)
Режимы работы WiFi на ESP8266
ESP8266 поддерживает три основных режима работы WiFi:
- Режим станции (STA) — подключение к существующей WiFi сети
- Комбинированный режим (STA+AP) — одновременная работа в режимах станции и точки доступа
Выбор режима зависит от конкретной задачи. Чаще всего используется режим станции для подключения к домашней или офисной WiFi сети.
![](/800/600/https/i.ebayimg.com/images/g/W0UAAOSwcoVjxLSK/s-l1600.jpg)
Подключение NodeMCU к WiFi в режиме станции
Для подключения NodeMCU к существующей WiFi сети в режиме станции выполните следующие шаги:
- Подключите NodeMCU к компьютеру через USB
- Откройте Arduino IDE и выберите плату «NodeMCU 1.0»
- Загрузите следующий скетч, указав SSID и пароль вашей сети:
«`cpp
#include
После загрузки скетча NodeMCU подключится к указанной WiFi сети и выведет полученный IP-адрес в последовательный порт.
Настройка NodeMCU в режиме точки доступа
Чтобы настроить NodeMCU в качестве точки доступа WiFi, используйте следующий код:
![](/800/600/https/raw.githubusercontent.com/nodemcu/nodemcu-devkit/master/Documents/NODEMCU_DEVKIT_SCH_BIG.png)
«`cpp
#include
Этот скетч создаст точку доступа с именем «NodeMCU_AP» и паролем «12345678». Вы можете изменить эти параметры по своему усмотрению.
Использование AT-команд для настройки WiFi
Помимо программирования через Arduino IDE, ESP8266 можно настраивать с помощью AT-команд. Вот основные команды для работы с WiFi:
- AT+CWMODE=1 — установка режима станции
- AT+CWMODE=2 — установка режима точки доступа
- AT+CWMODE=3 — установка комбинированного режима
- AT+CWLAP — сканирование доступных сетей
- AT+CWJAP=»SSID»,»password» — подключение к сети
- AT+CIFSR — получение IP-адреса
AT-команды удобны для быстрой настройки и отладки без перепрограммирования модуля.
![](/800/600/https/ae01.alicdn.com/kf/HTB1rZSNXNn1gK0jSZKPq6xvUXXac/ESP8266-WIFI-V3-NodeMcu-Node-MCU-Base-ESP8266-Testing-DIY-Breadboard-Basics-Tester-suitable-for-NodeMcu.jpg)
Проверка подключения и получение сетевых параметров
После подключения к WiFi важно проверить статус соединения и получить сетевые параметры. Для этого можно использовать следующие функции:«`cpp void printWifiStatus() { // Вывод SSID подключенной сети Serial.print(«SSID: «); Serial.println(WiFi.SSID()); // Вывод IP-адреса IPAddress ip = WiFi.localIP(); Serial.print(«IP Address: «); Serial.println(ip); // Вывод уровня сигнала long rssi = WiFi.RSSI(); Serial.print(«Signal strength (RSSI):»); Serial.print(rssi); Serial.println(» dBm»); } «`
Вызывайте эту функцию после успешного подключения, чтобы получить всю необходимую информацию о сетевом соединении.
Обработка ошибок при подключении к WiFi
При работе с WiFi важно корректно обрабатывать возможные ошибки подключения. Вот пример кода для обработки ошибок:
«`cpp void connectWifi() { WiFi.begin(ssid, password); int attempts = 0; while (WiFi.status() != WL_CONNECTED && attempts < 20) { delay(500); Serial.print("."); attempts++; } if (WiFi.status() == WL_CONNECTED) { Serial.println("\nConnected to WiFi"); printWifiStatus(); } else { Serial.println("\nFailed to connect to WiFi"); // Здесь можно добавить код для обработки ошибки } } ```
![](/800/600/https/ae01.alicdn.com/kf/Hff797a0b38044af4ac1bb0aace926e12j/New-Version-NodeMCU-LUA-WiFi-Networking-Based-ESP8266-Development-Board-Standard-For-Arduino-Compatible-TE437.jpg)
Этот код пытается подключиться к WiFi в течение 10 секунд. Если подключение не удалось, выводится сообщение об ошибке.
Какие проблемы могут возникнуть при подключении NodeMCU к WiFi?
При подключении NodeMCU к WiFi могут возникнуть следующие проблемы:
- Неправильно указанные SSID или пароль сети
- Слабый сигнал WiFi в месте расположения устройства
- Несовместимость с некоторыми типами шифрования (например, WPA3)
- Конфликты IP-адресов в сети
- Проблемы с питанием NodeMCU
Для решения этих проблем проверьте корректность учетных данных сети, расположите устройство ближе к роутеру, используйте совместимые настройки безопасности WiFi и обеспечьте стабильное питание модуля.
Управление энергопотреблением WiFi на NodeMCU
ESP8266 потребляет значительное количество энергии при работе WiFi. Для оптимизации энергопотребления можно использовать следующие методы:
- Использование режима глубокого сна (deep sleep)
- Отключение WiFi, когда оно не используется
- Уменьшение мощности передатчика
Вот пример кода для использования режима глубокого сна:
![](/800/600/https/user-images.githubusercontent.com/5689189/41376414-77de9f52-6f59-11e8-8fe5-9f9b9ce7b7b3.png)
«`cpp #include
Этот код переводит NodeMCU в режим глубокого сна на 60 секунд, значительно снижая энергопотребление.
Безопасность WiFi соединения на NodeMCU
При разработке IoT устройств на базе NodeMCU важно уделять внимание безопасности WiFi соединения. Вот несколько рекомендаций:
- Используйте WPA2 шифрование для WiFi сети
- Применяйте уникальные и сложные пароли
- Избегайте использования открытых WiFi сетей
- Обновляйте прошивку NodeMCU до последней версии
- Используйте HTTPS для передачи данных по сети
Пример кода для использования HTTPS соединения:
«`cpp
#include
![](/800/600/https/www.geekering.com/wp-content/uploads/2020/08/Setup-4.jpg)
Этот код демонстрирует, как установить защищенное HTTPS соединение с сервером для передачи данных.
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
- Клиент. (STA)
- Точка доступа. (AP)
- Совмещенный режим. (STA + AP)
- 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 .