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

[stm32]温湿度采集与OLED显示

一、I2C总线协议

I2C(Inter-integrated circuit )是一种允许从不同的芯片或电路与不同的主芯片通信的协议。它仅用于短距离通信,是一种用于两个或多个设备之间进行数据传输的串行总线技术,它可以让你在微处理器、传感器、存储器、控制器和外围设备之间进行快速的数据交换。I2C有两种不同的实现方式:硬件I2C和模拟I2C

I2C 定义了三种附加模式:(1)在 1 MHz:“快速模式加”。

                                           (2)3.4 MHz:“高速模式”。

                                           (3)5 MHz:“超快模式”。

I2C 支持多主机通信,这意味着多个主机可以连接到总线并可以相互通信以及与从机通信。它还支持时钟延展,允许从设备将时钟线保持在低电平以指示它需要更多时间来处理命令或数据。

1.软件I2C

软件I2C(Software I2C,也称为Bit-Banging I2C)是一种通过软件来模拟I2C硬件接口的通信协议。相对于硬件I2C,软件I2C使用微控制器的通用输入输出端口(GPIO)来手动生成I2C时序和信号。它通常用于那些没有硬件I2C接口或需要多个I2C接口的系统中。软件I2C具有以下特点:灵活性高、可移植性强、适用范围广。

2.硬件I2C

硬件I2C(Hardware I2C)是一种基于硬件的通信协议,通过专用的硬件接口实现设备之间的串行通信。I2C(Inter-Integrated Circuit)是一种常用的串行通信协议,由飞利浦(Philips)公司开发,用于在电路板上连接集成电路芯片。硬件I2C具有以下优点:高速传输、低占用率、稳定性高。

总结来说,硬件I2C具有高速传输、低占用率和稳定性高的优点,适用于对传输速度和稳定性要求较高的场景;而软件I2C具有灵活性高和可移植性强的特点,适用于没有硬件I2C支持或需要扩展硬件I2C功能的场景

二、实现AHT20采集

要求:每隔2秒钟采集一次温湿度数据,显示到OLED上,同时通过串口发送到上位机的“串口助手”软件

1.AHT20芯片的相关信息

官方资料链接如下:

软件下载-温湿度传感器 温湿度芯片 温湿度变送器模块 气体传感器 流量传感器 广州奥松电子股份有限公司 (aosong.com)

AHT20引脚图:

2.代码添加

具体过程请参考下方链接:

AHT20温度采集_uart是什么意思啊-CSDN博客

3.代码

(1)AHT20芯片使用

void  read_AHT20_once(void)
{delay_ms(10);reset_AHT20();//重置AHT20芯片delay_ms(10);init_AHT20();//初始化AHT20芯片delay_ms(10);startMeasure_AHT20();//开始测试AHT20芯片delay_ms(80);read_AHT20();//读取AHT20采集的到的数据delay_ms(5);
}

(2)读取数据

void read_AHT20(void)
{uint8_t   i;for(i=0; i<6; i++){readByte[i]=0;}I2C_Start();//I2C启动I2C_WriteByte(0x71);//I2C写数据ack_status = Receive_ACK();//收到的应答信息readByte[0]= I2C_ReadByte();//I2C读取数据Send_ACK();//发送应答信息readByte[1]= I2C_ReadByte();Send_ACK();readByte[2]= I2C_ReadByte();Send_ACK();readByte[3]= I2C_ReadByte();Send_ACK();readByte[4]= I2C_ReadByte();Send_ACK();readByte[5]= I2C_ReadByte();SendNot_Ack();//Send_ACK();I2C_Stop();//I2C停止函数//判断读取到的第一个字节是不是0x08,0x08是该芯片读取流程中规定的,如果读取过程没有问题,就对读到的数据进行相应的处理if( (readByte[0] & 0x68) == 0x08 ){H1 = readByte[1];H1 = (H1<<8) | readByte[2];H1 = (H1<<8) | readByte[3];H1 = H1>>4;H1 = (H1*1000)/1024/1024;T1 = readByte[3];T1 = T1 & 0x0000000F;T1 = (T1<<8) | readByte[4];T1 = (T1<<8) | readByte[5];T1 = (T1*2000)/1024/1024 - 500;AHT20_OutData[0] = (H1>>8) & 0x000000FF;AHT20_OutData[1] = H1 & 0x000000FF;AHT20_OutData[2] = (T1>>8) & 0x000000FF;AHT20_OutData[3] = T1 & 0x000000FF;}else{AHT20_OutData[0] = 0xFF;AHT20_OutData[1] = 0xFF;AHT20_OutData[2] = 0xFF;AHT20_OutData[3] = 0xFF;printf("读取失败!!!");}printf("\r\n");//根据AHT20芯片中,温度和湿度的计算公式,得到最终的结果,通过串口显示printf("温度:%d%d.%d",T1/100,(T1/10)%10,T1%10);printf("湿度:%d%d.%d",H1/100,(H1/10)%10,H1%10);printf("\r\n");
}
http://www.lryc.cn/news/387545.html

相关文章:

  • 大模型知识库的使用
  • Docker - Oracle Database 23ai Free
  • spring常用方法
  • 虚拟机能装在移动硬盘里吗安全吗 PD虚拟机迁移到移动硬盘的方法
  • 刷算法Leetcode---7(二叉树篇)(前中后序遍历)
  • AliyunOS安装Node.js
  • three.js - MeshPhongMaterial材质(实现玻璃水晶球效果)
  • 笔记本电脑安装CentOS
  • ssh转发功能入门
  • Listary(Windows 文件搜索工具)专业版值得购买吗?
  • 面试突击指南:Java基础面试题2
  • MySQL快速安装(mysql8.0.30区别之前yum安装)
  • 俄罗斯防空系统
  • 文件上传漏洞---Pyload
  • 应用案例 | 如何监测高价值货物在物流运输过程中受到的振动和冲击?全面保障货物安全
  • VMware17安装Ubuntu20版本-保姆级别
  • 初探Xcode工具
  • 小迪安全v2023笔记 1-18
  • RabbitMQ WEB管理端介绍
  • 三阶魔方公式详解及快速解法方法介绍
  • 前端的拖拽和缩放(缩放以鼠标为中心)
  • 【Vue】单向和双向数据绑定
  • HDFS学习
  • Winform使用HttpClient调用WebApi的基本用法
  • python–基础篇–正则表达式–是什么
  • 15 个适用于企业的生成式 AI 用例
  • 若依框架中组件使用教程
  • 秋招力扣刷题——数据流的中位数
  • 51单片机学习——LED功能一系列实现
  • 互联网大厂核心知识总结PDF资料