[嵌入式开发模块]SHT30/20 温湿度传感器 驱动模块

本文详细介绍了SHT30温湿度传感器的驱动设计与实现,包括通信协议、驱动模块结构、代码示例及调试技巧。适用于嵌入式系统开发人员快速掌握SHT30的使用。

前言

干活中用到了SHT30,其实是对应的转串口板子,写了相应的驱动程序,放出来。

好像SHT20和30几乎是一样的,所以不用纠结这个。

这个模块本身的协议比较简单,所以模块的驱动也很小巧。

驱动被设计为拥有指令器和接收机两个部分,完全被动方式运行,与具体的平台解耦。

SHT30简介

概述

SHT20是由瑞士推出的数字温湿度传感器,基于领先世界的CMOSens数字传感技术,具有极高的可靠性和卓越的长期稳定性。全量程标定,两线数字接口,可与单片机直接相连,大大缩短研发时间、简化外围电路并降低费用。此外,体积微小、响应迅速、低能耗、可浸没、抗干扰能力强、温湿一体,兼有露点测量,性价比高,使该产品能够适于多种场合的应用。

通信协议

(1) 串口通信参数

电平:TTL
波特率:115200
停止位:1
校验位:0

(2)输出格式

输出字符串格式: Temp = XX.XXX Hum = XX.XXX\r\n

(3)控制指令:下面指令需要发送两次,第一次使模块由工作模式进入到配置模式,第二次发送才是设置模块。
设置回传速度:

设置报警值(这个驱动没有实现):

驱动文件

SHT30Driver.h

/*
*******************************************************************************************
*
*                                    SHT30 DRIVER MODULE
*                                       SHT30驱动模块
*
* File : SHT30Driver.h
* By   : Lin Shijun(https://blog.csdn.net/lin_strong)
* Date : 2020/06/17
* version: V1.1
* History: 2020/04/29 V1.0 the prototype
*          2020/06/17 V1.1 find that SHT30's data  is  "XXXX Hum = XXXX"
*                           but not "XXXX Humi = XXXX" in SHT20, so fix it.
* Note   : The SHT30 driver is divided into two part, i.e. cmder and recver. The cmder is for
*          sending the SHT30 command. The recver is for resolving data from the SHT30.
********************************************************************************************
*/

#ifndef   SHT30DRIVER_H
#define   SHT30DRIVER_H

/*
******************************************************************************************
*                                    INCLUDE
******************************************************************************************
*/

#include <stdint.h>

/*
******************************************************************************************
*                                    DEBUG CONFIGURATION
******************************************************************************************
*/

// to enable debug messages in this module
// #define SHT30_DEBUG

/*
******************************************************************************************
*                                       TYPE DEFINE
******************************************************************************************
*/

typedef struct SHT30STRUCT_DATA{
   
   
  float temp;   // °C
  float humi;   // percent
} SHT30Data;

typedef void (* SHT30FUNC_DATA)(SHT30Data data);

typedef enum {
   
   
  SHT30SR_10Hz ,
  SHT30SR_5Hz  ,
  SHT30SR_2Hz  ,
  SHT30SR_1Hz  ,
  SHT30SR_0d5Hz,  // 0.5Hz
  SHT30SR_0d2Hz,  // 0.2Hz
  SHT30SR_0d1Hz,  // 0.1Hz
}SHT30SampleRate;
/*
************************************************************************************
*                                    INTERFACES
************************************************************************************
*/

void SHT30Cmder_Init(void (* outChannel)(uint8_t *buf, uint16_t len));
void SHT30Cmder_Destroy(void);
void SHT30Cmder_setSampleRate(SHT30SampleRate value);

void SHT30Recver_Init(SHT30FUNC_DATA onRecvData);
// Call it to modify the call-back function.
void SHT30Recver_RegisterCallback(SHT30FUNC_DATA onRecvData);
void SHT30Recver_CleanupBuffer(void);
// Feed the receiver every byte received so that receiver can notify user
// the resolved data for each frame.
void SHT30Recver_Feed(uint8_t nextByte);
void SHT30Recver_Destroy(void);

#endif  // of SHT30DRIVER_H

SHT30Recver.c

/*
*******************************************************************************************
*
*                                   SHT30 RECEIVER MODULE
*                                   SHT30驱动模块 - 接收机
*
* File : SHT30Recver.c
* By   : Lin Shijun(https://blog.csdn.net/lin_strong)
* Date : 2020/06/17
* version: V1.1
* History: 2020/06/17
* Note   : 
********************************************************************************************
*/

/*
*********************************************************************************************
*                                       INCLUDES
*********************************************************************************************
*/

#include <string.h>
#include <ctype.h>
#include "SHT30Driver.h"
#include "RxMac.h"

#ifndef SHT30_DEBUG
#undef _DEBUG
#endif

#include "DebugMsg.h"

/*
*********************************************************************************************
*                                       LOCAL FUNCTION
*********************************************************************************************
*/

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值