当前位置: 首页 > news >正文

东阿网站建设爬虫搜索引擎

东阿网站建设,爬虫搜索引擎,网站右键禁止,做房地产一级市场的看什么网站目录 一、概述 二、单次数据采集模式的测量 1、配置说明 2、代码实现方式 三、周期性数据采集模式的测量 1、配置说明 2、代码实现方式 四、完整代码下载链接 一、概述 SHT3X是Sensirion公司推出的一款高精度、完全校准的温湿度传感器,基于CMOSens技术。它提…

目录

一、概述

二、单次数据采集模式的测量

1、配置说明

2、代码实现方式

三、周期性数据采集模式的测量

1、配置说明

2、代码实现方式

四、完整代码下载链接


一、概述

        SHT3X是Sensirion公司推出的一款高精度、完全校准的温湿度传感器,基于CMOSens技术。它提供了线性化、温度补偿的数字输出,具有宽电源电压范围、高速I2C接口以及可选的地址设置等特点。

  1. 高精度:SHT3X提供了高精度的温湿度测量,湿度误差在±3%(SHT30)或±2%(SHT31)以内,温度误差在±0.3℃(SHT30)或±0.2℃(SHT31)以内。
  2. 宽电源电压范围:SHT3X的供电电压范围宽达2.4V至5.5V,确保了与各种组装情况的兼容性。
  3. 高速I2C接口:SHT3X配备了高速I2C接口,通信速度可达1MHz,并支持两个用户可选地址,方便多个传感器在同一总线上工作。
  4. 快速启动和测量时间:SHT3X具有非常快的启动和测量时间,能够快速响应环境变化。

        SHT3X的引脚包括供电引脚(VDD/VSS)、复位引脚(nRESET)、地址引脚(ADDR)、以及I2C通信引脚(SCL/SDA)。其中,ADDR引脚用于设置传感器的地址,SCL和SDA引脚分别用于I2C通信的时钟和数据线。

        通过ADDR引脚的适当接线,可以选择I2C地址(见下表)。ADDR引脚可以连接到逻辑高电平或逻辑低电平。通过切换ADDR引脚上的电平,可以在运行期间动态改变传感器的地址。

SHT3x-DIScomes采用8引脚DFN封装,请参见下表所示。 

        SHT3X内部包含湿度传感器和温度传感器,通过ADC模块将模拟信号转换为数字信号。校准模块结合ADC模块输出的数值进行处理和线性化,然后通过I2C接口与外部通信。在传输过程中,每个数据值后面都会跟着CRC校验和,以确保数据的准确性。

二、单次数据采集模式的测量

1、配置说明

        在这种模式下,一个发出的测量命令触发一个数据对的采集。每个数据对包括一个16位温度值和一个16位湿度值(按此顺序)。在传输过程中,每个数据值后面总是跟着一个CRC校验和(参见下图所示)。在单次模式下,可以选择不同的测量命令。16位命令(参见下图所示)。它们在可重复性(低、中、高)和时钟延伸(使能或禁用)方面有所不同。重复性设置会影响测量持续时间,从而影响传感器的总能耗。

2、代码实现方式

在main主函数中调用初始化后,通过调用下面的函数实现两种方式的单次测量。

	// 演示带时钟拉伸的单次测量error = SHT3X_GetTempAndHumi(&temperature, &humidity, REPEATAB_HIGH, MODE_CLKSTRETCH, 50);if(error != NO_ERROR){} // 在这里处理错误 HAL_Delay(50);// 演示带轮询的单次测量,超时50毫秒error = SHT3X_GetTempAndHumi(&temperature, &humidity, REPEATAB_HIGH, MODE_POLLING, 50);if(error != NO_ERROR){} // 在这里处理错误 HAL_Delay(50);
