led_blink示例
作者:沈园园 | 最后修改:2026-05-06
一、概述
Air780EPM开发板上有一个网络灯,软件上可以控制这个网络灯对应的GPIO,进而控制网络灯的亮与灭;
本文实现了网络灯1秒闪烁1次的演示效果,带你快速入门LuatOS二次开发。
二、背景介绍
这里,先要告诉你一些前提条件,希望你能够认真看一看这一节。
本文实现功能是:控制Air780EPM开发板上的网络灯1秒闪烁1次。
要想达到这个目的,这里有必要先介绍一下 LuatOS 在合宙4G模组的运行原理:
合宙的 4G模组,除了运行4G协议栈之外,还植入了5.3版本的Lua虚拟机,以及内置的一个脚本代码区。
4G模组上电之后, 虚拟机会去代码区寻找main.lua文件,并且开始执行这个文件中的代码。
你只需要用合宙的Luatools工具烧录脚本到模组,就可以正确运行脚本的代码。
在完成这个初始示例之前,你还需要准备好一套合适的硬件。
合适的硬件是什么呢?
是合宙的能运行LuatOS脚本的4G模组。
本文我们使用的Air780EPM模组对应的开发板硬件
LuatOS代码仓库地址:
https://gitee.com/openLuat/LuatOS
打开这个代码仓库的网址,打开module目录,你会看到合宙的公开的一系列支持LuatOS开发的主推模组型号。
合宙不仅仅公开了每个模组的示例代码,还把缺陷跟踪也公开了。
你要想运行哪个模组的软件, 就在合宙淘宝店购买对应的模组开发板, 然后进入对应的代码仓库,就可以开发了!
今天,我们用 合宙Luat/LuatOS 这个仓库中module/Air780EPM/led_blink的demo作为例子来进行学习。
三、下载示例代码
下载示例代码到一个合适的项目目录。从gitee下载代码的教程如下:
3.1 最简单快速的方式:
直接进入仓库,点击下载仓库文件


3.2 使用git工具下载
参考Air780epm如何克隆Demo代码仓库文章中:使用git工具下载
四、演示功能概述
控制开发板上的网络灯1秒闪烁1次。
五、准备硬件环境

1、Air780EPM开发板一块:Air780EPM开发板购买链接
2、TYPE-C USB数据线一根
3、Air780EPM开发板和数据线的硬件接线方式为
- Air780EPM开发板通过TYPE-C USB口连接TYPE-C USB 数据线,数据线的另外一端连接电脑的USB口;
- 开发板正面的 USB供电/外部供电 拨动开关 拨到USB供电一端;
4、硬件资料:Air780EPM模块硬件资料
六、准备软件环境
6.1 软件环境
在开始实践本示例之前,先筹备一下软件环境:
1、烧录工具:Luatools 下载调试工具
2、内核固件:Air780EPM 最新版本的内核固件
3、脚本文件:https://gitee.com/openLuat/LuatOS/tree/master/module/Air780EPM/demo/led_blink
4、lib脚本文件:使用Luatools烧录时,勾选 添加默认lib 选项,使用默认lib脚本文件
准备好软件环境之后,接下来查看如何烧录项目文件到Air780EPM开发板,将本篇文章中演示使用的项目文件烧录到Air780EPM开发板中。
6.2 API 介绍
LuatOS API 手册:https://docs.openluat.com/osapi/
七、程序结构
hmeta/
│── main.lua
│── led_blink_app.lua
│── readme.md
7.1 文件说明
main.lua:主程序入口文件。led_blink_app.lua:控制开发板上的网络灯1秒闪烁1次。
八、代码详解
8.1 main.lua
主程序文件 main.lua 是整个项目的入口点。它负责初始化系统环境。
8.2 led_blink_app.lua
控制开发板上的网络灯1秒闪烁1次
8.2.1 控制开发板上的网络灯1秒闪烁1次
-- 默认灯状态为off
local led = "off"
--设置演示所用的灯为网络指示GPIO27,初始化电平为低
local netled = 27
gpio.setup(netled, 0)
local function led_blink_task_func()
while true do
-- 打印灯状态
log.info("led_blink_app led:", led)
if led == "off" then
gpio.setup(netled, 1)
led = "on"
else
gpio.setup(netled, 0)
led = "off"
end
sys.wait(1000)
end
end
--创建一个task,并且运行task的主函数led_blink_task_func
sys.taskInit(led_blink_task_func)
九、烧录代码到开发板
烧录代码, 需要进行如下几步:
9.1 下载和安装合宙调试工具 LuatTools
要想烧录代码, 先要下载合宙的强大的调试工具: Luatools。
如果你已经安装使用过 Luatools, 可以直接跳到下个小节: 烧录代码。
Luatools 工具主要有如下几个功能:
(1)自动从合宙服务器获取最新的合宙模组固件;
(2)烧录固件和脚本;
(3)查看和保存模组的串口输出日志;
(4)简单的串口调试;
Luatools 下载之后, 无需安装, 解压到你的硬盘,点击 Luatools_v3.exe 运行,出现如下界面,就代表 Luatools 安装成功了:

Luatools 的最新版本的工具下载和详细使用见:https://docs.openluat.com/air780epm/common/Luatools/
9.2 烧录代码
首先要说明一点: 第一次烧录,需要脚本代码和固件的bin文件一起烧录。后续不更换固件的话只需要烧录脚本代码即可。
9.2.1 找到烧录的固件文件
Air780EPM 的固件可以去DOCS网站下载。底层core下载地址:Air780EPM LuatOS固件版本

9.2.2 正确连接电脑和4G模组电路板
使用带有数据通信功能的数据线,不要使用仅有充电功能的数据线;
9.2.3 识别4G模组的BOOT引脚
在下载之前,要用模组的BOOT引脚触发下载, 也就是说,要把4G模组的BOOT引脚拉到 3.3v,或者直接把BOOT引脚和VDD_EXT引脚相连。我们在按下BOOT按键时让模块开机,就可以进入下载模式了。
具体到 Air780EPM开发板,
1、当我们模块没开机时,按着BOOT键然后长按开机。
2、当我们模块开机时,按着BOOT然后点按重启键即可。

9.2.4 识别电脑的正确端口
判断是否进入BOOT模式:模块上电,此时在电脑的设备管理器中,查看串口设备, 会出现一个端口表示进入了boot下载模式,如下图所示:

一旦进入了boot下载模式,表示硬件连接上已经处于就绪状态,此时就可以使用Luatools工具进行烧录了!
9.2.5 新建项目
首先,确保你的 Luatools 的版本,是大于 3.0.15 版本的。
在 Luatools 的左上角上有版本显示的,如图所示:

Luatools 版本没问题的话, 就点击Luatools 右上角的“项目管理测试”按钮,如下图所示:

这时会弹出项目管理和烧录管理的对话框,如下图:

9.2.6 开始烧录
选择Air780EPM开发板对应的底层core和对应脚本文件,下载到开发板中。
点击下载后,我们需要进入boot模式才能正常下载,在(3)(4)小节已经介绍了如何进入boot模式。


3 烧录问题排查
如果你在烧录过程中遇到了问题, 请点击https://docs.openluat.com/air780epm/common/howtodown/,进行烧录的问题排查。
十、运行结果展示
烧录成功后,自动开机运行。出现类似于下面的日志且开发板上的蓝灯1秒闪烁1次,就表示运行成功:
[2025-11-21 10:09:15.776][000000008.744] I/user.led_blink_app led: off
[2025-11-21 10:09:16.778][000000009.745] I/user.led_blink_app led: on
[2025-11-21 10:09:17.784][000000010.746] I/user.led_blink_app led: off
[2025-11-21 10:09:18.780][000000011.747] I/user.led_blink_app led: on
[2025-11-21 10:09:19.784][000000012.748] I/user.led_blink_app led: off
[2025-11-21 10:09:20.778][000000013.748] I/user.led_blink_app led: on

十一、总结
通过本文学习我们学会了:
1、如何下载LuatOS的core和demo;
2、如何使用烧录工具Luatools;
3、如何编辑lua脚本实现网络灯1秒闪烁1次的控制。