NodeMCU实现远程控制LED灯

来源:互联网 发布:校园二手交易网站源码 编辑:程序博客网 时间:2024/04/29 07:08

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 = 3led2 = 4gpio.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灯控制。

web server esp8266


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

转载自:http://blog.csdn.net/dingzz/article/details/46876503

1 0
原创粉丝点击