Gravity: SCI DAQ Module

简介

DFRobot商城已经为用户们提供了上百种不同类型的传感器,但许多传感器的输出是原始的电流电压信号,需要查询产品手册并进行繁琐的计算和编程才能获得标准单位的物理量数值。此外,不同传感器的数据格式也不一致,导致不同传感器在获取数据时需要编写不同的控制程序。以上问题都提高了传感器的使用门槛,为了解决这些问题,DFRobot推出了Gravity: SCI采集模块。

Gravity: SCI采集模块是一款功能强大且高度集成的数据采集模块,该模块融合了屏幕显示、传感器自动识别、传感器校准、数据存储、RTC时钟以及数据优化等多种特性,让数据采集变得更加便捷和高效。此外,SCI采集模块还具有多种供电方案,并可通过I2C接口输出优化后的传感器数据,兼容Arduino、micro:bit、掌控板、行空板、树莓派等常用的开源硬件主控。

  • 屏幕显示:SCI采集模块内置屏幕,可实时显示传感器采集的数据,便于用户观察。
  • 传感器自动识别:SCI采集模块可以自动识别连接的I2C传感器种类,无需手动设置,提高了使用的便利性。
  • 传感器校准:SCI采集模块可在板上进行传感器校准,保证数据的准确性和可靠性。
  • 数据存储:SCI采集模块具有16M的数据存储空间,可存储超40万条数据,存储的数据可通过Type-C接口导出到电脑,方便用户进行数据分析和后续处理。
  • RTC时钟:SCI采集模块具有高精度的实时时钟(RTC),可以记录每次数据采集的时间戳,有助于用户轻松跟踪数据变化趋势,并快速进行数据分析和处理。
  • 数据优化:SCI采集模块可以自动将传感器的原始信号转换为物理量数据,并按照标准格式 "时间戳 名称1:数值1 单位1,名称2:数值2 单位2" 输出,也可以获取指定名称的数值或单位。由于SCI采集模块能够统一不同传感器的数据格式,因此编写程序时无需单独加载每个传感器的库代码,只需加载一个SCI采集模块的库代码即可轻松获取数据,降低了通过主控获取数据的难度。
  • 多种供电方案:SCI采集模块具备多种供电方式,包括Type-C接口、PH2.0电池口和I2C接口。用户可以选择不同的供电方式,灵活应对不同场景的需求。如果户外实践时需要进行移动的数据采集,用户可以通过PH2.0电池口使用电池供电,而I2C接口供电则可以只连接主控就开始工作。不管使用哪种供电方式,SCI采集模块都能够保证稳定运行,为用户提供可靠的数据采集体验。
  • I2C输出:SCI采集模块可通过I2C接口输出优化后的传感器数据,这种输出方式方便了用户的数据读取和处理。同时,I2C接口也是一种广泛使用的数字通信接口,SCI采集模块可以轻松地兼容各种常用的开源硬件主控。

目前,SCI采集模块已经支持了20余种受欢迎的传感器,包括温湿度、大气压、空气质量、氧气浓度等等。未来,我们将继续扩充支持的传感器数量,为大家带来更多的创新和应用场景。无论是在科学探究、跨学科教学还是物联网应用中,SCI采集模块都将是您不可或缺的数据采集利器。

注意:请自行将纽扣电池装入模块背面的电池座,电池正极朝向亚克力板一面,此纽扣电池用于为RTC芯片供电,安装后模块可提供精准的时间输出

产品参数

  • 工作电压: 3.3~5.5V DC
  • 工作电流:
    • 40mA@3.7V(未接入传感器)
    • 35mA@3.7V(未接入传感器&关闭屏幕)
  • 通信方式:I2C (0X21-0X23)
  • 输入接口:
    • 数字/模拟*1
    • I2C/UART*2
  • 输出接口:I2C*1
  • U盘空间:16M
  • RTC电池:CR1220
  • 屏幕尺寸:1.3寸
  • 产品尺寸:62*52*13mm

已支持产品清单

