STM32驱动GY-39监测环境温度,湿度,大气压强,光强度
目录
- 模块简介
- 模块测试
- 接线
- 代码
- 测试现象
- 总结
模块简介
GY-39 是一款低成本,气压,温湿度,光强度传感器模块。工作电压 3-5v,功耗小,安装方便。
其工作原理是,MCU 收集各种传感器数据,统一处理,直接输出计算后的结果,此模块,有两种方式读取数据,即串口 UART(TTL 电平)或者 IIC(2 线)。串口的波特率有 9600bps 与 115200bps,可配置,有连续,询问输出两种方式,可掉电保存设置。可适应不同的工作环境,与单片机及电脑连接。模块另外可以设置单独传感器芯片工作模式,作为简单传感器模块,MCU 不参与数据处理工作。
模块测试
接线
这里使用的是MCU_IIC模式,所以在使用前需要先将S0与GND进行短接(模块默认是UART模式),如图中的蓝色跳线帽短接。

将模块其他需要的线与开发板连接,接线如下:
GY-39—STM32F103C8T6
SCL—PB6
SDA—PB7
STM32—FT232/USB转TTL
TX(PA9)—RX
RX(PA10)—TX
代码
数据计算方法模块的说明手册中已经有具体提出。
数据计算方法:
①光照强度计算方法(当 Byte2=0x15 时,数据:Byte4~Byte7) :
Lux=(前高8位<<24) | (前低8位<<16) | (后高8位<<8) | 后低8位 单位lux
②温度、气压、湿度、海拔,计算方法(当 Byte2=0x45 时):
温度:Byte4~Byte5
T=(高 8 位<<8)|低 8 位
T=T/100 单位℃
气压:Byte6~Byte9
P=(前高 8 位<<24) | (前低 8 位<<16) | (后高 8 位<<8) | 后低 8 位
P=P/100 单位 pa
湿度:Byte10~Byte11
Hum=(高 8 位<<8)|低 8 位
Hum=Hum/100 百分制
海拔:Byte12~Byte13
H=(高 8 位<<8)|低 8 位 单位 m
这是主函数中用于计算其输出值的部分代码:
if(Single_ReadI2C(0xb6,0x04,raw_data,10)){Bme.Temp=(raw_data[0]<<8)|raw_data[1];data_16[0]=(((uint16_t)raw_data[2])<<8)|raw_data[3];data_16[1]=(((uint16_t)raw_data[4])<<8)|raw_data[5];Bme.P=(((uint32_t)data_16[0])<<16)|data_16[1];Bme.Hum=(raw_data[6]<<8)|raw_data[7];Bme.Alt=(raw_data[8]<<8)|raw_data[9];}if(Single_ReadI2C(0xb6,0x00,raw_data,4))data_16[0]=(((uint16_t)raw_data[0])<<8)|raw_data[1];data_16[1]=(((uint16_t)raw_data[2])<<8)|raw_data[3];Lux=(((uint32_t)data_16[0])<<16)|data_16[1];printf("Temp: %.2f DegC ",(float)Bme.Temp/100);printf(" P: %.2f Pa ",(float)Bme.P/100);printf(" Hum: %.2f ",(float)Bme.Hum/100);printf(" Alt: %.2f m\r\n ",(float)Bme.Alt+36);printf("\r\n Lux: %.2f lux\r\n ",(float)Lux/100); delay_ms(200);
测试现象
连接好上电烧录程序后,可以看到串口的输出数据里已经有温度,大气压强,湿度,海拔和光照强度的值了。

