air780实现远程点灯


ChangeCode
原创
发布时间: 2025-06-11 16:16:03 | 阅读数 0收藏数 0评论数 0
封面
Air780E模块可以通过物联网实现远程控制功能,如远程点灯。首先,将Air780E连接到微控制器,并确保它已设置好网络连接。当从云端服务器或移动应用接收点亮指令时,Air780E通过其GPIO接口通知微控制器。微控制器随后控制连接到灯光的继电器或开关,从而实现远程点亮灯光的功能。

准备工作:

材料:

材料名称
数量
备注
air780e
1
/
LED
1
(可选)
SIM卡
1
/
USB数据线
2
/
电源适配器
2
/

工具:

工具名称
数量
备注
串口调试助手软件
1
/
Arduino IDE
1
/
阿里云物联网平台
1
/
1

Air780e介绍

Air780E 是一款专为物联网 (IoT) 应用设计的4G无线通信模块,支持多种4G/LTE频段,使其在全球范围内具有良好的网络兼容性。这款模块通常用于提供远程数据传输功能,适用于工业自动化、智能城市、远程监控以及其他需要稳定数据连接的应用场景。

主要特点包括但不限于:

- 支持4G LTE网络,兼容多个频段,确保广泛覆盖。

- 提供多种接口,如USB、UART、SPI等,便于与其他设备集成。

- 内置TCP/IP协议栈,简化了网络通讯编程。

- 支持标准AT命令集,方便开发人员进行配置和调试。

- 具备省电模式,适合电池供电的应用场合。

- 可能还包括GPS功能,适用于位置追踪应用。

对于电子DIY爱好者或专业开发者来说,Air780E是一个强大的工具,可以用来实现远程控制和监控功能,如远程点灯、数据采集和传输等。通过合适的编程和配置,它可以作为连接物联网设备与云平台之间的桥梁,使得设备能够响应远程指令或上传数据。

2

Air780e官方文档

合宙官方针对Air780E模块提供的教程主要围绕如何使用Luatools这一工具来进行固件的烧录和其他调试操作。Luatools是一款由合宙开发的支持最新固件获取、固件打包、trace打印、单机烧录等功能的单机版调试工具。具体教程内容涵盖了Luatools的安装和基本使用方法。

传送门

该教程详细指导了用户如何使用Luatools工具完成对Air780E模块的固件烧录,是开发者进行模块开发前的重要准备工作之一。通过遵循这些步骤,开发者可以顺利地对Air780E模块进行配置,进而开发出基于该模块的应用产品。

3

luatos 和 lua

Lua 是一种高性能的脚本语言,被设计成轻量级且易于嵌入其他应用程序中。它支持面向过程编程和函数式编程,并且由于其灵活性和较小的内存占用,Lua 广泛应用于游戏开发、嵌入式系统、Web应用等领域。

LuatoS(有时也被写作 LuaOS 或 LwIP + Lua)是一个基于Lua语言的实时操作系统框架,专为物联网(IoT)设备设计。LuatoS 提供了一个完整的环境,允许开发者利用Lua语言编写应用程序,并直接在嵌入式设备上运行。它的目标是提供一个轻量级的操作系统,让开发者能够更简单地开发和管理物联网设备上的程序。

### Lua 和 LuatoS 的主要区别:

- 用途:Lua 是一种通用的脚本语言,可以用于多种不同的应用领域;而LuatoS则是专门为物联网设备设计的操作系统框架,内置了网络栈等功能,更适合用于网络设备的开发。

- 系统资源使用:虽然两者都强调轻量级,但LuatoS作为一个操作系统框架,可能会比纯Lua语言需要更多的系统资源,因为它包含了更多的组件和服务。

- 开发环境:Lua可以在任何支持Lua的平台上运行,而LuatoS则更专注于嵌入式系统,并且提供了特定的硬件抽象层(HAL),使得开发者能够更容易地访问底层硬件。

- 网络支持:LuatoS内建了LwIP(轻量级的TCP/IP协议栈),这意味着它可以直接支持网络通信,而纯Lua如果需要网络功能,则需要额外的库支持。

