简介
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),模块即可自动识别接入的传感器型号,相应的传感器数据会直接显示在屏幕中。
硬件准备
- SCI采集模块 x1
- SEN0334 温湿度传感器 x1(或其他支持的传感器)
- SEN0228 环境光传感器 x1(或其他支持的传感器)
- Type-c数据线 x1
- 3.3-5.5V电池盒或锂电池 x1(可选)
接线图
通过电池接口或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使用教程
软硬件准备
- 硬件
- DFRuino UNO R3 x1
- Gravity I/O传感器扩展板 x1
- SCI采集模块 x1
- SEN0334 温湿度传感器 x1(或其他支持的传感器)
- SEN0228 环境光传感器 x1(或其他支持的传感器)
- 双头PH2.0-4P连接线 x2
- Gravity 4P连接线 x1
- 软件
- Arduino IDE 点击下载Arduino IDE
- 下载并安装SCI采集模块库文件库。如何安装库?
接线图
获取指定物理量名称的数据
通过在函数中填写物理量的名称,来单独获取此物理量的数值或单位,用于进行数据的逻辑处理,物理量名称可直接通过模块屏幕中显示的名字获得,也可通过“以支持产品清单”察看
代码编程
#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+请安装1.7.2及以上版本,切换到上传模式。
-
打开扩展,切换到用户库,粘贴此链接加载SCI库:https://gitee.com/liliang9693/ext-sci
-
选择主板,进行编程。
-
输入想要获取物理量的名称,物理量名称可直接通过模块屏幕中显示的名字获得,也可通过“已支持产品清单”察看
行空板使用教程
Mind+图形化编程
- Mind+请安装1.7.2及以上版本,切换到Python模式。
- 打开扩展,切换到用户库,粘贴此链接加载SCI库:https://gitee.com/liliang9693/ext-sci
- 扩展中选择“官方库-行空板”和“pinpong库-pinpong初始化”
- 输入想要获取物理量的名称,物理量名称可直接通过模块屏幕中显示的名字获得,也可通过“已支持产品清单”察看
注意:连接行空板之后会检测依赖库版本,如果弹出提示有库需要升级,需点击升级,否则会因为pinpong库版本低报“Response pkt is error!”的错误。
若出现“'NoneType' object is not subscriptable”错误,通常是由于SCI与行空板连接不稳定导致,请检查SCI与行空板是否已经接好,或更换连接线后重试。Python代码编程
- 行空板联网,然后通过
pip install -U pinpong
指令更新pinpong库至0.4.9及以上版本,行空板库安装-行空板官方文档 (unihiker.com),行空板官方文档-常见问题 (unihiker.com) - 下载行空板Python库:https://gitee.com/liliang9693/ext-sci
- 根据连接的传感器修改名称标签,名称标签可直接通过模块屏幕中显示的名字获得,也可通过“以支持产品清单”察看,点击运行即可读取SCI模块上连接的光线传感器的数据
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图形化编程
- 打开MakeCode在线编程网页
- 新建项目并加载SCI采集模块的扩展库:https://github.com/DFRobot/pxt-DFRobot_SCI_DAQ_Module.git
- 输入想要获取物理量的名称,物理量名称可直接通过模块屏幕中显示的名字获得,也可通过“已支持产品清单”察看
同时使用多个SCI
接线图
SCI设置
- 在初始界面摁下“S”键,进入设置菜单
- 通过“S”和“R”键上移/下移光标至“Set Board ID”,此时摁下“OK”键进入ID设置页面
- 将一个SCI的ID设置为0X22或其他,注意设置的ID号要与程序中对应,设置完成重启后生效
代码编程
#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号是否与程序对应,具体教程请查看:同时使用多个SCIQ:SCI采集模块屏幕右上角显示的时间不是时分秒的状态 跟数据刷新率设置有关,请查看设置数据刷新率 Q:SCI采集模块数据刷新很慢或数据不刷新 数据刷新率设置过低,请查看设置数据刷新率
数据刷新率设置后数据仍不刷新,请重启模块,可能是由于传感器连接不稳定导致通信失败更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。
固件版本说明
V1.0.1 更新了传感器支持数量
V1.0.2 更新了传感器支持数量
V1.0.3 更新了传感器支持数量
V1.0.4 修复了SEN0193测量值反向问题更多
-