SKU 传感器 物理量 名称标签 典型数据 设备地址 校准 版本
SEN0161-V2 模拟pH计V2 水质PH PH_Wate PH_Water: 7.0 Analog Low Point:PH7溶液
High Point:PH4溶液
V1.0.1
SEN0244 模拟TDS传感器 水质TDS TDS TDS: 17 ppm Analog Low Point:707ppm溶液 V1.0.1
DFR0300 模拟电导率计V2 水质EC EC_Water EC_Water: 12.9 mS/cm2 Analog Low Point:1413us/cm2溶液
High Point:12.88ms/cm2溶液
V1.0.1
SEN0232 模拟分贝计 分贝 Sound Sound: 55.2 db Analog V1.0.1
SEN0231 甲醛传感器 甲醛浓度 HCHO HCHO: 0.03 ppm Analog V1.0.1
SEN0193 土壤湿度传感器 土壤湿度 Moisture Moisture: 50 %RH Analog Low Point:浸入水中
High Point:空气
V1.0.1
SEN0114 土壤湿度传感器 土壤湿度 Moisture Moisture: 50 %RH Analog Low Point:浸入水中
High Point:空气
V1.0.2
DFR0023 温度传感器-LM35 空气温度 Temp_Air Temp_Air:28.65 C Analog V1.0.3
DFR0051 电压传感器 电压 Voltage Voltage : 3.5 V Analog V1.0.3
KIT0021 防水温度传感器-DS18B20 防水温度 Temp_W Temp_W: 20.23 ℃ Digital V1.0.1
DFR0067 温湿度传感器-DHT11 空气温度
空气湿度
Temp_Air
Humi_Air
Temp_Air: 28.65 ℃
Humi_Air: 30.12 %RH
Digital V1.0.3
SEN0137 温湿度传感器-DHT22 空气温度
空气湿度
Temp_Air
Humi_Air
Temp_Air: 28.65 ℃
Humi_Air: 30.12 %RH
Digital V1.0.3
SEN0334 数字温湿度传感器-SHT31 空气温度
空气湿度
Temp_Air
Humi_Air
Temp_Air: 28.65 ℃
Humi_Air: 30.12 %RH
0x45 V1.0.1
SEN0497 温湿度传感器-DHT20 空气温度
空气湿度
Temp_Air
Humi_Air
Temp_Air: 28.65 ℃
Humi_Air: 30.12 %RH
0x38 V1.0.3
SEN0228 数字环境光传感器 环境光 Light Light: 125.47 lx 0x10 V1.0.1
SEN0517 大气压温度传感器-ICP10111 海拔高度
大气压强
空气温度
Altitude
Pressure
Temp_Air
Altitude: 522.9 m
Pressure:1106.34hPa
Temp_Air: 30.08 C
0x63 V1.0.1
SEN0251 大气压温度传感器-BMP388 海拔高度
大气压强
空气温度
Altitude
Pressure
Temp_Air
Altitude: 522.9 m
Pressure:1106.34hPa
Temp_Air: 30.08 C
0x77 V1.0.3
SEN0322 氧气传感器 氧气浓度 O2 O2: 20.01 %vol 0x72
A0A1:10
传感器自带校准按键,长按2S V1.0.1
SEN0321 臭氧传感器 臭氧浓度 O3 O3: 1544 ppb 0x70
0x71
0x73
V1.0.1
SEN0514 空气质量传感器 空气质量
TVOC
ECO2
AQI
TVOC
ECO2
AQI: 1
TVOC: 88 ppb
ECO2: 529 ppm
0x52
0x53
V1.0.1
SEN0456 气压传感器 容器气压 Pressure Pressure: 110.76 Kpa 0x16-0x18 Low Point:110.0Kpa V1.0.1
SEN0529 三轴地磁传感器 方向
X轴地磁
Y轴地磁
Z轴地磁
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
V1.0.1
KIT0176 重量传感器 重量 Weight Weight: 300.04 g 0x64-0x67 Low Point:100g V1.0.1
SEN0518 心率血氧传感器 血氧
心率
SPO2
Heart
SPO2: 99 %
Heart: 93 T/min
0x57 V1.0.1
SEN0304 超声波测距传感器 距离 Distance Distance: 213 cm 0x11 V1.0.1
SEN0364 可见光谱传感器 光谱 405-425
435-455
...
405-425: 11
435-455: 61
...
0x39 V1.0.1
SEN0460 PM2.5空气质量传感器 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 V1.0.1
SEN0206 红外温度传感器 温度 Temp Temp: 22.41 ℃ 0x5A V1.0.1
SEN0291 数字功率计 电压
电流
功率
Voltage
Current
Power
Voltage: 12V
Current: 1000mA
Power: 12620mW
0x40
A0A1:00
暂不支持校准 V1.0.1
TEL0157 GNSS北斗定位模块 纬度
经度
海拔
Lat
Lon
Altitude
Lat : 31.204107
Lon : 121.599082
Altitude: 522.9 m
0x20 V1.0.2
SEN0536 红外光声二氧化碳传感器 二氧化碳浓度 CO2
Temp_Air
Humi_Air
CO2 : 401.37 ppm
Temp_Air: 28.65 C
Humi_Air: 30.12 %RH
0x62 V1.0.2
SEN0575 雨量传感器 雨量 Rainfall Rainfall: 3.91mm 0x1D V1.0.3
EDU0157 云雀气象仪 风速
风向
温度
湿度
大气压
...
Speed
Dir
Temp_Air
Humi_Air
Pressure
Altitude
...
Speed:0.7m/s
Dir:N
Temp_Air:28.65 C
Humi_Air:30.12 %RH
Pressure:94.34 hPa
Altitude:52.9 m
其他参数根据传感器扩展情况显示
0x42 V1.0.3

