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、串口通信格式
湿度测量范围
(4)、统一数据输出
光强测量范围 0.045lux~188000lux
(5)、 配相应的上位机软件
气压测量范围
三、产品应用
响应频率
(1)、数字照明管理
工作电压
(2)、物联网,智能家居应用
工作电流
(3)、气象站监测
工作温度
(4)、数字光照度计
储存温度
(5)、数字气压计,高度计
(6)、温湿度计
尺寸
(7)、大棚气候监测
传感器芯片
-40°~ 85°
-40°~ 125°
24.3mm×26.7mm
ME280+MAX44009
10 HZ
3~5 V
5mA
名称
参数
-40°~ 85°
0% ~100%
300 ~1100hpa
1
三、 引脚说明
实物图片(标号):
Pin1
Pin2
Pin3
Pin4
Pin5
Pin6
Pin7
Pin8
PinA
PinB
VCC
CT
DR
GND
NC
INT
SDA
SCL
S0
S1
电源+ (3v-5v)
串口 UART_TX / IIC_SCL
串口 UART_RX / IIC_SDA
电源地
保留,不要连接
max44009 光强芯片中断 S1=0(接 GND 时启用)
芯片数据总线 S1=0(接 GND 时启用)
芯片时钟总线 S1=0(接 GND 时启用)
串口/MCU_IIC 模式选择
仅使用传感器芯片选择
注意:①, PinA(S0)硬件选择模块工作模式,Pin2(CT), Pin3(DR)为 GY-39 模块通讯接口,
S0=1(默认)
串口 UART 模式,Pin2 为 TX, Pin3 为 RX, TTL 电平
S0=0(接 GND 时) MCU_IIC 模式, Pin2 为 SCL, Pin3 为 SDA,
②,PinB(S1)仅使用传感器芯片 BME280+MAX44009 模式,选择 MCU 是否参与数据处理工作,
S1=1(默认)
MCU + 芯片模式,Pin7, Pin8,请不要有任何连接
S1=0(接 GND 时) 仅芯片模式, 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 个字节(十六进制):
①.Byte0: 0x5A 帧头标志
②.Byte1: 0x5A 帧头标志
③.Byte2: 0x15 本帧数据类型(参考含义说明)
④.Byte3: 0x04 数据量
⑤.Byte4: 0x00~0xFF 数据前高 8 位
⑤.Byte5: 0x00~0xFF 数据前低 8 位
⑥.Byte6: 0x00~0xFF 数据后高 8 位
⑦.Byte7: 0x00~0xFF 数据后低 8 位
⑧.Byte8: 0x00~0xFF 校验和(前面数据累加和,仅留低 8 位)
0x15
光照强度
Byte2 代表的含义说明:
Byte2
含义:
(3)、数据计算方法
0x45
温度、气压、湿度、海拔
0x55
IIC 地址
①光照强度计算方法(当 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)
②温度、气压、湿度、海拔,计算方法(当 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
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)
③MCU_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
H=(高 8 位<<8)|低 8 位 单位 m
例:一帧数据
< 5A -5A -45 -0A -0B -2D -00 -97 -C4 -3F -12- 77 -00- 9C- FA >
(4)、命令字节,由外部控制器发送至 GY-39 模块(十六进制)
1、所有串口指令格式,帧头:0xa5
指令格式:帧头+指令+校验和(8bit)
2、串口命令指令:
①,串口输出配置寄存器:
Bit7
command
Bit1
Bit0
AUTO
BME MAX
输出命令
AUTO(默认 1) 1:上电后按照上次的输出配置输出,0:上电后不自动输出
bit6-bit2
Bit6 Bit5 Bit4 Bit3 Bit2
0
0
0
0
0
BME(默认 1)
MAX(默认 1)
必需置零:00000
1:连续输出温度、气压、湿度、海拔
0:不输出;
当 Auto 置 1,掉电保存
1:连续输出光照强度
0:不输出;
当 Auto 置 1,掉电保存
命令格式:0xA5+command+sum
例:bit7(Auto=1), bit0(MAX=1)
发送命令:0xA5+0x81+0x26,表示连续输出光照强度,掉电后保存该设置,重新上电后将
自动连续输出光照强度;
4
②,设置 IIC 地址指令:(该指令掉电保存修改后的 IIC 地址)
0xAA+XX+sum---------XX 表示 7bit IIC 地址,sum 等于 0xAA+XX 之和的低 8 位,例如
原厂 IIC 7bit 地址为 0x5B,则发送 0xAA+0x5B+05 到模块,7bit 地址左移一位,这样模块的
8bit IIC 地址为 0xB6
③,查询输出指令:
0xA5+0x51+0xF6 ---------------输出光照强度 (模块返回数据类型为 0x15)
0xA5+0x52+0xF7 ---------------输出温度、气压、湿度、海拔(模块返回数据类型为 0x45)
注:查询指令不掉电保存,如用查询输出,请注意在这之前是否配置了 command=0x00
④,波特率配置:
0xA5+0xAE+0x53 ---------------9600 (默认)
0xA5+0xAF+0x54 ---------------115200
❷, MCU_IIC 协议:当 GY-39 模块硬件 PinA(S0)=0 时候使用
① IIC 地址,默认 7bit 地址为 0x5B,则 8bit 地址为 0xB6
IIC 地址,可以通过串口配置修改,可修改 128 种不同地址,掉电保存。
光照强度前高 8 位
光照强度前低 8 位
光照强度后高 8 位
光照强度后低 8 位
温度高 8 位
温度低 8 位
气压前高 8 位
气压前低 8 位
气压后高 8 位
气压后低 8 位
湿度高 8 位
湿度低 8 位
海拔高 8 位
海拔低 8 位
② IIC 寄存器:
0x00(只读) H_LUX_H
0x01(只读) H_LUX_L
0x02(只读) L_LUX_H
0x03(只读) L_LUX_L
0x04(只读) T_H
0x05(只读) T_L
0x06(只读) H_P_H
0x07(只读) H_P_L
0x08(只读) L_P_H
0x09(只读) L_P_L
0x0a(只读) HUM_H
0x0b(只读) HUM_L
0x0c(只读) H_H
0x0d(只读) H_L
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