上期文章讲述了nodemcu如何刷新固件,并成功点亮了小LED灯。有兴趣的朋友可以回看往期文章。
今天小智来说下,nodemcu如何连接wifi,并连接Tcp服务器,实现手机控制一个LED小灯开关。
编写以下三个文件,上传到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的十六进制实在是有点恶心~:)其实完全可以只用字符串,我习惯了用十六进制,所以发送时需勾选十六进制发送。
上传到mcu,跑一下,可以看到效果,我的小视频中可以看最终效果。
好啦,这期就到这里,小智打包了这个范例代码,朋友们请从私信“MCUWIFI”即可获取。持续关注,小搜将为大家带来更多有意思的文章。