ESP8266-01/01S 刷入NodeMCU固件 结合Relay继电器模块的使用(适合伸手党)

ESP8266-01/01S 刷入NodeMCU固件 结合Relay继电器模块的使用

说明,这个写了挺长时间了,大家也可以看看评论区的相关知识,现在的模块可能没有这么多问题了,准备好模块就能写,而且烧录工具啥的也有了很多新品种可以选择。

一、准备工作

A、软件

  1. 下载LuaLoader
  2. 下载ESPFlashDownloadTool(例如:ESPFlashDownloadTool_v3.6.4)
  3. 下载lua源代码
  4. 下载NodeMCU固件
  5. 以上资源的综合下载地址 传送门

B、硬件

  1. 一字螺丝刀一把

一个ESP8266-01/01s模块和一个Relay v4.0模块RB: IOTMCU,摸个宝上面都有卖,评论里说这个有问题的人是还没有用会的,模块本身没有问题的。至少我觉得没问题,也有大神说需要改线路才行,但是我们刷NodeMCU固件不需要。

特别注意,我发现这个esp模块有几种,图书指出的地方是白色的本教程的刷固件的工具不适用,只有金属色的适用。

ESP8266 ESP-01S Relay模块 继电器 WIFI 智能插座 加多ESP-01S

这个地方要注意有一部分esp8266-01模块就算使用下面提到的全自动烧录工具依旧需要接线。具体就是esp8266模块天线下面那块芯片是金色的可以烧录,是白色的需要自己折腾。目前遇到的是这样。白色会出现等待上电同步。新手误买。(这也是评论中有位兄弟遇到的问题。)

下载器一个,不要图便宜,一定要买这个,不要买那个只有一半黄色接口的,根本不好使。其实也不是,就是需要自己下载的时候加电阻啊,接线啊,你要是真的超级强ttl就可以烧录了,但是写入lua代码可能会更麻烦,新手推荐买这些设备。如果没有,先别着急动手,买了再说。

ESP8266 ESP-01 WIFI 模块下载器 ESP LINK v1.0 SUNLEPHANT

导线若干

5V电源基本1A就足够了,具体我也不知道,我感觉不用1A也行。刚开始可以剪掉一个数据线,然后接电脑usb口就好了。

二、开始烧录

            为什么要烧录呢,因为我们的某宝发货基本是官方的AT固件(这还算好的),有的是空的,然后这些模块基本看起来都像旧的,要不就是焊锡不好。我们要使用的是支持Lua语言的固件(关于什么是Lua语言我也还没学,自己去找吧,看起来是个脚本语言,写这个博客的原因在于现在网上基本没有能用的教程,基本都有错误。某宝卖家基本没指望。问啥啥不会,还得我花了一个上午才调通。)

A、烧录NodeMCU固件

该步骤使用ESPFlashDownloadTool这个工具,最好是新一点的,最好就用我给的,因为我们的固件是整体的,老版本可能会有问题,其他的下载工具我不多说,对应我这个参数就行。

  1. 首先把驱动安装好,我们的烧录工具的驱动在Drivers目录下面,cp210x
  2. 然后把ESP01模块插入到我们的烧录工具上,怎么插都不会就不要玩了。我也没办法救你了。好吧,还是有办法的,去看看你买烧录工具的那个商店的图你就会了。
  3. 然后插入电脑版USB口上。关于是那个端口,其实我们的工具能够自己找。但是你自己去查就是打开电脑的设备管理器

就这个COM20就是了,你的可能和我的不一样

出现等待同步上电,如果装备和我前面说的一样,那就看看WiFi模块是不是白色芯片的,如果是白色的,我也没找到办法,这个方式目前只能刷入WiFi模块天线位置下面那块芯片是金属金色的模块。或者换一个芯片试试,另外,刚买回来的芯片都自带固件,可以直接写入lua. 

好了,你成功三分之一了。这个时候你按一下下载板子上的按钮RST,再等会就会出现一个WIFI了,他是ESP开头,尾部是半个MAC地址。记得把这些软件工具该关掉了。

B、接下来就是上传我们的Lua代码了。

  1. 打开我们的LuaLoader他在version0.91中

点击Ok之后点击右上角的connect如下图所示

这样你就完成了你的文件上传,更多操作请进传送门用Chrome浏览器翻译成中文,如果你看不懂的话。

我们继续

好了,恭喜你成功三分之二了。关掉这个工具。,记得点上面的disconnect,就再刚刚点的那个connec那。

然后你现在依旧能搜到一个WIFI,名字是ESP8266_xxxx。不过加密了。密码是12345678

好了,把下载器从电脑上拔下来,然后把esp01模块拔出,插到Relay继电器模块上,接上5V电压,基本能找到接哪吧,接口可能需要一个小的一字螺丝刀。

三、试用

A、安装手机APP

这个方式是在手机上调试,ESP8266_Controller这个目录下有Android和iOS的APP,不过适用的手机版本可能比较老,原因在于我们使用了http协议,而这个协议在Android8还是9被弃用了(之前写其他AndroidAPP时遇到的),如果没有旧的版本的手机也没事,其实我没测试新系统是否适用,因为我有旧的。我们的B方法将使用网页来调试。

手机APP上会有两个按钮,一个gpio0 一个是GPIO2我们使用的是0,所以当安装上APP之后,我们连接上WIFI之后注意最底部有一个设置地址,我们设置上192.168.1.1,点击save然后就能调试了。当我们点击On或者Off的时候我们的继电器就会响,这代表磁头在动了。

B、方法浏览器法

  1. 首先手机或者电脑连上WIFI

  2. 打开浏览器,在地址栏输入在以下两个中切换。也可以听到继电器的声音

http://192.168.1.1?pin=ON1

http://192.168.1.1?pin=OFF1

好了,如果上面的救不了你,那你另寻高手吧。

补上一下init.lua不确定我就是使用的这个,单应该是,这份代码是我们正常买模块会送的代码,应该。


led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
gpio.write(led1, gpio.HIGH)
gpio.write(led2, gpio.HIGH)

print("Ready to start soft ap")

local str=wifi.ap.getmac();
local ssidTemp=string.format("%s%s%s",string.sub(str,10,11),string.sub(str,13,14),string.sub(str,16,17));

cfg={}
cfg.ssid="ESP8266_"..ssidTemp;
cfg.pwd="12345678"
wifi.ap.config(cfg)

cfg={}
cfg.ip="192.168.1.1";
cfg.netmask="255.255.255.0";
cfg.gateway="192.168.1.1";
wifi.ap.setip(cfg);
wifi.setmode(wifi.SOFTAP)

str=nil;
ssidTemp=nil;
collectgarbage();

print("Soft AP started")
print("Heep:(bytes)"..node.heap());
print("MAC:"..wifi.ap.getmac().."\r\nIP:"..wifi.ap.getip());


srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
    conn:on("receive", function(client,request)
        local buf = "";
        buf = buf.."HTTP/1.1 200 OK\n\n"
        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
        
        if(_GET.pin == "ON1")then
              gpio.write(led1, gpio.LOW);
			  print("led1 on")
        elseif(_GET.pin == "OFF1")then
              gpio.write(led1, gpio.HIGH);
			print("led1 off")
        elseif(_GET.pin == "ON2")then
              gpio.write(led2, gpio.LOW);
			print("led2 on")
        elseif(_GET.pin == "OFF2")then
              gpio.write(led2, gpio.HIGH);
			print("led2 off")
        end
        client:send(buf);
        client:close();
        collectgarbage();
    end)
end)

  • 22
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值