- 实时性:LuatoS作为RTOS(实时操作系统)的一部分,更加关注实时任务调度,而Lua本身并不具备这样的特性。

总结来说,如果你需要开发一个简单的脚本应用,Lua 就足够了;而如果你正在构建一个需要实时网络通信的物联网设备,那么LuatoS会是一个更好的选择。

4

云物联网平台配置

阿里云物联网平台设备的MQTT连接参数、MQTT发布订阅主题、设备属性等,参考如图

--根据自己阿里云物联网平台的配置修改以下参数,下列参数仅作参考
local client_id = "a1ZR8uuCkfP.air780e_test|securemode=2,signmethod=hmacsha256,timestamp=1681048410186|"
local user_name = "air780e_test&a1ZR8u41341"
local password = "9b075c78b1a600065d28af9000www.funiot.xyz000www.funiot.xyz000"
local mqtt_host = "a1ZR8uuCkfP.iot-as-mqtt.cn-shanghai.aliyuncs.com"
local mqtt_port = 1883





5

设备属性

local devdata_topic="/sys/a1ZR8uuCkfP/air780e_test/thing/event/property/post" --订阅属性上报主题
local cmdrec_topic="/sys/a1ZR8uuCkfP/air780e_test/thing/service/property/set" --订阅属性设置主题
local dev_control="thing.service.property.set" --订阅属性控制下发主题
local command_name="LED_Control" --控制命令
6

LuaTools 安装

1、下载Luatools软件,解压后是一个文件名为Luatools_v2.exe的运行程序。

2、新建一个 LuaTools文件夹,将Luatools_v2.exe拷贝或移动到LuaTools文件夹下

3、双击 Luatools_v2.exe开始安装,出现图中情况,点击更多信息选项,然后选择仍要运行选项即可完成安装。4、运行Luatools后会提示开始升级,点击开始,进行升级,升级完成后可正常使用。

EXE
Luatools_v2.exe
59.77MB
7

软件包配置

根据合轴官方的教程,LuatOS-SoC@EC618 V1103 - 适用于Air780E/Air780EG/Air600E

那我们直接下载LuatOS-SoC@EC618的软件包就可以了

ZIP
LuatOS-v0007.ec618.v1103.zip
51.92MB
8

开发环境配置

打开vscode官网:https://code.visualstudio.com/ 下载vscode

打开安装包后,需要注意其中两个选项要勾选(图片是英文的,也一样):

  1. 将”通过Code打开”操作添加到Windows资源管理器文件上下文菜单
  2. 将”通过Code打开”操作添加到Windows资源管理器目录上下文菜单

安装推荐的拓展

点击左侧的拓展按键,搜索LuatOS-SOC推荐拓展包,认准作者,点击Install安装即可

装完之后,点击右下角的Change Language and Restart,就变成中文啦

更改默认的配置

在正常页面,按下快捷键Ctrl+,(逗号),打开设置页面

点击右上角的打开设置(json)图标

将文件内容替换成下面的数据,保存即可(如果已经有东西了,请自行添加缺少项)

{
"editor.fontFamily": "Consolas, 'Microsoft Yahei UI Light','Courier New', monospace",
"editor.renderLineHighlight": "all",
"editor.emptySelectionClipboard": false,
"files.autoGuessEncoding": true,
"files.insertFinalNewline": true,
"files.trimTrailingWhitespace": true,
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs":"active",
"luahelper.base.showOnline": false
}
9

创建项目

推荐写代码时,每个项目都新建一个文件夹

打开项目时,推荐使用右键,选择通过使用 Code 打开,这样插件才能完美运行

10

提醒!!!

如果遇到下面的提示,请按图片描述进行操作,不然安装的拓展不会运行

11

编写luatos脚本

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "led"
VERSION = "1.0.0"

-- 引入必要的库文件(lua编写), 内部库不需要require
sys = require("sys")

log.info("main", "led")

print(_VERSION)

