init: Air780EPM 官方 LuatOS 项目代码基线

- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码
- 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等)
- 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
This commit is contained in:
wangfq
2026-08-31 08:53:49 +08:00
commit 173dd6874f
813 changed files with 125484 additions and 0 deletions
@@ -0,0 +1,63 @@
--[[
@module main
@summary LuatOS用户应用脚本文件入口,总体调度应用逻辑
@version 1.0
@date 2025.08.05
@author 魏健强
@usage
本demo演示的核心功能为:
1.设置多网融合功能,4G提供网络供以太网设备上网
更多说明参考本目录下的readme.md文件
]]
--[[
必须定义PROJECT和VERSION变量,Luatools工具会用到这两个变量,远程升级功能也会用到这两个变量
PROJECT:项目名,ascii string类型
可以随便定义,只要不使用,就行
VERSION:项目版本号,ascii string类型
如果使用合宙iot.openluat.com进行远程升级,必须按照"XXX.YYY.ZZZ"三段格式定义:
X、Y、Z各表示1位数字,三个X表示的数字可以相同,也可以不同,同理三个Y和三个Z表示的数字也是可以相同,可以不同
因为历史原因,YYY这三位数字必须存在,但是没有任何用处,可以一直写为999
如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
]]
PROJECT = "4g_out_ethernet_in"
VERSION = "001.999.000"
-- 在日志中打印项目名和项目版本号
log.info("main", PROJECT, VERSION)
-- 如果内核固件支持errDump功能,此处进行配置,【强烈建议打开此处的注释】
-- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息,可以初步分析一些设备运行异常的问题
-- 以下代码是最基本的用法,更复杂的用法可以详细阅读API说明文档
-- 启动errDump日志存储并且上传功能,600秒上传一次
-- if errDump then
-- errDump.config(true, 600)
-- end
-- 使用LuatOS开发的任何一个项目,都强烈建议使用远程升级FOTA功能
-- 可以使用合宙的iot.openluat.com平台进行远程升级
-- 也可以使用客户自己搭建的平台进行远程升级
-- 远程升级的详细用法,可以参考fota的demo进行使用
-- 启动一个循环定时器
-- 每隔3秒钟打印一次总内存,实时的已使用内存,历史最高的已使用内存情况
-- 方便分析内存使用是否有异常
-- sys.timerLoopStart(function()
-- log.info("mem.lua", rtos.meminfo())
-- log.info("mem.sys", rtos.meminfo("sys"))
-- end, 3000)
-- 开启多网融合功能
require "netif_app"
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
@@ -0,0 +1,48 @@
--[[
@module netif_app
@summary netif_app 网络管理模块,开启多网融合功能,4G提供网络供以太网设备上网
@version 1.0
@date 2025.08.05
@author 魏健强
@usage
本文件为网络管理模块,核心业务逻辑为:
1、设置多网融合功能,4G提供网络供以太网设备上网
2、http测试4G网络
本文件没有对外接口,直接在main.lua中require "netif_app"就可以加载运行;
]]
exnetif = require "exnetif"
function netif_app_task_func()
local res
-- 等待4G网络连接成功
while not socket.adapter() do
-- 在此处阻塞等待4G网卡连接成功的消息"IP_READY"
-- 或者等待1秒超时退出阻塞等待状态;
-- 注意:此处的1000毫秒超时不要修改的更长;
sys.waitUntil("IP_READY", 1000)
end
-- 设置多网融合功能,4G提供网络供以太网设备上网
res = exnetif.setproxy(socket.LWIP_ETH, socket.LWIP_GP, {
ethpower_en = 20, -- 以太网模块的pwrpin引脚(gpio编号)
tp = netdrv.CH390, -- 网卡芯片型号(选填参数),仅spi方式外挂以太网时需要填写。
opts = {spi = 0, cs = 8, irq = 22}, -- 外挂方式,需要额外的参数(选填参数),仅spi方式外挂以太网时需要填写。
adapter_addr = "192.168.2.1", -- 自定义LWIP_ETH网卡的ip地址(选填),需要自定义ip和网关ip时填写
adapter_gw = {192, 168, 2, 1} -- 自定义LWIP_ETH网卡的网关地址(选填),需要自定义ip和网关ip时填写
})
if res then
log.info("exnetif", "setproxy success")
else
log.info("开启失败,请检查配置项是否正确,日志中是否打印了错误信息")
end
-- 每5秒进行HTTPS连接测试,实时监测4G网络连接状态, 仅供测试需要,量产不需要,用来判断当前网络是否可用,需要的话可以打开注释
-- while 1 do
-- local code, headers, body = http.request("GET", "https://httpbin.luatos.com/bytes/2048", nil, nil,
-- { adapter = socket.LWIP_GP, timeout = 5000, debug = false }).wait()
-- log.info("http执行结果", code, headers, body and #body)
-- sys.wait(10000)
-- end
end
sys.taskInit(netif_app_task_func)
@@ -0,0 +1,51 @@
## 功能模块介绍
1、main.lua:主程序入口;
2、netif_app: 网络管理模块,开启多网融合功能,4G提供网络供以太网设备上网;
## 演示功能概述
1、开启多网融合模式,4G连接外部网络,以太网lan模式为其他以太网设备提供接入
2、​网络监控​,每5秒进行HTTPS连接测试,实时监测4G网络的连接状态
## 演示硬件环境
![](https://docs.openluat.com/air780epm/luatos/app/driver/eth/image/RFSvb75NRoEWqYxfCRVcVrOKnsf.jpg)
1、Air780EPM V1.3版本开发板一块+可上网的sim卡一张+4g天线一根+网线一根:
- sim卡插入开发板的sim卡槽
- 天线装到开发板上
- 网线一端插入开发板网口,另外一端连接可以上外网的路由器网口
2、TYPE-C USB数据线一根 Air780EPM V1.3版本开发板和数据线的硬件接线方式为:
- Air780EPM V1.3版本开发板通过TYPE-C USB口供电;(外部供电/USB供电 拨动开关 拨到 USB供电一端)
- TYPE-C USB数据线直接插到核心板的TYPE-C USB座子,另外一端连接电脑USB口;
## 演示软件环境
1、Luatools下载调试工具
2、[Air780EPM V2012版本固件](https://docs.openluat.com/air780epm/luatos/firmware/version/)(理论上,2025年8月10日之后发布的固件都可以)
## 演示核心步骤
1、搭建好硬件环境,按接线图连接硬件,
2、烧录内核固件和本项目的Lua脚本:main.lua:主程序入口,netif_app.lua:网络管理模块
3、启动设备,观察日志输出:
``` lua
[INFO] exnetif setproxy success
[INFO] http执行结果 200 ...
```
4、其他设备通过以太网接入780EPM,其他设备都能正常上网,则表示验证成功。
@@ -0,0 +1,63 @@
--[[
@module main
@summary LuatOS用户应用脚本文件入口,总体调度应用逻辑
@version 1.0
@date 2025.08.05
@author 魏健强
@usage
本demo演示的核心功能为:
1.设置多网融合功能,4G提供网络供wifi和以太网设备上网
更多说明参考本目录下的readme.md文件
]]
--[[
必须定义PROJECT和VERSION变量,Luatools工具会用到这两个变量,远程升级功能也会用到这两个变量
PROJECT:项目名,ascii string类型
可以随便定义,只要不使用,就行
VERSION:项目版本号,ascii string类型
如果使用合宙iot.openluat.com进行远程升级,必须按照"XXX.YYY.ZZZ"三段格式定义:
X、Y、Z各表示1位数字,三个X表示的数字可以相同,也可以不同,同理三个Y和三个Z表示的数字也是可以相同,可以不同
因为历史原因,YYY这三位数字必须存在,但是没有任何用处,可以一直写为999
如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
]]
PROJECT = "4g_out_ethernet_in_wifi_in"
VERSION = "001.999.000"
-- 在日志中打印项目名和项目版本号
log.info("main", PROJECT, VERSION)
-- 如果内核固件支持errDump功能,此处进行配置,【强烈建议打开此处的注释】
-- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息,可以初步分析一些设备运行异常的问题
-- 以下代码是最基本的用法,更复杂的用法可以详细阅读API说明文档
-- 启动errDump日志存储并且上传功能,600秒上传一次
-- if errDump then
-- errDump.config(true, 600)
-- end
-- 使用LuatOS开发的任何一个项目,都强烈建议使用远程升级FOTA功能
-- 可以使用合宙的iot.openluat.com平台进行远程升级
-- 也可以使用客户自己搭建的平台进行远程升级
-- 远程升级的详细用法,可以参考fota的demo进行使用
-- 启动一个循环定时器
-- 每隔3秒钟打印一次总内存,实时的已使用内存,历史最高的已使用内存情况
-- 方便分析内存使用是否有异常
-- sys.timerLoopStart(function()
-- log.info("mem.lua", rtos.meminfo())
-- log.info("mem.sys", rtos.meminfo("sys"))
-- end, 3000)
-- 开启多网融合功能
require "netif_app"
-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!
@@ -0,0 +1,53 @@
--[[
@module netif_app
@summary netif_app 网络管理模块,开启多网融合功能,以太网Wan提供网络供以太网设备上网
@version 1.0
@date 2025.08.05
@author 魏健强
@usage
本文件为网络管理模块,核心业务逻辑为:
1、设置多网融合功能,以太网Wan提供网络供以太网设备上网
2、http测试以太网Wan网络
本文件没有对外接口,直接在main.lua中require "netif_app"就可以加载运行;
]]
exnetif = require "exnetif"
function netif_app_task_func()
local res
-- 设置多网融合功能,以太网wan提供网络供以太网设备上网
res = exnetif.setproxy(socket.LWIP_ETH, socket.LWIP_USER1, {
ethpower_en = 20,
tp = netdrv.CH390, -- 网卡芯片型号(选填参数),仅spi方式外挂以太网时需要填写。
opts = { -- 外挂方式,需要额外的参数(选填参数),仅spi方式外挂以太网时需要填写。
spi = 0,
cs = 8
},
-- adapter_addr = "192.168.2.1", -- 自定义LWIP_ETH网卡的ip地址(选填),需要自定义ip和网关ip时填写
-- adapter_gw = {192, 168, 2, 1} -- 自定义LWIP_ETH网卡的网关地址(选填),需要自定义ip和网关ip时填写
main_adapter = { -- 提供网络的网卡开启参数
ethpower_en = 21,
tp = netdrv.CH390,
opts = {
spi = 1,
cs = 12,
irq = 22
}
}
})
log.info("exnetif", "setproxy success", res)
-- -- 每5秒进行HTTPS连接测试,实时监测以太网Wan网络连接状态, 仅供测试需要,量产不需要,用来判断当前网络是否可用,需要的话可以打开注释
-- while 1 do
-- log.info("dwrh", res)
-- local code, headers, body = http.request("GET",
-- "https://httpbin.luatos.com/bytes/2048",
-- nil, nil, {
-- adapter = socket.LWIP_USER1,
-- timeout = 5000,
-- debug = false
-- }).wait()
-- log.info("http执行结果", code, headers, body and #body)
-- sys.wait(10000)
-- end
end
sys.taskInit(netif_app_task_func)
@@ -0,0 +1,63 @@
## 功能模块介绍
1、main.lua:主程序入口;
2、netif_app: 网络管理模块,开启多网融合功能,以太网WAN提供网络供以太网设备上网;
## 演示功能概述
1、开启多网融合模式,以太网WAN连接外部网络,以太网LAN为其他以太网设备提供接入
2、​网络监控​,每5秒进行HTTPS连接测试,实时监测以太网WAN网络的连接状态
## 演示硬件环境
![](https://docs.openluat.com/air780epm/luatos/app/driver/eth/image/RFSvb75NRoEWqYxfCRVcVrOKnsf.jpg)
1、Air780EPM V1.3版本开发板一块+4g天线一根+网线一根+AirETH_1000配件板:
- AirETH_1000配件板接到开发板上
| Air780EPM开发板 | AirETH_1000配件板 |
| --------------- | ----------------- |
| LCD座子的VCC供电 | 3.3v |
| gnd | gnd |
| UART3_TX | SCK |
| UART2_RX | CSS |
| UART3_RX | SDO |
| UART2_TX | SDI |
| nil | INT |
- 天线装到开发板上
- 网线一端插入开发板网口,另外一端连接可以上外网的路由器网口
2、TYPE-C USB数据线一根 + USB转串口数据线一根,Air780EPM V1.3版本开发板和数据线的硬件接线方式为:
- Air780EPM V1.3版本开发板通过TYPE-C USB口供电;(外部供电/USB供电 拨动开关 拨到 USB供电一端)
- TYPE-C USB数据线直接插到核心板的TYPE-C USB座子,另外一端连接电脑USB口;
- USB转串口数据线,一般来说,白线连接开发板的UART1_TX,绿线连接开发板的UART1_RX,黑线连接核心板的GND,另外一端连接电脑USB口;
## 演示软件环境
1、Luatools下载调试工具
2、[Air780EPM V2012版本固件](https://docs.openluat.com/air780epm/luatos/firmware/version/)(理论上,2025年8月10日之后发布的固件都可以)
## 演示核心步骤
1、搭建好硬件环境,按接线图连接硬件,
2、烧录内核固件和本项目的Lua脚本:main.lua:主程序入口,netif_app.lua:网络管理模块
3、启动设备,观察日志输出:
``` lua
[INFO] exnetif setproxy success
[INFO] http执行结果 200 ...
```
4、其他设备通过AirETH_1000配件板接入780EPM,其他设备都能正常上网,则表示验证成功。