STM32驱动SHT30温湿度传感器

news2024/11/20 10:45:03

这次分享stm32驱动sht30温湿度传感器的方法和代码,这款传感器是仪器仪表行业上常用的一款型号。

目录

1.配置IO

2.写上通用的IIC协议

3.主函数获取数据


1.配置IO

我用到的IO口是

PB15---SCL

PB14---SDA

IIC中SDA和SCL引脚是开漏电路形式,所以SDA和SCL都要接上拉电阻,当总线空闲,SDA和SCL都是高电平

2.写上通用的IIC协议


//读出温湿度
void SHT30_read_result(u8 addr,u8 type)
{
	int ret = 0;
	u16 tem,hum;
	u16 buff[6];
		
	//发送指令为0x2C06(默认)
	IIC_Start();
	IIC_SendByte(addr<<1 | write);//写7位I2C设备地址加0作为写取位,1为写取位
	IIC_wait_ACK();
	if(type == TYPE_SHT40)
	{
		//SHT40
		IIC_SendByte(0xFD);
		IIC_wait_ACK();
	}
	else
	{
		//SHT30
		IIC_SendByte(0x2c);
		IIC_wait_ACK();
		IIC_SendByte(0x06);
		IIC_wait_ACK();
	}

	IIC_Stop();
	Delay_ms(50);
	
	IIC_Start();
	IIC_SendByte(addr<<1 | read);//写7位I2C设备地址加1作为读取位,1为读取位
	ret = IIC_wait_ACK();
	if(!ret)
	{
	  Delay_ms(1);
		buff[0]=IIC_RcvByte();//返回温度高8位
		IIC_ACK();
		buff[1]=IIC_RcvByte();//返回温度低8位
		IIC_ACK();
		buff[2]=IIC_RcvByte();//温度crc校验位
		IIC_ACK();
		buff[3]=IIC_RcvByte();//返回湿度高8位
		IIC_ACK();
		buff[4]=IIC_RcvByte();//返回湿度低8位
		IIC_ACK();
		buff[5]=IIC_RcvByte();//湿度crc校验位
		IIC_NACK();
		IIC_Stop();
	}

	tem = ((buff[0]<<8) | buff[1]);
	hum = ((buff[3]<<8) | buff[4]);

	if(type == TYPE_SHT40)
	{
 		//温湿度的计算方法如下	
		Temperature= 175.0*(float)tem/65535.0-45.0 ;
		Humidity= 125.0*(float)hum/65535.0 - 6;
	}
	else
	{
	  	//温湿度的计算方法如下	
		Temperature= 175.0*(float)tem/65535.0-45.0 ;
		Humidity= 100.0*(float)hum/65535.0;
	}

	hum=0;
	tem=0;	
}

3.主函数获取数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序框架(概念、工作原理、发展及应用)

引言 移动应用的普及使得用户对于轻量级、即时可用的应用程序需求越来越迫切。在这个背景下&#xff0c;小程序应运而生&#xff0c;成为一种无需下载安装、即点即用的应用形式&#xff0c;为用户提供了更便捷的体验。小程序的快速发展离不开强大的开发支持&#xff0c;而小程…

Java+SpringBoot+Vue:瑜伽馆管理的黄金组合

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

中科数安 | 公司办公终端、电脑文件防泄密管理系统——自动智能透明加密保护核心文件数据\资料,防止外泄

中科数安提供的电脑文件防泄密管理系统是一种专门设计用于保护企业内部敏感文件不被非法复制、传播或泄露的安全软件。这种管理系统采用了自动智能透明加密技术&#xff0c;可以对核心文件数据和资料进行保护&#xff0c;防止外泄。 ——广东中科数安信息有限公司—— www.weae…

半导体行业案例:Jira与龙智插件助力某半导体企业实现精益项目管理

近日&#xff0c;龙智Atlassian技术团队收到了国内一家大型半导体企业的感谢信。龙智团队提供的半导体行业项目管理解决方案和服务受到了客户的好评&#xff1a; 在龙智团队的支持下&#xff0c;我们的业务取得了喜人的成果和进步。龙智公司的专业服务和产品&#xff0c;是我们…

【UE 材质】水晶材质

效果 步骤 1. 先在Quixel Bridge上下载冰纹理 2. 新建一个材质&#xff0c;这里命名为“M_Ice”并打开&#xff0c;添加如下纹理采样节点 继续添加如下节点 此时效果如下&#xff1a; 可以看到此时的材质颜色比较浅&#xff0c;如果希望颜色深一点可以继续添加如下节点 此时效…

三、西瓜书——神经网络

