NodeMCU学习系列(二)----连接网络

文章目录

  • 1. WIFI模块
  • 2. NodeMCU联网
  • 3. 总结

物联网应用首先要能联网,统一管理,否则各个节点各自为政就失去了物联网的优势。物联网设备联入网络的方式主要有:
(1) 设备直接连接到路由器的WIFI
(2) 设备连接到三大运营商的网络中,如NB-IOT
(3) 设备通过蓝牙、zigbee、Sub-G等方式连接到网关,再由网关连接到网络
NodeMCU的ESP8266芯片包含WIFI模块,最简单的就是直接连接到路由器,即方式(1)。

1. WIFI模块

ESP8266的WIFI模块有三种模式
(1) Station模式
Station用于连接到已有的网络,路由器或手机热点等.
NodeMCU学习系列(二)----连接网络_第1张图片
(2) AP模式
AP模式用于建立无线网络给其他设备连接,主要用于对模块进行一些配置,如可以配置Station模式要连接网络的SSID和密码。
NodeMCU学习系列(二)----连接网络_第2张图片
NodeMCU包含enduser setup模块,用于对模块进行无线配网,只要在编译时包含这个模块就可以使用。
NodeMCU学习系列(二)----连接网络_第3张图片
(3) Station+AP模式
此模式同时支持前两种模式,可以用于无线网络中继,或者组成WIFI mesh网络。
NodeMCU学习系列(二)----连接网络_第4张图片

2. NodeMCU联网

NodeMCU连接WIFI十分简单,仅需几行代码,配置SSID和密码就可以实现联网。

station_cfg={}
station_cfg.ssid="NODE-AABBCC"
station_cfg.pwd="password"
wifi.setmode(wifi.STATION)
wifi.sta.config(station_cfg)
wifi.sta.connect()

wifi.sta.config()默认保存配置参数,下次上电即使不配置也可以自动连接。使用函数wifi.sta.getdefaultconfig()可以获取保存在flash中的配置数据。 WIFI的状态通过wifi.eventmon模块监听,使用wifi.eventmon.register()函数注册回调函数。有效的WIFI状态包含:

wifi.eventmon.STA_CONNECTED
wifi.eventmon.STA_DISCONNECTED
wifi.eventmon.STA_AUTHMODE_CHANGE
wifi.eventmon.STA_GOT_IP
wifi.eventmon.STA_DHCP_TIMEOUT
wifi.eventmon.AP_STACONNECTED
wifi.eventmon.AP_STADISCONNECTED
wifi.eventmon.AP_PROBEREQRECVED

状态wifi.eventmon.STA_GOT_IP表示获取到IP,已联入网络;状态wifi.eventmon.STA_DISCONNECTED表示网络断开,需要重新连接。

wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)
    print("Connected, IP is "..wifi.sta.getip())
    network_connect_flag = 1
end)

wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T)
    print("wifi disconnect")
    network_connect_flag = 0
end)

WIFI连接时开启一个定时器,连接成功了则关闭定时器;若超时后仍没有连接上网络,则开始配网过程,重新配置网络参数,配网过程不在本文讨论范围。

NOTE:Timer模块在2019 Q1进行过修改,删除了以前的7个固定定时器,所以部分文章中的代码已经无法正常工作。

wifi_tmr = tmr.create()
wifi_tmr:register(1000, tmr.ALARM_AUTO, function() 
        wifi_check_cnt = wifi_check_cnt + 1
        if wifi_check_cnt > 20 then
            print("start net config")
            wifi_tmr:stop()
            wifi_tmr:unregister()
            dofile("netconfig.lua")
        end
        if network_connect_flag == 1 then
            wifi_tmr:stop()
            wifi_tmr:unregister()
        end
    end)
wifi_tmr:start()

3. 总结

NodeMCU连接WIFI十分简便,仅需几行代码即可将设备连入网络。

你可能感兴趣的:(嵌入式)