跳转至

01 4G作为数据出口给WIFI,以太网设备上网

作者:魏健强

一、多网融合概述

Air780EPM 开发板通过多网融合技术将不同类型的通信网络(4G、WiFi、以太网)整合在一起,从而形成统一、高效、互操作性强的网络系统。

本文基于 Air780EPM 模块,通过 4G 移动网络为 WiFi 和以太网设备提供统一的上网接入服务。

二、准备硬件环境

3.1 780EPM 硬件环境

  1. Air780EPM 1.3 版本开发板一块 + 可上网的 sim 卡一张 +4g 天线一根 + 网线一根:
  2. sim 卡插入开发板的 sim 卡槽
  3. 天线装到开发板上
  4. 网线一端插入开发板网口,另外一端连接可以上外网的路由器网口
  5. TYPE-C USB 数据线一根 + USB 转串口数据线一根,Air780EPM 开发板和数据线的硬件接线方式为:
  6. Air780EPM 开发板通过 TYPE-C USB 口供电;(外部供电/USB 供电 拨动开关 拨到 USB 供电一端)
  7. TYPE-C USB 数据线直接插到开发板的 TYPE-C USB 座子,另外一端连接电脑 USB 口;
  8. Air780EPM 开发板购买链接:https://item.taobao.com/item.htm?id=871567339387&scene=taobao_shop&skuId=5914252858584&spm=a1z10.1-c-s.w4024-24640132990.1.614a1170fDHCdo

3.2 780EHM 硬件环境

  1. Air780EHM 核心板一块 + 可上网的 sim 卡一张 +4g 天线一根 + 网线一根:
  2. sim 卡插入开发板的 sim 卡槽
  3. 天线装到开发板上
  4. 网线一端插入开发板网口,另外一端连接可以上外网的路由器网口
  5. TYPE-C USB 数据线一根 + USB 转串口数据线一根,Air780EHM 核心板和数据线的硬件接线方式为:
  6. Air780EHM 核心板通过 TYPE-C USB 口供电;(外部供电/USB 供电 拨动开关 拨到 USB 供电一端)
  7. TYPE-C USB 数据线直接插到核心板的 TYPE-C USB 座子,另外一端连接电脑 USB 口;
  8. USB 转串口数据线,一般来说,白线连接开发板的 UART1_TX,绿线连接开发板的 UART1_RX,黑线连接核心板的 GND,另外一端连接电脑 USB 口;
  9. 可选 AirPHY_1000 配件板一块,Air780EHM 核心板和 AirPHY_1000 配件板的硬件接线方式为:
**Air780EHM核心板**
**AirETH_1000配件板**
3V3
3.3v
GND
GND
86/SPI0CLK
SCK
83/SPI0CS
CSS
84/SPI0MISO
SDO
85/SPI0MOSI
SDI
107/GPIO21
INT
  1. Air780EHM 核心板购买链接:https://item.taobao.com/item.htm?id=944405208876&skuId=6012483723790&spm=a1z10.3-c-s.w4002-24045920836.9.5fe56ee5p3Df1S

AirETH_1000 配件板购买链接:https://item.taobao.com/item.htm?id=968696407371&skuId=5918721685224&spm=a1z10.3-c-s.w4002-24045920836.24.242a6ee5E8259K

三、准备软件环境

在开始实践本示例之前,先准备一下软件环境:

4.1 Luatools 工具,如果是第一次使用 Luatools 工具,请仔细阅读此链接教程。

4.2 内核固件文件(底层 core 固件文件):LuatOS-SoC_V2014_Air780EPM_1.soc;参考项目使用的内核固件;如有更新可以使用最新固件。

4.3 luatos 需要的脚本和资源文件:https://gitee.com/openLuat/LuatOS/tree/master/module/Air780EPM/demo/network_routing/4g_out_ethernet_in_wifi_in

4.4 lib 脚本文件:使用 Luatools 烧录时,勾选 添加默认 lib 选项,使用默认 lib 脚本文件;

准备好软件环境之后,接下来查看如何烧录项目文件到 Air780EPM 开发板,将本篇文章中演示使用的项目文件烧录到 Air780EPM 开发板中。

四、软硬件资料

4.1 API 介绍

本文仅介绍程序中使用到的 API 接口,详细接口说明请查看:核心库 API 索引 - luatos@air780EPM - 合宙模组资料中心

exnetif.setproxy(adapter, main_adapter, other_configs)

配置网络代理实现多网融合;

4.2 以太网电路介绍

以太网电路介绍请查看:10 以太网 RJ45 电路 - luatos@air780EPM - 合宙模组资料中心

五、整体功能概述

5.1 功能概述

以 4G 为供网数据出口,通过 Air780EPM 模组实现以下功能:

1. 有线连接,以太网设备通过网线连接实现 4G 上网。

5.2 源码展示

程序中已详细注释代码用处,如有不懂可咨询合宙技术人员。

netif_app.lua

--[[
@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},           -- 外挂方式,需要额外的参数(选填参数),仅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.air32.cn/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)

main.lua

--[[
@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这三位数字必须存在,但是没有任何用处,可以一直写为000
        如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
]]
PROJECT = "4g_out_ethernet_in_wifi_in"
VERSION = "001.000.000"


-- 在日志中打印项目名和项目版本号
log.info("main", PROJECT, VERSION)


-- 如果内核固件支持wdt看门狗功能,此处对看门狗进行初始化和定时喂狗处理
-- 如果脚本程序死循环卡死,就会无法及时喂狗,最终会自动重启
if wdt then
    --配置喂狗超时时间为9秒钟
    wdt.init(9000)
    --启动一个循环定时器,每隔3秒钟喂一次狗
    sys.timerLoopStart(wdt.feed, 3000)
end


-- 如果内核固件支持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()之后后面不要加任何语句!!!!!

5.3 程序流程图展示

六、功能演示

6.1 4G 作为数据出口给以太网设备上网

测试环境:Air780EPM 整机开发板、Windows10 以上系统版本电脑。

测试结果:电脑能正常识别到以太网网络适配器,也可以正常上网。

PGCYbqb56oBKAgxwM3VcrONon5c

七、总结

至此,Air780EPM 多网融合系列中以 4G 作为数据出口,分别为 WiFi 和以太网设备供网的功能已经结束。如果大家在实际操作中遇到技术难题,欢迎联系合宙技术人员。