功能说明

升级固件

SCI采集模块可通过更新固件的方式新增支持的传感器数量,更新固件步骤如下:

  • 为了避免在固件更新过程中发生错误导致数据丢失,请在更新之前备份之前存储的CSV文件:使用Type-C数据线将模块连接到电脑,在弹出的U盘中将之前的数据CSV文件复制到电脑系统中,然后断开Type-C与模块的连接。

  • 下载好最新固件Gravity: SCI采集模块固件

  • 断电情况下,摁住SCI模块右上角的固件升级按钮(BOOT键),使用Type-c数据线将模块与电脑相连

  • 此时SCI模块的电源灯亮起,屏幕无显示,在电脑中会弹出一个名为“RPI-RP2”的U盘,此时即可松开固件升级按钮

  • 将最新的“.uf2”固件文件拖入“RPI-RP2”U盘

  • 固件烧录完成后,屏幕自动点亮,默认显示模块的ID号和系统时间,此时电脑会弹出一个名为“U盘”的U盘空间,首次使用需要将此U盘格式化

SCI模块单独使用

单独使用SCI采集模块,进行传感器数据的察看、存储和导出

使用I2C传感器

将传感器接入左侧的4Pin口(Port2/Port3),模块即可自动识别接入的传感器型号,相应的传感器数据会直接显示在屏幕中。

硬件准备

接线图

通过电池接口或Type-c口均可为模块供电,按照接线图接好后即可在屏幕上实时观察传感器数据。 Type-C口不能为电池充电

当同时连接多个传感器时,数据显示顺序为Port1、Port2、Port3

屏幕一页最多显示5条数据,当同时连接多个多参数的传感器时,通过摁下“OK键”进行翻页察看更多数据

使用数字/模拟传感器

  • 将传感器接入左侧的Port1口
  • 在初始页摁下“S”键,进入设置菜单
  • 光标默认处于“Select SKU”,此时摁下“OK”键,进入传感器选择页面
  • 通过“S”和“R”键上移/下移光标至要选择的传感器上
  • 摁下“OK”键确认选择,至此选择成功,页面会直接跳转至初始页并在第一行显示出已选择的传感器数据
  • 说明1:选中“Analog”选项后会在初始页显示Port1口读取到的电压值,单位为mV
  • 说明2:传感器选中后会一直处于选中状态,传感器的数据会一直显示在初始页的第一行,若要取消选中状态请选择“NULL”

数据记录和读取

