Introduction

DFRobot has provided users with hundreds of sensors of all kinds. However, many of them output raw electrical signals like current, voltage, etc., and for obtaining standard units of physical quantities, users need to look for relevant information in the product datasheets and convert data by formulas or coding. Meanwhile, the data format varies with different sensors, so most sensors require unique controlling programs. All of these would raise the bar for using sensors. Therefore, DFRobot develops this Gravity: Science Data Acquisition (SCI DAQ) module that allows users to get sensor data in a simpler way.

The Gravity: Science Data Acquisition (SCI DAQ) module is a powerful and highly integrated data acquisition module that incorporates features such as screen display, automatic sensor recognition, sensor calibration, data logging, RTC clock, and data conversion to make data acquisition more convenient and efficient. In addition, the SCI DAQ module has versatile power options and can output physical quantity data collected by sensors through an I2C interface, compatible with micro:bit, Arduino, Raspberry Pi, UNIHIKER, etc.

Now, the SCI DAQ Module already supports over 20 popular sensors, such as temperature, humidity, atmospheric pressure, oxygen concentration, and more. In the future, we will continue to expand the number of supported sensors, bringing more application scenarios to users. Whether in scientific exploration, interdisciplinary teaching, or IoT applications, the SCI DAQ module will be an indispensable data acquisition tool.

Note: Please install the button cell battery into the battery holder on the back of the module by yourself, with the positive side of the battery facing the acrylic board side, this button cell battery is used to supply power to the RTC chip, and the module can provide accurate time output after installation

Specification

  • Operating Voltage: 3.3-5.5V DC
  • Operating Current:
  • 40mA@3.7V(No sensor connected)
  • 35mA@3.7V(No sensor connected & screen off)
  • Input Interface:
  • Digital/Analog ×1
  • I2C/UART ×2
  • Output Interface: I2C ×1
  • U Disk Storage: 16M
  • RTC Battery: CR1220
  • Screen Size: 1.3inches
  • Product Dimension: 62×52×13mm/2.44×2.05×0.51"

Supported Sensor List

