我是靠谱客的博主 烂漫花瓣,最近开发中收集的这篇文章主要介绍NodeMCU学习(三)--工作模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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学习(三)--工作模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部