sht30使用心得自述

      sht30是盛世瑞恩生产的温湿度传感器,这个是一个瑞士企业。从sht10到sht31,盛世瑞恩的传感器还是不错了。

     小米的温湿度传感器使用的也是sht30.


     下面介绍一下使用方法。

     sht30最高支持1000k的传输速率。因此通讯时间非常短。

     sht30有两种读取数值的方法,我介绍一下使用iic的状态查询和数值查询方法。

1,状态查询。

       发送指令:0xF32D.

sht30使用心得自述_第1张图片

2,数值查询。发送指令0x2C06

     通过iic发送完毕之后,sht30返回的数值是6个字节的数组

1[温度高八位]

2[温度第八位]

3[温度crc校验]

4[湿度高八位]

5[湿度第八位]

6[湿度crc校验]




uint8_t sht_common_generate_crc(uint8_t *data, uint16_t count)
{
    uint8_t crc = CRC_INIT;
    uint8_t current_byte;
    uint8_t crc_bit;

    /* calculates 8-Bit checksum with given polynomial */
    for (current_byte = 0; current_byte < count; ++current_byte)
    {
        crc ^= (data[current_byte]);
        for (crc_bit = 8; crc_bit > 0; --crc_bit)
        {
            if (crc & 0x80)
                crc = (crc << 1) ^ CRC_POLYNOMIAL;
            else
                crc = (crc << 1);
        }
    }
    return crc;
}
//下面的函数是采集的函数
uint8_t* SHT30_Read_T_H(uint8_t* result)
{
    if(SensorI2C_writeRead(CMD_MEASURE_HPM, 2, result, 6))   //CMD_MEASURE_HPM是数组{0x2c,0x06}
    {
        if((sht_common_generate_crc(result, 2)==result[2]) && (sht_common_generate_crc(result+3, 2)==result[5]))//crc校验
        {
            uint32_t tem,hum;
            tem = (result[0]<<8) | result[1];//温度拼接
            hum = (result[3]<<8) | result[4];//湿度拼接

            tem = ((21875 * tem) >> 13) - 45000;//温度计算
            hum = ((12500 * hum) >> 13);//湿度计算
            //因为是指针函数,我返回了温度和湿度的数组,这个可以根据自己的需求去写
            result[0] = tem/10000;
            result[1] = tem%10000/1000;
            result[2] = tem%1000/100;
            result[3] = tem%100/10;
            result[4] = tem%10;

            result[5] = hum/10000;
            result[6] = hum%10000/1000;
            result[7] = hum%1000/100;
            result[8] = hum%100/10;
            result[9] = hum%10;

            return result;
        }
    }
    return NULL;
}

下面是数据手册的计算图片

sht30使用心得自述_第2张图片


下面是我读到的东西。

sht30使用心得自述_第3张图片


    下面用最简单的方式说一下。。。单片机通电。sht接上电源,接上iic接口道单片机上。单片机初始化,单片机初始化iic。iic发送0x2c06到(地址0x44)sht30,然后就像我的程序贴图那样处理。

    具体程序自己去修改,因为处理器不同,iic部分不写。

附:盛世瑞文网址


                                                           莫九玉    2018.1.25




你可能感兴趣的:(sht30,温湿度传感器)