SKU Sensor Physical Quantity Name Tag Typical Data Device Address Calibration Version
SEN0161-V2 Analog pH meter V2 Water Quality PH PH_Water PH_Water: 7.0 Analog Low Point: PH7 solution
High Point: PH4 solution
V1.0.1
SEN0244 Analog TDS Sensor Water Quality TDS TDS TDS: 17 ppm Analog Low Point:707ppm Solution V1.0.1
DFR0300 Analog Electrial Conductiity Meter V2 Water Quality EC EC_Water EC_Water: 12.9 mS/cm2 Analog Low Point:1413us/cm2 Solution
High Point:12.88ms/cm2 Solution
V1.0.1
SEN0232 Analog Sound Level Meter decibel Sound Sound: 55.2 db Analog None V1.0.1
SEN0231 HCHO Sensor HCHO Concentration HCHO HCHO: 0.03 ppm Analog None V1.0.1
SEN0193 Soil moisture sensor Soil moisture Moisture Moisture: 50 %RH Analog Low Point:Immersed in water
High Point:Air
V1.0.1
SEN0114 Soil moisture sensor Soil moisture Moisture Moisture: 50 %RH Analog Low Point:Immersed in water
High Point:Air
V1.0.2
DFR0023 Temperature sensor-LM35 Air temperature Temp_Air Temp_Air:28.65 C Analog None V1.0.3
DFR0051 Voltage sensors Voltage Voltage Voltage : 3.5 V Analog None V1.0.3
KIT0021 Waterproof temperature sensor Waterproof temperature Temp_W Temp_W: 20.23 ℃ Digital None V1.0.1
DFR0067 Temperature & humidity sensor-DHT11 Air temperature
Air humidity
Temp_Air
Humi_Air
Temp_Air: 28.65 ℃
Humi_Air: 30.12 %RH
Digital None V1.0.3
SEN0137 Temperature & humidity sensor-DHT22 Air temperature
Air humidity
Temp_Air
Humi_Air
Temp_Air: 28.65 ℃
Humi_Air: 30.12 %RH
Digital None V1.0.3
SEN0334 Digital temperature & humidity sensor-SHT31 Air temperature
Air humidity
Temp_Air
Humi_Air
Temp_Air: 28.65 ℃
Humi_Air: 30.12 %RH
0x44
0x45
None V1.0.1
SEN0497 Temperature & humidity sensor-DHT20 Air temperature
Air humidity
Temp_Air
Humi_Air
Temp_Air: 28.65 ℃
Humi_Air: 30.12 %RH
0x38 None V1.0.3
SEN0228 Digital ambient light sensor Ambient light Light Light: 125.47 lx 0x10 None V1.0.1
SEN0517 Barometric pressure temperature sensor-ICP10111 Altitude
Air pressure
Air temperature
Altitude
Pressure
Temp_Air
Altitude: 522.9 m
Pressure:1106.34hPa
Temp_Air: 30.08 C
0x63 None V1.0.1
SEN0251 Barometric pressure temperature sensor-BMP388 Altitude
Air pressure
Air temperature
Altitude
Pressure
Temp_Air
Altitude: 522.9 m
Pressure:1106.34hPa
Temp_Air: 30.08 C
0x77 None V1.0.3
SEN0322 Oxygen sensor O2 concentration O2 O2: 20.01 %vol 0x72
A0A1:10
Press the onboard sensor calibration button for 2s V1.0.1
SEN0321 Ozone Sensor O3 concentration O3 O3: 1544 ppb 0x70
0x71
0x73
None V1.0.1
SEN0514 Air quality sensor Air quality
TVOC
ECO2
AQI
TVOC
ECO2
AQI: 1
TVOC: 88 ppb
ECO2: 529 ppm
0x52
0x53
None V1.0.1
SEN0456 Air pressure sensor Container pressure Pressure Pressure: 110.76 Kpa 0x16-0x18 Low Point:110.0Kpa V1.0.1
SEN0529 3-axis geomagnetic sensor Orientation
X geomagnetic data
Ygeomagnetic data
Z geomagnetic data
Angle_N
Mag_X
Mag_Y
Mag_Z
Angle_N: 157.38 °
Mag_X: 20 uT
Mag_Y: -48 uT
Mag_Z: -14 uT
0x13
A0A1:11
None V1.0.1
KIT0176 Weight sensor Weight Weight Weight: 300.04 g 0x64-0x67 Low Point:100g V1.0.1
SEN0518 Heart rate and blood oxygen sensor Blood oxygen
Heart rate
SPO2
Heart
SPO2: 99 %
Heart: 93 T/min
0x57 None V1.0.1
SEN0304 Ultrasonic distance sensor Distance Distance Distance: 213 cm 0x11 None V1.0.1
SEN0364 Visible light sensor Spectral 405-425
435-455
...
405-425: 11
435-455: 61
...
0x39 None V1.0.1
SEN0460 PM2.5 Air quality sensor PM1.0
PM2.5
PM10
PM1.0
PM2.5
PM10
PM1.0: 43 ug/m³
PM2.5: 77 ug/m³
PM10: 93 ug/m³
0x19 None V1.0.1
SEN0206 IR Thermometer Temperature Temp Temp: 22.41℃ 0x5A None V1.0.1
SEN0291 Digital Wattmeter Voltage
Current
Power
Voltage
Current
Power
Voltage: 12V
Current: 1000mA
Power: 12620mW
0x40
A0A1:00
Not supported currently V1.0.1
TEL0157 GNSS GPS BEIDOU Positioning Module Latitude
Longitude
Altitude
Lat
Lon
Altitude
Lat : 31.204107
Lon : 121.599082
Altitude: 522.9 m
0x20 None V1.0.2
SEN0536 Infrared CO2 Sensor CO2 concentration CO2
Temp_Air
Humi_Air
CO2 : 401.37 ppm
Temp_Air: 28.65 C
Humi_Air: 30.12 %RH
0x62 None V1.0.2
SEN0575 Rainfall Sensor Rainfall Rainfall Rainfall: 3.91mm 0x1D None V1.0.3

Board Overview

Update Firmware

The SCI DAQ module allows users to add the newly-supported sensors by updating the firmware in the way shown below:

  • Please backup the saved CSV files before updating to avoid data loss caused by update error. Connect the module to your PC with a Type-C cable, copy the saved data in the U-disk to your PC, and then disconnect them.
  • Download the firmware: Gravity: SCI DAQ Module Firmware
  • Make sure the module is powered off, press and hold the firmware upgrade(Boot) button at the upper-right corner of the module, connect the module to a PC with a Type-C cable.
  • Then the module's power light turns on, but the screen is off. A U-disk named "RPI-RP2" will pop up on your PC, now release the boot button.
  • Drag the latest firmware ".uf2" file into the "RPI-RP2" U-disk.
  • When the firmware is burned successfully, the screen turns on automatically, and the module ID and system time will be displayed on the screen by default. Now there will be a U-disk named U showing up on your PC. Please format it when using for the first time.

Use SCI Module Independently

