SHT30 IIc 接口 类型(S001B)
[TOC]
一、实现功能简介
基于 FlexLua 《DTU01万能采集器》实现对 IIc 接口的 SHT30 温湿度传感器的采集,并可通过下面八种无线/有线通信方式中的一种将传感器数据上报至云平台服务 器,八种方式分别为:
- 4G 无线 Mqtt 主动传输
- 4G 无线 TCP 主动传输
- WiFi 无线 Mqtt 主动传输
- WiFi 无线TCP 主动传输
- Lora 无线 主动传输
- Lora 无线 被动传输
- 以太网有线主动传输
- 以太网有线被动传输
二、传感器简介
SHT30 是一款 IIc 接口的数字温湿度传感器,本文中采用的是广州达林科技的SHT30温湿度传感器外壳型号为THS10,选择它是因为外壳美观且防水,当然也可以选择其他厂家的SHT30温湿度传感器,市面上有很多可以供选择,只要是 SHT30的即可。该传感器可应用于众多领域,比如仓储,物流,冷链,室内温度,农业大棚。
该传感器说明书资料可在
{FlexLua开源网盘}
->{Spec}
->{S001B}
文件夹中找到。
三、DTU01 万能采集器介绍
基于《DTU01采集器》实现采集市面上常见的 IIc 接口的 SHT30 温湿度传感器数据,并将采集到的传感器数据以 Json 字符串的形式通过可选的 4G/WiFi/以太网/Lora 其中一种方式发送 给网关或云服务器。在需要电池供电的场景下,还可通过给 DTU01 增加低功耗模块以实现周期性休眠采集,休眠电流可低至 3uA 以内,以实现在电池供电场景下的几个月甚至几年的周期性长期采集。
关于 DTU01 万能采集器:
《DTU01万能采集器》内部核心主控采用 ShineBlink C2M 低代码物联网核心模组,使用该主控核心模组可轻松采集大量市面上常见的传感器数据,并可自由选择通过 4G/WiFi/以太网/Lora 中的一种方式进行数据通信。本采集器硬件资料和源代码开放且源码极其精简,所以开发者无论是否有嵌入式单片机开发经验,皆可轻松基于源码进行二次开发(例如:新功能增加、边缘数据处理、逻辑判断、特殊协议解析等)。当然如果使用者对编程不感兴趣也可直接参考下面的技术指导文章即可实现大部分场景的需求。
四、DTU01 硬件要求
由于 DTU01 的硬件接口是可配置的,所以需要确认一下您手上的 DTU01 采集器是否满足要求,如果确认已满足就无需再做任何操作,否则请按《DTU01硬件使用指导书》完成下面的硬件配置:
- DTU01 电路板上的 ‘A’ 和 ‘B’ 引脚需配置成 IIc 接口的 SDA 和 SCL,即 S2 选择
- DTU01 电路板上的 ‘+’ 和 ‘-’ 电源输出引脚需配置成 3.3v 输出(注意在 DTU01 电路板上 ‘+’ 和 ‘-’ 对应 ‘VIN’ 和 ‘GND’)
《DTU01硬件使用指导书》可在
{FlexLua开源网盘}
->{Hardware}
->{DTU01万能采集器}
->{DTU01硬件使用指导书}
文件夹中找到。
五、传感器采集核心代码
完成 SensorInit() 和 SensorGetValue() 两个函数的构造以实现IIc 接口的 SHT30 温湿度传感器的采集,并将这两个函数代码覆盖至对应的 main.lua 源代码文件中即可实现传感器的采集。
--采集接口初始化函数
function SensorInit()
--设置sht3x传感器占用SCL0和SDA0引脚,并启动传感器以每秒出2个数据的频率工作,repeatability="HIGH"时精度最高
LIB_Sht3xConfig("IIC0","2","HIGH")
end
--读取IIc 接口的 SHT30 温湿度传感器数据,获取到的json data数据形式可如下:
--{"Humi":79.7,"Temp":26.8},表示:湿度=79.7%,温度=26.8度
function SensorGetValue()
err = "null" --err包含错误信息,如果没有错误,设置为"null"
--读取传感器数据
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
六、八种采集传输方式实现(选一种阅读即可)
(1)4G Mqtt 主动传输(直流供电+电池供电)
周期性采集 IIc 接口的 SHT30 温湿度传感器数据并转换成可读性更强的 Json 字符串,然后通过 4G Mqtt 发送至云端,Json 字符串示例如下:
{"Dev":"TH","Data":{"Humi":79.7,"Temp":26.8},"Err":null}
实现方法如下:
- 请仔细阅读参考 DTU01 的《软件使用指导书(OTHERS_4G_MQTT)》,并在 main.lua 源代码文件中修改好"配置信息"
- 将第五节中提供的"传感器采集核心代码"覆盖至相应的 main.lua 源代码文件中
- 注意:如果需要使用低功耗电池供电功能,还需在配置信息中配置 SysSleepEn 参数
指导书文件和main.lua源代码文件均位于:
{FlexLua开源网盘}
->{Software}
->{DTU01万能采集器}
->{Others}
->{4G主动发送}
->{MQTT}
文件夹中
(2)4G TCP主动传输(直流供电+电池供电)
周期性采集 IIc 接口的 SHT30 温湿度传感器数据并转换成可读性更强的 Json 字符串,然后通过 4G Tcp 发送至云端,Json 字符串示例如下:
{"Dev":"TH","Data":{"Humi":79.7,"Temp":26.8},"Err":null}
实现方法如下:
- 请仔细阅读参考 DTU01 的《软件使用指导书(OTHERS_4G_TCP)》,并在 main.lua 源代码文件中修改好"配置信息"
- 将第五节中提供的"传感器采集核心代码"覆盖至相应的 main.lua 源代码文件中
- 注意:如果需要使用低功耗电池供电功能,还需在配置信息中配置 SysSleepEn 参数
指导书文件和main.lua源代码文件均位于:
{FlexLua开源网盘}
->{Software}
->{DTU01万能采集器}
->{Others}
->{4G主动发送}
->{TCP}
文件夹中
(3)WiFi Mqtt 主动传输(直流供电+电池供电)
周期性采集 IIc 接口的 SHT30 温湿度传感器数据并转换成可读性更强的 Json 字符串,然后通过 WiFi Mqtt 发送至云端,Json 字符串示例如下:
{"Dev":"TH","Data":{"Humi":79.7,"Temp":26.8},"Err":null}
实现方法如下:
- 请仔细阅读参考 DTU01 的《软件使用指导书(OTHERS_WIFI_MQTT)》,并在 main.lua 源代码文件中修改好"配置信息"
- 将第五节中提供的"传感器采集核心代码"覆盖至相应的 main.lua 源代码文件中
- 注意:如果需要使用低功耗电池供电功能,还需在配置信息中配置 SysSleepEn 参数
指导书文件和main.lua源代码文件均位于:
{FlexLua开源网盘}
->{Software}
->{DTU01万能采集器}
->{Others}
->{WiFi 主动发送}
->{MQTT}
文件夹中
(4)WiFi TCP主动传输(直流供电+ 电池供电)
周期性采集 IIc 接口的 SHT30 温湿度传感器数据并转换成可读性更强的 Json 字符串,然后通过 WiFi Tcp 发送至云端,Json 字符串示例如下:
{"Dev":"TH","Data":{"Humi":79.7,"Temp":26.8},"Err":null}
实现方法如下:
- 请仔细阅读参考 DTU01 的《软件使用指导书(OTHERS_WIFI_TCP)》,并在 main.lua 源代码文件中修改好"配置信息"
- 将第五节中提供的"传感器采集核心代码"覆盖至相应的 main.lua 源代码文件中
- 注意:如果需要使用低功耗电池供电功能,还需在配置信息中配置 SysSleepEn 参数
指导书文件和main.lua源代码文件均位于:
{FlexLua开源网盘}
->{Software}
->{DTU01万能采集器}
->{Others}
->{WiFi 主动发送}
->{TCP}
文件夹中