一、项目规划
使用 Air8000A 整机开发板 + 屏幕,用 iRTU+luatos-docs-code-100 开发一个 iRTU+RS485 温湿度传感器 +RS485 TVOC 的项目
1.1AirUI简介
AirUI是基于 LVGL 9.4 版本进行图形层封装的 LuatOS 核心库,把常用组件、事件管理、输入和基础视觉主题封装为更易上手的 Lua 接口,便于在支持 LuatOS 的设备和 PC 上统一开发。
1.1.1 推荐搭配exwin UI 窗口管理扩展库一起使用
资料见资料中心—LuatOS扩展库API_exwin UI 窗口管理扩展库
1.1.2当前最新版本为 V1.1.2 支持组件 16 个,组件分类如下:
显示类组件:标签、图片、进度条、表格、曲线图、二维码
交互类组件:标签、图片、开关、按钮、下拉框、消息框
输入类组件:下拉框、输入框 (支持中文输入)、键盘
布局类组件:容器、选项卡、窗口
1.1.3 主要特性:
组件丰富:内置丰富标签类型、图片显示、按钮、开关、进度条、下拉框、输入框、键盘、表格、容器、选项卡、窗口等核心组件;
更低成本:可选 hzfont 矢量字体支持 12-255 号字体,节省字库成本;
开发高效:用更少代码快速搭建可量产的触控界面,参考示例代码能快速掌握原理;
验证便捷:提供 LuatOS windows桌面系统 快速验证效果,无需烧录就能看到代码运行效果;
支持 LuatOS windows桌面系统 (SDL2) 和真机两种模式:
当前LuatOS windows桌面系统支持Lottie动画和键盘输入;
PC端仅支持window 10/11系统;
真机支持Air8101和Air8000系列、Air780EHM/EGH/EHV等;
支持使用设计器设计页面和 XML 导入,能够快速搭建页面原型与交互逻辑。
当前AirUI 设计器开发中,目前可以使用 LVGL 9.4 官方设计器进行页面设计
2. Air8000A核心功能
核心功能:4G+Wi-Fi+ 蓝牙 +GNSS 定位 + 内置 G-sensor
存储空间:Air8000 全系列产品的 Flash 和 RAM 均为 8MB
多网融合:支持 4G、Wi-Fi、以太网无缝切换
定位能力:支持多系统联合定位,定位精度 <2m;内置 G-sensor,有效抑制静态漂移
近场通讯:内置低功耗 WiFi 6(支持 AP 和 STA) 和 BLE 5.4,确保设备在各种网络环境下都能稳定连接
外设控制:4 个串口;2 路 I2C;1 路通用 SPI;4 路 PWM;4 路 ADC;1 路 CAN;1 路 QSPI
UI 能力:支持 SPI LCD;支持方便开发的显示界面,包括触摸和显示;
视觉能力:支持 30W 像素摄像头;
存储扩展:支持外挂 Nor Flash/Nand Flash,RC522 射频模块、OTP 存储操作;
二、准备软硬件环境
2.1 软件环境
2.1.1 准备好 Air8000A 的 iRTU 软件代码
软件代码地址为:iRTU 源码,这个地址为 irtu_ui 的初始代码。
固件下载参考:资料中心Air8000A 固件。
2.1.2 准备好 Luatools 工具
Luatools 调试工具, 支持最新固件获取、固件打包、trace 打印、单机烧录等功能
此工具适用于 4G 模组, 4G + GNSS 模组和工业引擎系列。
LuaTools 下载调试教程参考:LuaTools 下载调试教程 - 模组资料中心
2.1.3 准备好 iRTU 配置页面和 AirCloud
iRTU 的配置服务器地址为:iRTU 配置页面
AirCloud 的地址为:iot.luatos.com
2.1.4 AI 工具安装和智能体配置
已经引入了 Trae AI 智能开发工具,我们本次使用智能体luatos-docs-code-100进行开发
2.2 硬件环境
本次用的是 485 的温湿度传感器和 TVOC 传感器,Turnkey 开发板里面的套餐是 i2c 的,因为 iRTU 目前只支持串口传输,所以我们使用 485 的温湿度传感器和 TVOC 传感器。
三、使用 AI 开发
3.1 先配置 iRTU 的基本参数:
3.1.1串口配置
串口配置功能如下,Air8000A 的开发板使用的 485 串口号为串口 1,转向脚为 GPIO17,485 的延迟时间设置为 20000us,9600 波特率填 20000。这个是经验值,其余波特率可以参考这个波特率,根据比例自行计算,如 4800 波特率是 20000*9600/4800 = 40000;
串口配置功能
3.1.2 网络通道
配置为 AirCloud,其中,AuthKey 值可以去通过 AirCloud 平台对应模块的项目去获取
网络通道
测试的设备在 test1 项目下,所以使用的是第一个 Key 值
网络通道
3.1.3 预置信息
在预置信息里面配置的是发送的 485 数据,本次发送的数据,第一条是发送给 TVOC 传感器的数据,第二条是发送给温湿度传感器的数据,中间间隔 1 秒

