WIFI模块
ESP8266总共有3种
工作模式,AP
模式、Station
模式、AP
兼Station
模式。
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
返回值:true
和false
wifi.getmode()
功能:得到wifi
的工作模式
语法:wifi.getmode()
参数:无
返回值:wifi.STATION
,wifi.SOFTAP
,wifi.STATIONAP
,wifi.NULLMODE
wifi.sta.config()
功能:wifi
的Station
模式的配置
语法:wifi.sta.config(station_config)
或者wifi.sta.config(ssid,pwd,auto,mac,save)
参数:station_config
中包含下列参数
.ssid
:连接的wifi账号
,是一个低于32bytes
的字符串
.pwd
:连接的wifi密码
,是0-64
的AssicII字符串
,最少8
个数
.auto
:默认为true
。true
:启动自动连接并连接到访问点,AUTO=true
时不需要wifi.sta.connect()
函数来连接访问点。false
:禁用自动连接。
.mac
:物理地址,当多个访问点账号相同时,接入不同的访问点要填写它的物理地址如:AA:BB:CC:DD:EE:FF
.save
:是否将配置的内容保存到flash
中,true
:配置的内容全部保存,false
:错误配置的内容不保存
返回值:true
:成功,false
:失败
wifi.ap.config()
功能:wifi
的AP
模式的配置
语法:wifi.ap.config(cfg)
参数:cfg
中包含以下参数
.ssid
:建立的wifi账号
,1-32
个字符
.pwd
:建立的wifi密码
,8-64
个字符
.auth
:身份验证的方式,wifi.OPEN
(默认), wifi.WPA_PSK
,wifi.WPA2_PSK
, wifi.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地址