SKU_SEN0500_Fermion_Multifunctional_Environmental_Sensor-DFRobot

Introduction

This multifunctional environmental sensor comprises SHTC3 temperature & humidity sensor, BMP280 atmospheric pressure sensor, VEML7700 light sensor, and LTR390 ultraviolet sensor (V1.0 : ML8511,V2.0 : LTR390-UV-01) into one and offers 5 kinds of environmental parameters. Professional sensor chip is selected for each kind of parameter measurement. The reasonable layout and heat conduction of main chip are carefully considered in the circuit design, which effectively guarantees the accuracy of the data

The product has an MCU processing chip onboard that converts the raw data of sensor into values with standard unit so you can directly use them. For example, ℃ and °F for temperature, % for humidity, Kpa for atmospheric pressure, lx for light illuminance, and mw/cm² for ultraviolet.

The environmental sensor supports two communication methods, UART and I2C. There are two versions: Gravity and Breakout, also complete Arduino and Python libraries are provided.

Exquisite and small, you can use it to make a home indoor and outdoor environmental monitoring system, or for your environmental monitoring topics. This DFRobot environmental sensor can greatly simplify wirings and codes of your project.

Features

Application

Specification

Atmospheric pressure sensor

Atmospheric pressure unit relationship: 1000pa = 10hpa = 1kpa

Temperature & Humidity Sensor

Ultraviolet Sensor

Ambient light sensor

register table

Function Overview

Dimension

Dimension

Board Overview

Board Overview

Num Label Description
1 3V3 Power +
2 GND Power -
3 RXD UART receiving
4 TXD UART transmitting
3 SCL I2C Clock Line
4 SDA I2C Data Line
3 RST Reset Pin
4 NC Empty

Tutorial

Download the program to FireBeetle Board ESP32-E, open the serial monitor to check various environmental parameters.

Requirements

Read Sensor Data via I2C/UART

Connection for UART and I2C

Connection

UART on the left, I2C on the right.

Switch Communication Mode

About UART/I2C mode switching:

  1. The default mode in the code is UART. Dial the switch to UART side to use it.
  2. For using I2C, dial the switch to I2C side and replace the 1 at the beginning of the code with 0, as shown below:

mode to MODE

Steps:

Note: Please use 3.3V maincontroller with this product(Arduino UNO is not recommended). Different motherboards correspond to different wiring pins (refer to “more wiring diagrams” above). In the Arduino IDE, they also correspond to different motherboard options and different ports (COM). The other steps are the same as FireBeetle Board ESP32-E.

Sample Code

Function: Print all data obtained by the module

#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

#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);

  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);
}

Expected Results

The read data will be dipalyed on the serial monitor.

Result

Function Library Name Definition

  /**
   * @fn begin
   * @brief Init SEN0500/SEN0501 sensor
   * @return Return init status
   * @retval 0  Succeed
   * @retval -1 failed
   */
  int8_t begin(void);

  /**
   * @fn getTemperature
   * @brief Get SEN0500/SEN0501 temperature data
   * @param units Temperature data unit select
   * @n     TEMP_C ℃
   * @n     TEMP_F ℉ 
   * @return Return the obtained temperature data
   */
  float getTemperature(uint8_t unist);

  /**
   * @fn getHumidity
   * @brief Get SEN0500/SEN0501 humidity data 
   * @return Return the obtained humidity data
   */
  float getHumidity(void);

  /**
   * @fn getUltravioletIntensity
   * @brief Get SEN0500/SEN0501 UV intensity index data 
   * @return Return the obtained UV intensity index data
   */
  float getUltravioletIntensity(void);

  /**
   * @fn getLuminousIntensity
   * @brief Get SEN0500/SEN0501 luminous intensity data 
   * @return Return the obtained luminous intensity data
   */
  float getLuminousIntensity(void);

  /**
   * @fn getAtmospherePressure
   * @brief Get SEN0500/SEN0501 atmosphere pressure data 
   * @param units Atmosphere pressure data unit select
   * @n            HPA: Hectopascal
   * @n            KPA: Kilopascal
   * @return Return the obtained atmosphere pressure data
   */
  uint16_t getAtmospherePressure(uint8_t units);

  /**
   * @fn getElevation
   * @brief Get SEN0500/SEN0501 altitude data 
   * @return Return the obtained altitude data
   */
  float getElevation(void);

FAQ

For any questions, advice or cool ideas to share, please visit the DFRobot Forum.

More Documents

SEN0500_V1.0_2D_DXF.rar

SEN0500_V1.0_2D_PDF.pdf

SEN0500_V1.0_3D_STP.rar

SEN0500_V1.0_KiCad.rar

SEN0500_V2.0_2D_DXF.rar

SEN0500_V2.0_2D_PDF.pdf

SEN0500_V2.0_3D_STP.rar