简介
这是一个集成了SHTC3温湿度传感器、BMP280大气压强传感器、VEML7700光照传感器、紫外线传感器(V1.0 : ML8511,V2.0 : LTR390-UV-01)共五种环境参数的五合一传感器。每一种环境参数我们都使用了专业传感器芯片,电路设计上也精心考虑了核芯片的合理布局和热传导,有效的保证了数据的准确性。
产品板载了MCU处理芯片,将传感器的原始数据经过换算,你得到的值就是标准单位值,例如温度是℃和F,湿度是百分比,大气压强是Kpa,光照是lx,紫外线是mw/cm²。
DF环境传感器支持UART和I2C两种通讯方式。提供Gravity和Breakout两种产品形态,提供了完善的Arduino库、Python库。
产品体积精致小巧,你可以用它来制作家庭室内外环境监测系统,或者用于你的环境监测方面的课题,使用DF的环境传感器能大幅度的简化项目的连接线和复杂的程序代码。
说明:
V2.0与V1.0相比更改了紫外线传感器型号,V1.0版本的紫外线传感器型号为ML8511,V2.0版本的紫外线传感器型号为LTR390-UV-01。
特性
- Gravity接口,无需焊接,即插即用
- 可切换I2C和UART两种输出方式
- 高集成度模块,同时可测试多种数据(温度,湿度,大气压强,海拔高度,紫外线强度,环境光强度)
- 布局合理,精度高
应用场景
- 家庭环境检测
- 大棚环境检测
- 仓库环境检测
- 商城环境检测
- 泳池环境检测
寄存器表
V1.0 版本
产品参数
基本参数
- 工作电压: 3.3~5V DC
- 工作电流: 45mA
- 输出信号: I2C、UART
- 工作温度:-20~70℃
- 产品尺寸:32mm*32mm
- 安装孔尺寸:M3(直径3mm),安装孔圆心间距25mm
大气压强传感器
气压单位关系:1000pa = 10hpa = 1kpa
- 传感器芯片型号:BMP280
- 大气压测量范围:3000~1100 hPa
- 气压相对精度:±0.12 hPa
- 气压绝对精度:±1 hPa
温湿度传感器
- 传感器芯片型号:SHT-C3
- 相对湿度精度:±2%RH
- 相对湿度分辨率:0.01%RH
- 相对湿度测量范围:0~100
- 温度精度:±0.2℃
- 温度分辨率:0.01℃
- 温度测量范围:-40~125℃
紫外线传感器
- 传感器芯片型号:ML8511
- 紫外线敏感波长 UV-A(320-400nm),UV-B(280-320nm)
- 紫外线输出单位:mW/c㎡
环境光传感器
- 传感器芯片型号:VEML7700
- 环境光精度:0.0036 lx/ct
- 环境光量程:0~120 klx
功能指示
尺寸图
引脚说明
标号 | 名称 | 功能描述 |
---|---|---|
1 | D/T | I2C数据线SDA/UART数据传输-TX |
2 | C/R | I2C时钟线SCL/UART数据接收-RX |
3 | - | GND电源负极 |
4 | + | 电源正极 |
Arduino使用教程
将程序下载到DFRuino UNO,打开串口监视器查看各环境参数。
软硬件准备
- 硬件
- DFRuino UNO R3 x1
- SEN0501 多功能环境传感器 x1
- 杜邦线 若干
- 软件
- Arduino IDE 点击下载Arduino IDE
- 首先下载并安装DFRobot_RTU库
- 然后下载并安装DFRobot_EnvironmentalSensor库。如何安装库?
使用UART/I2C读取传感器数据
UART/I2C接线图
UART接线方式 I2C接线方式
使用步骤
关于 UART/I2C 模式切换:
1.默认代码为UART模式请将开关拨到UART一侧
2.如果需要使用I2C模式请将开关拨到I2C一侧,并将代码开头中的1替换为0,如图
步骤
注意:不同主板对应不同的接线引脚(参考上方更多接线图),在Arduino IDE中它们也同时对应不同主板选择,不同端口(COM),其它步骤同DFRuino UNO
- 将模块与DFRuino UNO按照上图接线方式相连接。
- 打开Arduino IDE,将下面的代码上传到DFRuino UNO。
- 打开Arduino IDE的串口监控视器,把波特率调至115200,观察串口打印结果。
样例代码
代码:打印模块获取的所有数据
/*!
*@file read_data.ino
*@brief 这个demo演示获取SEN050X传感器上的数据,通过IIC或串口连接传感器
*@n 将SEN050X返回的数据打印在串口监视器上
*
* @n connected table
* ---------------------------------------------------------------------------------------------------------------
* board | MCU | Leonardo/Mega2560/M0 | UNO | ESP8266 | ESP32 | microbit |
* VCC | 3.3V/5V | VCC | VCC | VCC | VCC | X |
* GND | GND | GND | GND | GND | GND | X |
* RX | TX | Serial1 TX1 | 5 | 5/D6 | D2 | X |
* TX | RX | Serial1 RX1 | 4 | 4/D7 | D3 | X |
* ---------------------------------------------------------------------------------------------------------------
*
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (https://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [TangJie](jie.tang@dfrobot.com)
* @version V1.0
* @date 2021-08-31
* @get from https://www.dfrobot.com
* @url https://github.com/cdjq/DFRobot_EnvironmentalSensor
*/
#include "DFRobot_EnvironmentalSensor.h"
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
#include <SoftwareSerial.h>
#endif
#define MODESWITCH /*UART:*/1 /*I2C: 0*/
#if MODESWITCH
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
SoftwareSerial mySerial(/*rx =*/4, /*tx =*/5);
DFRobot_EnvironmentalSensor environment(/*addr =*/SEN050X_DEFAULT_DEVICE_ADDRESS, /*s =*/&mySerial);//创建一个广播地址的对象,可批量配置总线上的所有设备
#else
DFRobot_EnvironmentalSensor environment(/*addr =*/SEN050X_DEFAULT_DEVICE_ADDRESS, /*s =*/&Serial1); //创建一个广播地址的对象,可批量配置总线上的所有设备
#endif
#else
DFRobot_EnvironmentalSensor environment(/*addr = */SEN050X_DEFAULT_DEVICE_ADDRESS, /*pWire = */&Wire);
#endif
void setup()
{
#if MODESWITCH
//初始化MCU通信串口
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
mySerial.begin(9600);
#elif defined(ESP32)
Serial1.begin(9600, SERIAL_8N1, /*rx =*/D3, /*tx =*/D2);
#else
Serial1.begin(9600);
#endif
#endif
Serial.begin(115200);
/**
* @brief 初始化SEN050X传感器
*
* @return 返回值;
* @n 0:成功
* @n -1:失败
*/
while(environment.begin() != 0){
Serial.println(" Sensor initialize failed!!");
delay(1000);
}
Serial.println(" Sensor initialize success!!");
}
void loop()
{
//打印从传感器后获取的数据
Serial.println("-------------------------------");
Serial.print("Temp: ");
Serial.print(environment.getTemperature(TEMP_C));
Serial.println(" ℃");
Serial.print("Temp: ");
Serial.print(environment.getTemperature(TEMP_F));
Serial.println(" ℉");
Serial.print("Humidity: ");
Serial.print(environment.getHumidity());
Serial.println(" %");
Serial.print("Ultraviolet intensity: ");
Serial.print(environment.getUltravioletIntensity());
Serial.println(" mw/cm2");
Serial.print("LuminousIntensity: ");
Serial.print(environment.getLuminousIntensity());
Serial.println(" lx");
Serial.print("Atmospheric pressure: ");
Serial.print(environment.getAtmospherePressure(HPA));
Serial.println(" hpa");
Serial.print("Elevation: ");
Serial.print(environment.getElevation());
Serial.println(" m");
Serial.println("-------------------------------");
delay(500);
}
结果
您将在串口监视器看到如下格式的打印显示,它包含了该模块所有读取到的数据。
函数库名称定义
/**
* @brief 初始化SEN050X传感器
*
* @return 返回值;
* @n 0:成功
* @n -1:失败
*/
int8_t begin(void);
/**
* @brief 获取SEN050X温度数据
*
* @param units 返回数据单位选择
* @n TEMP_C:摄氏度
* @n TEMP_F:华氏度
*
* @return 返回获取的温度数据
*/
float getTemperature(uint8_t unist);
/**
* @brief 获取SEN050X湿度数据
*
* @return 返回获取的湿度数据
*/
uint16_t getHumidity(void);
/**
* @brief 获取SEN050X紫外线强度指数数据
*
* @return 返回获取的紫外线强度指数数据
*/
float getUltravioletIntensity(void);
/**
* @brief 获取SEN050X光线强度数据
*
* @return 返回获取的光线强度数据
*/
float getLuminousIntensity(void);
/**
* @brief 获取SEN050X大气压强数据
*
* @param units 返回数据单位选择
* @n HPA:百帕
* @n KPA:千帕
* @return 返回获取的大气压强数据
*/
uint16_t getAtmospherePressure(uint8_t units);
/**
* @brief 获取SEN050X海拔数据
*
* @return 返回获取的海拔数据
*/
float getElevation(void);
V2.0 版本
基本参数
- 工作电压: 3.3~5V DC
- 工作电流: 约4mA
- 输出信号: I2C、UART
- 工作温度:-20~70℃
- 产品尺寸:32mm*32mm
- 安装孔尺寸:M3(直径3mm),安装孔圆心间距25mm
大气压强传感器参数
气压单位关系:1000pa = 10hpa = 1kpa
- 传感器芯片型号:BMP280
- 大气压测量范围: 3000~1100 hPa
- 气压相对精度:±0.12 hPa
- 气压绝对精度:±1 hPa
温湿度传感器参数
- 传感器芯片型号:SHT-C3
- 相对湿度精度:±2%RH
- 相对湿度分辨率:0.01%RH
- 相对湿度测量范围:0~100
- 温度精度:±0.2℃
- 温度分辨率:0.01℃
- 温度测量范围:-40~125℃
紫外线传感器参数
- 传感器芯片型号:LTR390-UV-01
- 紫外线敏感波长:280-430nm
- 测量数据范围:13 Bit、16 Bit 、17 Bit、18 Bit、19 Bit、20 Bit
- 测量速率:25ms、50ms、100ms、200ms、500ms、1000ms
- 可调增益倍数:1、3、6、9、18
环境光传感器参数
- 传感器芯片型号:VEML7700
- 环境光精度:0.0036 lx/ct
- 环境光量程:0~120 klx
尺寸图
功能指示
引脚说明
标号 | 名称 | 功能描述 |
---|---|---|
1 | D/T | I2C数据线SDA/UART数据传输-TX |
2 | C/R | I2C时钟线SCL/UART数据接收-RX |
3 | - | GND电源负极 |
4 | + | 电源正极 |
Arduino使用教程
将程序下载到DFRuino UNO,打开串口监视器查看各环境参数。
软硬件准备
- 硬件
- DFRuino UNO R3 x1
- SEN0501 多功能环境传感器 x1
- 杜邦线 * 4
- 软件
- Arduino IDE 点击下载Arduino IDE
- 首先下载并安装DFRobot_RTU库
- 然后下载并安装DFRobot_EnvironmentalSensor库。如何安装库?
使用UART/I2C读取传感器数据
接线图
使用步骤
关于 UART/I2C 模式切换:
1.默认代码为UART模式请将开关拨到UART一侧
2.如果需要使用I2C模式请将开关拨到I2C一侧,并将代码开头中的1替换为0,如图
步骤
注意:不同主板对应不同的接线引脚(参考上方更多接线图),在Arduino IDE中它们也同时对应不同主板选择,不同端口(COM),其它步骤同DFRuino UNO
- 将模块与DFRuino UNO按照上图接线方式相连接。
- 打开Arduino IDE,将下面的代码上传到DFRuino UNO。
- 打开Arduino IDE的串口监控视器,把波特率调至115200,观察串口打印结果。
样例代码
代码:打印模块获取的所有数据
#include "DFRobot_EnvironmentalSensor.h"
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
#include <SoftwareSerial.h>
#endif
#define MODESWITCH /*UART:*/1 /*I2C: 0*/
#if MODESWITCH
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
SoftwareSerial mySerial(/*rx =*/4, /*tx =*/5);
DFRobot_EnvironmentalSensor environment(/*addr =*/SEN050X_DEFAULT_DEVICE_ADDRESS, /*s =*/&mySerial);//创建一个广播地址的对象,可批量配置总线上的所有设备
#else
DFRobot_EnvironmentalSensor environment(/*addr =*/SEN050X_DEFAULT_DEVICE_ADDRESS, /*s =*/&Serial1); //创建一个广播地址的对象,可批量配置总线上的所有设备
#endif
#else
DFRobot_EnvironmentalSensor environment(/*addr = */SEN050X_DEFAULT_DEVICE_ADDRESS, /*pWire = */&Wire);
#endif
void setup()
{
#if MODESWITCH
//初始化MCU通信串口
#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
mySerial.begin(9600);
#elif defined(ESP32)
Serial1.begin(9600, SERIAL_8N1, /*rx =*/D3, /*tx =*/D2);
#else
Serial1.begin(9600);
#endif
#endif
Serial.begin(115200);
/**
* @brief 初始化SEN050X传感器
*
* @return 返回值;
* @n 0:成功
* @n -1:失败
*/
while(environment.begin() != 0){
Serial.println(" Sensor initialize failed!!");
delay(1000);
}
Serial.println(" Sensor initialize success!!");
}
void loop()
{
//打印从传感器后获取的数据
Serial.println("-------------------------------");
Serial.print("Temp: ");
Serial.print(environment.getTemperature(TEMP_C));
Serial.println(" ℃");
Serial.print("Temp: ");
Serial.print(environment.getTemperature(TEMP_F));
Serial.println(" ℉");
Serial.print("Humidity: ");
Serial.print(environment.getHumidity());
Serial.println(" %");
Serial.print("Ultraviolet intensity: ");
Serial.print(environment.getUltravioletIntensity());
Serial.println(" mw/cm2");
Serial.print("LuminousIntensity: ");
Serial.print(environment.getLuminousIntensity());
Serial.println(" lx");
Serial.print("Atmospheric pressure: ");
Serial.print(environment.getAtmospherePressure(HPA));
Serial.println(" hpa");
Serial.print("Elevation: ");
Serial.print(environment.getElevation());
Serial.println(" m");
Serial.println("-------------------------------");
delay(500);
}
结果
您将在串口监视器看到如下格式的打印显示,它包含了该模块所有读取到的数据。
函数库名称定义
/**
* @fn begin
* @brief 初始化SEN0500/SEN0501传感器
* @return 返回值初始化状态
* @retval 0 成功
* @retval -1 失败
*/
int8_t begin(void);
/**
* @fn getTemperature
* @brief 获取SEN0500/SEN0501温度数据
* @param units 温度数据单位选择
* @n TEMP_C 摄氏度
* @n TEMP_F 华氏度
* @return 返回获取的温度数据
*/
float getTemperature(uint8_t unist);
/**
* @fn getHumidity
* @brief 获取SEN0500/SEN0501湿度数据
* @return 返回获取的湿度数据
*/
float getHumidity(void);
/**
* @fn getUltravioletIntensity
* @brief 获取SEN0500/SEN0501紫外线强度指数数据
* @return 返回获取的紫外线强度指数数据
*/
float getUltravioletIntensity(void);
/**
* @fn getLuminousIntensity
* @brief 获取SEN0500/SEN0501光线强度数据
* @return 返回获取的光线强度数据
*/
float getLuminousIntensity(void);
/**
* @fn getAtmospherePressure
* @brief 获取SEN0500/SEN0501大气压强数据
* @param units 大气压强数据单位选择
* @n HPA:百帕
* @n KPA:千帕
* @return 返回获取的大气压强数据
*/
uint16_t getAtmospherePressure(uint8_t units);
/**
* @fn getElevation
* @brief 获取SEN0500/SEN0501海拔数据
* @return 返回获取的海拔数据
*/
float getElevation(void);
更多资料下载
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。