一、神经元模型 在M-P神经网络模型中&#xff0c;神经元接 收到来自n个其他神经元传递过来的输入信号&#xff0c;这些输入信号通过带权重的连接(connection)进行传递&#xff0c;神经元接收到的总输入值将与神经元的阈值进行比较&#xff0c;然后通过“激活函数”(activation …

大数据集群管理软件 CDH、Ambari、DataSophon 对比

文章目录 引言工具介绍CDHAmbariDataSophon 对比分析 引言 大数据集群管理方式分为手工方式和工具方式&#xff0c;手工方式一般指的是手动维护平台各个组件&#xff0c;工具方式是靠大数据集群管理软件对集群进行管理维护。本文针对于常见的方法和工具进行比较&#xff0c;帮助…

naive-ui-admin 表格去掉工具栏toolbar

使用naive-ui-admin的时候&#xff0c;有时候不需要显示工具栏&#xff0c;工具栏太占地方了。 1.在src/components/Table/src/props.ts 里面添加属性 showToolbar 默认显示&#xff0c;在不需要的地方传false。也可以默认不显示 &#xff0c;这个根据需求来。 2.在src/compo…

逆向案例二:关键字密文解密,自定义的加密解密。基于企名片科技的爬取。

import requests import execjsfor i in range(4):i i1url https://vipapi.qimingpian.cn/Activity/channelInformationByChannelNamedata {channel_name: 24新声,page: f{i},num: 20,unionid: W9wLD4rHIZrB3GLTUncmHgbZcEepR78xJa5Zit6XTMtata86DehdxDt/fDbcHeeJWqqIs6k…

Mysql8.0 安装错误:只有在任务处于完成状态(RanToCompletion、Faulted 或 Canceled)时才能释放它。

错误信息&#xff1a; Attempting to start service MySQL80... Failed to start service MySQL80. 只有在任务处于完成状态(RanToCompletion、Faulted 或 Canceled)时才能释放它。 Ended configuration step: Starting the server 刚开始以为是3306端口被占用了&#xff0c;然…

【青龙面板Ck工具】RabbitPro—快捷扫码或短信获取ck

注意&#xff1a;本教程基于Cent OS7.6系统&#xff0c;Faker一键安装版Docker 2.11.3青龙配置&#xff0c;如有不同配置自行注意&#xff0c;经测试基本可兼容。 第一步 配置Docker 由于RabbitPro打包较大&#xff0c;我们先配置一下Docker国内源&#xff0c;加速下载。 打…

C++多线程通信

多线程通信 引言区别活锁什么是活锁与死锁的区别如何避免活锁 多线程通信示例运行结果 引言 多线程同步与多线程通信实质上是两种相互关联但又不完全相同的东西。本文注重多线程同步与多线程通信的区别&#xff0c;同时重点讲述多线程通信中的消息队列。 区别 多线程通信通常…

Springboot+vue的考务报名平台(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的考务报名平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的考务报名平台&#xff0c;采用M&#xff08;model&#xff0…

SpringMVC了解

1.springMVC概述 Spring MVC&#xff08;Model-View-Controller&#xff09;是基于 Java 的 Web 应用程序框架&#xff0c;用于开发 Web 应用程序。它通过将应用程序分为模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&a…

Flink SQL 中的流式概念:状态算子

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

【MySQL面试复习】了解过索引吗?(索引的底层原理)/B 树和B+树的区别是什么?

系列文章目录 在MySQL中&#xff0c;如何定位慢查询&#xff1f; 发现了某个SQL语句执行很慢&#xff0c;如何进行分析&#xff1f; 系列文章目录了解过索引吗&#xff1f;(索引的底层原理)B 树和B树的区别是什么&#xff1f; 了解过索引吗&#xff1f;(索引的底层原理) 如果没…

K8S之Deployment的介绍和使用

Deployment的理论和实操 Deployment控制器&#xff1a;概念、原理解读概述工作原理 编写Deployment资源清单文件使用案例&#xff1a;创建一个web站点Deployment管理pod&#xff1a;扩容、缩容通过deployment管理应用&#xff0c;实现扩容&#xff0c;把副本数变成3通过deploym…

面试必问但日常不愿意看的题

1&#xff0c;做道 this 相关的题&#xff0c;看你对 js 的 this 掌握的如何2&#xff0c;BFC 这样答才完美 1&#xff0c;什么是 BFC&#xff1f;其规则是什么&#xff1f;2&#xff0c;如何触发 BFC3&#xff0c;BFC 到底可以解决什么问题呢3&#xff0c;作用域4&#xff0c;…

疫情物资智能管理:Java与SpringBoot的实践

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

Python算法100例-2.6 分糖果

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.运行结果 1&#xff0e;问题描述 10个小孩围成一圈分糖果&#xff0c;老师分给第1个小孩10块&#xff0c;第2个小孩2块&#xff0c;第3个小孩8块&…