发 帖  

[经验] 制作自己的wifi开关:esp8266 lua操作模块开放热点实现TCP客户端通信

2018-11-8 15:52:32  268 WIFI TCP
分享
0
看下原理图
0.png

在没有网络的地方想要实现控制,那就让esp8266模块开放热点,然后让手机连接8266模块的热点。
操作步骤:
(1),首先让esp8266模块开放热点;
(2),设置模块连接TCP服务器;(模块开放热点,默认ip是192.168.4.1,有一个收连接时分配ip192.168.4.2即为TCP服务器ip)
(3),模块接收TCP服务器的数据,解析是否为控制继电器指令

使用lua编程操作:
init.lua文件:
  1. RELAY_Pin = 1
  2. gpio.mode(RELAY_Pin, gpio.OUTPUT)
  3. gpio.write(RELAY_Pin,0)
  4. tmr.alarm(0,4000,0,function()
  5.        dofile("tcpclient.lua")
  6. end)
复制代码
init.lua文件结束

tcpclient.lua文件:
  1. LinkStat = 0
  2. TCPClient = nil
  3. ClientReceData = ""
  4. ClientReceCnt = 0
  5. ClientReceDataStat = true
  6. wifi.setmode(wifi.SOFTAP)
  7. local apcfg={
  8.     ssid="ESP8266-open",
  9.     pwd="11223344"
  10. }
  11. wifi.ap.config(apcfg)
  12. tmr.alarm(1,1000,1,function()
  13.      if LinkStat == 0 then
  14.          TCPClient = net.createConnection(net.TCP,0)
  15.          TCPClient:connect(8080,"192.168.4.2")
  16.          TCPClient:on("receive", function(sck, data)
  17.               ClientReceData = ClientReceData..data
  18.               ClientReceCnt = 0
  19.               ClientReceDataStat = true
  20.          end)
  21.          TCPClient:on("connection", function(sck, c)
  22.               LinkStat = 1
  23.               print("Connection")
  24.               tmr.stop(1)
  25.               TCPClient:on("disconnection", function(sck, c)
  26.                    LinkStat = 0
  27.                    print("Disconnection")
  28.                    tmr.start(1)
  29.               end)
  30.            end)
  31.      end
  32. end)
  33. tmr.alarm(2,10,1,function()
  34.      if ClientReceDataStat==true then
  35.           ClientReceCnt=ClientReceCnt+1
  36.                if ClientReceCnt>=10 then --receive finsion
  37.                    if ClientReceData=="open" then
  38.                        gpio.write(RELAY_Pin,1)
  39.                    end
  40.                    if ClientReceData=="close" then
  41.                         gpio.write(RELAY_Pin,0)
  42.                    end
  43.                    uart.write(0,ClientReceData)
  44.                    ClientReceData = ""
  45.                    ClientReceCnt = 0
  46.                    ClientReceDataStat = false
  47.                end
  48.       end
  49. end)
复制代码
tcpclient.lua文件结束

1.png
2.png

手机连接上模块开放的wifi打开APP开启服务器

3.png

发送open开启继电器

5.png 6.png

发送close关闭继电器

7.png 9.png

连接服务器控制继电器lua源码.zip (1.16 KB, 下载次数: 0)

网络调试助手手机版.zip (298.55 KB, 下载次数: 0)


这样貌似还有问题,万一多个手机连接模块热点会不会出现问题呢?
那让模块建立TCP服务器去监听一个端口,让连接模块热点的手机去连接模块开启的TCP服务器,然后发送控制指令呢

感觉可以实现,下次继续试下这个控制方式。。。。。


相关经验

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发经验
关闭

站长推荐 上一条 /7 下一条

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