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.
- 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
- Hardware
- DFRduino UNO R3 x 1
- Gravity: IO Expansion Shield x1
- SCI DAQ Module x1
- SEN0334 Gravity: SHT31-F Digital Temperature and Humidity Sensor x1
- SEN0228 Gravity: I2C VEML7700 Ambient Light Sensor x1
- Double-head PH2.0-4P Connector x2
- Gravity 4P Connector x1
- Software
- Arduino IDE
- Download and install the DFRobot_RP2040_SCI Library (About how to install the library?)
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);
}
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);
}
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
- Build a Conductivity Tester
- Plant Monitoring System
- Discover Color, Light and Heat
- Indoor Air Quality Monitor
- 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