概述
随着人们生活节奏的加快,人们开始变得越来越忙碌,偶而出差、旅行、探亲也是很无可避免的事情,但这个时候问题来了,家中心爱的花草有谁来照管?
一个好的生活环境,植物是必不可少的一部分。据了解,80%的花草生长问题是由于不按时浇水导致的。特别是在都市生活的白领们,平时工作时间长,经常加班,生活不规律。辛苦几个月种的花,可能就因为一两周的不停加班而凋谢。直到某一天突然看到,心情就会变得很差,影响工作情绪。这对广大爱花人士来说,是一件非常心痛的事情,辛苦工作几许,却因为出差几天,加班几天,旅行几天,便失去了爱花的生命。
DFRobot专为广大DIY人士,养花爱好者推出了一款可编程自动浇花套件,基于Arduino Leonardo控制器设计,使用土壤湿度传感器,配上空气温湿度传感器,可以实时监测当前温湿度和土壤湿度。可手动设置湿度阈值,当湿度低于一定数值时,自动开启水泵。适用于不同品类的植物。板载一个Xbee接口,可插WiFi,蓝牙,Zigbee等无线设备,连接到本地网关,使实现物联网远程控制。即使不在家也可以自动照顾您的花草,免除您的后顾之忧。
技术规格
- 输入电源:6-12V
- bootloader:leonardo
- 具有4个模拟口,5个数字口
- 支持湿度传感器
- 支持潜水泵和双稳态电磁阀浇水
- 具有室内温度和湿度检测
- 板载土壤湿度阀值调节
- 支持xbee无线数�
- 支持USB程序下载
- 预留碳棒接口
- 预留DS18B20温度传感器接口
- 电源接口:接线柱
- 潜水泵接口:接线柱
- 碳棒接口:接线柱
- DS18B20温度接口:接线柱
- 预留3.3V电源输出接口焊点
- 潜水泵额定电压:4.5-12V
- 潜水泵扬程:0—220cm
- 模块尺寸:75 x 50mm
传感器资料
配送清单
- Free Life自动浇花系统控制器 1个
- Micro USB线 1根
- DHT11温湿度传感器 1个
- 土壤湿度传感器 1个
- 模拟接口转数字接口传感器连接线 2根
- 潜水泵 1个(注意:潜水泵必须在水中使用,不能露出水面!)
- 潜水泵电源连接线 1根
- 主板电源连接线 1根
- 橡胶水管 1米
- 塑料外壳 1个
- 2mm一字螺丝刀 1个
- 1号十字螺丝刀 1个
组装示意图
此套件中不含碳棒、XBEE、DS18B20,仅预留了接口,若想使用此产品请自行单独购买。
- 提示:
- 主控板上的蓝色旋钮接在模拟引脚A1上,用户可以在程序中读取该旋钮的值来作为浇花的阈值。
- DS18B20温度传感器接口可以直接外接三线DS18B20温度传感器。购买 DS18B20 防水数字温度传感器(SKU:DFR0198)
- 连接DHT11温湿度传感器时,请将连接线的绿线朝上,竖直插在D9引脚上。
- 连接土壤湿度传感器时,请将连接线的蓝线朝上,竖直插在A2引脚上。
- 潜水泵连接线的棕色线接Solenoid Valve接口的+,蓝色线接-。
- 电池盒连接线的红色接PWRIN接口的+,黑色线接-。
Arduino 样例程序
测试传感器
-
下载DHT11库文件
-
复制以下代码上传至主控器
**注:**此代码作用为将测得的传感器数据上传到电脑端的串口监视器,不具备浇花功能。
#include <dht11.h>
dht11 DHT;
#define MOISTURE_PIN A2
#define DHT11_PIN 9
int airHumidity;//空气湿度
int airTemperature;//空气温度
int soilHumidity;//土壤湿度
void setup(){
Serial.begin(9600);
}
void loop(){
int chk;
chk = DHT.read(DHT11_PIN); // READ DATA
switch (chk){
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
airHumidity=DHT.humidity;
airTemperature=DHT.temperature;
soilHumidity=analogRead(MOISTURE_PIN);
Serial.print("airHumidity:");
Serial.print(airHumidity);
Serial.print(",\t");
Serial.print("airTemperature:");
Serial.print(airTemperature);
Serial.print(",\t");
Serial.print("soilHumidity:");
Serial.println(soilHumidity);
delay(2000);
}
结果
- 打开串口监视器,选择波特率和程序中一致,本示例为9600,可观察到如下结果。
测试水泵
**注:**此代码作用为控制水泵打开和关闭,不具备浇花功能。
void setup() {
//水泵控制引脚初始化
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
void loop() {
pumpOn();
delay(1000);
pumpOff();
delay(1000);
}
//水泵打开
void pumpOn() {
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
//水泵关闭
void pumpOff() {
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
自动浇花示例(最终程序)
**注:**本示例程序未使用DHT11温湿度传感器的数据,仅仅使用土壤湿度传感器数据,当土壤湿度传感器检测数据小于设定湿度时,打开水泵,土壤湿度大于等于设定湿度时关闭水泵。
#define MOISTURE_PIN A2 //土壤湿度传感器引脚
int soilHumidity;//土壤湿度
int setHumidity = 50; //设定湿度
void setup() {
//水泵控制引脚初始化
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
void loop() {
soilHumidity = map(analogRead(MOISTURE_PIN), 0, 1023, 0, 100);//将土壤湿度传感器转换为0—100%
if (soilHumidity < setHumidity) {
pumpOn();
} else {
pumpOff();
}
}
//水泵打开
void pumpOn() {
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
//水泵关闭
void pumpOff() {
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。