【STM32CubeIDE】硬件IIC+AHT20使用

news2024/11/18 11:30:09

前言

本文主要介绍STM32CubeIDE配置硬件IIC驱动AHT20模块,实现温湿度读取并用串口打印显示在上位机;

image-20240602173251921

软件平台:STM32CubeIDE+HAL库

硬件环境:STM32F103ZET6(正点原子战舰V3)+AHT20模块

目录

    • 前言
    • AHT20简介
    • 软件程序
      • CubeIDE设置
      • AHT20驱动
      • main函数
    • 硬件接线
    • DEBUG
    • 工程源码

AHT20简介

AHT20是一个温湿度传感器,又叫DHT20,是DHT11的全新升级产品,配置了专用的 ASIC 传感器芯片、高性能的半导体硅基电容式湿度传感器和一个标准的片上温度传感器,并使用了标准 I2C 数据输出信号格式。相对于DHT11其在高温高湿环境下的性能更稳定;同时,产品的精度、响应时间、测量范围都得到了大幅的提升。

软件程序

CubeIDE设置

  1. 新建CubeIDE工程,可以参考往期文章,此处不做过多赘述

  2. 串口设置

    image-20240602234429944

  3. 硬件IIC设置

    image-20240602234341089

  4. 为每个外设生成.h和.c文件

    做这步只是为了规范点,并非必需操作,只要能正常调用,代码放在任意文件都可以;

    image-20240602233013503

AHT20驱动

工程添加AHT20.h和AHT20.c文件

AHT20.h

#include "i2c.h"
#define AHT20_ADDRESS 0x70

void AHT20_Init();
void AHT20_Read(float *Temperature, float *Humidity);

AHT20.c

#include "AHT20.h"
void AHT20_Init(){
	 uint8_t readBuffer;
	 HAL_Delay(40);
	 HAL_I2C_Master_Receive(&hi2c1, AHT20_ADDRESS, &readBuffer, 1, HAL_MAX_DELAY);
	 if ((readBuffer & 0x08) == 0x00){
		 uint8_t sendBuffer[3] = {0xBE,0x08,0x00};
		 HAL_I2C_Master_Transmit(&hi2c1, AHT20_ADDRESS, sendBuffer, 3, HAL_MAX_DELAY);
	 }
}

void AHT20_Read(float *Temperature, float *Humidity){
	 uint8_t sendBuffer[3] = {0xAC,0x33,0x00};
	 uint8_t readBuffer[6];

	 HAL_I2C_Master_Transmit(&hi2c1, AHT20_ADDRESS, sendBuffer, 3, HAL_MAX_DELAY);
	 HAL_Delay(75);
	 HAL_I2C_Master_Receive(&hi2c1, AHT20_ADDRESS, readBuffer, 6, HAL_MAX_DELAY);

	 if((readBuffer[0] & 0x80) == 0x00){
		 uint32_t data = 0;
		 data = ((uint32_t)readBuffer[3] >> 4) + ((uint32_t)readBuffer[2] << 4) + ((uint32_t)readBuffer[1] << 12);
		 *Humidity = data *100.0f / (1 << 20);

		 data = (((uint32_t)readBuffer[3] & 0x0F) << 16) + ((uint32_t)readBuffer[4] << 8) + (uint32_t)readBuffer[5];
		 *Temperature = data * 200.0f /(1<<20) - 50;
	 }
}

main函数

main文件#include头文件AHT20.h

#include "AHT20.h"

main函数while循环之前添加AHT20初始化和必要的定义

  AHT20_Init();
  float temperature,humidity;
  char message[50];

main函数while循环中添加读取AHT20函数和串口发送函数

AHT20_Read(&temperature, &humidity);									//读取数据
sprintf(message,"温度:%.1f °C, 湿度:%.1f %%\r\n",temperature, humidity); //组合字符串
HAL_UART_Transmit(&huart4, message, strlen(message),1000);				//串口发送
HAL_Delay(500);															//延时

如果有sprintf有报错,Properties里勾选上这两个设置支持浮点型

image-20240522225325148

硬件接线