SCI采集模块自带16M存储空间,可将实验数据以CSV表格格式实时记录存储下来。CSV表格包含时间标签、传感器检测的物理量名称、物理量数值、物理量单位等数据。

  • 将传感器连接到SCI采集模块,通过手动选择或自动识别,屏幕中已显示出传感器数据
  • 传感器已放置到实验环境,需要开始数据记录
  • 摁下“R”键,启动数据记录。此时屏幕左下角的REC旁会出现“ * ”标识,“R”键上方的指示灯按照数据刷新率开始闪烁,指示此时SCI采集模块正在进行数据记录
  • 说明1:数据记录功能为上电默认关闭,可通过摁“R”键随时暂停或启动该功能
  • 说明2:SCI采集模块每次上电后第一次启动数据记录时会创建一个新的CSV文件,文件名为此时的系统时间,例如10_24_09_30_00。文件创建后暂停或启动数据记录不会再创建新的文件,数据会存入最新创建的文件中,每次暂停和启动数据记录后CSV文件中会加入一行空行作标记
  • 说明3:若需在不重启SCI采集模块的情况下新建一个CSV文件,需在暂停数据记录的状态时长摁“R”键3秒,直到"R"键上方的指示灯快速闪烁1秒指示新建成功
  • 说明4:使用数据线将电脑与模块连接时,在弹出的U盘中进行任何操作都会占用REC功能,将无法开启数据记录,需重启模块后才能正常记录数据。同理,在启动REC功能后禁止对U盘做任何操作,否则会导致数据记录失败,甚至丢失记录文件。

数据导出

数据记录完毕后可将记录的数据以CSV文件格式导出

  • 通过摁“R”键,暂停数据记录,此时屏幕左下角的REC旁无“ * ”标识,“R”键上方的指示灯停止闪烁
  • 通过Type-c数据线将模块与电脑连接,此时电脑会弹出一个新的U盘文件
  • 打开U盘文件后将需要的CSV文件复制/剪切到电脑中
  • 说明1:在数据记录过程中请勿操作U盘和其中的文件
  • 说明2:CSV格式文件无法保存绘制的数据图表,若要直接在表格中绘制图表请将CSV另存为xlsx格式
  • 说明3:若使用数据线将电脑与模块连接后开启的数据记录,需要重启模块才能显示出记录的CSV文件

SCI采集模块交互介绍

传感器校准

对于使用前需要进行校准的传感器,可通过SCI模块进行校准操作

  • 将传感器连接到SCI采集模块,通过手动选择或自动识别,屏幕中已显示出传感器数据
  • 在初始界面摁下“S”键,进入设置菜单
  • 通过“S”和“R”键上移/下移光标至“Calibration”,此时摁下“OK”键,进入传感器校准页面
  • 单点校准的传感器仅进行“Low Point”校准即可,需要双点校准的传感器在低点进行“Low Point”校准,在高点进行“High Point”校准
  • 将传感器放入校准环境中,摁下“OK”键,等待屏幕中出现“*”标识,完成低点/高点校准
  • 说明1:对应的点位完成校准后屏幕中会出现“*”标识;对应的点位正在校准屏幕中会出现“-”标识;对应的点位校准失败屏幕中会出现“x”标识
  • 说明2:校准值会永久保存在SCI采集模块中,直到下一次校准时刷新(“*”标识仅用于指示当次进入校准页面是否进行过校准,重新进入校准页面时“*”标识会消失,若直接退出则校准信息以上一次为准)
  • 说明3:KIT0176-重量传感器需要在启动校准后再将100g物体放到秤面,其他传感器在校准时需要先将传感器置入校准环境中再启动校准

设置数据刷新率

  • 在初始界面摁下“S”键,进入设置菜单
  • 通过“S”和“R”键上移/下移光标至“Set Refresh Rate”,此时摁下“OK”键进入刷新率设置页面
  • 通过“S”和“R”键上移/下移光标至需要的刷新率,摁下“OK”确认选择
  • 可选项有ms、1S、3S、5S、10S、30S、1min、5min、10min
  • 选中ms后,系统会按照最快的速度刷新传感器数据,时间标签精确至ms级

设置存储内容

  • 在初始界面摁下“S”键,进入设置菜单
  • 通过“S”和“R”键上移/下移光标至“Set REC Content”,此时摁下“OK”键进入存储内容设置页面
  • 此页面可选择Port1、Port2、Port3端口的数据是否被存储在CSV文件中,“*”标识代表此端口的数据会存储在CSV文件中,默认为全部开启
  • 若有需要可将对应的端口关闭,以节省U盘空间

设置屏幕开关

  • 在初始界面摁下“S”键,进入设置菜单
  • 通过“S”和“R”键上移/下移光标至“Screen off ”,此时摁下“OK”键可关闭屏幕以降低功耗
  • 屏幕关闭后其他功能均不受影响,若要唤醒屏幕则摁下“OK”键即可

