WIFI模块

ESP8266总共有3种工作模式,AP模式、Station模式、APStation模式。

AP
AP模式下,esp8266就相当与一个路由器,本身发出一个wifi信号,别人连上就可以进行通信,跟蓝牙有点像,一样有距离不远的缺点,但有可以进行多连接的功能。
注:连接AP模式时,最多能够连接5个。

Station
Station模式下,esp8266能够接入到另一边建立的WiFi网络中进行通信,也可以通过连接路由器手机热点电脑热点通过联网接入internet进行联网获取和传递信息,就跟我们的手机wifi一样。

AP兼Station
AP兼Station模式下,是它们两个的结合,在建立一个网络节点(路由器)的同时,还能够连接其他的网络中。

注意:WiFi子系统由后台任务维护,后台任务必须定期运行。任何功能或任务花费超过15ms时,就可能导致WiFi子系统崩溃。如果需要执行超过15ms的任务时,使用wifi.suspend()函数。

由于wifi模块函数比较多,这里只写一些常用的函数。

WIFI函数使用

wifi.setmode()
功能:配置要使用的WiFi模式,共四种工作模式。
当使用组合的Station + AP模式时,两个网络将使用相同的信道,因为无线电只能在单个信道上监听
语法:wifi.setmode(mode) 参数:
mode选择wifi的四种模式
.wifi.STATION——Station模式
.wifi.SOFTAP——AP模式
.wifi.STATIONAP——AP+Station模式
.wifi.NULLMODE——关闭wifi
返回值:truefalse

wifi.getmode()
功能:得到wifi的工作模式
语法:wifi.getmode() 参数:无
返回值:wifi.STATIONwifi.SOFTAPwifi.STATIONAPwifi.NULLMODE

wifi.sta.config()
功能:wifiStation模式的配置
语法:wifi.sta.config(station_config)或者wifi.sta.config(ssid,pwd,auto,mac,save) 参数:
station_config中包含下列参数
.ssid:连接的wifi账号,是一个低于32bytes字符串 .pwd:连接的wifi密码,是0-64AssicII字符串,最少8个数
.auto:默认为truetrue:启动自动连接并连接到访问点,AUTO=true时不需要wifi.sta.connect()函数来连接访问点。false:禁用自动连接。
.mac:物理地址,当多个访问点账号相同时,接入不同的访问点要填写它的物理地址如:AA:BB:CC:DD:EE:FF .save:是否将配置的内容保存到flash中,true:配置的内容全部保存,false:错误配置的内容不保存
返回值:true:成功,false:失败

wifi.ap.config()
功能:wifiAP模式的配置
语法:wifi.ap.config(cfg) 参数:
cfg中包含以下参数
.ssid:建立的wifi账号1-32个字符
.pwd:建立的wifi密码8-64个字符
.auth:身份验证的方式,wifi.OPEN (默认), wifi.WPA_PSKwifi.WPA2_PSKwifi.WPA_WPA2_PSK .channel:选择的频段通道,1-14个,默认为6 .hidden:是否隐藏,true:隐藏,false:不隐藏,默认为false .max:最大的连接数,1-4个,默认为4 .beacon:信标间隔时间,范围100-60000,默认为100 .save:是否保存配合到flash中,true:配置的内容全部保存,false:错误配置的内容不保存
返回值:true:成功,false:失败

wifi.sta.conect()
功能:在Station模式下连接到已配置的AP。 如果在wifi.sta.config()中禁用了自动连接,则只需要调用此方法。
语法:wifi.sta.connect(cnt) 参数:
cnt包含以下参数(可选)
·SSID:接入点的SSID。 (格式:字符串)
·BSSID:接入点的BSSID。 (格式:字符串)
·channel:接入点所在的通道。 (格式:数字)
返回值:nil

wifi.sta.disconnect()
功能:在Station模式下断开与AP的连接。
语法:wifi.sta.disconnect(dst) 参数:
dst包含以下参数(可选)
·SSID:接入点的SSID。 (格式:字符串)
·BSSID:接入点的BSSID。 (格式:字符串)
.reason:断开连接的原因。
返回值:nil

wifi.sta.getip()
功能:获取Station模式下的IP地址,网络掩码和网关地址
语法:wifi.sta.getip() 参数:无
返回值:IP地址、网络掩码、网关地址作为字符串,例如“192.168.0.111”。如果IP=“0.0.0.0”,则返回nil

wifi.ap.getip()
功能:获取AP模式下的IP地址,网络掩码和网关地址
语法:wifi.ap.getip() 参数:无
返回值:IP地址、网络掩码、网关地址作为字符串,例如“192.168.0.111”。如果IP=“0.0.0.0”,则返回nil

wifi程序例程

设置WiFi连接

wifi.setmode(wifi.STATION)	--选择wifi为station模式
wifi.sta.config("账号","密码")	--配置连接的账号密码
wifi.sta.connect()		--连接wifi
tmr.alarm(1, 1000, 1, function()	--开启定时器1,重复定时1s
  if wifi.sta.getip()== nil then		
    print("IP unavaiable, Waiting...")		--等待连接
  else
    tmr.stop(1)		--连接成功,关闭定时器1
    print("Config done, IP is "..wifi.sta.getip())		--打印ip地址
  end
end)

或者

wificfg={}
wificfg.ssid="账号"
wificfg.pwd="密码"
wifi.auto=true
wifi.setmode(wifi.STATION)	--选择wifi为station模式
wifi.sta.config(wificfg)	--配置连接的账号密码
tmr.alarm(1, 1000, tmr.ALARM_AUTO, function()	--开启定时器1,重复定时1s
  if wifi.sta.getip()== nil then		
    print("IP unavaiable, Waiting...")		--等待连接
  else
    tmr.stop(1)		--连接成功,关闭定时器1
    print("Config done, IP is "..wifi.sta.getip())		--打印ip地址
  end
end)

设置AP热点

apcfg={}
apcfg.ssid="账号"
apcfg.pwd="密码"
wifi.setmode(wifi.SOFTAP)		--选择wifi为ap模式
wifi.ap.config(apcfg)		--配置热点的账号密码
print("Config done, IP is "..wifi.ap.getip())	--打印热点的ip地址

或者

wifi.setmode(wifi.SOFTAP)		--选择wifi为ap模式
wifi.ap.config("账号","密码")		--配置热点的账号密码
print("Config done, IP is "..wifi.ap.getip())	--打印热点的ip地址