码迷,mamicode.com
首页 > 其他好文 > 详细

NodeMCU实现远程控制LED灯

时间:2015-07-14 15:46:04      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

   NodeMCU是一块集成了ESP8266的单片机,它具有体积小,扩展性强的特点。在物联网应用领域将迸发出强大的能量。我们通过入门一个NodeMCU的程序来展示一下它的强大功能。

  NodeMCU的WIFI模块有三种模式,AP模式(即路由器模式),STA模式(我的理解是无线网卡模式),AP+STA模式。我们下面要讲的一个案例是用STA模式。在该种模式下,你可以把NodeMCU当作一个无线网中的一个客户端,这个客户端连上一个无线热点,然后通过无线路由器的DHCP功能获取客户端IP地址,然后我们写上简单的一个Web Server服务器,主要是处理控制GPIO设备的响应。

  我们直接进入LuaLoader程序调试工具。关于串口驱动与固件烧写,建议先去看NodeMCU入门教程,本文不再阐述。

  技术分享

  一般拿到手的NodeMCU里面应该是空的,也有个别是存在init.lua文件,这个文件就相当于以前我们DOS系统里的autoexec.bat文件和linux系统中的rc.local文件,即开机运行的意思。

  下面我们开始编写Lua程序,init.lua:

  

wifi.setmode(wifi.STATION)
wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD")
print(wifi.sta.getip())
led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
    conn:on("receive", function(client,request)
        local buf = "";
        local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
        if(method == nil)then
            _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
        end
        local _GET = {}
        if (vars ~= nil)then
            for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                _GET[k] = v
            end
        end
        buf = buf.."<h1> ESP8266 Web Server</h1>";
        buf = buf.."<p>GPIO0 <a href=\"?pin=ON1\"><button>ON</button></a> <a href=\"?pin=OFF1\"><button>OFF</button></a></p>";
        buf = buf.."<p>GPIO2 <a href=\"?pin=ON2\"><button>ON</button></a> <a href=\"?pin=OFF2\"><button>OFF</button></a></p>";
        local _on,_off = "",""
        if(_GET.pin == "ON1")then
              gpio.write(led1, gpio.HIGH);
        elseif(_GET.pin == "OFF1")then
              gpio.write(led1, gpio.LOW);
        elseif(_GET.pin == "ON2")then
              gpio.write(led2, gpio.HIGH);
        elseif(_GET.pin == "OFF2")then
              gpio.write(led2, gpio.LOW);
        end
        client:send(buf);
        client:close();
        collectgarbage();
    end)
end)


我们将以上代码的第二行的YOUR_NETWORK_NAME与YOUR_NETWORK_PASSWORD分别替换成我们自己的无线热点的名称和密码,然后通过上面工具的Upload FIle...按钮来上传到NodeMcu板子,最后按dofile执行刚才上传的程序。


在信息框中会显示出接入之后取得的 IP地址,然后我们就可以通过这个IP地址来进行远程的LED灯控制。

技术分享

技术分享

这样我们已经通过一个简单的例子来演示如何远程控制物联网设备,也让大家见证了这个板子的强大功能,可以说是麻雀虽小,五脏俱全。可贵的是这块板子还只有40多元,大家可以发挥想象力来做一些更好的应用。

版权声明:本文为博主原创文章,未经博主允许不得转载。

NodeMCU实现远程控制LED灯

标签:

原文地址:http://blog.csdn.net/dingzz/article/details/46876503

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!