设置系统时间

  • 在初始界面摁下“S”键,进入设置菜单
  • 通过“S”和“R”键上移/下移光标至“Set System Time”,此时摁下“OK”键进入系统时间设置页面
  • 可设置 月日时分秒,完成月份设置后摁下“OK”键进行日期设置,以此类推

设置模块ID

  • 在初始界面摁下“S”键,进入设置菜单
  • 通过“S”和“R”键上移/下移光标至“Set Board ID”,此时摁下“OK”键进入ID设置页面
  • 一个SCI采集模块可设置三个地址:0x21、0x22、0x23,设置完成重启后生效

查看版本

  • 在初始界面摁下“S”键,进入设置菜单
  • 通过“S”和“R”键上移/下移光标至“Version”,此时摁下“OK”键可查看当前的软件版本

UNO使用教程

软硬件准备

接线图

获取指定物理量名称的数据

通过在函数中填写物理量的名称,来单独获取此物理量的数值或单位,用于进行数据的逻辑处理,物理量名称可直接通过模块屏幕中显示的名字获得,也可通过“以支持产品清单”察看

代码编程

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

}

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);
}
  /**
   * @fn getValue(eInterfaceList_t inf, char *keys)
   * @brief 获取指定接口中物理量名称为 keys 的数据值,多个属性值之间用','号隔开
   * @param inf    接口选择,及参数查找范围
   * @n     ePort1                                          选中Port1接口,在A&D接口所连接的传感器中查找属性名称为keys的属性值
   * @n     ePort2                                          选中Port2接口,在I2C&UART1接口所连接的传感器中查找属性名称为keys的属性值
   * @n     ePort3                                          选中Port3接口,在I2C&UART2接口所连接的传感器中查找属性名称为keys的属性值
   * @n     eALL  or  (ePort1 | ePort2 | ePort3)            选中(ePort1 | ePort2 | ePort3)  接口,在所有接口接口所连接的传感器中查找属性名称为keys的属性值
   * @param keys  物理量名称
   * @return 指定接口中物理量名称为 keys 的数据值,多个值之间用','号隔开
   * @n 例Temp_Air:  28.65,28.65
   */
  String getValue(eInterfaceList_t inf, char *keys);
  /**
   * @fn getUnit(eInterfaceList_t inf, char *keys)
   * @brief 获取指定接口中物理量名称为 keys 的数据单位,多个属性单位之间用','号隔开
   * @param inf    接口选择,及参数查找范围
   * @n     ePort1                                          选中Port1接口,在Port1接口所连接的传感器中查找属性名称为keys的属性单位
   * @n     ePort2                                          选中Port2接口,在Port2接口所连接的传感器中查找属性名称为keys的属性单位
   * @n     ePort3                                          选中Port3接口,在Port3接口所连接的传感器中查找属性名称为keys的属性单位
   * @n     eALL  or  (ePort1 | ePort2 | ePort3)      选中Port1, Port2和Port3接口,在所有接口接口中查找属性名称为keys的属性单位
   * @param keys  传感器属性名称
   * @return 指定接口所连接的传感器中属性名称为 keys 的数据单位,多个属性单位之间用','号隔开
   * @n 例Temp_Air:  C,C
   */
  String getUnit(eInterfaceList_t inf, char *keys);
  /**
   * @fn getTimeStamp()
   * @brief 获取时间戳,此时间戳为(SCI Acquisition Module)数据刷新时间
   * 
   * @return 时:分:秒(00:00:00) 或 分:秒.百分之(0~99)秒(00:00.00)
   */
  String getTimeStamp();

mind+图形化编程

  • Mind+请安装1.7.2及以上版本,切换到上传模式

  • 打开扩展,切换到用户库,粘贴此链接加载SCI库:https://gitee.com/liliang9693/ext-sci

  • 选择主板,进行编程。

  • 输入想要获取物理量的名称,物理量名称可直接通过模块屏幕中显示的名字获得,也可通过“已支持产品清单”察看

获取传感器全部数据

此例程可直接获取指定接口上传感器的全部数据,格式为 名称1:数值1 单位1,名称2:数值2 单位2,... 。可编写通用脚本程序直接解析程序绘制表格。

代码编程

