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 выключен.

Клиент

1

Один из самых часто используемый режимов работы это режим клиента. Для того чтобы подключиться достаточно несколько строк кода, где нужно указать 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

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

2

В режиме точки доступа, 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

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

12121

Совмешенный режим 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
(0.0) / 0
Прежде чем оставить комментарий, пожалуйста, ознакомьтесь с правилами комментирования. Оставляя комментарий, вы подтверждаете ваше согласие с данными правилами и осознаете возможную ответственность за их нарушение. Все комментарии премодерируются.
0