3.1.4 任务
任务里面打开 GPIO16,该操作是给 485 控制芯片上电

3.1.5 数据流
数据流我们等待后续用 AI 生成,先暂时不配置
3.2 放入代码和图片,生成 UI
放入 iRTU 的代码,lib 库,还有 image 图片,也可以自行去阿里巴巴图标网站去寻找自己喜欢的。
3.2.1 第一个任务
我现在的 image 里面放了 3 个图片,分别是温度,湿度,还有 tvoc,你现在利用这三张图片,结合 airui 功能,给我用容器先创建一个大的框架,然后做三个小的容器,分别是温度,湿度,还有 tvoc,做完之后放到我的 iRTU 项目里

3.2.2、AI 的创建结果


AI 第一次没有生成代码,然后我们询问 AI:代码呢?然后 AI 开始生成 airui_main.lua 的代码,这时候我们发现 AI 的屏幕大小是错误的,我们纠正下 AI
3.2.3、AI 开始修正

烧录代码:
这时候发现有报错,但是屏幕上已经显示出来了内容


但是我们想把这个做成横屏的,而且图片也没显示出来,这个时候我们发现图片的路径其实是错误的,这个路径问题需要提前给 AI 说一下,不然 AI 没办法判断这个图片路径是脚本区路径

3.2.4、开始针对问题询问问题让 AI 修改

修改完成,展示图片:

3.2.5、还是没有显示图片,继续让 AI 微调
这个时候,图片还是没有显示,通过日志看到了无法显示主界面,容器或 airui 对象不存在

看了下代码,经过分析能显示出来屏幕的话,那么 airui.show 应该就是不存在的,然后让 AI 去分析一下去修改一下,这一步在使用上其实修改不修改都没什么问题。不影响使用,但是为了代码规范,还是让 AI 去修改一下吧

3.2.6、显示出来图片了,但是大小显示不完全,而且代码有报错,继续让 AI 去修改调试


让 AI 去修改报错,然后去修改图片

修复完成点击保留,然后继续烧录

3.2.7、代码修复完成,没有报错,且图片显示正常
经过 AI 修复,现在代码已经可以正常运行,没有报错,图片和屏幕也显示正常,但是我想标题的环境检测系统字体稍微大一些,且居中显示,下面的系统正常运行中也大一些

AI 修改完成,烧录固件

3.2.8、发现字体没有改变,继续让 AI 修改
这个时候,下面的字体已经变大了,但是环境检测系统没有改变,也没有居中,让 AI 继续去修改


这个时候已经修改成了正确的常量,但是发现其他的也没有修改,继续让 AI 把所有的都修改了


修改完成,点击保留,然后烧录

烧录之后正常显示,所有内容都居中显示了,但是环境检测的字体没有改变,继续让 AI 修复


AI 修改完成,发现字体的 Key 值是用的 size,实际上应该是 font_size,AI 开始修改这个问题,然后把所有的字体都做了修改,点击保留,然后开始烧录

烧录完成,图片看起来没有什么太大问题

3.2.9、UI 调试完成
至此,我们的 UI 已经调试完成,现在开始调试数据流
3.3 数据流的处理
3.3.1 把传感器手册的交互数据发给 AI
TVOC 的通讯协议:
举例:读取设备地址0x01的TVOC值
问询帧(16进制):
| 地址码 | 功能码 | 返回有效字节数 | TVOC 值(高字节) | TVOC 值(低字节) | 校验码低位 | 校验码高位 |
|---|---|---|---|---|---|---|
| 0x01 | 0x03 | 0x02 | 0x02 | 0x92 | 0x38 | 0x89 |
应答帧(16进制):(例如读到TVOC值为658ppb)
| 地址码 | 功能码 | 返回有效字节数 | TVOC 值(高字节) | TVOC 值(低字节) | 校验码低位 | 校验码高位 |
|---|---|---|---|---|---|---|
| 0x01 | 0x03 | 0x02 | 0x02 | 0x92 | 0x38 | 0x89 |
TVOC值计算:
TVOC值:292H(十六进制=658=>TVOC=658ppb)
3.3.2 温湿度传感器的通讯协议以及数据处理方式
连续读取温湿度命令帧(0x04)
| 从机地址 | 功能码 | 寄存器地址高字节 | 寄存器地址低字节 | 寄存器数量高字节 | 寄存器数量低字节 | CRC 高字节 | CRC 低字节 |
|---|---|---|---|---|---|---|---|
| 0x01 | 0x04 | 0x00 | 0x01 | 0x00 | 0x02 | 0x20 | 0x0B |
从机响应数据帧
| 从机地址 | 功能码 | 字节数 | 温度高字节 | 温度低字节 | 湿度高字节 | 湿度低字节 | CRC 高字节 | CRC 低字节 |
|---|---|---|---|---|---|---|---|---|
| 0x01 | 0x04 | 0x04 | 0x01 | 0x31 | 0x02 | 0x22 | 0x2A | 0xCE |
湿度值=0x222,转换成十进制546,实际湿度值=546/10=54.6%;
温度值=0x131,转换成十进制305,实际温度值=305/10=30.5°C
注:温度是有符号16进制数,温度值=0xFF33,转换成十进制-205.
实际温度=-20.5°C;
把图片和文案喂给 AI,然后开始让 AI 帮忙生成数据流

