找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4348|回复: 0
收起左侧

ESP8266 lua设置模块开放热点开启TCP客户端模式详解

[复制链接]
ID:81424 发表于 2018-11-6 14:47 | 显示全部楼层 |阅读模式
本帖最后由 沙漠之痕 于 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文件结束
1.png
手机连接上模块开放的热点,但是不能上网
2.png
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.png
4.png
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文件结束
5.png
6.png
7.png
8.png
发送其他指令,可以通过串口查看已经接收到,但是不能控制继电器
9.png

ESP8266 开放热点TCP客户端源码.zip (3.11 KB, 下载次数: 25)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表