接线跟上边CubeIDE初始化设置的情况一样,不清楚可以退回去看可视化视图

image-20240602235540872

AHT20模块比较脆弱,上电前务必确认接线正确;

AHT20STM32
VIN3.3V/5V
GNDGND
SCLPB6
SDAPB7

串口接线:

CH340STM32
3.3V/
GNDGND
TXPC11
RXPC10

烧录程序上电开机,上位机打开串口工具接收温湿度数据,触摸AHT20温湿度发生变化,实验成功;

DEBUG

若温湿度读取失败或返回异常,检查接线情况,检查驱动代码有没有敲错,如果都没问题,换个AHT20模块确认是否模块故障;

工程源码

链接:https://pan.baidu.com/s/1F-L00nXIS_HaT4W0Fi3ycw
提取码:1023

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

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

相关文章

ChatGPT/AI助力学术写作-辅助翻译及润色

Nature期刊中的Career column专栏在4月份的时候发表了关于Chatgpt帮助学术写作的几点建议。 一、Three ways ChatGPR helps me in my academic writing 1、优化学术写作 不管使用哪一种AI工具&#xff0c;精确清晰的指令可以帮助使用者得到更好的反馈。例如&#xff1a;I’m w…

【LINUX】内核源码文件系统调用相关摸索

首先&#xff0c;先看看想测试那个系统调用&#xff0c;在应用层&#xff0c;如果使用C语言编程一般我们一来就是open函数&#xff0c;实际在测试的时候&#xff0c;直接用touch xxx.txt然后 echo "xxx" >> xxx.txt&#xff0c;这样就完成了文件创建和写文件的…

MemManage_Handler 问题的解决思路

1、问题 在做一个安全类项目时发现&#xff0c;软件在运行一段时间后会进入"MemManage_Handler",遂开始了一系列查找。 2、解决 &#xff08;1&#xff09;查看堆栈数据 查堆栈的数据&#xff0c;发现堆栈也被破坏了&#xff0c;看不出来是执行哪个任务执行导致的…

零基础想学编程,选择哪一门语言更好就业?(非常详细)零基础入门到精通,收藏这一篇就够了_c#就业方向

编程语言的用途广泛&#xff0c;它们各自在不同的领域和应用场景中发挥着重要作用。 零基础初学者在选择编程语言时&#xff0c;可以从就业方向入手选择。 【一一帮助安全学习&#xff0c;所有资源获取处一一】 ①网络安全学习路线 ②20份渗透测试电子书 ③安全攻防357页笔记 …

基于Java微信小程序同城家政服务系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

为什么每一名程序员都应该学习 C++?

掌握 C 可不容易&#xff0c;但一旦你掌握了&#xff0c;就会获得丰厚的回报。 通常&#xff0c;程序员在他们的编程生涯中会使用多种编程语言。然而&#xff0c;我们也看到&#xff0c;有些程序员一直在使用同一种编程语言。例如&#xff0c;我们经常遇到有几十年经验的 Java…

day50---数据结构与算法(五)

四. 高级数据结构与算法设计 4.1 图 1) 概念 图是由顶点&#xff08;vertex&#xff09;和边&#xff08;edge&#xff09;组成的数据结构&#xff0c;例如 #mermaid-svg-bv3SYpkStIeixcO2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;…

从灵感到成品:使用AI生成博客文章的完整指南

在信息爆炸的时代&#xff0c;每个人都有讲述自己故事的权利和需求。博客作为一种表达方式&#xff0c;不仅能记录个人经历&#xff0c;还能分享知识和观点。然而&#xff0c;许多人在写博客文章时&#xff0c;常常会遇到灵感枯竭、时间不够用或者不知道如何开始等问题。幸运的…

还不到6个月,GPTs黄了

相比起来&#xff0c;人们还不如使用一个足够强大、灵活且通用的AI助手来满足各类复杂需求。更严重的是一些独立GPTs显露出的安全隐患。除此之外&#xff0c;最大的问题在于OpenAI模糊不清的货币化政策。 文章正文 上周&#xff0c;不少人发现微软官网忽然更新了一条“GPT Bu…

