文章目录

  • 一、什么是GY-39?
  • 二、产品参数
  • 三、引脚说明
  • 四、通信协议
    • 1. 串口通信
    • 2. IIC通信
  • 五、项目工程

一、什么是GY-39?

GY-39 是一款低成本,气压,温湿度,光强度 传感器模块。工作电压 3-5v,功耗小,安装方便。 其工作原理是,MCU 收集各种传感器数据,统一处理,直接输出计算后的结果,此模块,有两种方式读取数据,即串口 UART(TTL 电平)或者 IIC(2 线)。串口的波特率有 9600bps 与 115200bps,可配置,有连续,询问输出两种方式,可掉电保存设置。可适应不同的工作环境,与单片机及电脑连接。模块另外可以设置单独传感器芯片工作模式,作为简单传感器模块,MCU 不参与数据处理工作。提供 arduino,51,stm32 单片机通讯程序,不提供原理图及内部单片机源码。此 GY39 模块另外赠送安卓手机软件 app 查看数据,且支持 wifi 局域内网连接,手机及电脑同时显示数据。

二、产品参数

1. 特点

  • 高性价比
  • 内置 MCU 计算传感器数据
  • IIC、串口通信格式
  • 统一数据输出
  • 配相应的上位机软件

2. 技术

3. 应用

  • 数字照明管理
  • 物联网,智能家居应用
  • 气象站监测
  • 数字光照度计
  • 数字气压计,高度计
  • 温湿度计
  • 大棚气候监测

三、引脚说明


四、通信协议

1. 串口通信

当 GY-39 模块硬件 PinA(S0)=1 时候使用



2. IIC通信

当 GY-39 模块硬件 PinA(S0)=0 时候使用

五、项目工程

以下IIC通信工程
1. 定义结构体接收数据

typedef struct
{uint32_t P;uint16_t Temp;uint16_t Hum;uint16_t Alt;
} bme;bme Bme={0,0,0,0};

