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

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.xdnf.cn/news/1557912.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

探索Ultralytics YOLO11在视觉任务上的应用

前言 在人工智能持续发展的当下&#xff0c;有一点是确凿无疑的&#xff1a;模型正变得愈发优秀、快捷和智能。就在人们以为YOLO系列已登峰造极之时&#xff0c;Ultralytics推出了最新升级版——YOLO11。需要注意的是&#xff0c;这里不是YOLOv11&#xff0c;他们简化了命名方…

如何绘制短剧产业链图谱?短剧产业前景如何?

绘制短剧产业链图谱是一个涉及多个环节的复杂过程。我们首先需要确定产业链的主要环节&#xff0c;包括内容创作、制作、发行、宣传和观众。每个环节都由不同的参与者组成&#xff0c;如编剧、导演、演员、制作公司、版权销售商、在线平台、电视台、广告公司和消费者等&#xf…

51.哀家要长脑子了!

1.P1003 [NOIP2011 提高组] 铺地毯​​​​​​ 重复 模拟 要求覆盖在最上面的地毯编号&#xff0c;用四个数组abgk分别记录地毯起点的左下角横纵坐标&#xff0c;地毯的长度宽度&#xff0c;输入的坐标x y 当它满足大于等于左下角坐标 并且 小于等于 地毯左下角横纵坐标的时候…

Authentication Lab | IP Based Auth Bypass

关注这个靶场的其它相关笔记&#xff1a;Authentication Lab —— 靶场笔记合集-CSDN博客 0x01&#xff1a;IP Based Auth Bypass 前情提要 有些开发人员为了图方便&#xff0c;会给站点设置一个 IP 白名单&#xff0c;如果访问站点的用户的 IP 在白名单内&#xff0c;则允许访…

使用sponge+dtm快速搭建一个高性能的电商系统,秒杀抢购和订单架构的设计与实现

本文将展示如何使用 Sponge 框架快速创建一个简易版高性能电商系统&#xff0c;主要实现秒杀抢购和订单功能&#xff0c;并通过分布式事务管理器 DTM 来确保数据一致性。电商系统的架构图如下&#xff1a; 这是源码示例eshop&#xff0c;目录下包括了两个一样的代码示例&#x…

前端反接保护:实用方案解析与探讨

前端反接保护通常采用肖特基二极管方案或PMOS/NMOS方案&#xff0c;本文另外介绍一种理想二极管方案。 1、肖特基二极管方案 由于肖特基二极管具有正向导通电压&#xff0c;只能用于小电流场合&#xff0c;甚至于直接使用普通的整流二极管。比如1A电流&#xff0c;设D1的正向…

