NodeMCU (Lua) — Wi-Fi.
Каждый кто начинает свое знакомство с микроконтроллером ESP8266, первым делом захочет подключиться в Wi-Fi и попробовать сетевые возможности данного микроконтроллера. Для работы с Wi-Fi в NodeMCU существует специальный модуль, который так и называется WiFi module. Данный модуль позволяет устанавливать различные режимы работы и настраивать подключения к Wi-Fi сети.
Существует три четыре режима работы Wi-Fi в ESP8266
- Клиент. (STA)
- Точка доступа. (AP)
- Совмещенный режим. (STA + AP)
- Wi-Fi выключен.
Клиент
Самый часто используемый режим работы. В режиме клиента ESP8266 подключается к вашей существующей Wi-Fi сети. Для того чтобы подключиться к сети достаточно несколько строк кода.
1 2 3 4 5 6 7 |
cfg = {} cfg.ssid = "MY-NET" cfg.pwd = "myPassword" cfg.save = false -- не сохранять настройки (по умолчанию true) wifi.setmode(wifi.STATION) wifi.sta.config(cfg) |
Точка доступа
В режиме точки доступа, ESP8266 создает свою собственную сеть, к которой могут присоединиться другие устройства (телефон, ПК и т.д). Максимальное количество устройств, которые могут быть одновременно подключены — пять. Данный режим часто используется как промежуточный этап перед подключением ESP8266 к WiFi в режиме клиента. Например, для первоначальной настройки.
1 2 3 4 5 6 |
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 может прослушивать только один канал.
1 2 3 4 5 6 7 8 9 10 11 12 |
cfg_ap={ ssid="NODE-XXXXXX", pwd="password" } cfg_sta={ ssid="NET", pwd="password" } wifi.setmode(<span>wifi.STATIONAP</span>) wifi.ap.config(cfg_ap) wifi.sta.config(cfg_sta) |
События
Для отслеживания различных событий существую функция callback на которую можно подписаться.
1 2 3 4 5 6 7 8 |
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(1, callback), но доступ к этой функция есть только если выбран режим клиента или совмещенный. При попытки запустить ее из режима точки доступа, выдаст ошибку с предупреждением.
1 2 3 4 5 6 |
function listap(t) for k,v in pairs(t) do print(k.." : "..v) end end wifi.sta.getap(1, listap) |
Это только малая часть всех возможностей Wi-Fi модуля, если у вас возникли вопросы, то при внимательном изучении документации можно получить на него ответ.
Отправить ответ