This demo will use the SCI DAQ module independently to show how to check, store, and export sensor data.

Use with I2C Sensor

Connect the sensor to the module's left 4pin port(port 2/3). The acquisition module will auto detect the sensor type, and the relevant sensor readings will be displayed on the screen.

Requirements

  • Hardware
    • SCI DAQ Module x1
    • SEN0334 Temperature & Humidity Sensor or other x1
    • SEN0228 Ambient Light sensor or other x1
    • Type-C Data Cable x1
    • 3.3-5.5V Battery Holder or Lithium Battery x1(Optional)

Connection Diagram

The module can be powered by either battery or Type-C port. Connect all parts as the connection above, then the sensor data can be displayed on the screen.Type-C port cannot charge the battery.

When connecting multiple sensors, the sensor data will be shown in the sequence of port1, port2, and port3.

One page of the screen can only display 5 pieces of data at most. So when the sensor outputs multiple parameters, please press the "OK" button to look for more data.

Use with digital/analog sensor

  • Connect the sensor to the left Port 1
  • Press down the "S" button in the initial interface to access the setting menu
  • The cursor stays at the "Select SKU" by default, now press down the "OK" button to enter the sensor selection page
  • Press "S" and "R" button to select sensor.
  • Press "OK" to confirm. Then it will back to the initial page, and the selected sensor will be shown in the first row.
  • Note 1: When "Analog" is selected, the voltage value read from port 1 will be displayed on the initial page, unit mV.
  • Note 2: The sensor will stay selected once it is selected, and the sensor data will be shown on the first row of the initial page all the time. Please select "Null" if you want to unselect it.

Data Logging & Reading

The SCI DAQ module comes with 16M storage for logging real-time experiments data in CSV format. The CSV table includes time, physical quantity name, physical quantity value, and unit.

csv data

  • Connect the sensor to the SCI ADQ module, and then the relevant sensor data will be shown on the screen.
  • Put the device in an experiment environment, and now it's time for data logging.
  • Press the "R" button to start data logging. This time the symbol "*" will appear at the lower-left corner of the screen, next to REC. The indicator above the "R" button will blink according to the data refresh rate, indicating that the module is logging data right now.
  • Note 1: The data logging function is defaulted to be disabled when the module is powered on. Please start or pause it by pressing the "R" button.
  • Note 2: A new CSV file will be generated every time when enabling the data logging function for the first time after the SCI acquisition module is powered on. The file name is the current system time, e.g. 10_24_09_30_00. Once the CSV file is created, no more new files will be created when pausing or starting the data logging function. All data will be stored in the created file. A blank line will be added to the CSV file as a mark after each data logging pausing or starting.
  • Note 3: To create a new CSV file without restarting the module, please pause the data logging and press the "R" button for 3 seconds. Then the indicator above the "R" button blinks quickly for 1 second, which means a new file is successfully created.
  • Note 4: When the module is connected to a PC via a Type-C cable, any operation in the pop-up U disk will occupy the REC function, which means the data logging cannot be enabled, and you need to restart the module to make it work. Similarly, it is not allowed to perform any operation in the U-disk when the REC function is enabled, otherwise, it will lead to data logging failure.

Export Data

The recorded data can be exported in the format of a CSV file.

  • Press down "R" key, then the data logging stops, the symbol "*" disappears and the indicator above the "R" key stops blinking.
  • Connect the module to a PC with a Type-C cable, then a U-disk will pop up on the PC.
  • Open the U-disk, and copy and paste the CSV file you need into the PC.
  • Note 1: Please do not perform any operation in the U-disk during data logging.
  • Note 2: If you need to plot a graph directly in the table, please save the CSV file as .xlsx since the plotted graph cannot be saved in a CSV file.
  • Note 3: If the data logging function is enabled when the module is connected to the PC, the module needs to be restarted to display the recorded CSV file.

Introduction to SCI DAQ Interaction

Sensor Calibration

  • Connect the sensor to the SCI DAQ module, and then the sensor data will be displayed on the screen
  • Press down the "S" button in the initial interface to access the setting menu
  • Move the cursor up/down by pressing the "S" and "R" key to select "Calibration", and press "OK" to access the sensor calibration interface
  • Perform "Low Point" calibration for sensor single point calibration. For sensors requiring double-points calibration, do "Low Point" calibration at the low point, and "High Point" calibration at the high point.
  • Put the sensor in its calibration environment, press the "OK" key, and wait. A symbol "*" will appear on the screen when the low/high point calibration is done.
  • Note 1: The screen shows a symbol "*" when a point calibration is finished; The symbol "-" means it is in calibrating now and "x" for calibration failure.
  • Note 2: The calibration values will be permanently saved in the module until it is refreshed in the next calibration. (The symbol "" only indicates whether calibration is carried out when entering the calibration interface this time. When entering the calibration page again, the symbol "" will disappear. If you exit the interface directly without doing the calibration, the calibration parameters will be subject to the previous ones)
  • Note 3: When calibrating the KIT0176 weight sensor, please enable the calibration first and then put the 100g object on the scale. For other sensors, put the device in the calibration environment and then start the calibration.

