赞
踩
本文章里的素材来源参考于:https://www.flexlua.com/FL-S/S000/S000D
用 Lua 低代码的方式开发硬件,仅需复制粘贴代码即可实现本采集装置,如果稍微具备一些编程能力还可创造更丰富的功能。
本装置的实现是基于一款 I2C 接口的红外非接触式测温传感器(W-TRS-5.5D)和 FlexLua 的 DUT01 万能采集器(内置 LoRa 通信模块)。
基于 DTU01 万能采集器实现采集 I2C 接口的 非接触式红外测温传感器数据,并将采集到的传感器数据以 Json 字符串的形式通过可选的 4G/WiFi/以太网/LoRa 其中一种方式发送给网关或云服务器。在需要电池供电的场景下,还可通过给 DTU01 增加低功耗模块以实现周期性休眠采集,休眠电流可低至 3uA 以内,以实现在电池供电场景下的几个月甚至几年的周期性长期采集。
这里我们仅需实现 LoRa 通信即可,其他方式可参考官方资料实现。
--采集接口初始化函数
function SensorInit()
--设置红外测温传感器占用SCL0和SDA0引脚,并启动传感器以每秒输出5组数据的频率工作
LIB_IfrTempConfig("IIC0")
end
--读取IIc 接口的 非接触式红外测温传感器数据,获取到的json data数据形式可如下:
--{"AmbTemp":29.3, "ObjTemp":26.8, "BodyTemp":36.8},表示:环境温度=29.3度,物体温度=26.8度,人体温度=36.8度
function SensorGetValue()
err = "null" --err包含错误信息,如果没有错误,设置为"null"
--查询传感器是否出数
ifr_flag,AmbTemp,Vol,ObjTemp,BodyTemp = LIB_IfrTempGetResult()
if ifr_flag == 1 then
--如果获取成功,data将是一条完整的json字符串
--%.1f 表示传感器结果只保留1位小数
--将传感器输出的环境温度,物体温度,以及人体温度组合成Json字符串
data = string.format("{\"AmbTemp\":%.1f, \"ObjTemp\":%.1f, \"BodyTemp\":%.1f}", AmbTemp, ObjTemp, BodyTemp)
else
--如果获取失败,data设置为"null"
data = "null"
err = "Read sensor fail"
end
--返回结果
finish = 1 --finish=1表示传感器读取完成(无论是否成功)
return finish,data,err
end
这里的源代码用来展示采集器采集传感器数据的核心过程,完整的源代码可以在 FlexLua 官网的 S000D 文档里找到。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。