跳转至

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下载代码的教程如下:

合宙Luat/LuatOS代码仓库

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 文件说明

  1. main.lua:主程序入口文件。
  2. led_blink_app.lua:控制开发板上的网络灯1秒闪烁1次。

八、代码详解

8.1 main.lua

主程序文件 main.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次的控制。