基于LORA的一主多从监测系统_AHT20温湿度传感器

news/2024/12/22 2:06:33/

1)AHT20温湿度传感器

这个传感器,网上能找到的资料还是比较多的,我们使用的是HAL硬件i2c,相比于模拟i2c,我们不需要过于关注时序问题,我们只需要关心如何获取数据以及数据如何处理,下面以数据手册为主:

上图来源与数据手册

通过上述截图我们可以看出需要获取温湿度值,我们需要先给传感器发送0x70 0xAC 0x33 0x00四个字节的测量命令字段,然后读取总线数据,返回的数据格式为Status+20位相对湿度+20位温度数据以及CRC校验值一共就是7个字节,不过实际使用的时候可以不用管这个CRC

这个是传感器的状态字说明表格通过这个,我们可以判断当前传感器的状态,也就是我们读到的七个字节的第一个字节

通过手册,我们可以知道当传感器上电后需要等到五ms才能读取,这个一般可以不用管,但是再发送完测量命令后需要等待80ms测量完成,我们需要做一些延时操作

当然,最重要的是我们如何将获取的数据转换为实际的温度和湿度,通过查看手册,我们可以得到转换的具体公式

//为了能将数据传递到AHT20——Read函数的调用方,需要将数据定义为指针类型
void AHT20_Read(float *Temperature, float *Humidity)
{uint8_t sendBuffer[3] = { 0xAC, 0x33, 0x00};//要触发测量,需要直接发送0xAC命令,此命令参数有两个字节:0x33,0x00uint8_t readBUffer[6];HAL_I2C_Master_Transmit(&hi2c2,AHT20_ADDRESS,sendBuffer,3,HAL_MAX_DELAY);HAL_Delay(75);//等待75ms待测量完成HAL_I2C_Master_Receive(&hi2c2,AHT20_ADDRESS,readBUffer,6,HAL_MAX_DELAY);//读取六个字节(发送0x71可以读取)if((readBUffer[0] & 0x80) == 0x00)//如果第0字节的第7位位0,就说明获取的数据确实是刚刚测量完成的数据,就可以开始温湿度的计算{//AHT20的数据手册指出温度数据和湿度数据各占两个半字节,定义data用于数据拼接uint32_t data = 0;//第3字节的高4位是湿度数据,低4位是温度数据;第2字节和第1字节为湿度数据// 0000 xxxx + xxxx xxxx 0000+ xxxx xxxx 0000 0000 0000data = ((uint32_t)readBUffer[3] >> 4) + ((uint32_t)readBUffer[2] << 4) + ((uint32_t)readBUffer[1] << 12);//要将uint8_t的数据改为uint32_t,否则会出现溢出而导致数据丢失*Humidity = data * 100.0f / (1 << 20);//相对湿度(%)=(SDA输出的相对湿度信号/2的20次方)*100%,转换为浮点数计算,避免丢失掉小数部分//xxxx 0000 0000 0000 0000 + xxxx xxxx 0000 0000 + xxxx xxxxdata = (((uint32_t)readBUffer[3] & 0x0F) << 16) + ((uint32_t)readBUffer[4] << 8) + (uint32_t)readBUffer[5];*Temperature = data * 200.0f / (1 << 20) - 50;// 温度 = (温度输出信号 / 2的20次方)* 200 - 50}
}

通过简单的代码测试后,我们在debug下可以看到已经能正常读到数据了,其中0x1C为状态字节 00011100,通过第4个bit为1表示OTP 存储器数据完整性测试(CRC)通过,说明我们温湿度数据获取成功

这个实际数据值看着也差不多,说明获取无误


http://www.ppmy.cn/news/1536537.html

相关文章

贪心算法c++

贪心算法C概述 一、贪心算法的基本概念 贪心算法&#xff08;Greedy Algorithm&#xff09;&#xff0c;又名贪婪法&#xff0c;是一种解决优化问题的常用算法。其基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决…

【stm32】寄存器(stm32技术手册下载链接)

1、资料下载 RM0008_STM32F101xx,STM32F102xx,STM32F103xx,STM32F105xx和STM32F107xx单片机参考手册 | STMCU中文官网 2、代码 设置PB7 //设置PB7 #define SDA_IN() {GPIOB->CRL&0X0FFFFFFF;GPIOB->CRL|(u32)8<<28;} #define SDA_OUT() {GPIOB->…

HTML CSS 基础

HTML & CSS 基础 HTML一、HTML简介1、网页1.1 什么是网页1.2 什么是HTML1.3 网页的形成1.4总结 2、web标准2.1 为什么需要web标准2.2 Web 标准的构成 二、HTML 标签1、HTML 语法规范1.1基本语法概述1.2 标签关系 2、 HTML 基本结构标签2.1 第一个 HTML 网页2.2 基本结构标签…

力扣 中等 77.组合

文章目录 题目介绍解法代码如下代码运行流程 题目介绍 解法 代码如下 class Solution {//定义成员变量List<List<Integer>> result new ArrayList<>();List<Integer> path new ArrayList<>();public List<List<Integer>> combine(…

ChatGPT国内中文版镜像网站整理合集(2024/9/30)

一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1&#xff0c;支持MJ绘画 ② chat.lify.vip 支持通用全模型&#xff0c;支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4&#xff0c;4o以及MJ绘画 1. 什么是镜像站 镜像站&#xff08;Mirror Site&#xff…

《东北师大学报(自然科学版)》

东北师大学报&#xff08;自然科学版&#xff09;是教育部主管、东北师范大学主办、东北师范大学学术期刊社编辑出版的自然科学综合性学术期刊&#xff0c; 1951年创刊&#xff0c;季刊&#xff0c;国内外公开发行。国际标准连续出版物号&#xff1a;ISSN 1000&#xff0d;1832…

OceanBase 3.2.2 数据库问题处理记录

只记录OceanBase 数据库与OCP的异常处理&#xff0c;其它组件暂时不写录。 一、问题1&#xff1a; 说明&#xff1a;OMS 出现异常&#xff0c;无法访问(OB无法访问) OB数据库架构&#xff1a;1:1:1 原因&#xff1a;某一台OBserver因为内存问题&#xff0c;被服务器直接kill掉…

搭建个人博客--1、前端页面

采用bootstrap前端框架&#xff1a; Anchor - a free Bootstrap UI Kit综合使用bootstrap框架做一个Aotm Blog个人博客_基于bootstrap的博客-CSDN博客 做出模板base.html {% load static %} <!DOCTYPE html> <html langen> <head><meta charset"UT…