if wdt then
--添加硬狗防止程序卡死,在支持的设备上启用这个功能
wdt.init(9000)--初始化watchdog设置为9s
sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
end
--用户代码开始---------------------------------------------------
--根据自己阿里云物联网平台的配置修改以下参数,下列参数仅作参考
local mqtt_host = "a1ZR8uuCkfP.iot-as-mqtt.cn-shanghai.aliyuncs.com"
local mqtt_port = 1883
local mqtt_isssl = false
local client_id = "a1ZR8uuCkfP.air780e_test|securemode=2,signmethod=hmacsha256,timestamp=1681048410186|"
local user_name = "air780e_test&a1ZR81132134"
local password = "9b075c78b1a600065d28afa0d3b42www.funiot.xy&&www.funiot.xyz"
local mqtt_aliyun = nil
local devdata_topic="/sys/a1ZR8uuCkfP/air780e_test/thing/event/property/post" --订阅属性上报主题
local cmdrec_topic="/sys/a1ZR8uuCkfP/air780e_test/thing/service/property/set" --订阅属性设置主题
local dev_control="thing.service.property.set" --订阅属性控制下发主题
local command_name="LED_Control" --控制命令
local LED_PIN=27 --LED引脚编号
gpio.setup(LED_PIN,0, gpio.PULLUP) --设置LED上拉输出

sys.taskInit(function()
print("connected to aliyun example\r\n")
while 1 do
--网络相关
mobile.simid(2)
LED = gpio.setup(27, 0, gpio.PULLUP)
device_id = mobile.imei()
sys.waitUntil("IP_READY", 30000)
--mqtt客户端创建
mqtt_aliyun = mqtt.create(nil,mqtt_host, mqtt_port, mqtt_isssl, ca_file)
mqtt_aliyun:auth(client_id,user_name,password)
mqtt_aliyun:keepalive(60) -- 默认值240s
mqtt_aliyun:autoreconn(true, 3000) -- 自动重连机制
--注册mqtt回调
mqtt_aliyun:on(function(mqtt_client, event, data, payload)
-- 用户自定义代码
log.info("mqtt", "event", event, mqtt_client, data, payload)
if event == "conack" then --连接响应成功
sys.publish("mqtt_conack")--订阅主题
mqtt_client:subscribe(pub_devdata_topic)
mqtt_client:subscribe(pub_cmdrec_topic)
elseif event == "recv" then
log.info("mqtt", "downlink", "topic", data, "payload", payload)
print("payload:",payload)
--解析json
--例如:
--{"method":"thing.service.property.set","id":"273481693","params":{"LED_Control":1},"version":"1.0.0"}
local mycmd=json.decode(payload)
if mycmd then -- 若解码失败, 会返回nil
print("method :",mycmd["method"])
print("params is",mycmd["params"])
print("params->LED_Control is",mycmd["params"]["LED_Control"])
if mycmd["method"]==dev_control then
if mycmd["params"]["LED_Control"]==1 then
print("led turn on")
gpio.set(LED_PIN, gpio.HIGH)
elseif mycmd["params"]["LED_Control"]==0 then
print("led turn off")
gpio.set(LED_PIN, gpio.LOW)
end
end
end
elseif event == "sent" then
log.info("mqtt", "sent", "pkgid", data)
-- elseif event == "disconnect" then
-- 非自动重连时,按需重启mqtt_aliyun
-- mqtt_client:connect()
end
end)
--连接mqtt
mqtt_aliyun:connect()
sys.waitUntil("mqtt_conack")
while true do
-- mqtt_aliyun自动处理重连
local ret, topic, data, qos = sys.waitUntil("mqtt_pub", 30000)
if ret then
if topic == "close" then break end
mqtt_aliyun:publish(topic, data, qos)
end
end
mqtt_aliyun:close()
mqtt_aliyun = nil
end
end)
--定时上报属性
sys.taskInit(function()
local topic = devdata_topic --上报的topic
local temp=0 --温度属性值
local data = "{\"method\":\"thing.service.property.set\",\"params\":{\"IndoorTemperature\":"..tostring(temp).."}}"
local qos = 1
local temp=0
while true do
sys.wait(5000)
if mqtt_aliyun and mqtt_aliyun:ready() then
-- mqtt_aliyun:subscribe(topic)
local pkgid = mqtt_aliyun:publish(topic, data, qos)
temp=temp+1
data = "{\"method\":\"thing.service.property.set\",\"params\":{\"IndoorTemperature\":"..tostring(temp).."}}"
print(data)
-- 也可以通过sys.publish发布到指定task去
-- sys.publish("mqtt_pub", topic, data, qos)
end
end
end)