2. 引脚初始化

 void I2C_GPIO_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;/* 使能与 I2C有关的时钟 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );  /* PC3-I2C_SCL、PC5-I2C_SDA*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6| GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIOB->BSRR = GPIO_Pin_6;GPIOB->BSRR = GPIO_Pin_7;
}

3. 向IIC设备写入一个字节数据

u8 Single_WriteI2C_byte(u8 Slave_Address,u8 REG_Address,u8 data)
{if(I2C_Start()==0)  //起始信号{I2C_Stop(); return RESET;}           I2C_SendByte(Slave_Address);   //发送设备地址+写信号if(!I2C_WaitAck()){I2C_Stop(); return RESET;}I2C_SendByte(REG_Address);    //内部寄存器地址,if(!I2C_WaitAck()){I2C_Stop(); return RESET;}I2C_SendByte(data);       //内部寄存器数据,if(!I2C_WaitAck()){I2C_Stop(); return RESET;}I2C_Stop();   //发送停止信号return SET;
}

4. 从IIC设备读取一个字节数据

u8 Single_ReadI2C(u8 Slave_Address,u8 REG_Address,u8 *REG_data,u8 length)
{if(I2C_Start()==0)  //起始信号{I2C_Stop(); return RESET;}          I2C_SendByte(Slave_Address);    //发送设备地址+写信号if(!I2C_WaitAck()){I2C_Stop(); return RESET;} I2C_SendByte(REG_Address);     //发送存储单元地址if(!I2C_WaitAck()){I2C_Stop(); return RESET;} if(I2C_Start()==0)  //起始信号{I2C_Stop(); return RESET;}            I2C_SendByte(Slave_Address+1);  //发送设备地址+读信号if(!I2C_WaitAck()){I2C_Stop(); return RESET;}while(length-1){*REG_data++=I2C_RecvByte();       //读出寄存器数据I2C_SendACK(0);               //应答length--;}*REG_data=I2C_RecvByte();  I2C_SendACK(1);     //发送停止传输信号I2C_Stop();                    //停止信号return SET;
}

5. 数据转换

while(1){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);printf("\r\n Lux: %.2f  lux\r\n ",(float)Lux/100); printf("\r\n \r\n ");            delay_ms(20000);}

GY-39 气压,温湿度,光强度 传感器相关推荐

  1. bme280 环境传感器开发板_STM32Cube14 | 使用硬件I2C读写环境光强度传感器

    更多精彩~点击上面蓝字关注我们呀!   寻求更好的阅读体验,请点击阅读原文移步:Mculover666的个人博客. 本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件I ...

  2. STM32 BMP280模块 获取气压温度高度传感器数据 TFT显示

    STM32 BMP280模块 获取气压温度高度传感器数据 TFT显示 简介 BMP280是博世最新推出的数字气压传感器,具有卓越的性能和低廉的价格,相对精度为±0.12 hPa(相当于±1米),传感器 ...

  3. ESP32-BMP180气压、气温传感器

    ESP32-BMP180气压.气温传感器 BMP180传感器介绍 一.连接引脚 二.使用步骤 1.创建代码 2.保存运行 总结 BMP180传感器介绍 BMP180可以实时的测量大气压力,还能测量实时 ...

  4. CSR101x BLE芯片 简简单单实现一个 温湿度BLE 传感器结点

    CSR101x BLE芯片 简简单单实现一个 温湿度BLE 传感器结点 CSR101x ble 结点 开发软件和硬件 硬件原理图和硬件连接 软件的修改 在user_config.h 配置文件中 定义# ...

  5. BH1750环境光强度传感器FPGA驱动

    BH1750环境光强度传感器FPGA驱动 1. BH1750介绍        BH1750是一种用于两线式串行总线接口的数字型光强度传感器集成电路.这种集成电路可以根据收集的光线强度数据来调整液晶或 ...

  6. 15.STC15W408AS单片机驱动BH1750FVI光强度传感器

    https://mp.weixin.qq.com/s/id9sVd_uRSxIEgwgwlw31A 在上一篇中,我们介绍了IIC驱动OLED显示屏.这一篇是IIC驱动BH1750FVI光强度传感器.其 ...

  7. 温湿度DHT11传感器时序详解

    DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器 采集范围:温度0-50°±2°,湿度:20-90%RH. 采用单总线双向串行通信协议,每次采集都要由单片机发起开始信号,然后D ...

  8. 【STM32】DHT11温湿度模块传感器详解代码

    一.DHT11产品介绍 DHT11是数字温湿度传感器,测量范围:湿度20%-95%,温度0-50℃,广泛应用于加湿器.温湿度计.空调.汽车等领域. 二.典型应用电路 如上图DATA引脚用于MCU与DH ...

  9. 关于AM2302温湿度(DHT22)传感器的使用

    这是使用该传感器的整个过程,在使用这个传感器的过程中所遇到的一些问题. 驱动文件获取 百度网盘链接:https://pan.baidu.com/s/1io4Gd-wElNcp9nbdOEGSgA?pw ...

最新文章

  1. matlab仿真谱间干扰,内外分解和谱分解问题解析计算及其MATLAB仿真.pdf
  2. linux中典型文件档案分析
  3. lc171. Excel Sheet Column Number
  4. [转]12款最佳Linux命令行终端工具
  5. Jekyll主题收藏
  6. LeetCode 294. 翻转游戏 II(记忆化递归)
  7. 计算机应用技术环境评估,计算机应用教程(第7版)(Windows 7与Office 2007环境)习题解答与上机练习...
  8. editorloop 占用_速度控制 部分重复 语言学习软件 Loopman
  9. php海外研发,国外主流PHP框架比较
  10. 作为程序员,北漂的我有很多话想说。
  11. mysql中的sql
  12. Linux网络嗅探工具,微软“雪藏”的七个Windows 10强力工具
  13. 用C语言实现万年历的代码及思路(详细教程)
  14. Rem布局案例讲解。
  15. SAP中采购收货冲销和退货适用情形简析
  16. matlab实现线性函数逼近,1基于MATLAB的科学计算—函数逼近1.doc
  17. 解决EMD端点效应的方法比较
  18. Linux粘滞位简析
  19. 鸿蒙系统平板界面,首发预装鸿蒙OS!华为MatePad Pro 2系统界面曝光
  20. 追梦猪seo针对于移动端seo优化和排名技术

热门文章

  1. 数据科学家应该掌握的12种机器学习算法
  2. robotframework:log日志输出现中文乱码如xC4xE3
  3. 全球与中国植入前单基因遗传病检测试剂盒市场现状及未来发展趋势(2022)
  4. Pixhawk无人机-ArduPilot 软件SITL仿真模拟飞行(SITL+Mission Planner结合)
  5. 西门子触摸屏上电显示初始画面几秒后,自动切换到下一个画面的具体方法
  6. 为啥说高通最新发布的5G芯片意义重大?
  7. (十一)质量、动量、动量矩与能量守恒
  8. 3D游戏编程学习笔记(五):与游戏世界交互
  9. NoSQL 35 个非主流数据库
  10. 猿创征文|前端到全栈,一名 IT 初学者的学习与成长之路