1. 程式人生 > >四,ESP8266 TCP服務器

四,ESP8266 TCP服務器

src 測試 今天 stat gist ati www config ted

我要趕時間趕緊寫完所有的內容....朋友的東西答應的還沒做完呢!!!!!!!沒想到又來了新的事情,,.......

配置模塊作為TCP服務器然後呢咱們連接服務器發指令控制繼電器吸合和斷開

技術分享

控制的指令呢咱就配置成----

http://www.cnblogs.com/yangfengwu/p/7513097.html

這篇文章最後的指令,,畢竟最終咱們就要做成那樣子.....這樣的話8266就應該使用的非常順手和輕松了

可以看一下這篇文章,,初略看一下就行,這是以前寫的代碼不怎麽好,,,這篇文章會詳細的解釋的

http://www.cnblogs.com/yangfengwu/p/6407727.html#3771010

不過呢怕有所遺漏,就兩篇文章同時參考吧

新建一個文件就叫wifi.lua

技術分享

咱們呢就先做成一個客戶端連接的,,然後連接模塊的無線控制繼電器,,,然後在做成多個連接的,,然後呢再設置成連接路由器,,當然或許親們的可以遠程控制哈

android客服端+eps8266+單片機+路由器之遠程控制系統 只看路由器設置部分就好了,,程序這次咱用Lua開發的,,要比那好的多....

我的init.lua

技術分享

gpio.mode(4,gpio.OUTPUT)
gpio.mode(2,gpio.OUTPUT)
gpio.write(4,1)

tmr.alarm(0, 1000, 1, function()
    gpio.write(
4,1-gpio.read(4)) end) tmr.alarm(1, 1000, 0, function() dofile("wifi.lua") end)


我的wifi.lua

技術分享

cfg={}
cfg.ssid="Hellow8266"
cfg.pwd="11223344"
wifi.ap.config(cfg)

TCPSever=net.createServer(net.TCP,28800) 

TCPSever:listen(8080,function(socket) 

    socket:on("receive",function(socket,data) 
          
if data == "++MD610" then gpio.write(2,1) end if data == "++MD600" then gpio.write(2,0) end end) socket:on("disconnection",function(sck,c) socket = nil end) end)

現在可以測試一下

技術分享

模塊內部默認的IP是192.168.4.1

技術分享

技術分享

大晚上的光線有點暗...照的不是很清晰,,還是說手機不好..................

技術分享

下面的解釋呢就照搬以前的了

技術分享

技術分享

技術分享

技術分享

對了

技術分享

點擊這個按鈕是不管來的,這些按鈕數據哈我再後面加了CRC16校驗.....以後用到CRC再說

現在讓模塊連接路由器,,,這樣方便些

現在的wifi.lua

wifi.setmode(wifi.STATIONAP)

cfg={}
cfg.ssid="Hellow8266"
cfg.pwd="11223344"
wifi.ap.config(cfg)

apcfg={}
apcfg.ssid="qqqqq"
apcfg.pwd="11223344"
wifi.sta.config(apcfg)
wifi.sta.connect()

TCPSever=net.createServer(net.TCP,28800) 

TCPSever:listen(8080,function(socket) 

    socket:on("receive",function(socket,data) 
          if data == "++MD610" then
             gpio.write(2,1)
             socket:send("relay=1")
          end
          if data == "++MD600" then
             gpio.write(2,0)
             socket:send("relay=0")
          end
    end) 

    socket:on("disconnection",function(sck,c) 
          socket = nil
    end)
end)

printip = 0
wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T)
    printip = 0
end)


wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)
   if printip == 0 then
      print("+IP"..T.IP)
   end
   printip = 1
end)

技術分享

技術分享

還有兩個沒有連接上路由器和連接上路由器的事件函數

技術分享

技術分享

技術分享

技術分享

現在呢我們讓網絡的數據發送到串口,,,,,串口的數據發送到網絡

現在的wifi.lua

wifi.setmode(wifi.STATIONAP)

cfg={}
cfg.ssid="Hellow8266"
cfg.pwd="11223344"
wifi.ap.config(cfg)

apcfg={}
apcfg.ssid="qqqqq"
apcfg.pwd="11223344"
wifi.sta.config(apcfg)
wifi.sta.connect()

TCPSever=net.createServer(net.TCP,28800) 

TCPSever:listen(8080,function(socket) 

    socket:on("receive",function(socket,data) 
          uartsocket = socket
          uart.write(0,data) 
          if data == "++MD610" then
             gpio.write(2,1)
             socket:send("relay=1")
          end
          if data == "++MD600" then
             gpio.write(2,0)
             socket:send("relay=0")
          end
    end) 

    socket:on("disconnection",function(sck,c) 
          socket = nil
          uartsocket = nil
    end)
end)



uart.on("data",0,function(data) 

        if uartsocket ~= nil then
           uartsocket:send(data)
        end
        
end, 0)


printip = 0
wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T)
    printip = 0
end)


wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)
   if printip == 0 then
      print("+IP"..T.IP)
   end
   printip = 1
end)

技術分享

技術分享

現在下進去測試

技術分享

技術分享

今天就先到這裏,,,太晚了...........

四,ESP8266 TCP服務器