STM32基于I2C协议的AHT20温湿度传感器的数据串口输出

目录

一、I2C协议的介绍

1.概述

2.工作原理

3.连接方式

4、软件I2C和硬件I2C

二、ATH20温湿度传感器介绍

1.外观图

 2.原理图

3.温湿度测量范围

4.通讯方式(I2C协议)

5.产品特性(根据官方参考资料)

6.优点

 三、ATH20实现温湿度收集输出

1.将代码添加到项目

2.在bsp_i2c.c中添加函数read_AHT20_once(ATH20使用过程)

3.在bsp_i2c.c中添加函数read_AHT20(ATH20读温湿度函数)

4.main函数

 5.编译并生成hex文件

6.烧录

 7.调试运行

四、心得总结

五、参考博客


一、I2C协议的介绍

1.概述

I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、 CAN 等通讯协议的外部收发设备,所以被广泛使用。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。

2.工作原理

SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出。需通过上拉电阻接电源VCC。当总线空闲时,两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路。在总线上消耗的电流很小,因此,总线上扩展的器件数量主要由电容负载来决定,因为每个器件的总线接口都有一定的等效电容。而线路中电容会影响总线传输速度。当电容过大时,有可能造成传输错误。所以,其负载能力为400pF,因此可以估算出总线允许长度和所接器件数量。

3.连接方式

常见的I2C通讯系统

4、软件I2C和硬件I2C


(1)软件I2C
一般是使用GPIO管脚,用软件控制SCL,SDA线输出高低电平,模拟i2c协议的时序。
(2)硬件I2C
对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但是程序较为繁琐。硬件(固件)I2C是直接调用内部寄存器进行配置;而软件I2C是没有寄存器这个概念的。
(3)二者对比
硬件 I2C 直接使用外设来控制引脚,可以减轻 CPU 的负担。不过使用硬件I2C 时必须使用某些固定的引脚作为 SCL 和 SDA,软件模拟 I2C 则可以使用任意 GPIO 引脚,相对比较灵活。对于硬件I2C用法比较复杂,软件I2C的流程更清楚一些。如果要详细了解I2C的协议,使用软件I2C可能更好的理解这个过程。在使用I2C过程,硬件I2C可能通信更加快,更加稳定。


二、ATH20温湿度传感器介绍

1.外观图

正面(有孔):                                  背面:

                                        

 2.原理图

3.温湿度测量范围

温度范围为: 测量范围为 -40 ℃ ~+ 85 ℃ 精度±0.3℃。

湿度范围为:测量范围为0% - 100% 精度为±2%RH。

4.通讯方式(I2C协议)

采用I2C的接口方式 ,i2c通讯方式:SCL --> 时钟线、SDI --> 数据线。

5.产品特性(根据官方参考资料)


SDA弓|脚用于传感器的数据输入和输出。当向传感器发送命令时,SDA在串行时钟SCL的.上升沿有效,且当SCL为高电平时,SDA必须保持稳定。
在SCL下降沿之后,SDA值可被改变。
注意事项:
SCL、 SDA的.上拉电压必须由VDD供电,供电电压范围为2.2~5 5V。
VDD和GND之间需加容值为10uF去耦电容。
参数表如图:

6.优点

  • 高精度,完全校准
  • 极高的可靠性与卓越的长期稳定性(较上一代aht10有极大的提升)
  • 抗干扰能力强
  • 性价比极高
  • 适用于恶劣的环境条件

 三、ATH20实现温湿度收集输出

1.将代码添加到项目

代码链接:AHT20温度采集_还有头发,不能停。的博客-CSDN博客

2.在bsp_i2c.c中添加函数read_AHT20_once(ATH20使用过程)

3.在bsp_i2c.c中添加函数read_AHT20(ATH20读温湿度函数)

4.main函数

 5.编译并生成hex文件

6.烧录

 7.调试运行

四、心得总结

  经过此次实验,我学到了ATH20温湿度传感器的基本原理,同时也能将串口调试运用更加自如,对于ATH20温湿度传感器,要注意正反面不能弄错,否则会直接导致器件的无法使用。另外,ATH20的工作电压一般都是5v,不能更低,不然就无法检测温湿度,均显示为零。我很直观的感受到了ATH20温湿度传感器可以很敏感地感受到温湿度的变化,这也是它的一大优点,相信也可以运用在更多的领域。总之,嵌入式系统的学习还是非常有趣的,也让自己的动手能力有了较大提升。

五、参考博客

基于I2C协议实现温湿度采集_卢西安的博客-CSDN博客

stm32通过I2C接口实现温湿度(AHT20)的采集_HarrietLH的博客-CSDN博客

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,下面是基于STM32H750VBT6单片机写AHT10湿度传感器程序的步骤: 1. 首先,需要连接STM32H750VBT6单片机和AHT10传感器。将AHT10的VCC引脚连接到STM32H750VBT6的3.3V电源引脚,将GND引脚连接到STM32H750VBT6的GND引脚,将SCL引脚连接到STM32H750VBT6的SCL引脚,将SDA引脚连接到STM32H750VBT6的SDA引脚。 2. 在STM32CubeIDE中创建一个新的工程,然后选择STM32H750VBT6单片机作为目标设备。 3. 在工程中添加I2C库文件和AHT10湿度传感器驱动程序。 4. 配置I2C总线的时钟和GPIO引脚。可以使用STM32CubeIDE提供的配置向导来完成此操作。 5. 初始化AHT10传感器。可以使用以下代码来初始化: ```c void AHT10_Init(void) { uint8_t buf[3]; buf[0] = 0xE1; buf[1] = 0x08; buf[2] = 0x00; HAL_I2C_Master_Transmit(&hi2c1, AHT10_ADDR, buf, 3, 1000); } ``` 6. 读取AHT10传感器的度和湿度值。可以使用以下代码来读取: ```c void AHT10_ReadData(float *temperature, float *humidity) { uint8_t buf[6]; buf[0] = 0xAC; buf[1] = 0x33; buf[2] = 0x00; HAL_I2C_Master_Transmit(&hi2c1, AHT10_ADDR, buf, 3, 1000); HAL_Delay(100); HAL_I2C_Master_Receive(&hi2c1, AHT10_ADDR, buf, 6, 1000); *humidity = ((buf[1] << 12) | (buf[2] << 4) | (buf[3] >> 4)) * 100 / 0x100000; *temperature = ((buf[3] & 0x0F) << 16 | (buf[4] << 8) | buf[5]) * 200 / 0x100000 - 50; } ``` 7. 在主函数中调用AHT10_Init函数和AHT10_ReadData函数来获取度和湿度值。 ```c int main(void) { float temperature, humidity; HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_I2C1_Init(); AHT10_Init(); while (1) { AHT10_ReadData(&temperature, &humidity); printf("Temperature: %.2f C\r\n", temperature); printf("Humidity: %.2f %%\r\n", humidity); HAL_Delay(1000); } } ``` 这样,就完成了基于STM32H750VBT6单片机写AHT10湿度传感器程序的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值