【含文档】基于Springboot+Android的环境保护生活App(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

网络编程(15)——服务器如何主动退出

十五、day15 服务器主动退出一直是服务器设计必须考虑的一个方向&#xff0c;旨在能通过捕获信号使服务器安全退出。我们可以通过asio提供的信号机制绑定回调函数即可实现优雅退出。 之前服务器的主函数如下 #include "CSession.h" #include "CServer.h"…

电影《749局》路演 苗苗演绎超能力少女分享幕后故事

近日&#xff0c;国庆档科幻电影《749局》正在热映中&#xff0c;各主创们以及导演正在积极路演中&#xff0c;截至目前&#xff0c;主演苗苗已到过宁波、杭州、武汉、长沙等城市&#xff0c;在现场与观众热情互动&#xff0c;讲述电影拍摄背后的故事与感受。根据猫眼专业版数据…

Word转PDF的转换方法有哪些?这7个效率技巧,不知道就亏大了!

Word转PDF怎么转&#xff1f;我们在日常工作生活中&#xff0c;经常会用到word文档。如果是编写报告、做会议记录、制定文案等内容&#xff0c;一般都会选择创建word文档。但是如果需要发送给同事、客户或合作伙伴协作时&#xff0c;pdf格式会更加方便。 那么如何将word转为pdf…

Chapter06

6.3.1 &#xff08;1&#xff09;打印如下图案 #include <stdio.h> int main() {int i, j;int n 5; // 定义图案的行数 for (i 1; i < n; i) {// 打印前导空格 for (j 1; j < n - i; j) {printf(" ");}// 打印数字 for (j 1; j < i; j) {p…

永磁同步电机环路反步法(backstepping)控制

文章目录 1、反步控制原理1.1 李雅普诺夫稳定性定理1.2 严格反馈系统1.3 一般设计流程 2、永磁同步电机反步控制2.1 反步控制器设计2.2 反步控制仿真 参考 写在前面&#xff1a;本人能力、时间、技术有限&#xff0c;没有对一些细节进行深入研究和分析&#xff0c;也难免有不足…

【Canvas与艺术】古典绿墙象牙白框红棱六边形窗格

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>古典六边形窗格Draft1</title><style type"text/css&q…

YOLOv10改进策略【注意力机制篇】| CVPR2024 CAA上下文锚点注意力机制

一、本文介绍 本文记录的是基于CAA注意力模块的YOLOv10目标检测改进方法研究。在远程遥感图像或其他大尺度变化的图像中目标检测任务中&#xff0c;为准确提取其长距离上下文信息&#xff0c;需要解决大目标尺度变化和多样上下文信息时的不足的问题。CAA能够有效捕捉长距离依赖…

嵌入式 c 内存堆栈增长方向往低地址方向好处

如下是堆和栈内存空间使用方式有如下好处&#xff1a; 1、stack从高地址向低地址扩展&#xff0c;这样栈空间的起始位置就能确定下来&#xff1b;如果反向&#xff0c;则要考虑这个起点从哪里合适&#xff0c;要确定堆的大小。 2、可以共用中间部分区域空间&#xff0c;最大化…

高速电路中电源设计问题

DCDC芯片都有一个开关频率&#xff0c;选型的时候注意一点这个问题。 纹波&#xff1a;纹波是电源波动中的低频部分&#xff0c;一般处于5Mhz以内的频段&#xff0c;铲子来自MOS的开关动作。 噪声&#xff1a;噪声值电源波动的高频部分&#xff0c;一般高于5Mhz,成分比较复杂…

UE5运行时动态加载场景角色动画任意搭配-角色及动画(一)

通过《MMD模型及动作一键完美导入UE5》系列文章,我们可以把外部场景、角色、动画资产导入UE5,接下来我们将实现运行时动态加载这些资产,并任意组合搭配。 1、骨骼动画复用 1、大部分模型骨骼是不通用的,比如这些裙子也是有骨骼的,属于模型特有的,但是对于动画来说,很多…

OmniCorpus数据集:最大(百亿级别)多模态数据集

2024-06-12 &#xff0c;由上海人工智能实验室、哈尔滨工业大学、南京大学、复旦大学等联合创建OmniCorpus&#xff0c;一个达到百亿级别的图文交错数据集。它不仅规模空前&#xff0c;更以其多元化的数据来源和高质量的数据内容&#xff0c;为多模态大语言模型的研究提供了坚实…

Axure大屏可视化模板在多领域实践应用案例分析

Axure大屏可视化模板&#xff0c;凭借其强大的功能性和灵活性&#xff0c;在众多领域中发挥着举足轻重的作用。本文将详细探讨Axure大屏可视化模板在农业、园区管理、智慧城市、企业数据可视化和医疗领域的应用案例&#xff0c;展示其如何助力各行业实现智能化管理和决策优化。…

Mythical Beings:Web3游戏如何平衡创造内容、关注度与实现盈利的不可能三角

Web3游戏自其诞生以来&#xff0c;以去中心化和独特的代币经济体系迅速引起关注。然而&#xff0c;如何在创造内容、吸引用户和实现盈利之间达到平衡&#xff0c;始终是Web3游戏面临的核心挑战。Mythical Beings作为一款Web3卡牌游戏&#xff0c;通过创新设计和独特机制&#x…