//----------------------------------------------------------------------------
// 获取温度和湿度
etError SHT3X_GetTempAndHumi(float* temperature, float* humidity,etRepeatability repeatability, etMode mode,uint8_t timeout)
{etError error; // 错误代码switch(mode){    case MODE_CLKSTRETCH: // 以时钟拉伸模式获取温度和湿度error = SHT3X_GetTempAndHumiClkStretch(temperature, humidity,repeatability, timeout);break;case MODE_POLLING:    // 以轮询模式获取温度和湿度error = SHT3X_GetTempAndHumiPolling(temperature, humidity,repeatability, timeout);break;default:              error = PARM_ERROR; // 参数错误break;}return error; // 返回错误代码
}//----------------------------------------------------------------------------
// 使用时钟拉伸获取温度和湿度
etError SHT3X_GetTempAndHumiClkStretch(float* temperature, float* humidity,etRepeatability repeatability,uint8_t timeout)
{etError 		error;        // 错误代码uint16_t    rawValueTemp; // 从传感器获取的温度原始值uint16_t    rawValueHumi; // 从传感器获取的湿度原始值// 以时钟拉伸模式开始测量// 根据所需的可靠性使用相应的命令switch(repeatability){case REPEATAB_LOW:error = SHT3X_WriteCommand(CMD_MEAS_CLOCKSTR_L);break;case REPEATAB_MEDIUM:error = SHT3X_WriteCommand(CMD_MEAS_CLOCKSTR_M);break;case REPEATAB_HIGH:error = SHT3X_WriteCommand(CMD_MEAS_CLOCKSTR_H);break;default:error = PARM_ERROR; // 参数错误break;}// 如果没有错误,开始读取访问if(error == NO_ERROR) error = SHT3X_StartReadAccess();// 如果没有错误,读取温度原始值,读取湿度原始值uint32_t		rawValueTemp_rawValueHumi;if(error == NO_ERROR) error = SHT3X_Read4BytesAndCrc(&rawValueTemp_rawValueHumi, timeout);rawValueTemp = rawValueTemp_rawValueHumi>>16;rawValueHumi = rawValueTemp_rawValueHumi&0xffff;// 如果没有错误,计算温度(℃)和湿度(%RH)if(error == NO_ERROR){*temperature = SHT3X_CalcTemperature(rawValueTemp);*humidity = SHT3X_CalcHumidity(rawValueHumi);}return error; // 返回错误代码
}//----------------------------------------------------------------------------
// 使用轮询获取温度和湿度
etError SHT3X_GetTempAndHumiPolling(float* temperature, float* humidity,etRepeatability repeatability,uint8_t timeout)
{etError 		error;           // 错误代码uint16_t    rawValueTemp;    // 从传感器获取的温度原始值uint16_t    rawValueHumi;    // 从传感器获取的湿度原始值// 以轮询模式开始测量// 根据所需的可靠性使用相应的命令switch(repeatability){case REPEATAB_LOW:error = SHT3X_WriteCommand(CMD_MEAS_POLLING_L);break;case REPEATAB_MEDIUM:error = SHT3X_WriteCommand(CMD_MEAS_POLLING_M);break;case REPEATAB_HIGH:error = SHT3X_WriteCommand(CMD_MEAS_POLLING_H);break;default:error = PARM_ERROR; // 参数错误break;}// 如果没有错误,等待直到测量完成if(error == NO_ERROR){// 每1毫秒轮询一次,直到测量完成或超时while(timeout--){// 检查测量是否完成error = SHT3X_StartReadAccess();// 如果测量已完成 -> 退出循环if(error == NO_ERROR) break;HAL_Delay(1);}// 检查超时错误if(timeout == 0) error = TIMEOUT_ERROR; // 发生超时错误}// 如果没有错误,读取温度和湿度原始值if(error == NO_ERROR){uint32_t		rawValueTemp_rawValueHumi;if(error == NO_ERROR) error = SHT3X_Read4BytesAndCrc(&rawValueTemp_rawValueHumi, 0);rawValueTemp = rawValueTemp_rawValueHumi>>16;rawValueHumi = rawValueTemp_rawValueHumi&0xffff;}// 如果没有错误,计算温度(℃)和湿度(%RH)if(error == NO_ERROR){*temperature = SHT3X_CalcTemperature(rawValueTemp);*humidity = SHT3X_CalcHumidity(rawValueHumi);}return error; // 返回错误代码
}

三、周期性数据采集模式的测量

1、配置说明

        在这种模式下,一个发出的测量命令产生一个数据对流。每个数据对包括一个16位温度值和一个16位湿度值(按此顺序)。在周期模式下,可以选择不同的测量命令。相应的16位命令(参见下图所示)。它们在可重复性(低、中和高)和数据采集频率(每秒0.5、1、2、4、10次测量)方面有所不同。在此模式下不能选择时钟拉伸。数据采集频率和重复性设置会影响传感器的测量持续时间和电流消耗。

        测量数据的传输可以通过相应的16位命令(参见下图所示),启动读取数据。如果没有测量数据,I2C读取头会响应一个NACK时,通信停止。


2、代码实现方式

 在main主函数中调用初始化后,通过调用下面的函数实现两种方式的连续测量。

