概述
1、模式介绍
ESP8266(NodeMCU)是一个性价比非常高的无线通信模块,ESP8266有三种工作模式,分别为:AP,STA,AP混合STA,下面简单说一下这三种工作模式:
AP模式
AP是 Access Point的简称,提供无线接入服务,提供数据访问,允许其它无线终端接入,简单来说就是和路由器在多数情况下的工作模式相同,能让手机或者接入。
STA模式
STA是Station的简称,类似于无线终端,STA本身并不接受无线的接入,它可以连接到AP,简单来说就是和手机连接WIFI热点的工作状态相同,可以连接其它的热点(手机或者路由器)。
AP+STA模式
AP+STA模式就是既可以连接到其它的WIFI热点,也可以让别的无线终端连接,这两个过程能同时进行。
2、模式的实现
2.1、station模式
用NodeMCU连接WiFi并实现与设备的简单通信,这个功能主要分为三部分来实现:
1)连接WiFi并打开uart串口;
2)通过监听函数监听端口信息并打印;
3)通过发送函数来发送串口命令行输入的字符。
station_cfg = {}
station_cfg.ssid = "iPhone"
station_cfg.pwd = "12345678"
station_cfg.save = true
pin=4
print(wifi.sta.getip()) --nil
wifi.setmode(wifi.STATION)
wifi.sta.config(station_cfg) --wifi.sta.connect()
tmr.alarm(1, 1000, 1, function()
if wifi.sta.getip() == nil then
print("Connecting...")
else
tmr.stop(1)
print("Connected, IP is "..wifi.sta.getip())
end
end)
uart.setup(0,115200,8,uart.PARITY_NONE,uart.STOPBITS_1,0)
sv=net.createServer(net.TCP, 2880)
print("creat server")
global_c = nil
sv:listen(8080, function(c)
if global_c~=nil then
global_c:close()
end
global_c=c
c:on("receive",function(sck,pl) uart.write(0,pl) end)
end)
uart.on("data",4, function(data)
if global_c~=nil then
global_c:send(data)
end
end, 0)
2.2、AP模式
以NodeMCU创建局域网,设备连接后通过网络调试助手控制小灯亮灭。
LinkStat = 0
TCPClient = nil
ClientReceData = ""
ClientReceCnt = 0
ClientReceDataStat = true
wifi.setmode(wifi.SOFTAP)
local apcfg={
ssid="hanhan",
pwd="123456789"
}
wifi.ap.config(apcfg)
print("IP Adress is:"..wifi.ap.getip())
tmr.alarm(1,1000,1,function()
if LinkStat == 0 then
TCPClient = net.createConnection(net.TCP,0)
TCPClient:connect(8080,"192.168.4.2")
TCPClient:on("receive", function(sck, data)
ClientReceData = ClientReceData..data
ClientReceCnt = 0
ClientReceDataStat = true
end)
TCPClient:on("connection", function(sck, c)
LinkStat = 1
print("Connection")
tmr.stop(1)
TCPClient:on("disconnection", function(sck, c)
LinkStat = 0
print("Dwifi.ap.getip()wifi.ap.getip()isconnection")
tmr.start(1)
end)
end)
end
end)
tmr.alarm(2,10,1,function()
if ClientReceDataStat==true then
ClientReceCnt=ClientReceCnt+1
if ClientReceCnt>=10 then --receive finsion
if ClientReceData=="open" then
gpio.write(pin,gpio.HIGH)
end
if ClientReceData=="close" then
gpio.write(pin,gpio.LOW)
end
uart.write(0,ClientReceData)
ClientReceData = ""
ClientReceCnt = 0
ClientReceDataStat = false
end
end
end)
2.3、Station+AP模式
cfg={}
cfg.ssid="zwb"
cfg.pwd="1234567890000"
--wifi.setmode(wifi.STATION)
wifi.setmode(wifi.STATIONAP)
wifi.sta.config(cfg)
wifi.sta.connect()
(部分参考:NodeMCU之WIFI模式,对博友表示感谢!)
最后
以上就是烂漫花瓣为你收集整理的NodeMCU学习(三)--工作模式的全部内容,希望文章能够帮你解决NodeMCU学习(三)--工作模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复