3.3.3 这个时候 AI 自动生成了,但是格式并不对

3.3.4 让 AI 按照格式继续修改

3.3.5 这个时候,输出了一个新的符合 iRTU 数据流的代码

3.3.6 然后我们把 AI 生成的数据流复制到 iRTU 的发送数据流里面

3.3.7 然后我们就开始烧录代码

3.3.8 这个时候可以正常读取出来,但是 TVOC 的值显示的比较异常
但是通过检查返回数据十六进制 02030219D0F648,16 进制 19D0 是十进制 6608 没问题的,但是经过 AI 查询,这个值明显不太对

3.3.9 经过和 TVOC 的店家沟通,正常的 TVOC 设备是需要预热 24H 才可以

3.3.10 这个时候我们的服务器端也可以看到数据有正常上传
所以数据流上传数据目前是没有什么问题了

3.3.11 开始让 AI 把数据显示到屏幕上面
所以当前输出这么大的 ppb 值是正常情况,我们的数据流处理数据功能是正常的了,现在我们开始让 AI 把数据流处理过后的数据,显示到屏幕上面

3.3.12 但是经过烧录发现,并没有更新
而且我感觉在数据流里面调用接口去修改,不如直接用 sys.publish 和 sys.subscribe 去处理更简单了,让 AI 用这种方式去修改一下看看吧


3.3.13 修改成功,保留 airui_main 里面的代码
复制新修改的数据流到网页端,烧录模块,这个时候,我们发现日志有报错,把报错的内容发给 AI,让他去解决


3.3.14 修改完成,保留代码,然后烧录
这个时候我们的数据已经可以正常的同步上去了,但是 TVOC 值显示异常,这个值确实也是异常,看下代码处理部分,可以对这个值做下修改




3.3.15 修改完成之后保留烧录代码,但是遇到了新的问题
显示了温湿度的情况下,TVOC 值会变成 0,显示了 TVOC 值的情况下,温湿度又会变成 0,让 AI 修改一下这个 BUG



3.3.16 点击保留,然后烧录固件,这个时候服务器数据正常,温湿度读取正常,屏幕显示正常
那么本次的 AI+iRTU+AirUI+485 设备开发就相当成功了。


3.3.17 经过长时间放置,TVOC 值已经正常显示了

四、总结
基于 Air8000A 开发板、AirUI 框架、iRTU 及 AirCloud 平台,我们通过与 AI 协同,建立起从嵌入式端到云端的全栈开发范式。AI 作为开发伙伴,能将需求精准转化为端云一体的稳定解决方案,提升了环境监测系统的交付效率与可靠性。
审核编辑 黄宇
-
源码
+关注
关注
8文章
689浏览量
31457 -
LuatOS
+关注
关注
0文章
169浏览量
2745
发布评论请先 登录
如何利用SPI数据实时反馈调整锡膏印刷参数?
PC 端 LuatOS 模拟器使用教程:AirUI 免硬件调试
Air8000 BLE外围模式全解析:数据收发实战指南!
手把手教你 Air8000 模块 CAN 接口开发与配置实战全攻略
一招破解音频硬件困局:Air8000参考设计让开发零门槛
BLE 5.4时代下,Air8000蓝牙通知与手机读写操作实战攻略
揭秘Air8000对讲黑科技:AirTalk+MQTT开发示例深度解析
是否必须使用LuatIO?Air8000 GPIO配置与设计规范深度解析
高效开发:解锁Air8000 LuatOS softAP配网功能的核心技术!
Air8000蓝牙扫描实战:从代码解析到场景应用全攻略
开源即自由,Air8000—— Modbus功能全面开放源代码!
多功能+高扩展能力加持,Air8000开发板最新资料
技术篇——Air8000开发板,一站式满足多功能高扩展开发需求!
源码开放!基于iRTU+AirUI+Air8000A的环境数据实时检测与上传
评论