AHT10温湿度传感器STM32驱动
大家所熟悉都用过的温湿度传感器应该是DHT11了吧,基本上学习单片机的都用过,但是DHT11的精度不是很高,湿度±5%RH,温度±1℃,而且测试的时候一般还要延时3S左右测一下,测试频率慢,而且体积大,价格大概3块多一个吧。在淘宝上搜索温湿度传感器,偶然发现AHT10传感器,价格2.5一个,体积小,精度湿度±2%RH,温度精度±0.3℃。这个是国产温湿度传感器,性价比是比较高的,所以在这里介绍一下AHT10温湿度传感器的使用。
关于AHT10温湿度传感器的数据手册在官方网站上面可以下载到:AHT10温湿度传感器的数据手册
例程程序下载链接:AHT10温湿度传感器STM32驱动程序
引脚说明:

电路设计:

AHT10通信协议为IIC协议驱动代码如下所示,采用的是STM32103C8T6单片机。
AHT10.H
#ifndef _AHT10_H__
#define _AHT10_H__
#include "sys.h"
#define AHT10_ADDRESS 0x70
#define AHT10_WRITE 0x70
#define AHT10_READ 0x71
/*****************函数声明******************/
extern void AHT10Init(void);
extern u8 AHT10Check(void);
extern void AHT10Reset(void);
extern u8 AHT10ReadData(float *temperature,u8 *humidity);
#endif
AHT10.c文件
#include "aht10.h"
#include "myiic.h"
#include "delay.h"
/**
brief AHT10初始化函数
param NONE
return NONE
*/
void AHT10Init()
{
//IIC_Init();
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置为推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOBA
GPIO_SetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4); //PA4 输出高
IIC_Start();
IIC_Send_Byte(AHT10_ADDRESS);
IIC_Send_Byte(0xe1);
IIC_Send_Byte(0x08);
IIC_Send_Byte(0x00);
IIC_Stop();
delay_ms(40);//延时20ms让传感器稳定
}
/**
brief 检查AHT10是否存在
param NONE
return 0存在 1不存在
*/
u8 AHT10Check(void)
{
u8 ack=0;
IIC_Start();
IIC_Send_Byte(AHT10_ADDRESS);
ack=IIC_Wait_Ack();
IIC_Stop();
return ack;
}
/**
brief AHT10软复位
para

本文介绍了一款性价比较高的国产温湿度传感器AHT10,其精度高于常见的DHT11传感器,提供了详细的STM32驱动程序及使用方法,包括电路设计、IIC通信协议及代码实现。
最低0.47元/天 解锁文章
488





