(IIC000)温湿度SHT30(范例)
一、LoRa节点上报格式
通过 IIc 接口采集温湿度传感器,并将采集到的传感器数据组织成 Json 格式通过 LoRa 传输上报给网关,上报格式如下:
{"LrAddr":1,"Dev":"IIc","Data":{"Humi":79.7,"Temp":26.8},"Err":null}
二、代码替换
- main.lua 模板代码位于开源网盘:
flexluadisk
->Software
-> 跨界微型LoRa网关
-> node
-> OTHERS_SENSOR
- 用户将下面的两个函数代码复制后,粘贴覆盖 main.lua 模板代码中的对应的两个函数代码即可
--传感器接口初始化
function SensorInit()
--设置sht3x传感器占用SCL0和SDA0引脚,并启动传感器以每秒出2个数据的频率工作,repeatability="HIGH"时精度最高
LIB_Sht3xConfig("IIC0","2","HIGH")
end
--读取传感器数据,获取到的json data数据形式可如下:
--{"Humi":79.7,"Temp":26.8}
function SensorGetValue()
err = "null" --err包含错误信息,如果没有错误,设置为"null"
--读取SHT30温湿度传感器数据
sht3x_flag,sht3x_temp,sht3x_humi = LIB_Sht3xGetResult()
if sht3x_flag == 1 then
--如果获取成功,data将是一条完整的json字符串
--%.1f 表示传感器结果只保留1位小数
data = string.format("{\"Humi\":%.1f, \"Temp\":%.1f}", sht3x_humi, sht3x_temp)
else
--如果获取失败,data设置为"null"
data = "null"
err = "Read sensor fail"
end
--返回结果
finish = 1 --finish=1表示传感器读取完成(无论是否成功)
return finish,data,err
end
- 最后将修改后的 main.lua 代码下载到虚拟tf卡中即可运行
三、传感器资料及采购来源
传感器说明书位于: flexluadisk
->Spec
-> IIC000
文件夹中。
采购来源:淘宝搜索SHT30 IIc温湿度传感器模块。
四、硬件接线
将 CMA 底板的 SCL0/SDA0/3V3/GND 引脚和传感 器连接即可。
五、LoRa节点参数配置
请结合实际需求,在上面提到的 main.lua 代码中修改LoRa的地址(LoraAddr),一般在1-65535,这样就可以识别某个具体的LoRa节点了参考如下:
----------------------配置信息------------------------
--Part0:LORA本机节点地址,及节点名称配置
LoraAddr = 1 --LORA本机节点地址,可为任意整数
LoraName = "IIc" --LORA节点名字,可以用来标识传感器类型
--Part1: LORA通信参数配置
SF = "SF9" --LoRa扩频因子设为"SF9"
BW = "BW125KHZ" --LoRa带宽125K
PRMB_LEN = 5 --LoRa发送前导数量=5
--Part2: 系统配置
SysSensorHeatTime = 5 --传感器上电后的预热时间,单位:秒,请查阅相应厂家的传感器说明书
SysWorkInterval = 20 --传感器采集周期,单位:秒,范围 3 ~ 15300 秒
SysSleepEn = 0 --0:不使用低功耗休眠 1:使用。该功能硬件上需结合SB-P10低功模块才能用
SysResetTime = 0 --0:不使用自动重启功能 ,大于0时启用,单位:秒。设备每隔SysResetTime秒会自动重启
提示
- 用户一般只需要设置
LoraAddr
即可,当然,LoraName
也可用来作为传感器的字符串标识。 - 低功耗模式:如果需要系统低功耗电池供电,那么需要在CMA底板焊接上P10低功耗模块,同时将
SysSleepEn
参数设置为1,这样系统将休眠SysWorkInterval
秒后自动唤醒工作并休眠,周而复始,休眠期间的电流可低至 3uA 以内,极大的延长电池续航。
注意
SysSensorHeatTime
这里默认为 5 秒,表示系统上电后过 5 秒后才采集传感器数据。如果 SysSleepEn
= 0,系统不采用低功耗模式时,这里将不会有太大问题。但如果采用低功耗模式时( SysSleepEn
= 1),每次系统工作都是重新上电,所以需要考虑到一些传感器从上电到有效数据输出的预热时间为多少秒,用户可以参考对应的传感器的说明书,并将这个预热时间设置给 SysSensorHeatTime
参数即可。