GY-39 传感器模块使用手册 V1.0 一 概述 GY-39 是一款低成本, 气压, 温湿度, 光强度传感器模块 工作电压 3-5v, 功耗小, 安装方便 其工作原理是,MCU 收集各种传感器数据, 统一处理, 直接输出计算后的结果, 此模块, 有两种方式读取数据, 即串口 UART(TTL 电平 ) 或者 IIC(2 线 ) 串口的波特率有 9600bps 与 115200bps, 可配置, 有连续, 询问输出两种方式, 可掉电保存设置 可适应不同的工作环境, 与单片机及电脑连接 模块另外可以设置单独传感器芯片工作模式, 作为简单传感器模块,MCU 不参与数据处理工作 提供 arduino,51,stm32 单片机通讯程序, 不提供原理图及内部单片机源码 此 GY39 模块另外赠送安卓手机软件 app 查看数据, 且支持 wifi 局域内网连接, 手机及电脑同时显示数据 二 产品特点 技术参数 ( 传感器精度请参考芯片手册 ) (1) 高性价比 (2) 内置 MCU 计算传感器数据名称参数 (3) IIC 串口通信格式温度测量范围 -40 ~ 85 (4) 统一数据输出湿度测量范围 0% ~100% (5) 配相应的上位机软件光强测量范围 0.045lux~188000lux 三 产品应用 气压测量范围 300 ~1100hpa (1) 数字照明管理 响应频率 10 HZ (2) 物联网, 智能家居应用 工作电压 3~5 V (3) 气象站监测 工作电流 5mA (4) 数字光照度计 工作温度 -40 ~ 85 (5) 数字气压计, 高度计 储存温度 -40 ~ 125 (6) 温湿度计 尺寸 24.3mm 26.7mm (7) 大棚气候监测 传感器芯片 ME280+MAX44009 1
三 引脚说明 实物图片 ( 标号 ): Pin1 VCC 电源 + (3v-5v) Pin2 CT 串口 UART_TX / IIC_SCL Pin3 DR 串口 UART_RX / IIC_SDA Pin4 GND 电源地 Pin5 NC 保留, 不要连接 Pin6 INT max44009 光强芯片中断 S1=0( 接 GND 时启用 ) Pin7 SDA 芯片数据总线 S1=0( 接 GND 时启用 ) Pin8 SCL 芯片时钟总线 S1=0( 接 GND 时启用 ) PinA S0 串口 /MCU_IIC 模式选择 PinB S1 仅使用传感器芯片选择 注意 :1, PinA(S0) 硬件选择模块工作模式,Pin2(CT), Pin3(DR) 为 GY-39 模块通讯接口, S0=1( 默认 ) S0=0( 接 GND 时 ) 串口 UART 模式,Pin2 为 TX, Pin3 为 RX, TTL 电平 MCU_IIC 模式, Pin2 为 SCL, Pin3 为 SDA, 2,PinB(S1) 仅使用传感器芯片 BME280+MAX44009 模式, 选择 MCU 是否参与数据处理工作, S1=1( 默认 ) S1=0( 接 GND 时 ) MCU + 芯片模式,Pin7, Pin8, 请不要有任何连接 仅芯片模式, Pin7 为芯片 SCL 总线, Pin8 为芯片 SDA 总线 2
五 通信协议 ❶, 串口协议 : 当 GY-39 模块硬件 PinA(S0)=1 时候使用 (1) 串口通信参数 ( 默认波特率值 9600bps, 可通过软件设定 ) 波特率 :9600 bps 校验位 :N 数据位 :8 停止位 :1 波特率 :115200 bps 校验位 :N 数据位 :8 停止位 :1 (2) 模块输出格式, 每帧包含 8-13 个字节 ( 十六进制 ): 1.Byte0: 0x5A 帧头标志 2.Byte1: 0x5A 帧头标志 3.Byte2: 0x15 本帧数据类型 ( 参考含义说明 ) 4.Byte3: 0x04 数据量 5.Byte4: 0x00~0xFF 数据前高 8 位 5.Byte5: 0x00~0xFF 数据前低 8 位 6.Byte6: 0x00~0xFF 数据后高 8 位 7.Byte7: 0x00~0xFF 数据后低 8 位 8.Byte8: 0x00~0xFF 校验和 ( 前面数据累加和, 仅留低 8 位 ) Byte2 代表的含义说明 : Byte2 0x15 0x45 0x55 含义 : 光照强度温度 气压 湿度 海拔 IIC 地址 (3) 数据计算方法 1 光照强度计算方法 ( 当 Byte2=0x15 时, 数据 :Byte4~Byte7) : Lux=( 前高 8 位 <<24) ( 前低 8 位 <<16) ( 后高 8 位 <<8) 后低 8 位单位 lux 例 : 一帧数据 <5A- 5A- 15-04- 00-00- FE- 40-0B > Lux=(0x00<<24) (0x00<<16) (0xFE<<8) 0x40 Lux=Lux/100 =650.88 (lux) 2 温度 气压 湿度 海拔, 计算方法 ( 当 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 3
H=( 高 8 位 <<8) 低 8 位单位 m 例 : 一帧数据 < 5A -5A -45-0A -0B -2D -00-97 -C4-3F -12-77 -00-9C- FA > T=(0x0B<<8) 0x2D=2861 温度 T=2861/100=28.61 ( ) P=(0x00<<24) (0x97<<16) (C4<<8) 3F=9946175 气压 P=9946175/100=99461.75 (pa) Hum=(0x12<<8) 77=4727 湿度 Hum=4727/100=47.27 (%) 海拔 H=(0x00<<8) 0x9c=156 (m) 3MCU_IIC 地址 ( 当 Byte2=0x55 时 ): IIC_ADD=Byte4 例 : 一帧数据 <5A-5A-55-01-B6-C0 > IIC_ADD=0xB6 (8bit iic_add) 则 7bit iic_add 为 8bit iic_add 右移 1bit 得 0x5b (4) 命令字节, 由外部控制器发送至 GY-39 模块 ( 十六进制 ) 1 所有串口指令格式, 帧头 :0xa5 指令格式 : 帧头 + 指令 + 校验和 (8bit) 2 串口命令指令: 1, 串口输出配置寄存器 : command Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 输出命令 AUTO 0 0 0 0 0 BME MAX AUTO( 默认 1) bit6-bit2 必需置零 :00000 BME( 默认 1) MAX( 默认 1) 1: 上电后按照上次的输出配置输出,0: 上电后不自动输出 1: 连续输出温度 气压 湿度 海拔 0: 不输出 ; 当 Auto 置 1, 掉电保存 1: 连续输出光照强度 0: 不输出 ; 当 Auto 置 1, 掉电保存 命令格式 :0xA5+command+sum 例 :bit7(auto=1), bit0(max=1) 发送命令 :0xA5+0x81+0x26, 表示连续输出光照强度, 掉电后保存该设置, 重新上电后将自动连续输出光照强度 ; 4
2, 设置 IIC 地址指令 :( 该指令掉电保存修改后的 IIC 地址 ) 0xAA+XX+sum---------XX 表示 7bit IIC 地址,sum 等于 0xAA+XX 之和的低 8 位, 例如原厂 IIC 7bit 地址为 0x5B, 则发送 0xAA+0x5B+05 到模块,7bit 地址左移一位, 这样模块的 8bit IIC 地址为 0xB6 3, 查询输出指令 : 0xA5+0x51+0xF6 --------------- 输出光照强度 ( 模块返回数据类型为 0x15) 0xA5+0x52+0xF7 --------------- 输出温度 气压 湿度 海拔 ( 模块返回数据类型为 0x45) 注 : 查询指令不掉电保存, 如用查询输出, 请注意在这之前是否配置了 command=0x00 4, 波特率配置 : 0xA5+0xAE+0x53 ---------------9600 ( 默认 ) 0xA5+0xAF+0x54 ---------------115200 ❷, MCU_IIC 协议 : 当 GY-39 模块硬件 PinA(S0)=0 时候使用 1 IIC 地址, 默认 7bit 地址为 0x5B, 则 8bit 地址为 0xB6 IIC 地址, 可以通过串口配置修改, 可修改 128 种不同地址, 掉电保存 2 IIC 寄存器 : 0x00( 只读 ) H_LUX_H 光照强度前高 8 位 0x01( 只读 ) H_LUX_L 光照强度前低 8 位 0x02( 只读 ) L_LUX_H 光照强度后高 8 位 0x03( 只读 ) L_LUX_L 光照强度后低 8 位 0x04( 只读 ) T_H 温度高 8 位 0x05( 只读 ) T_L 温度低 8 位 0x06( 只读 ) H_P_H 气压前高 8 位 0x07( 只读 ) H_P_L 气压前低 8 位 0x08( 只读 ) L_P_H 气压后高 8 位 0x09( 只读 ) L_P_L 气压后低 8 位 0x0a( 只读 ) HUM_H 湿度高 8 位 0x0b( 只读 ) HUM_L 湿度低 8 位 0x0c( 只读 ) H_H 海拔高 8 位 0x0d( 只读 ) H_L 海拔低 8 位 5
六 模块使用方法模块数据更新频率约为 10hz; 该模块为串口和 IIC 输出模块, 模块默认为串口模式 串口模式 ( 默认 ):PinA 和 PinB 处于断开状态则为串口模式, 使用该模块配套的上位机可方便的对模块进行相应的设置 ; 上位机使用前请先选择好端口和波特率, 然后再点击 打开串口 按钮 ; 位于上位机 模块设置 页面, 第三栏的 command 对应模块串口的 command 寄存器, 在相应位置打勾, 然后点右侧的 应用 按钮, 即对模块进行了设置, 模块将根据指令做出反应 ( 具体参看 command 输出寄存器 ); 使用者也可在左下方的 发送指令框 输入相应指令, 然后点击右侧的发送按钮即可, 波特率更改方法同 ; MCU_IIC 通信模式 : 将模块左边的 PinA 引脚 S0 接 GND, 模块进入 IIC 模式 IIC 通信时钟需低于 40KHZ, 通过读取相应寄存器即可, 全部数据读取间隔应小于 10hz; 仅使用传感器芯片模式 : 将模块右边的 PinB 引脚 S1 接 GND, 模块上的 BME280 和 MAX44009 芯片共用 IIC 的 SCL SDA 引脚,INT 为 MAX44009 中断引脚, 此模式下模块的 MCU 不对芯片进行设置和读取 此模式下请客户自行在网上查找 BME280 和 MAX44009 的芯片的资料及程序, 这里不再提供 模式选择如下图 3 种 : 1, 串口工作模式 ( 默认 ) 2,MCU_IIC 模式 3, 芯片 IIC 模式 6
模块与 mcu 或者 USB 转 ttl, 连接图 : FT232 usb 转 ttl 连接 : Arduino pro mini 串口连接 : Arduino pro mini iic 连接 ( 注意跳线帽 ): 上位机截图 : 7
安卓手机 app 截图 : 上位机软件, 手机软件使用, 请参考提供的说明及使用视频 模块单独连电脑时需要 USB 转 TTL 模块, 模块单独连手机时需要蓝牙模块 七 结束 GY39 模块 I/O 是 TTL 电平, 可以直接与单片机串口连接, 可以直接与 PL2303,CH340,FT232 等芯片连接, 但不能与电脑九针串口直接连接 8