error = SHT3X_StartPeriodicMeasurment(REPEATAB_HIGH, FREQUENCY_1HZ);			// 读取测量缓冲区
error = SHT3X_ReadMeasurementBuffer(&temperature, &humidity);if(error == NO_ERROR)
{// 点亮蓝色LED以提示新温度和湿度值//LedBlueOn();//DelayMicroSeconds(10000); // 延时10毫秒//LedBlueOff(); // 关闭蓝色LED
}
else if (error == ACK_ERROR)
{// 如果缓冲区没有新值,则忽略此错误//error = NO_ERROR;
}
//----------------------------------------------------------------------------
// 启动周期性测量
etError SHT3X_StartPeriodicMeasurment(etRepeatability repeatability,etFrequency frequency)
{etError error;        // 错误代码// 根据所需的可靠性和频率使用相应的命令switch(repeatability){case REPEATAB_LOW: // 低可靠性switch(frequency){case FREQUENCY_HZ5:  // 低可靠性, 0.5 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_05_L);break;          case FREQUENCY_1HZ:  // 低可靠性, 1.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_1_L);break;          case FREQUENCY_2HZ:  // 低可靠性, 2.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_2_L);break;          case FREQUENCY_4HZ:  // 低可靠性, 4.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_4_L);break;          case FREQUENCY_10HZ: // 低可靠性, 10.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_10_L);break;          default:error = PARM_ERROR; // 参数错误break;}break;case REPEATAB_MEDIUM: // 中等可靠性switch(frequency){case FREQUENCY_HZ5:  // 中等可靠性, 0.5 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_05_M);break;case FREQUENCY_1HZ:  // 中等可靠性, 1.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_1_M);break;        case FREQUENCY_2HZ:  // 中等可靠性, 2.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_2_M);break;        case FREQUENCY_4HZ:  // 中等可靠性, 4.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_4_M);break;      case FREQUENCY_10HZ: // 中等可靠性, 10.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_10_M);break;default:error = PARM_ERROR; // 参数错误break;}break;case REPEATAB_HIGH: // 高可靠性switch(frequency){case FREQUENCY_HZ5:  // 高可靠性, 0.5 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_05_H);break;case FREQUENCY_1HZ:  // 高可靠性, 1.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_1_H);break;case FREQUENCY_2HZ:  // 高可靠性, 2.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_2_H);break;case FREQUENCY_4HZ:  // 高可靠性, 4.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_4_H);break;case FREQUENCY_10HZ: // 高可靠性, 10.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_10_H);break;default:error = PARM_ERROR; // 参数错误break;}break;default:error = PARM_ERROR; // 参数错误break;}return error; // 返回错误代码
}//----------------------------------------------------------------------------
// 读取测量缓冲区
etError SHT3X_ReadMeasurementBuffer(float* temperature, float* humidity)
{etError  		error;        // 错误代码uint16_t		rawValueTemp; // 从传感器获取的温度原始值uint16_t		rawValueHumi; // 从传感器获取的湿度原始值// 读取测量值error = SHT3X_WriteCommand(CMD_FETCH_DATA);if(error == NO_ERROR) error = SHT3X_StartReadAccess();  uint32_t		rawValueTemp_rawValueHumi;if(error == NO_ERROR) error = SHT3X_Read4BytesAndCrc(&rawValueTemp_rawValueHumi, 100);rawValueTemp = rawValueTemp_rawValueHumi>>16;rawValueHumi = rawValueTemp_rawValueHumi&0xffff;// 如果没有错误,计算温度(℃)和湿度(%RH)if(error == NO_ERROR){*temperature = SHT3X_CalcTemperature(rawValueTemp);*humidity = SHT3X_CalcHumidity(rawValueHumi);}return error; // 返回错误代码
}

四、完整代码下载链接

完整代码下载链接:https://download.csdn.net/download/qq_26043945/89982127

数据手册:https://sensirion.com/media/documents/213E6A3B/63A5A569/Datasheet_SHT3x_DIS.pdf

http://www.dt0577.cn/news/9438.html

相关文章:

  • 西安网站建设seo竞价培训机构好还是学校好
  • 网站的定义网络优化工程师主要做什么
  • 上海做网站的公司联系方式承接网络推广外包业务
  • 苗木企业网站源码google权重查询
  • 自定义wordpress首页底部信息广州seo网络推广员
  • 做教育网站需要规划哪些内容推广普通话手抄报模板
  • 温州做模具的网站营销型网站策划
  • 东营市做网站优化百度页面推广
  • 黄浦网站制作专业网站优化培训
  • 企业网站建设策划方案今天热点新闻
  • 网站开发心得网站seo推广员招聘
  • 中山网站建设金科网络营销建议
  • 个人在线视频播放网站搭建刷百度关键词排名优化
  • 上海制造网站公司推广软件哪个好
  • 开封做网站哪家好免费seo营销优化软件下载
  • 前端用什么框架做网站营销工具有哪些
  • 中老年适合在哪个网站做直播建站系统cms
  • win2012 网站建设安卓优化大师hd
  • 动漫网站怎么建设seo快速排名首页
  • 日本真人做a免费视频网站成品短视频app下载有哪些软件
  • 山西省政府网站建设互联网最赚钱的行业
  • ui设计方向网站建设目标网络推广优化
  • 网站做收录要多少长时间目前最火的自媒体平台
  • 淘宝客怎么自建网站做推广网站排名查询alexa
  • banner图设计沈阳专业seo
  • 云南省建设厅网站职称评审西安seo推广优化
  • 大足建网站的安徽新站优化
  • 网站建设全包品牌营销推广方案
  • 设计本接单曹操论坛seo
  • 企业网站建设需要哪些东西做整站优化