Преглед изворни кода

add: 提交Air8000/Air780EPM led_blink demo

shenyuanyuan пре 3 месеци
родитељ
комит
6f923fbbc1

+ 37 - 0
module/Air780EPM/demo/led_blink/led_blink_app.lua

@@ -0,0 +1,37 @@
+--[[
+@module  led_blink_app
+@summary led_blink_app应用功能模块 
+@version 1.0
+@date    2025.11.21
+@author  沈园园
+@usage
+本文件为led_blink应用功能模块,核心业务逻辑为:
+1、控制开发板上的网络灯1秒闪烁1次;
+
+本文件没有对外接口,直接在main.lua中require "led_blink_app"就可以加载运行;
+]]
+
+
+-- 默认灯状态为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)

+ 71 - 0
module/Air780EPM/demo/led_blink/main.lua

@@ -0,0 +1,71 @@
+--[[
+@module  main
+@summary LuatOS用户应用脚本文件入口,总体调度应用逻辑 
+@version 1.0
+@date    2025.11.21
+@author  沈园园
+@usage
+本demo演示的核心功能为:
+控制开发板上的网络灯1秒闪烁1次
+更多说明参考本目录下的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 = "led_blink_app"
+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)
+
+-- 加载led_blink_app应用功能模块
+require "led_blink_app"
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后不要加任何语句!!!!!因为添加的任何语句都不会被执行

+ 54 - 0
module/Air780EPM/demo/led_blink/readme.md

@@ -0,0 +1,54 @@
+## 功能模块介绍
+
+1、main.lua:主程序入口;
+
+2、led_blink_app.lua:控制开发板上的网络灯1秒闪烁1次;
+
+## 演示功能概述
+
+1、创建一个task;
+
+2、在task中的任务处理函数中,每隔一秒钟切换灯的状态并打印灯对应状态;
+
+
+## 演示硬件环境
+
+![](https://docs.openluat.com/air780epm/luatos/app/socket/http/image/HrcxbSkXeojNIGx09TDcCbwknCb.png)
+
+1、Air780EPM开发板一块
+
+2、TYPE-C USB数据线一根
+
+4、Air780EPM开发板和数据线的硬件接线方式为
+
+- Air780EPM开发板通过TYPE-C USB口连接TYPE-C USB 数据线,数据线的另外一端连接电脑的USB口;
+- 开发板正面的 USB供电/外部供电 拨动开关 拨到USB供电一端;
+
+
+## 演示软件环境
+
+1、[Luatools下载调试工具](https://docs.openluat.com/air780epm/luatos/common/download/)
+
+2、[Air780EPM 最新版本的内核固件](https://docs.openluat.com/air780epm/luatos/firmware/version/)
+
+
+## 演示核心步骤
+
+1、搭建好硬件环境
+
+2、Luatools烧录内核固件和demo脚本代码
+
+3、烧录成功后,自动开机运行
+
+4、出现类似于下面的日志且核心板上的蓝灯1秒闪烁1次,就表示运行成功:
+
+``` lua
+[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
+```
+
+![](https://docs.openluat.com/air780epm/luatos/common/hwenv/image/Air780EPM_led.png)

+ 37 - 0
module/Air8000/demo/led_blink/led_blink_app.lua

@@ -0,0 +1,37 @@
+--[[
+@module  led_blink_app
+@summary led_blink_app应用功能模块 
+@version 1.0
+@date    2025.11.21
+@author  沈园园
+@usage
+本文件为led_blink应用功能模块,核心业务逻辑为:
+1、控制核心板上的网络灯1秒闪烁1次;
+
+本文件没有对外接口,直接在main.lua中require "led_blink_app"就可以加载运行;
+]]
+
+
+-- 默认灯状态为off
+local led = "off"
+--设置演示所用的灯为网络指示GPIO21,初始化电平为低
+local netled = 21
+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)

+ 71 - 0
module/Air8000/demo/led_blink/main.lua

@@ -0,0 +1,71 @@
+--[[
+@module  main
+@summary LuatOS用户应用脚本文件入口,总体调度应用逻辑 
+@version 1.0
+@date    2025.11.21
+@author  沈园园
+@usage
+本demo演示的核心功能为:
+控制核心板上的网络灯1秒闪烁1次
+更多说明参考本目录下的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 = "led_blink_app"
+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)
+
+-- 加载led_blink_app应用功能模块
+require "led_blink_app"
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后不要加任何语句!!!!!因为添加的任何语句都不会被执行

+ 55 - 0
module/Air8000/demo/led_blink/readme.md

@@ -0,0 +1,55 @@
+## 功能模块介绍
+
+1、main.lua:主程序入口;
+
+2、led_blink_app.lua:控制核心板上的网络灯1秒闪烁1次;
+
+## 演示功能概述
+
+1、创建一个task;
+
+2、在task中的任务处理函数中,每隔一秒钟切换灯的状态并打印灯对应状态;
+
+
+## 演示硬件环境
+
+![](https://docs.openluat.com/luatos_lesson/image/Evh1bVjatoG1rCxhrdpc9ny7nVf.png)
+
+1、Air8000核心板一块
+
+2、TYPE-C USB数据线一根
+
+4、Air8000核心板和数据线的硬件接线方式为
+
+- Air8000核心板通过TYPE-C USB口连接TYPE-C USB 数据线,数据线的另外一端连接电脑的USB口;
+- 核心板正面的 供电/充电 拨动开关 拨到供电一端;
+- 核心板背面的 USB ON/USB OFF 拨动开关 拨到USB ON一端;
+
+
+## 演示软件环境
+
+1、[Luatools下载调试工具](https://docs.openluat.com/air8000/luatos/common/download/)
+
+2、[Air8000 最新版本的内核固件](https://docs.openluat.com/air8000/luatos/firmware/)
+
+
+## 演示核心步骤
+
+1、搭建好硬件环境
+
+2、Luatools烧录内核固件和demo脚本代码
+
+3、烧录成功后,自动开机运行
+
+4、出现类似于下面的日志且核心板上的红灯1秒闪烁1次,就表示运行成功:
+
+``` lua
+[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
+```
+
+![](https://docs.openluat.com/air8000/luatos/common/hwenv/image/Air8000_core_led.png)