Data Refresh Rate Setting

  • Press down the "S" button in the initial interface to access the setting menu
  • Move the cursor up/down by pressing the "S" and "R" key to select "Set Refresh Rate", and press "OK" to access the refresh rate setting page.
  • Select a refresh rate and press "OK" to confirm it.
  • Available refresh rate: ms, 1S, 3S, 5S, 10S, 30S, 1min, 5min, 10min
  • If ms is selected, the system will refresh the sensor data at the fastest speed, and the time tag is accurate to milliseconds.

Setting Content to Be stored

  • Press down the "S" button in the initial interface to access the setting menu
  • Move the cursor up/down by pressing the "S" and "R" key to select "Set REC Content", and press "OK" to access the REC content setting page.
  • Set whether to store the data from port1, port2, and port3. The symbol "*" means the data of this port will be stored in the CSV file. All are enabled by default.
  • It is recommended to disable unnecessary ports to save U-disk storage.

System Time Setting

  • Press down the "S" button in the initial interface to access the setting menu
  • Move the cursor up/down by pressing the "S" and "R" key to select "Set System Time", and press "OK" to access the system time setting page.
  • Month, day, hour, minute, and second can be set up. When you set the month, press the "OK" key, then set the next parameter, and so on.

Module ID Setting

  • Press down the "S" button in the initial interface to access the setting menu
  • Move the cursor up/down by pressing the "S" and "R" key to select "Set Board ID", and press "OK" to access the system time setting page.
  • Three addresses are available for the SCI DAQ module: 0x21, 0x22, 0x23. Restart to take effect.

Check Version

  • Press down the "S" button in the initial interface to access the setting menu
  • Move the cursor up/down by pressing the "S" and "R" key to select "Version", and press "OK" to check the current software version.

Tutorial for Arduino UNO

Requirements

Connection Diagram

Get Data of Specific Physical Quantity Name

Enter the name of a physical quantity in the function to get its value or unit. The name of the physical quantity can be obtained by the name displayed on the module screen or the "Supported Sensor List".

Sample Code

#include "DFRobot_RP2040_SCI.h"

DFRobot_RP2040_SCI_IIC sci(/*addr=*/RP2040_SCI_ADDR_0X21, &Wire);

void setup() {
  Serial.begin(115200);
  while(!Serial){                                                     //Waiting for USB Serial COM port to open.
  }

  Serial.print("Initialization SCI DAQ Module...");
  while(sci.begin() != 0){
      Serial.println("failed. Please check whether the hardware connection is wrong.");
      delay(1000);
      Serial.print("Initialization SCI DAQ Module...");
  }
  Serial.println("done.");

}

void loop() {
  String TimeStamp = sci.getTimeStamp();
  float Temp_Air_val  = sci.getValue(sci.eALL,"Temp_Air").toFloat();
  String Temp_Air_unit = sci.getUnit(sci.eALL,"Temp_Air");
  float Humi_Air_val  = sci.getValue(sci.eALL,"Humi_Air").toFloat();
  String Humi_Air_unit = sci.getUnit(sci.eALL,"Humi_Air");
  Serial.print(" TimeStamp: "); Serial.print(TimeStamp);
  Serial.print(" Temp_Air: "); Serial.print(Temp_Air_val); Serial.print(" ");Serial.print(Temp_Air_unit);
  Serial.print(" Humi_Air: "); Serial.print(Humi_Air_val); Serial.print(" ");Serial.println(Humi_Air_unit);
  Serial.println();
  delay(1000);
}

Result

Get All Sensor Data

This program aims to obtain all data of sensors on the specified port in the format of Name 1: Value 1 Unit 1, Name 2: Value 2 Unit 2. You can write a general script to parse the program and draw tables.

Sample Code
#include "DFRobot_RP2040_SCI.h"

DFRobot_RP2040_SCI_IIC sci(/*addr=*/RP2040_SCI_ADDR_0X21, &Wire);

