关于:IC( Inter-- Integrated Circuit)总线是一种由 PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。
在CPU与被控I2C之间、I2C与I2C之间进行双向传送,高速IC总线一般可达400kbps以上。 I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。

开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结東传送数据。

应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接
收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为 受控单元出现故障  ;

关于:AHT20是国内奥松生成的I2C接口的MEMS温湿度传感器,ADC位数为20Bit,具有体积小、精度高、成本低等优点。

由于AHT10/15/20 具有国产化、体积小、精度高、成本低等特点,可以替代 DHT11/DHT12/AM2320/SHT20/SHT30,单芯片价格在¥2~3,体积小巧很轻松嵌入到产品上

参数如下:

  AHT20
供电电压 2.0-5.5V
工作电流(休眠) 0.25uA
工作电流(测量) 23uA
测量范围(湿度) 0~100%RH
测量范围(温度) -40~+85℃
温度精度 ±2%RH(25℃)
湿度精度 ±0.3℃
分辨率 温度: 0.01℃ 湿度: 0.024%RH
信号输出 I²C信号
防护
封装大小 3x3x1.0mm(DFN)

AHT20是国内奥松生成的I2C接口的MEMS温湿度传感器,ADC位数为20Bit,具有体积小、精度高、成本低等优点。

由于AHT10/15/20 具有国产化、体积小、精度高、成本低等特点,可以替代 DHT11/DHT12/AM2320/SHT20/SHT30,单芯片价格在¥2~3,体积小巧很轻松嵌入到产品上

参数如下:

历程准备:第一步:下载驱动包:http://www.aosong.com/products-61.html

网站最下方:历程下载;将下载后的历程解压;得到.C和.h文件;

第二步:打开正点原子STM32  IIC实验历程;在HARDWARE文件下下新建AHT20文件,将解压的.C和.h文件复制进去;

第三步:在工程中添加解压的.C和.h文件;

第四步:历程.c文件的修改:修改AHT20_Clock_Init()函数,历程中为:

void AHT20_Clock_Init(void) //ÑÓʱº¯Êý
{
RCC_APB2PeriphClockCmd(CC_APB2Periph_GPIOB,ENABLE);
}

改为:

void AHT20_Clock_Init(void) //ÑÓʱº¯Êý
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
}

函数;

void Init_I2C_Sensor_Port(void) //³õʼ»¯I2C½Ó¿Ú,Êä³öΪ¸ßµçƽ
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//ÍÆÍìÊä³ö
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,& GPIO_InitStruct);
GPIO_SetBits(GPIOB,GPIO_Pin_15);//Êä³ö¸ßµçƽ

GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//ÍÆÍìÊä³ö
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,& GPIO_InitStruct);
GPIO_SetBits(GPIOB,GPIO_Pin_15);//Êä³ö¸ßµçƽ

}

改为:

void Init_I2C_Sensor_Port(void) //³õʼ»¯I2C½Ó¿Ú,Êä³öΪ¸ßµçƽ
{
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//ÍÆÍìÊä³ö
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,& GPIO_InitStruct);
GPIO_SetBits(GPIOB,GPIO_Pin_11);//Êä³ö¸ßµçƽ

// GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//ÍÆÍìÊä³ö
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,& GPIO_InitStruct);
GPIO_SetBits(GPIOB,GPIO_Pin_10);//Êä³ö¸ßµçƽ
}

。。。。。。。。。。。。。源文件中有错误,主要是消错;

然后,将.C文件中的所有GPIO_Pin_15改为:GPIO_Pin_7,将所有GPIO_Pin_14改为GPIO_Pin_6;与开发板IIC硬件电路对应:

最后将.c文件中的main()函数注释掉;

