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

基于STM32与SHT31温湿度传感器实现方案

一、硬件连接配置

1.1 引脚连接方案
SHT31 STM32F103C8T6 VCC3.3V GND GND SCLPB6(I2C1_SCL)SDAPB7(I2C1_SDA)ADDR 悬空(地址0x44
1.2 硬件设计要点
  • 需添加4.7kΩ上拉电阻到SCL/SDA线
  • 电源引脚建议添加0.1μF去耦电容
  • 通信速率建议配置为400kHz

二、I2C通信协议实现

2.1 HAL库配置代码
// I2C初始化函数voidMX_I2C1_Init(void){hi2c1.Instance=I2C1;hi2c1.Init.ClockSpeed=400000;hi2c1.Init.DutyCycle=I2C_DUTYCYCLE_2;hi2c1.Init.OwnAddress1=0;hi2c1.Init.AddressingMode=I2C_ADDRESSINGMODE_7BIT;hi2c1.Init.DualAddressMode=I2C_DUALADDRESS_DISABLE;hi2c1.Init.OwnAddress2=0;hi2c1.Init.GeneralCallMode=I2C_GENERALCALL_DISABLE;hi2c1.Init.NoStretchMode=I2C_NOSTRETCH_DISABLE;if(HAL_I2C_Init(&hi2c1)!=HAL_OK){Error_Handler();}}
2.2 传感器指令集
#defineSHT31_ADDR0x44#defineSHT31_MEASURE_HIGH0x2400#defineSHT31_MEASURE_LOW0x2400#defineSHT31_READ0xE000#defineSHT31_SOFT_RESET0x30A2// 发送命令函数HAL_StatusTypeDefSHT31_SendCommand(uint16_tcmd){uint8_ttx_data[2]={cmd>>8,cmd&0xFF};returnHAL_I2C_Master_Transmit(&hi2c1,SHT31_ADDR<<1,tx_data,2,100);}

三、数据采集与处理

3.1 测量流程实现
floattemperature;floathumidity;voidSHT31_Read_Data(){uint8_trx_data[6]={0};// 发送测量命令SHT31_SendCommand(SHT31_MEASURE_HIGH);HAL_Delay(20);// 等待测量完成// 读取数据HAL_I2C_Master_Receive(&hi2c1,SHT31_ADDR<<1,rx_data,6,100);// CRC校验if(CRC8_Check(rx_data,2)!=rx_data[2]||CRC8_Check(rx_data+3,2)!=rx_data[5]){Error_Handler();// 数据校验失败}// 数据转换uint16_traw_temp=(rx_data[0]<<8)|rx_data[1];uint16_traw_humi=(rx_data[3]<<8)|rx_data[4];temperature=-45+175*(float)raw_temp/65535.0;humidity=100*(float)raw_humi/65535.0;}
3.2 CRC校验算法
uint8_tCRC8_Check(uint8_t*data,uint8_tlen){constuint8_tpolynomial=0x31;uint8_tcrc=0xFF;for(uint8_ti=0;i<len;i++){crc^=data[i];for(uint8_tj=0;j<8;j++){if(crc&0x80)crc=(crc<<1)^polynomial;elsecrc<<=1;}}returncrc;}

四、完整工程框架

4.1 主程序流程
intmain(void){HAL_Init();SystemClock_Config();MX_I2C1_Init();while(1){SHT31_Read_Data();// 显示数据(通过USART或LCD)printf("T:%.2fC H:%.2fRH\r\n",temperature,humidity);HAL_Delay(1000);}}
4.2 系统初始化
voidSystemClock_Config(void){RCC_OscInitTypeDef RCC_OscInitStruct={0};RCC_ClkInitTypeDef RCC_ClkInitStruct={0};RCC_OscInitStruct.OscillatorType=RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState=RCC_HSI_ON;RCC_OscInitStruct.PLL.PLLState=RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource=RCC_PLLSOURCE_HSI;RCC_OscInitStruct.PLL.PLLMUL=RCC_PLL_MUL12;HAL_RCC_OscConfig(&RCC_OscInitStruct);RCC_ClkInitStruct.ClockType=RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider=RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider=RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider=RCC_HCLK_DIV1;HAL_RCC_ClockConfig(&RCC_ClkInitStruct,FLASH_LATENCY_1);}

参考代码 STM32+SHT31温湿度传感器程序www.3dddown.com/csa/56446.html

五、完整代码结构

// main.c#include"main.h"#include"sht31.h"floattemperature,humidity;intmain(void){HAL_Init();SystemClock_Config();MX_I2C1_Init();MX_USART1_UART_Init();while(1){SHT31_Read_Data();Data_Filter();Check_Alert();printf("T:%.1fC H:%.1fRH\r\n",temperature,humidity);Save_Data();HAL_Delay(1000);}}

六、注意事项

  1. 电源稳定性:建议使用LDO稳压芯片提供3.3V电源
  2. PCB布局:SCL/SDA走线长度应小于20mm,避免直角转弯
  3. 固件升级:可通过SWD接口更新CRC校验算法版本
  4. 环境干扰:在工业现场建议添加金属屏蔽罩
http://www.cnnetsun.cn/news/82644.html

相关文章:

  • 33、Unix系统下SMB/CIFS文件共享访问指南
  • GESP认证C++编程真题解析 | B3863 [GESP202309 一级] 买文具
  • 9 个专科生开题报告工具,AI降重查重率推荐
  • 39、Samba故障排除指南
  • 【软考架构】滑动窗口限流算法的原理是什么?
  • FlutterToast跨平台通知组件终极指南:从零到专家级定制
  • CasperJS API测试终极指南:构建高效的数据一致性验证体系
  • uniapp+springboot基于微信小程序的学生宿舍报修系统的设计与实现_a1o96z7c
  • 知识产权企业选择CRM系统时,最应关注的核心功能是什么?
  • HyperDX ClickHouse物化视图:构建实时数据分析的终极加速引擎
  • Windows Server 2022官方镜像完整获取指南:从下载到验证的全流程
  • AndroidGen-GLM-4-9B:开启移动智能体新时代的革命性突破
  • 微服务架构下的分布式数据加密:SQLCipher实战指南
  • 国产开源,含20+视频AI算法模型,兼容GB28181、ONVIF、RTMP协议、私有化部署,10天搞定IoT物联网项目交付
  • 16、搭建 Asterisk VoIP 服务器全攻略
  • Apache Mesos集群运维实战:故障恢复与版本管理完全指南
  • 探索式测试的Session管理法:提升软件测试效率与可追溯性
  • 购物省钱参考:爱创猫电商优惠券领取方式
  • 12、Red Hat Enterprise Linux硬件分析与管理指南
  • 35、Linux 内核监控与调试:NUMA、AltSysRq 及 Kdump 全解析
  • DataEase开源BI工具完整指南:从零开始的数据可视化之旅
  • Gutenberg性能优化终极指南:零成本加速WordPress编辑器
  • ag-ui与LangGraph集成终极指南:构建企业级AI工作流的完整教程
  • 2026毕设ssm+vue基于架构的校园二手物品交易论文+程序
  • 手机强制开启USB调试模式终极指南:轻松解决设备连接难题
  • DataEase开源BI工具完整安装配置指南:从零开始快速部署
  • ReClassEx终极指南:免费开源的内存逆向分析神器
  • 物联网平台前端技术重构:从技术困境到用户体验的完美蜕变
  • 动态资源池化技术:让高价值软件许可“流动”起来的关键策略
  • 24、网络服务中的 SSH 与代理服务器使用指南