void setup() {
  Serial.begin(115200);
  while(!Serial){                                                     //Waiting for USB Serial COM port to open.
  }

  Serial.print("Initialization SCI DAQ Module...");
  while(sci.begin() != 0){
      Serial.println("failed. Please check whether the hardware connection is wrong.");
      delay(1000);
      Serial.print("Initialization SCI DAQ Module...");
  }
  Serial.println("done.");
}

void loop() {
  String ifAll = sci.getInformation(sci.eALL, true);
  Serial.println(ifAll);
  Serial.println();
  delay(1000);
}

Result

Control whether to start logging by code

#include "DFRobot_RP2040_SCI.h"

DFRobot_RP2040_SCI_IIC sci(/*addr=*/RP2040_SCI_ADDR_0X21, &Wire);

void setup() {
  Serial.begin(115200);
  while(!Serial){                                                     //Waiting for USB Serial COM port to open.
  }
  
  Serial.print("Initialization SCI Acquisition Module...");
  while(sci.begin() != 0){
      Serial.println("failed. Please check whether the hardware connection is wrong.");
      delay(1000);
      Serial.print("Initialization SCI Acquisition Module...");
  }
  Serial.println("done.");
  sci.enableRecord();
  //sci.disableRecord();
}

void loop() {
  String TimeStamp = sci.getTimeStamp();
  float Temp_Air_val  = sci.getValue(sci.eALL,"Temp_Air").toFloat();
  String Temp_Air_unit = sci.getUnit(sci.eALL,"Temp_Air");
  float Humi_Air_val  = sci.getValue(sci.eALL,"Humi_Air").toFloat();
  String Humi_Air_unit = sci.getUnit(sci.eALL,"Humi_Air");
  Serial.print(" TimeStamp: "); Serial.print(TimeStamp);
  Serial.print(" Temp_Air: "); Serial.print(Temp_Air_val); Serial.print(" ");Serial.print(Temp_Air_unit);
  Serial.print(" Humi_Air: "); Serial.print(Humi_Air_val); Serial.print(" ");Serial.println(Humi_Air_unit);
  Serial.println();
  delay(1000);
}

Tutorial for MakeCode

  • Open MakeCodeonline programming page
  • Create a new project and load the extension library for the SCI DAQ module: https://github.com/DFRobot/pxt-DFRobot_SCI_DAQ_Module.git
  • Enter the name of the physical quantity. The name can be obtained by the name displayed on the module screen or the "Supported Sensor List".

Simultaneous use of multiple SCI

Connection Diagram

SCI Set

  • Press down the "S" button in the initial interface to access the setting menu
  • Move the cursor up/down by pressing the "S" and "R" key to select "Set Board ID", and press "OK" to access the system time setting page.
  • Set the ID of one SCI to 0X22, the setting will take effect after reboot

Sample Code

#include "DFRobot_RP2040_SCI.h"

DFRobot_RP2040_SCI_IIC SCI1(/*addr=*/0x21, &Wire);
DFRobot_RP2040_SCI_IIC SCI2(/*addr=*/0x22, &Wire);

void setup() {
  Serial.begin(115200);
  while(SCI1.begin() != 0){delay(1000);};
  while(SCI2.begin() != 0){delay(1000);};
}
void loop() {
  Serial.println(SCI1.getValue(SCI1.eALL,"Temp_Air"));
  Serial.println(SCI1.getValue(SCI1.eALL,"Humi_Air"));
  Serial.println(SCI1.getValue(SCI1.eALL,"Light"));
  Serial.println("-------------------");
  Serial.println(SCI2.getValue(SCI2.eALL,"AQI"));
  Serial.println(SCI2.getValue(SCI2.eALL,"TVOC"));
  Serial.println(SCI2.getValue(SCI2.eALL,"ECO2"));
  Serial.println(SCI2.getValue(SCI2.eALL,"Altitude"));
  Serial.println(SCI2.getValue(SCI2.eALL,"Pressure"));
  Serial.println("-------------------");
}

More Tutorials

  1. Build a Conductivity Tester
  2. Plant Monitoring System
  3. Discover Color, Light and Heat
  4. Indoor Air Quality Monitor
  5. Air Quality Tracking and Analysis

Compatibility

C++ Python Arduino IDE MindPlus Makecode
Arduino
micro:bit V1 V2
ESP32
Raspberry Pi
UNIHIKER

FAQ

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

Firmware Release Notes

V1.0.1 Updated sensor support types
V1.0.2 Updated sensor support types
V1.0.3 Updated sensor support types.
V1.0.4 Fixed SEN0193 measurement value reversal issue

More Documents

[DFR0999]Dimensional