第五步:修改main.c文件为:

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "usmart.h"
#include "myiic.h"
//#include "24cxx.h"
#include "AHT20-21_DEMO_V1_3.h"
/****my code start lee***/
//struct m_AHT20 AHT20;
int32_t main(void)
{
uint32_t CT_data[2];
volatile int c1,t1;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//
LED_Init(); //???LED
delay_init(); //?????
IIC_Init(); //IIC???
uart_init(115200); //??????115200
AHT20_Init();
// float c2,t2;
/*********************
**************************************************************/
/**刚上电,产品芯片内部需要就绪时间建议延时100-500ms
/***********************************************************************************/
Delay_1ms(500);
/***********************************************************************************/
/**/上电第一次发送0x71读取状态字,判断是否为0x18,如果不是进行寄存器初始化;
/***********************************************************************************/
if((AHT20_Read_Status()&0x18)!=0x18)
{
AHT20_Start_Init(); //初始化寄存器
Delay_1ms(10);
}

/***********************************************************************************/
/**///¢Û¸ù¾Ý¿Í»§×Ô¼ºÐèÇó·¢²âÁ¿ÃüÁî¶ÁÈ¡ÎÂʪ¶ÈÊý¾Ý£¬µ±Ç°while£¨1£Ñ­»··¢²âÁ¿ÃüÁî¶ÁÈ¡ÎÂʪ¶ÈÊý¾Ý£¬½ö¹²Î¿¼
/***********************************************************************************/
while(1)
{
//AHT20_Read_CTdata(CT_data); //不经过CRC校验  推荐每隔1s读一次

AHT20_Read_CTdata_crc(CT_data); //crc校验

c1 = CT_data[0]*100*10/1024/1024; //计算得到的湿度值c1,此处放大了10倍
t1 = CT_data[1]*200*10/1024/1024-500;//计算得到的温度值t1,此处放大了10倍
////数据显示打印在串口助手
printf("***************************\n");
printf("\r\n\r\n"); //插入换行
printf("AHT20温湿度传感器财务室数据;\n");
printf("\r\n\r\n"); //
printf("温度:%d.%d ℃\n",(t1/10),(t1%10));
printf("\r\n\r\n"); //
printf("湿度:%d.%d  %%\n",(c1/10),(c1%10));
printf("\r\n\r\n"); //
printf("\n");
delay_ms(500);
if(c1>=600||t1>=600)
{
LED0=!LED0;
}
else
LED0=1;
}
}

下载到开发板,显示结果为:

注意:删除历程中的关于24CXX相关内容,.C和.h文件等;

基于I2C的AHT20温湿度传感器的数据采集的更多相关文章

  1. Arduino I2C + 温湿度传感器Si7021

      Si7021是Silicon Labs生产的温湿度传感器芯片.其主要特性: 湿度精度:误差典型值+/-2%RH,最大值+/-3%RH(0~80%RH),出厂已校正 温度精度:误差典型值+/-0.3 ...

  2. Arduino I2C + 温湿度传感器AM2321

    (2015.5.17:本日志的内容有所更新,参见<使用Arduino Wire Library读取温湿度传感器AM2321>.) AM2321是广州奥松电子生产的数字式温湿度传感器.虽是国 ...

  3. Arduino I2C + 温湿度传感器HTS221

    主要特性 HTS221是意法半导体(STMicroelectronics)生产的小体积.数字式温湿度传感器IC.该IC目前在官网仍处在“评估”状态.其主要特性: 工作电压:1.7~3.6V 数据输出频 ...

  4. DH11数字温湿度传感器

    DH11数字温湿度传感器是一种集温度.湿度一体的复合传感器,它能把温度和湿度物理量通过温.湿度敏感元件和相应电路转化成方便计算机.PLC.智能仪表等数据采集设备直接读取的数字量.DHT11由电阻式感湿 ...

  5. STM32应用实例五:与SHT1X温湿度传感器通讯

    在这次项目开发中应用到了SHT1X温湿度传感器,该系列有SHT10.SHT11和SHT15,属于Sersirion温湿度传感器家族中的贴片封装系列.包括一个电容性聚合体测湿敏感元件.一个用能隙材料制成 ...

  6. 树莓派使用DHT11温湿度传感器

    一.相关介绍 DHT11介绍: DHT11是一款比较便宜的温湿度传感器模块.读取数据只需要占用一个IO口.能够同时测量温度和相对湿度. DHT11的数据手册可以看这里:http://wenku.bai ...

  7. 使用Arduino Wire Library读取温湿度传感器AM2321

    AM2321是采用I2C总线或单总线通讯的国产温湿度传感器.在AM2321手册中,当采用I2C通讯时,手册指定了多处需要主机等待的时间间隔,包括: (1)唤醒传感器时,从机不回复ACK,但主机主要等待 ...

  8. DHT11温湿度传感器编程思路以及代码的实现(转载)

    源自:https://blog.csdn.net/qq_34952376/article/details/81193938 在我们刚开始进入单片机的学习中,练习写传感器的时序是必不可少的,其实我比较推 ...

  9. [开源硬件DIY] 自制一款精致炫酷的蓝牙土壤温湿度传感器,用于做盆栽呵护类产品(API开放,开发者可自行DIY微信小程序\安卓IOS应用)

    目录 前言: 1. 成品展示 2. 原理图解析 3. pcb设计 4. 嵌入式对外提供接口 4.1 蓝牙广播 4.2 蓝牙服务和属性 4.3 数据包格式 4.4 数据通信模型 重要 . 前言: 本期给 ...

