Gravity: 雨量传感器

简介

DFRobot推出的雨量传感器采用了翻斗式记录原理,传感器内部无任何电子元件,并且底部镂空设计能够使雨水自动排出,具有稳定性好、灵敏度高等优势。用户可轻松获取输出单位为毫米的雨量值和系统工作时间。

Gravity: 雨量传感器具有I2C和UART两种数据输出类型,与microbit、Arduino、ESP32、树莓派等主控兼容,通过简单易用的Gravity接口我们提供的示例代码,您可以快速搭建一个雨量监测系统。无论您是气象站、环境检测站还是智慧农场,DFRobot雨量传感器都能为您提供高质量的雨量数据。

注意:信号转接板不防水,禁止将信号转接板暴露在雨中。

技术规格

  • 工作电压: 3.3~5.5V DC
  • 工作电流:<3mA
  • 输出信号: I2C/UART
  • 分辨率: 0.28mm
  • 工作温度: -40~85℃
  • 电路板尺寸:32mm*37mm
  • 翻斗器尺寸:118mm59mm80mm
  • 安装孔尺寸:3.1mm
  • 重量:119g(翻斗器),5.3g(电路板)

引脚说明

标号 名称 功能描述
1 D/T I2C数据线SDA/UART数据传输-TX
2 C/R I2C时钟线SCL/UART数据接收-RX
3 - GND电源负极
4 + 电源正极

Arduino使用教程

将程序下载到UNO,打开串口监视器查看累计雨量。

注意:信号转接板不防水,禁止将信号转接板暴露在雨中。

软硬件准备

使用I2C读取传感器数据

接线图

样例代码

  • 将模块与Arduino按照上方的连线图相连,当然你也可以配合Gravity I/O扩展板使用,可以更方便、更快速的完成项目原型搭建。
  • 将传感器上的选择开关,拨到I2C一侧。
  • 下载并安装DFRobot_RainfallSensor如何安装库?
  • 打开Arduino IDE,将下面的代码上传到Arduino UNO。
  • 打开Arduino IDE的串口监控视器,把波特率调至115200,观察串口打印结果。

#include "DFRobot_RainfallSensor.h"

//#define MODE_UART
#ifdef MODE_UART //串口通信

   #include "SoftwareSerial.h"
   SoftwareSerial mySerial(/*rx =*/10, /*tx =*/11);
   DFRobot_RainfallSensor_UART Sensor(/*Stream *=*/&mySerial);

#else //I2C通信
  DFRobot_RainfallSensor_I2C Sensor(&Wire);
#endif

void setup(void)
{
#ifdef MODE_UART
    mySerial.begin(9600);
#endif 
  Serial.begin(115200);
  
  delay(1000);
  while(!Sensor.begin()){
    Serial.println("Sensor init err!!!");
    delay(1000);
  }
  Serial.print("vid:\t");
  Serial.println(Sensor.vid,HEX);
  Serial.print("pid:\t");
  Serial.println(Sensor.pid,HEX);
  Serial.print("Version:\t");
  Serial.println(Sensor.getFirmwareVersion());
  //设置雨量累加值,单位为mm
  //Sensor.setRainAccumulatedValue(0.2794);
}

void loop()
{
  //获取传感器运行时间,单位 小时
  Serial.print("Sensor WorkingTime:\t");
  Serial.print(Sensor.getSensorWorkingTime());
  Serial.println(" H");
  //获取传感器运行时间内的累计雨量
  Serial.print("Rainfall:\t");
  Serial.println(Sensor.getRainfall());
  //获取系统1小时内的累计雨量(函数参数可选1-24)
  Serial.print("1 Hour Rainfall:\t");
  Serial.print(Sensor.getRainfall(1));
  Serial.println(" mm");
  //获取原始数据,雨量的翻斗次数,单位 次
  Serial.print("rainfall raw:\t");
  Serial.println(Sensor.getRawData());
  delay(1000);
}
 

结果

打开串口监视器,得到最终的数据。

Mind+读取传感器数据

  • 加载用户库:https://gitee.com/dfjoannali/ext-rain-sensor

上传模式

Python模式

使用UART读取传感器数据

接线图

样例代码

  • 将模块与Arduino按照上方的连线图相连,当然你也可以配合Gravity I/O扩展板使用,可以更方便、更快速的完成项目原型搭建。
  • 将传感器上的选择开关,拨到UART一侧。
  • 下载并安装DFRobot_RainfallSensor如何安装库?
  • 打开Arduino IDE,将下面的代码上传到Arduino UNO。
  • 打开Arduino IDE的串口监控视器,把波特率调至115200,观察串口打印结果。

#include "DFRobot_RainfallSensor.h"

#define MODE_UART
#ifdef MODE_UART //串口通信

   #include "SoftwareSerial.h"
   SoftwareSerial mySerial(/*rx =*/10, /*tx =*/11);
   DFRobot_RainfallSensor_UART Sensor(/*Stream *=*/&mySerial);

#else //I2C通信
  DFRobot_RainfallSensor_I2C Sensor(&Wire);
#endif

void setup(void)
{
#ifdef MODE_UART
    mySerial.begin(9600);
#endif 
  Serial.begin(115200);
  
  delay(1000);
  while(!Sensor.begin()){
    Serial.println("Sensor init err!!!");
    delay(1000);
  }
  Serial.print("vid:\t");
  Serial.println(Sensor.vid,HEX);
  Serial.print("pid:\t");
  Serial.println(Sensor.pid,HEX);
  Serial.print("Version:\t");
  Serial.println(Sensor.getFirmwareVersion());
  //设置雨量累加值,单位为mm
  //Sensor.setRainAccumulatedValue(0.2794);
}

void loop()
{
  //获取传感器运行时间,单位 小时
  Serial.print("Sensor WorkingTime:\t");
  Serial.print(Sensor.getSensorWorkingTime());
  Serial.println(" H");
  //获取传感器运行时间内的累计雨量
  Serial.print("Rainfall:\t");
  Serial.println(Sensor.getRainfall());
  //获取系统1小时内的累计雨量(函数参数可选1-24)
  Serial.print("1 Hour Rainfall:\t");
  Serial.print(Sensor.getRainfall(1));
  Serial.println(" mm");
  //获取原始数据,雨量的翻斗次数,单位 次
  Serial.print("rainfall raw:\t");
  Serial.println(Sensor.getRawData());
  delay(1000);
}
 

结果

打开串口监视器,得到最终的数据。

行空板使用教程

接线图

样例代码

  • 将模块与行空板按照上方的连线图相连。
  • 将传感器上的选择开关,拨到I2C一侧。
  • 加载用户库:https://gitee.com/dfjoannali/ext-rain-sensor

常见问题(FAQ)

  • 调节拨码开关切换通信方式后仍无法通信?

  • 切换通信方式后转接板需重新上电才能使配置生效。

还没有客户对此产品有任何问题,欢迎通过QQ在线客服或者论坛联系我们!

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

更多

DFshopping_car1.png DFRobot商城购买链接