星戈瑞Cy5.5 NHS Ester近红外荧光染料2375105-86-3

【星戈瑞stargraydye】以下数据均来自文献资料,星戈瑞暂未进行独立验证, 仅供参考&#xff01; 在生物医学成像领域&#xff0c;荧光染料的应用逐渐增多。Cy5.5 NHS Ester作为其中的一种&#xff0c;凭借其光学性质和稳定的化学结构&#xff0c;在生物成像、药物追踪以及生物分…

浏览器扩展V3开发系列之 chrome.storage 的用法和案例

【作者主页】&#xff1a;小鱼神1024 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.storage 是用于存储、获取用户数据的 API。当我们需要持久化存储数据时&#xff0c;比如&…

Ubuntu 20.04安装中文输入法出错:gnome-user-docs-zh-hans安装失败

问题&#xff1a;Ubuntu20.04安装中文输入法出错&#xff1a;gnome-user-docs-zh-hans安装失败 现象&#xff1a; 打开language Support页面的时候&#xff0c;提示install依赖的文件 这个过程中会弹窗提示: The following packages have unmet dependencies:gnome-user-doc…

全网最全的国外心理学资源导航站

想学心理学不知道去哪儿看权威的内容&#xff1f; 中文搜索心理学广告多&#xff1f; Kuakua | 发现心理学网站&#xff0c;应用程序和AI工具https://kuakua.app/explore 从心理学AI工具&#xff08;国内外&#xff09;到心理学专业院校、心理学期刊论文、心理学线上课程、心…

论文影响因子

谷歌搜索 谷歌一般只能看到期刊或者会议名字 搜索内容 官方评级网站 LetPub

AI助阵,高考志愿不再“盲选“:告别老土选校法,用科技选未来!

填志愿 即将到来的是高考成绩的公布日&#xff0c;对于今年参加高考的学生们来说&#xff0c;此刻的心情无疑是复杂而紧张的。然而&#xff0c;成绩的公布并非终点&#xff0c;而是一个新的开始。紧接着&#xff0c;学生们将面临一个至关重要的挑战——填报高考志愿。 这一过…

集成电路各类电源标号

目录 一、VCC/VEE 二、VDD/VSS 三、VBAT&#xff08;battery&#xff09; 四、电源的图形符号 参考&#xff1a;五花八门的电源标号该怎么看--单片机数模电路图原理图看懂VCC VEE VDD VSS GND的含义--洋桃电子大百科P011_哔哩哔哩_bilibili 一、VCC/VEE 在三极管电路中&am…

【PostgreSQL】数据基石:PostgreSQL的数据类型与表结构设计

目录 核心数据类型深入探索 基础数值与文本类型 日期与时间类型 特殊与复合类型 JSON与HSTORE 表的创建、修改与管理 创建与修改表结构 索引与性能优化 约束与数据完整性 核心数据类型深入探索 PostgreSQL以其多样化的数据类型著称&#xff0c;不仅包括标准SQL数据类型…

Nuxt3: 强制删除__NUXT_DATA__的一种方式

一、问题描述 环境&#xff1a;Node 18.14.0&#xff0c;Nuxt 3.12.2 with Nitro 2.9.6 后台粉丝提问&#xff0c;能否在Nuxt3的页面中不要生成__NUXT_DATA__&#xff0c;因为里面包含了接口返回的数据&#xff0c;感觉数据暴露并且加大了页面的html内容的大小&#xff1a; &l…

微软Win11 22H2/23H2六月更新补丁KB5039302发布!附完整更新日志

2024 年 6月 26 日最新消息&#xff0c;微软为 Windows 11 用户发布了六月最新的更新补丁KB5039302。对于 22H2 版本的用户&#xff0c;系统版本号将升级至 22621.3810&#xff1b;而对于 23H2 版本&#xff0c;版本号则提升至 22631.3810。此次更新将在“设置”主页上添加了新…

核密度估计kde的本质

核密度估计的本质就是插值&#xff0c;不是拟合&#xff0c;只是不要求必须过已知点。 核为box窗函数 核为高斯函数