随机推荐

  1. YbtOJ#573-后缀表达【二分图匹配】

    正题 题目链接:https://www.ybtoj.com.cn/contest/115/problem/2 题目大意 给出一个包含字母变量和若干种同级操作符的后缀表达式.求一个等价的表达式满足该表达 ...

  2. 【问题记录】Java服务发起HTTPS请求报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException

    问题报错 今天上线了我开发的一个OAuth2单点登录客户端的实现,在测试系统验证没问题,到生产环境由于单点登录服务端HTTPS协议,报错如下: I/O error on POST request fo ...

  3. windows使用VS编译python源码

    使用VS2021编译python源码 说明,使用VS2019也是可以的. 环境准备 对于VS2019首要要安装必要的环境 到python官网下载源码压缩包以及解压(红色箭头任选一个都行) 打开下载好的 ...

  4. 使用 grpcurl 通过命令行访问 gRPC 服务

    原文链接: 使用 grpcurl 通过命令行访问 gRPC 服务 一般情况下测试 gRPC 服务,都是通过客户端来直接请求服务端.如果客户端还没准备好的话,也可以使用 BloomRPC 这样的 GUI ...

  5. 使用CSS选择器(第一部分)

    目录 使用CSS选择器(第一部分) 使用CSS基本选择器 选择所有元素 通用选择器 代码清单1 使用通用选择器 根据类型选择元素 元素类型选择器 代码清单2 使用元素类型选择器 提示 根据类选择元素 ...

  6. Python&Selenium 数据驱动测试【unittest+ddt+xml】

    一.摘要 本博文将介绍Python和Selenium做自动化测试时,基于unittest框架,借助ddt模块,使用xml文件作为测试输入. 二.xml文件 保存路径:D:\\Programs\\Pyt ...

  7. Dapr-简介及环境搭建

    一.Dapr是什么? Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架. 在 ...

  8. 2021.3.3--vj补题

    题目 C - C CodeForces - 1166C The legend of the foundation of Vectorland talks of two integers xx and  ...

  9. mysql join语句的执行流程是怎么样的

    mysql join语句的执行流程是怎么样的 join语句是使用十分频繁的sql语句,同样结果的join语句,写法不同会有非常大的性能差距. select * from t1 straight_joi ...

  10. Web前端安全之安全编码原则

    随着Web和移动应用等的快速发展,越来越多的Web安全问题逐渐显示出来.一个网站或一个移动应用,如果没有做好相关的安全防范工作,不仅会造成用户信息.服务器或数据库信息的泄露,更可能会造成用户财产的损失 ...