-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!


12

串口烧录—工具配置

准备工作:

  1. 一根typec口的USB连接线
  2. 一台window系统的电脑(推荐win10以上)

打开刚才下载好的Luatools:

  1. 建议新建一个Luatools文件夹,将exe文件放入其中后,再打开exe文件
  2. 请勾选4G模块USB打印, 本系列兼容Air780E/Air780EG/Air600E/Air700E等EC618方案

无需修改串口波特率,保持当前值即可

将设备通过usb线连接到电脑,这里会有几种情况:

  1. 出现3个新的COM口,工具会自动打开端口, 证明当前是AT固件
  2. 出现3个新的COM口,工具会自动打开端口, 证明当前是CSDK或者LuatOS固件
  3. 没有一点反应, 按住板子的PWR键2秒以上, 板子开机. 开发板上有3个按钮, 若没有标识,外侧2个都试一试

提醒: 不支持Win7刷机!!

13

串口烧录—烧录固件

找到Luatools所在的文件夹,文件夹的Luatools/resource/618_lua_lod/版本号中就是自动下载的正式版本固件


🔥重要

普通刷机流程(开机防抖关闭的状态):

  1. 烧录时的操作:先按住BOOT键,再按一下复位键,最后再松开BOOT键
  2. 即可进入BOOT模式等待烧录, 大概30~45秒自动会退出BOOT模式

“开机防抖功能”开启状态的流程, 这通常是AT固件运行过的结果:

  1. 先插拔USB, 这样设备就是关机状态
  2. 按住BOOT键(外侧的一个), 然后按PWR(外侧另外一个)2秒, 松开BOOT键
  3. 进入BOOT模式后, 大概30~45秒会退出BOOT模式
  4. 刷机完成后, 如果没有自动开机, 还需要手动开机

如何关闭”开机防抖功能”呢? 任选一种

  1. 刷脚本 Luatools/resource/618_lua_lod/版本号/demo/gpio/gpio/main.lua
  2. 在主界面, 点固件下载, 刷闪灯固件 Luatools/resource/618_lua_lod/版本号/功能测试固件/闪灯测试_xxx.soc
  3. 在你自己的main.lua 开头的地方,加一句 pm.power(pm.PWK_MODE, false)

固件是拓展名为soc的文件,这里用Air101的固件进行举例,

接着返回Luatools,点击下载固件按钮,选中刚刚下载的soc文件,直接下载即可:


14

串口烧录—烧录固件

点击项目管理测试按钮,点击左下角的创建项目新建一个新项目

选好芯片使用的固件,选好脚本即可下载

demo类的脚本,可以前往LuatOS官方仓库,在demo文件夹可以找到

Luatools工具也自动下载了正式版本的一些实例脚本可以在resource\某种型号\某个版本\demo文件夹看到,可以直接选择脚本进行烧录测试


如果芯片当前已经烧录的固件版本,和这里选择的固件相同,那么可以点击下载脚本只下载脚本;反之,建议点击下载底层和脚本,进行全刷


15

查看日志#

如果没有打开串口,点击打开串口即可查看日志

如果还没反应,检查通用串口打印是否勾选, 重新选择串口打开,或者试试点击重启串口

16

编译烧录

打开Luatools,点击项目管理按钮,选择下载好的固件(后缀名为soc的文件)和编写好的main.lua文件,勾选USB BOOT下载,点击下载底层和脚本按钮下载即可,具体操作流程如下图所示:

17

运行结果

命令下发通过设置设备属性实现,如图2

命令接收的同时开发板的LED灯会根据发送的对应命令完成开关亮灭

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载