使用Wifi将Lua脚本上传到NodeMCU

有没有可能使用Wifi接口而不是串口来向NodeMCU上传Lua脚本?

我找到的教程和示例都使用串口接口,即使用电缆来编程NodeMCU,但是我想不连接任何东西(使用智能手机或浏览器)就更改程序。

点赞
用户3272586
用户3272586

是的,这是可能的。这是一种自制选项,但在一定程度上有效。当然,唯一的限制是大小,但除此之外,它的工作效果相当不错。可以看一下:

http://www.instructables.com/id/ESP8266-WiFi-File-Management/

您需要有一种编写 PHP 程序的方法(我是用 C# 编写的),如果您不能使用其他语言编写代码,则可以下载并重用该用户编写的内容,并使用自己的 PHP 服务器,然后您就可以使用了。

如果您有问题,请问。

2015-12-14 20:27:01
用户5699510
用户5699510

我通过 wifi 上传了所有的模块。我首先通过 USB 传输方式上传了一个 bootstrap.lua 程序。然后可以使用该程序上传真正的(较大的)负载。以下是引导程序:

ip, mask, host = wifi.sta.getip()
port, path, pgm = 80, "/upload", "u.lc"
file.remove(pgm) ; file.open(pgm, "w+") payloadFound = false
local conn = net.createConnection(net.TCP, 0)
conn:on("connection", function(conn)
        conn:send("GET "..path.."/"..pgm.." HTTP/1.0\r\n".."Host: "..host.."\r\nConnection: close\r\nAccept: */*\r\n\r\n") end)
conn:on("receive", function(conn, payload)
        if (payloadFound) then file.write(payload) file.flush()
        else payloadOffset = string.find(payload, "\r\n\r\n")
                if (payloadOffset) then
                        file.write(string.sub(payload, payloadOffset + 4)) file.flush() payloadFound = true
                end end end)
conn:on("disconnection", function(conn) file.close() dofile(pgm) end) conn:connect(port,host)

第一行使用网关服务器作为上传程序的 web 服务器。 第二行设置要上传的程序的端口(80)、路径(/upload)和名称(u.lc)。 然后 GET 文件并最终运行它(最后一行)。

在运行此程序之前,您必须激活您的无线连接,并且您的 web 服务器当然也应该处于活动状态,并在 /upload/u.lc 中有您的负载。

可以自然地更改硬编码的值,甚至可以使它们动态化。

标题 ##这应该是您想要的简单起点。

顺便说一句,这种紧凑的格式可以使初始上传更快,我使用 luatool.py 并使用 --dofile 选项进行上传。

稍后更新您的程序(u.lc)只需要简单的重复运行 dofile("bootstrap.lua") 即可。

我的 u.lc 是一个第二阶段的引导程序,它上传了一长串文件(大多数为 .lc 文件)。对于这个简短的答案来说可能太过复杂了。

最后,我应该提到,这部分代码参考自 https://github.com/Manawyrm/ESP8266-HTTP/

希望能对您有所帮助。

2015-12-20 07:47:58
用户2012507
用户2012507

另一种方法,如果你使用 Esplorer 作为 IDE,文档在这里

它使用 ESP8266 上的 telnet 服务器,并将 Esplorer 串口重定向到 telnet 服务器的地址;这是一个 Windows 示例,但我已经成功地在 Linux 下使用 "socat" 实现。

我找到的唯一问题是如果你想要多个 TCP 服务器,NodeMCU 不允许这样做,这种情况下,也许另外一个充当 TCP/串口中继的 ESP8266 可能是答案。

2016-04-19 04:50:20
用户3134115
用户3134115

以下是一种解决方案的变种(http://www.instructables.com/id/ESP8266-WiFi-File-Management/),但是使用的是桌面的 .NET 应用程序,而非 PHP Web 服务器 https://github.com/Orudnev/.Net-WiFi-File-Manager-for-ESP8266。如果您不想安装 Web 服务器,那么使用 FileManager.exe 应用程序就足够方便啦。

2016-12-05 18:35:41