总结
有关代码中海拔的计算可以在平地时候,让高度数据加上或者减去偏差值,让海拔数据等于当地平均海拔。同一地点,气压每天,每个季节都会变化的,如果是测绝对高度,是需要经常校准的。
相关文章:
STM32驱动GY-39监测环境温度,湿度,大气压强,光强度
目录 模块简介模块测试接线代码测试现象 总结 模块简介 GY-39 是一款低成本,气压,温湿度,光强度传感器模块。工作电压 3-5v,功耗小,安装方便。 其工作原理是,MCU 收集各种传感器数据,统一处理&…...
在华为和比亚迪干了5年测试,月薪25K,熬夜总结出来的划水经验.....
先简单交代一下背景吧,某不知名 985 的本硕,17 年毕业加入华为,之后跳槽到了比亚迪,一直从事软件测试的工作。之前没有实习经历,算是5年的工作经验吧。 这5年之间完成了一次晋升,换了一家公司,…...
Mac 使用 scp 上传或下载文件/文件夹
目录 上传文件到远程服务器 scp 本地文件路径 远程用户名远程IP:远程目标目录上传文件夹到远程服务器 scp -r 本地文件夹 远程用户名远程IP:远程目标目录从远程服务器下载文件 scp 远程用户名远程IP:远程文件路径 本地目标目录从远程服务器下…...
Restful 风格
目录 Restful风格创建springboot项目SpringMVC开发Restful接口1、获取所有的员工思路代码RequestMappingGetMapping 2、获取单个员工思路代码注意: 3、删除员工数据思路:代码单个删除批量删除 4、更新员工数据思路: 5、jQuery发送请求发送del…...
LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测
引言 小伙伴们好,我是《小窗幽记机器学习》的小编:卖热干面的小女孩。 个人CSDN首页:JasonLiu1919_面向对象的程序设计,深度学习,C-CSDN博客 今天开始以2篇小作文介绍代码大语言模型Code Llama。上篇主要介绍Code Llama的基本情况并基于Hug…...
积分球荧光光谱测试光电检测方式有哪些优点?
积分球荧光光谱测试是一种测量光通量的方法,其基本原理是将待测光源放入积分球中,在积分球内壁涂以白色漫反射层,光源发出的光经球壁多次反射后,使整个球壁上的照度均匀分布,再通过球壁上的孔投射到光电探测器上的光通…...
软考考试时间已出!采用连考形式!
2023年下半年计算机技术与软件专业技术资格(水平)考试批次安排已出!下面是具体的考试安排。 通知原文如下:↓↓↓ 按照《2023年下半年计算机技术与软件专业技术资格(水平)考试有关工作调整的通告》&#x…...
深入理解强化学习——学习(Learning)、规划(Planning)、探索(Exploration)和利用(Exploitation)
分类目录:《深入理解强化学习》总目录 学习 学习(Learning)和规划(Planning)是序列决策的两个基本问题。 如下图所示,在强化学习中,环境初始时是未知的,智能体不知道环境如何工作&a…...
大模型LLM相关面试题整理-训练集-训练经验-微调
3 大模型(LLMs)微调 3.1 如果想要在某个模型基础上做全参数微调,究竟需要多少显存? 要确定全参数微调所需的显存量,需要考虑以下几个因素: 模型的大小:模型的大小是指模型参数的数量。通常&…...
qt 实现pdf阅读器
文章目录 概要方案一方案二一、介绍二、编译三、用法本项目代码 概要 在qt程序中,要实现PDF文件浏览,从网上目前找到了两种解决方案,本文主要介绍下着两种方案和适用性。 方案一 这种方法是从https://github.com/develtar/qt-pdf-viewer-l…...
从培训班出来之后找工作的经历,教会了我五件事.....
我是非计算机专业,由于专业不好实习急着就业有过一些失败的工作经历后,跑去参加培训进入IT这行的。 之前在报名学习软件测试之前我也很纠结,不知道怎么选择机构。后面看到有同学在知乎上分享自己的学习经历,当时对我的帮助很大。…...
idea中还原dont ask again
背景 在使用idea打开另外一个项目的时候,一不小心勾选为当前项目而且是不在下次询问,导致后面每次打开新的项目都会把当前项目关闭,如下图所示 下面我们就一起看一下如何把这个询问按钮还原回来 preferences/settings->Appearance&…...
Unity之ShaderGraph如何实现光边溶解
前言 今天我们来实现一个最常见的随机溶剂效果。如下图所示: 光边溶解效果: 无光边效果 主要节点 Simple Noise:根据输入UV生成简单噪声或Value噪声。生成的噪声的大小由输入Scale控制。 Step:对于每个组件,如果输…...
Go语言和Python语言哪个比较好?
目录 1、性能 2、开发效率和易用性 3、社区支持 4、语法 5、其他因素 总结 Go语言和Python语言都是非常优秀的编程语言,它们各自具有不同的优势和适用场景。在选择哪种语言更适合您的项目时,需要考虑多个方面,包括性能、开发效率、可读…...
MAYA教程之模型的UV拆分与材质介绍
什么是UV 模型制作完成后,需要给模型进行贴图,就需要用到UV功能 UV编译器介绍 打开UI编译器 主菜单有一个 UV->UV编译器,可以点击打开 创建一个模型,可以看到模型默认的UV UV编译器功能使用 UV模式的选择 在UV编译器中…...
vscode调试container(进行rocksdb调试)
vscode调试container(进行rocksdb调试) 参考链接: https://blog.csdn.net/qq_29809823/article/details/128445308#t5 https://blog.csdn.net/qq_29809823/article/details/121978762#t7 使用vscode中的插件dev containners->点击左侧的…...
从恐怖到商机:2023万圣节跨境电商如何打造鬼魅消费体验?
又到了一年一度的糖果、恐怖装扮和万圣节派对的时候!随着10月底的日子临近,人们开始为庆祝万圣节做各种各样的准备。而对于跨境电商来说,这个节日也是一个独特的商机,能够在全球市场上推广各种各样的节日相关商品。Adobe Digital …...
修炼k8s+flink+hdfs+dlink(五:安装dockers,cri-docker,harbor仓库,k8s)
一:安装docker。(所有服务器都要安装) 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2添加软件源信息 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/cent…...
从实时数据库转战时序数据库,他陪伴 TDengine 从 1.0 走到 3.0
关于采访嘉宾 在关胜亮的学生时代,“神童”这个称号如影随形,很多人初听时会觉得这个称谓略显夸张,有些人还会认为这是不是就是一种调侃,但是如果你听说过他的经历,就会理解这一称号的意义所在了。 受到教师母亲的影…...
颠覆传统有线通讯,虹科IO-Link wireless解决方案让智能机床的旋转部件实现可靠低延迟无线通信
作为新工业革命的一部分,传统机床正迅速发展成为智能机床。在工业4.0技术的推动下,新的创新应用使机床的效率和功能达到了更高的水平。要实现这些功能,需要在机床上集成传感器和执行器,以提供实时数据和自动化控制。然而ÿ…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
