标题: ESP8266 lua设置模块开放热点开启TCP客户端模式详解 [打印本页]
作者: 沙漠之痕 时间: 2018-11-6 14:47
标题: ESP8266 lua设置模块开放热点开启TCP客户端模式详解
本帖最后由 沙漠之痕 于 2018-11-7 12:46 编辑
模块连接路由器和不链接路由器直接开放热点的区别在于,服务器的ip不同
1. 设置模块工作在AP模式下开放wifi热点
init.lua文件:
tmr.alarm(0,4000,0,function()
dofile("tcpclient.lua")
end)
init.lua文件结束
tcpclient.lua文件:
wifi.setmode(wifi.SOFTAP)
local apcfg={
ssid="ESP8266-open",
pwd="11223344"
}
wifi.ap.config(apcfg)
tcpclient.lua文件结束
手机连接上模块开放的热点,但是不能上网
2.手机连接上模块wifi热点, 然后用手机创建服务器,与连接路由器时相比服务器的ip改变;先让客户端在连接上服务器后再处理断开连接事件。
init.lua文件:
tmr.alarm(0,4000,0,function()
dofile("tcpclient.lua")
end)
init.lua文件结束
tcpclient.lua文件:
wifi.setmode(wifi.SOFTAP)
local apcfg={
ssid="ESP8266-open",
pwd="11223344"
}
wifi.ap.config(apcfg)
tmr.alarm(1,1000,1,function()
TCPClient = net.createConnection(net.TCP,0)
TCPClient:connect(8080,"192.168.4.2")
TCPClient:on("receive", function(sck, data)
uart.write(0,data)
end)
TCPClient:on("connection", function(sck, c)
print("Connection")
tmr.stop(1)
TCPClient:on("disconnection", function(sck, c)
print("Disconnection")
tmr.start(1)
end)
end)
end)
tcpclient.lua文件结束
服务器ip时手机连接,模块wifi所分配的,要想查看分配的ip再重新去调整模块连接服务器时的ip, 此方法与都去连接路由器相比麻烦了些;因为事先不知道手机的ip。
3. 手机连接模块wifi热点通过“close”关闭继电器;“open“打开继电器
init.lua文件:
RELAY_Pin = 1
gpio.mode(RELAY_Pin, gpio.OUTPUT)
gpio.write(RELAY_Pin,0)
tmr.alarm(0,4000,0,function()
dofile("tcpclient.lua")
end)
init.lua文件结束
tcpclient.lua文件:
LinkStat = 0
TCPClient = nil
ClientReceData = ""
ClientReceCnt = 0
ClientReceDataStat = true
wifi.setmode(wifi.SOFTAP)
local apcfg={
ssid="ESP8266-open",
pwd="11223344"
}
wifi.ap.config(apcfg)
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("Disconnection")
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(RELAY_Pin,1)
end
if ClientReceData=="close" then
gpio.write(RELAY_Pin,0)
end
uart.write(0,ClientReceData)
ClientReceData = ""
ClientReceCnt = 0
ClientReceDataStat = false
end
end
end)
tcpclient.lua文件结束
发送其他指令,可以通过串口查看已经接收到,但是不能控制继电器
交流QQ:1813763867
QQ群:607064330
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |