nodemcu可以连几个传感器(nodemcu连接Wifi并连接Tcp服务器)
nodemcu可以连几个传感器(nodemcu连接Wifi并连接Tcp服务器)关于协议function tcp_connect(ip port) sk=net.createConnection(net.TCP 0) sk:on("receive" function(sck c) rec = crypto.toHex(c) print(rec == "10") local switch = { ["10"] = function() print("switch:"..rec) gpio.write(1 gpio.HIGH) end ["11"] = function() print("switch:"..rec) gpio.write(1 gpio.LOW) end ["20"] = function() print("switch:"..rec) gpio.write(2 gpio.HIGH)
上期文章讲述了nodemcu如何刷新固件,并成功点亮了小LED灯。有兴趣的朋友可以回看往期文章。
今天小智来说下,nodemcu如何连接Wifi,并连接Tcp服务器,实现手机控制一个LED小灯开关。
安信可ESP8266
编写以下三个文件,上传到nodemcu即可实现wifi以及连接TCP服务器的功能。
init.lua
function startup() if file.open("init.lua") == nil then print("init.lua deleted or renamed") else print("NodeMcu is Running") file.close("init.lua") run() end end function run() dofile("wifi.lua") end startup()
wifi.lua
function wifi_connect(name password) wifi.setmode(wifi.STATIONAP) wifi.sta.config(name password) wifi.sta.connect() tmr.alarm(2 1000 1 function() if wifi.sta.getip() == nil then print("Connecting Wifi...") else tmr.stop(2) print("Connected IP is "..wifi.sta.getip()) end end) end wifi_connect('你的wifi ssid' '你的wifi密码')
tcpclient.lua
function tcp_connect(ip port) sk=net.createConnection(net.TCP 0) sk:on("receive" function(sck c) rec = crypto.toHex(c) print(rec == "10") local switch = { ["10"] = function() print("switch:"..rec) gpio.write(1 gpio.HIGH) end ["11"] = function() print("switch:"..rec) gpio.write(1 gpio.LOW) end ["20"] = function() print("switch:"..rec) gpio.write(2 gpio.HIGH) end ["21"] = function() print("switch:"..rec) gpio.write(2 gpio.LOW) end } switch[rec]() end) sk:connect(port ip) end tcp_connect("192.168.249.211" 8282)
连接家里wifi时,小智写死了ssid和密码,我们先从最简单的开始,后面章节逐步展开SmartConfig这类通过手机设置ESP8266连接家中wifi的知识。
关于协议
上用简单的应用了一个协议,控制端控制一个2路继电器(开关量触发),协议内容分别是十六进制格式如下:
10-1路继电器关,11-1路继电器开,20-2路继电器关,21-2路继电器开
指令分别控制D1和D2输出电平。
Lua的十六进制实在是有点恶心~:)其实完全可以只用字符串,我习惯了用十六进制,所以发送时需勾选十六进制发送。
TCP监听8282端口
上传到mcu,跑一下,可以看到效果,我的小视频中可以看最终效果。
好啦,这期就到这里,小智打包了这个范例代码,朋友们请从私信“MCUWIFI”即可获取。持续关注,小搜将为大家带来更多有意思的文章。