#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.");
}

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

   * @fn getInformation
   * @brief 获取SCI采集模块(SCI Acquisition Module)上一个或多个接口连接的传感器的信息,名称:数值 单位,多条信息之间
   * @n 用','号隔开
   * 
   * @param inf    接口选择
   * @n     ePort1                                           选中Port1接口
   * @n     ePort2                                           选中Port2接口
   * @n     ePort3                                           选中Port3接口
   * @n     eALL  or  (ePort1 | ePort2 | ePort3)             选中Port1, Port2和Port3接口
   * @param timestamp 获取的信息中是否加时间戳
   * @n     false  不加时间戳
   * @n     ture   加时间戳   
   * @return 选中的接口上连接的传感器的属性,每条属性格式为:名称:数值 单位,多条属性之间用','号隔开,单位和数值之间用空格隔开
   * @n 不加时间戳 例SEN0334:  Temp_Air:28.65 C,Humi_Air:30.12 %RH
   * @n 加时间戳   例SEN0334:  分:秒.百分之(0~99)秒 Temp_Air:28.65 C,Humi_Air:30.12 %RH 或 时:分:秒 Temp_Air:28.65 C,Humi_Air:30.12 %RH
     */
       String getInformation(eInterfaceList_t inf = eALL, bool timestamp = false);

通过代码控制是否启动存储

代码编程

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

mind+图形化编程

行空板使用教程

Mind+图形化编程

注意:连接行空板之后会检测依赖库版本,如果弹出提示有库需要升级,需点击升级,否则会因为pinpong库版本低报“Response pkt is error!”的错误。
若出现“'NoneType' object is not subscriptable”错误,通常是由于SCI与行空板连接不稳定导致,请检查SCI与行空板是否已经接好,或更换连接线后重试。

Python代码编程

from dfrobot_rp2040_sci import *
from pinpong.board import Board
import time


Board().begin()
SCI1 = DFRobot_RP2040_SCI_IIC(addr=0x21)
while SCI1.begin() != 0:
    print("Initialization Sensor Universal Adapter Board failed.")
    time.sleep(1)
print("Initialization Sensor Universal Adapter Board done.")

while True:
    print(SCI1.get_timestamp())
    print((str(SCI1.get_value1(SCI1.eALL,"Temp_Air")) + str(SCI1.get_unit1(SCI1.eALL,"Temp_Air"))))
    print((str(SCI1.get_value1(SCI1.eALL,"Humi_Air")) + str(SCI1.get_unit1(SCI1.eALL,"Humi_Air"))))
    print((str(SCI1.get_value1(SCI1.ePort3,"Light")) + str(SCI1.get_unit1(SCI1.ePort3,"Light"))))
    time.sleep(1)

MakeCode使用教程

接线图

MakeCode图形化编程


同时使用多个SCI

接线图

SCI设置

代码编程

#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("-------------------");
}

图形化编程

硬件兼容性

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

常见问题

Q:接入支持清单中的传感器后屏幕不显示数据
若连接的是3Pin的传感器,即传感器接在了Port1口,此时需要手动选择传感器,选择方法请查看:使用数字/模拟传感器

若连接的是4Pin传感器,即传感器接在了Port2或Port3口,请调节传感器上的拨码开关,具体对应关系请查看:设备地址

若问题仍未解决,请使用Arduino等主控扫描传感器地址,若扫描不到传感器地址说明传感器损坏
Q:氧气传感器接上后屏幕显示的是臭氧O3,且数据一直是0
需要将拨码开关调节至“A0A1:10”的状态,然后重新连接传感器
Q:使用Arduino、行空板等主控获取不到SCI的数据
代码中填写的物理量名称要与屏幕显示的完全一致,注意大小写,注意字母“O”与数字“0”

注意SCI采集模块的ID号是否与程序对应,具体教程请查看:同时使用多个SCI
Q:SCI采集模块屏幕右上角显示的时间不是时分秒的状态
跟数据刷新率设置有关,请查看设置数据刷新率
Q:SCI采集模块数据刷新很慢或数据不刷新
数据刷新率设置过低,请查看设置数据刷新率

数据刷新率设置后数据仍不刷新,请重启模块,可能是由于传感器连接不稳定导致通信失败

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

固件版本说明

V1.0.1 更新了传感器支持数量
V1.0.2 更新了传感器支持数量
V1.0.3 更新了传感器支持数量
V1.0.4 修复了SEN0193测量值反向问题

更多

DFshopping_car1.png DFRobot商城购买链接

回到顶部