AHT20温湿度传感器的数据采集

一、学习I2C总线通信协议

1.解释什么是“软件I2C”和“硬件I2C”

硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的;软件I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形。硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。模拟I2C 是通过GPIO,软件模拟寄存器的工作方式,而硬件(固件)I2C是直接调用内部寄存器进行配置。

2.采集温湿度数据实验

  1. 连接管脚
  • AHT20
AHT20STM32F10X
SCLPB6
SDAPB7
VCC3V3
GNDGND
  • 串口
STM32F10XUSB转TTL
PA9TXD
PA10RXD
3V33V3
GNDGND

在这里插入图片描述

  1. 编写代码
    代码方面使用的是正点原子的代码
    在这里插入图片描述

  2. 编译并下载程序
    在这里插入图片描述

  3. 使用野火串口调试助手调试程序
    在这里插入图片描述

二、Ardunio IDE的实践

1.下载并安装ardunio
在这里插入图片描述
安装过程中会弹出这三个驱动,点击安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.配置ardunio
在Ardunio IDE的工具的开发板"Arduino Uno"点击开发板管理器,然后搜索ARM安装与stm32板子芯片相应的Cortex-M3
在这里插入图片描述
在这里插入图片描述
选择芯片
在这里插入图片描述

3.编写代码
在这里插入图片描述
代码如下

void setup() {
  // put your setup code here, to run once:
  //串口初始化,波特率115200
  Serial.begin(115200);
}
//判断标志
int flag=1;  
//停止字符串标志
String stopstring="stop\n";
//输入字符串
String inputstring="";
void loop() {
  // put your main code here, to run repeatedly:
  //发送helloworld
  if(flag==1)
  {
    Serial.println("hello world");
    delay(500);
  }
  //串口接收到了数据,可以读取
  while(Serial.available()>0)
  {
    //读取数据
    inputstring=Serial.readString();
    delay(10);
  }
  //判断是否为停止标志
  if(inputstring==stopstring)
  {
    flag=0;
    Serial.println("收到停止");
    //输入字符串初始化,清零
    inputstring="";
  }
}



4.编译上传运行
设置波特率
在这里插入图片描述
编译程序
在这里插入图片描述
运行结果
在这里插入图片描述


版权声明:本文为weixin_45134710原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。