资料介绍
描述
夏季,您的花园或后院需要经常浇水,尤其是在澳大利亚。为了确保它定期发生,我决定设计这样一个浇水系统。
功能说明
该项目最多由四个阀门组成,最多可以控制 3 个洒水器或其他类型的浇水装置。它使用一个额外的阀门来更好地抵抗阀门故障,并且如果您决定使用水流量传感器,它还会执行泄漏检查。
这三个浇水装置最多可以浇灌您花园的 3 个不同区域。它们被称为区域 1、区域 2 和区域 3,您可以分别配置它们的持续时间(以分钟为单位)以及每天开始浇水的时间。
有两个按钮和一个彩色 LED 来控制/显示设备的状态。红色按钮用于显示和切换模式以及立即关闭浇水。黑色按钮开始浇水,如果它已经在运行,则切换到下一个区域。
当您在空闲模式下按下红色按钮时,它将首先在彩色 LED 上显示当前模式,然后在模式之间切换,如下所示:
- 模式关闭(颜色 LED 红色)
- 模式开启(彩色 LED 绿色)
- 模式关闭一次(颜色 LED 紫色)
如果您和客人坐在后院却忘记关掉它怎么办?出于这个原因,我添加了一个警告激活浇水装置。
当开始浇水时,会发生以下情况:
- 泄漏检查(如果已激活)
- 打开区域 1 1 秒
- 暂停一分钟(让您在有客人时切换它..)
- 在给定的时间内开始给区域 1 浇水(以分钟为单位)
- 打开区域 2 1 秒
- 暂停一分钟
- 在给定的时间内开始给区域 2 浇水(以分钟为单位)
- 打开区域 3 1 秒
- 暂停一分钟
- 在给定的时间内开始给区域 3 浇水(以分钟为单位)
在此期间任何时候按红色按钮,浇水将立即停止,直到下一次预定的浇水才开始。如果按下黑色按钮,它将切换到下一个区域。
软件先决条件
为了安装这个项目的草图,你显然需要在你的 PC 上安装 Arduino IDE。组装部分中的草图和一些测试草图也需要在 Arduino IDE 中安装下面列出的库。
推荐的安装方法如下(适用于除 DS3232RTC 之外的所有设备)。
- 菜单草图->包含库->管理库...
- 在“过滤您的搜索...”的右上角,输入库的名称
- 单击它,然后单击“安装”
- 有关更多详细信息,请参阅手册安装其他 Arduino 库
所需库:
电气装配
电气部分主要由Arduino Uno、DS3231 RTC、MOSFET4板、彩色LED板和两个按钮组成。
如果您对 Arduino 有经验,请跳过以下章节并根据上图进行组装。
连接和测试 DS3231 RTC
将手表电池放在 DS3231 RTC 板上并按照概览图所示进行连接。连接如下:
- RTC PIN SCL = Arduino PIN A5 (SCL
- RTC PIN SQW = Arduino PIN 8
- RTC PIN GND = 面包板 GND(也可以是任何用于测试的 Arduino GND)
- RTC PIN VCC = Breadboard VCC(5V,也可以是Arduino 5V进行测试)
将以下草图上传到 Arduino Uno 以检查 RTC 芯片是否连接正确。
#include // http://github.com/JChristensen/DS3232RTC
#include // https://github.com/GreyGnome/EnableInterrupt
#define SLEEP_MODE SLEEP_MODE_IDLE
#include // https://github.com/PRosenb/DeepSleepScheduler
#define RTC_INT_PIN 8
boolean alarmReceived = false;
void setup() {
Serial.begin(9600);
Serial.println(F("Startup ------------"));
initRtc();
setSyncProvider(RTC.get);
if (timeStatus() != timeSet) {
Serial.println(F("RTC not found"));
} else {
Serial.println(F("RTC found"));
Serial.println(F("Testing interrupt connection.."));
time_t rtcTime = now();
unsigned int hours = hour(rtcTime);
unsigned int minutes = minute(rtcTime);
unsigned int seconds = second(rtcTime);
// trigger alarm in 5 seconds
seconds += 5;
if (seconds >= 60) {
seconds -= 60;
minutes++;
}
if (minutes >= 60) {
minutes -= 60;
hours++;
}
if (hours >= 24) {
hours -= 24;
}
Serial.print(F("Trigger alarm at RTC time "));
Serial.print(hours);
Serial.print(F(":"));
Serial.print(minutes);
Serial.print(F(":"));
Serial.println(seconds);
RTC.setAlarm(ALM1_MATCH_MINUTES, seconds, minutes, hours, 0);
scheduler.scheduleDelayed(checkIfReceived, 10000);
}
}
void loop() {
scheduler.execute();
}
inline void initRtc() {
RTC.alarmInterrupt(ALARM_1, true);
RTC.alarmInterrupt(ALARM_2, false);
// reset alarms if active
RTC.alarm(ALARM_1);
RTC.alarm(ALARM_2);
delay(1000);
pinMode(RTC_INT_PIN, INPUT_PULLUP);
enableInterrupt(RTC_INT_PIN, isrRtc, FALLING);
}
void checkIfReceived() {
if (!alarmReceived) {
Serial.println(F("Alarm not received, interrupt wire seams not okay."));
}
}
void isrRtc() {
scheduler.schedule(rtcScheduled);
}
void rtcScheduled() {
alarmReceived = true;
Serial.println(F("Interrupt received, wire looks fine."));
if (RTC.alarm(ALARM_1)) {
Serial.println(F("Alarm received, connection of RTC looks fine."));
} else {
Serial.println(F("Alarm not received, something looks wrong with the RTC."));
}
}
在 Arduino IDE 中单击菜单工具->串行监视器并检查输出。
连接并测试彩色 LED
该项目中使用的 RGB 彩色 LED 板本身包含限流电阻(见上图)。请确保您使用的那个也是这种情况,以防止损坏。如果没有,则需要放置单独的电阻器。
有不同的 RGB 颜色 LED。我在这个项目中使用的那个有一个标有“GND”的 PIN。如果您使用一个带有标记为 + 的 PIN,则需要相应地调整测试草图和生产草图(参见 Constants.h 中的 COLOR_LED_INVERTED)。
如概览图所示连接彩色 LED。连接如下:
- 彩色 LED G = Arduino A0
- 彩色 LED R = Arduino A1
- 彩色 LED B = Arduino A2
- 颜色 LED GND = 面包板 GND(也可以是任何 Arduino GND 进行测试)
将以下草图上传到 Arduino Uno 以检查彩色 LED 是否连接正确。
#define MODE_COLOR_GREEN_PIN A0
#define MODE_COLOR_RED_PIN A1
#define MODE_COLOR_BLUE_PIN A2
void setup() {
Serial.begin(9600);
pinMode(MODE_COLOR_GREEN_PIN, OUTPUT);
digitalWrite(MODE_COLOR_GREEN_PIN, LOW);
pinMode(MODE_COLOR_RED_PIN, OUTPUT);
digitalWrite(MODE_COLOR_RED_PIN, LOW);
pinMode(MODE_COLOR_BLUE_PIN, OUTPUT);
digitalWrite(MODE_COLOR_BLUE_PIN, LOW);
}
void loop() {
Serial.println(F("green"));
digitalWrite(MODE_COLOR_GREEN_PIN, HIGH);
delay(1000);
digitalWrite(MODE_COLOR_GREEN_PIN, LOW);
Serial.println(F("red"));
digitalWrite(MODE_COLOR_RED_PIN, HIGH);
delay(1000);
digitalWrite(MODE_COLOR_RED_PIN, LOW);
Serial.println(F("blue"));
digitalWrite(MODE_COLOR_BLUE_PIN, HIGH);
delay(1000);
digitalWrite(MODE_COLOR_BLUE_PIN, LOW);
}
在 Arduino IDE 中单击菜单工具->串行监视器并观察 LED 的颜色是否与控制台上打印的颜色匹配。
连接和测试 MOSFET4
该项目中使用的MOSFET4板包含 4 个 IRF540 MOSFET,包括通过 Arduino PIN 控制它们的所有必要部件。您还可以使用其他带有单个 IRF540 的 MOSFET 或电路板。
如概览图所示连接 MOSFET4 板。引脚 S 是左侧引脚,引脚“-”是输入连接器中的右侧引脚,如上所示(MOSFET4 输入)。中间的 PIN 是 + 我们在这个项目中不需要的。连接如下。
- MOSFET4 CH1 S = Arduino 4
- MOSFET4 CH2 S = Arduino 5
- MOSFET4 CH3 S = Arduino 6
- MOSFET4 CH4 S = Arduino 7
- MOSFET4 CH1 - = 面包板 GND(也可以是任何用于测试的 Arduino GND)
将以下草图上传到 Arduino Uno 以检查 MOSFET4 板是否连接正确。
#define VALVE1_PIN 4
#define VALVE2_PIN 5
#define VALVE3_PIN 6
#define VALVE4_PIN 7
void setup() {
Serial.begin(9600);
pinMode(VALVE1_PIN, OUTPUT);
pinMode(VALVE2_PIN, OUTPUT);
pinMode(VALVE3_PIN, OUTPUT);
pinMode(VALVE4_PIN, OUTPUT);
}
void loop() {
Serial.println(F("Valve 1"));
digitalWrite(VALVE1_PIN, HIGH);
delay(1000);
digitalWrite(VALVE1_PIN, LOW);
Serial.println(F("Valve 2"));
digitalWrite(VALVE2_PIN, HIGH);
delay(1000);
digitalWrite(VALVE2_PIN, LOW);
Serial.println(F("Valve 3"));
digitalWrite(VALVE3_PIN, HIGH);
delay(1000);
digitalWrite(VALVE3_PIN, LOW);
Serial.println(F("Valve 4"));
digitalWrite(VALVE4_PIN, HIGH);
delay(1000);
digitalWrite(VALVE4_PIN, LOW);
}
您应该看到 MOSFET4 板上的 4 个 LED 一个接一个地亮起。
连接和测试按钮
如概览图所示连接黑色和红色按钮。连接如下:
- 黑色按钮的任何 PIN = Arduino 10
- 黑色按钮的其他 PIN = Breadboard GND(也可以是任何用于测试的 Arduino GND)
- 红色按钮的任何 PIN = Arduino 11
- 红色按钮的其他 PIN = Breadboard GND(也可以是任何用于测试的 Arduino GND)
将以下草图上传到 Arduino Uno 以检查按钮是否正确连接。
#include // https://github.com/GreyGnome/EnableInterrupt
#define START_AUTOMATIC_PIN 10
#define MODE_PIN 11
void setup() {
Serial.begin(9600);
pinMode(START_AUTOMATIC_PIN, INPUT_PULLUP);
enableInterrupt(START_AUTOMATIC_PIN, isrStartAutomatic, FALLING);
pinMode(MODE_PIN, INPUT_PULLUP);
enableInterrupt(MODE_PIN, isrMode, FALLING);
}
void loop() {
// empty
}
void isrStartAutomatic() {
// only done in test, do not println in interrupt in production sketch
Serial.println(F("black button"));
}
void isrMode() {
// only done in test, do not println in interrupt in production sketch
Serial.println(F("red button"));
}
在 Arduino IDE 中,单击 Menu Tools->Serial Monitor 并观察在单击相应按钮时是否在控制台上看到“黑色按钮”和“红色按钮”。
完成电气装配
最后连接水流传感器插头和 12V 电源,但不要连接橙色线。
机械装配
该项目的机械部分由连接器、水流传感器、阀门和出口组成。建议将所有部件连接到至少第一个带有螺纹而不是快速连接器的阀门。这意味着它的机械组装方式如下。
顺序如下:
- 带螺纹的花园水龙头
- 从花园水龙头螺纹到 1/2" 阀门的连接器
- 主阀:两端 1/2" 外螺纹
- 从主阀到水表的连接器:两端 1/2" 内螺纹
- 水表:两端 1/2" 公头
- 4 路交叉联轴器:所有螺纹 1/2" 内螺纹
- 面积 1/2/3 阀门:两端 1/2" 外螺纹
- 面积 1/2/3 螺纹接头连接器:1/2" 内螺纹到花园房屋的快速接头
连接阀门/水流量传感器:
- 主阀 = mosfet4 CH1(极性无关紧要)
- 区域 1 阀门 = mosfet4 CH2
- 区域 2 阀门 = mosfet4 CH3
- 区域 3 阀门 = mosfet4 CH4
- 水流传感器 = 水流传感器插头,请参见水流传感器说明关于 VCC、GND 和信号线是什么线
将电气部件安装在适当的盒子中。我推荐一个正面透明的,这样可以看到内部和彩色 LED。
请仔细检查盒子是否防水。我使用了一个以防水形式出售的盒子,但实际上并非如此。正如你所想象的,系统开始表现得很奇怪,所以我在前面放了一个塑料箔,以更好地保护它免受雨淋。
集成测试
电气和机械组装完成后,您可以对其进行整体测试。
首先移除概览图像上的橙色连接,以便您可以使用 Arduino Uno 的 USB 电缆。使用 USB 时,不要通过其 Vin 为 Arduino Uno 供电,这很重要,否则 PC 的 USB 端口可能会出现问题。
配置
- 断开您在概览图中看到的橙色连接
- 使用 USB 电缆将 Arduino Uno 连接到您的 PC
- 上传主草图“浇水系统”
- 在 Arduino IDE 中单击菜单工具->串行监视器
- 选择 9600 波特
- 您会在控制台中看到初始化输出
- 按 h 和“输入”键
- 控制台显示可用命令
-
使用 d
- - - T
: (一天 24 小时)设置当前时间,例如 d2017-11-11T20:00 - T
-
使用 a
: (一天 24 小时)设置浇水时间,例如 a21:00
- 设置区域 1 时长:wz1:<分钟,3 位数字>,例如 wz1:010
- 设置区域 2 持续时间:wz2:<分钟,3 位数字>,例如 wz2:010
- 设置区域 3 持续时间:wz3:<分钟,3 位数字>,例如 wz3:010
- 打印状态:s
- 检查值和时间是否设置正确
- 数值和时间存储在 EEPROM 和 RTC 芯片中。只要 RTC 手表电池不空,它们就会在断电时保持
第一次测试
- 配置完成后,多次按下红色按钮,通过点亮红色、紫色和绿色的彩色 LED 来查看模式是否切换
- 按下黑色按钮,查看主阀和区域1的阀门是否正确释放
- 再按一下黑色按钮切换到区域 2 和区域 3
- 按下红色按钮检查浇水是否停止
完成设置
- 断开电脑
- 用 12V 电源重新连接橙色线为 Arduino Uno 供电
- 使用按钮检查它是否仍然按预期工作
- 从现在开始监督所有自动和手动运行,以确保不会发生损坏
视频
下面你可以一些简短的视频来解释如何操作浇水系统。
第一个视频展示了如何查看浇水系统处于哪种模式。在此视频中,它以绿色亮起,表示“模式开启”。
第二个视频演示了如何在“模式开启”、“模式关闭一次”和“模式关闭”三种模式之间切换。
以下视频展示了如何手动开始浇水、在三个区域之间切换并再次关闭浇水。请注意,LED 最后以绿色亮起,表示系统当前处于“模式开启”状态。
..这就是你的邻居的样子;-)。
- 智能浇水系统开源分享
- 自动浇水系统开源案例
- 自动浇水系统开源设计
- DIY自动浇水系统
- 雨水模拟自动浇水系统开源分享
- 自动植物浇水系统开源分享
- 智能植物浇水系统开源案例
- 双植物浇水系统开源分享
- 室内植物浇水系统开源分享
- 智能植物浇水系统开源
- 智能植物浇水系统开源分享
- 智能植物浇水系统开源项目
- 自动浇水系统开源分享
- Arduino自动植物浇水系统
- 使用树莓派2实现的植物浇水系统的资料合集 56次下载
- 基于51单片机的自动喷水系统设计 1072次阅读
- 如何制作一个基于单片机的自动浇花系统 1.4w次阅读
- 通过利用虚拟仪器模糊控制威廉希尔官方网站 来实现恒压供水系统的设计 934次阅读
- 微雪电子土壤湿度传感器简介 4778次阅读
- 自动浇灌喷淋控制系统怎样来实现 4427次阅读
- 物联网十大经典开源操作系统 1w次阅读
- 浅析ABB变频恒压供水系统功能和特点 5369次阅读
- 自动浇花系统的设计及制作 基于Arduino 2.5w次阅读
- CO-TRUST系列PLC在自动消防供水系统中的应用设计 2271次阅读
- arduino测量土壤湿度自动浇水提醒 1.3w次阅读
- 基于PLC的变频恒压供水系统的设计 2.8w次阅读
- 变频恒压供水系统简述 1.3w次阅读
- 一种由PLC与变频器组成的恒压供水系统设计 3171次阅读
- 工程师DIY智能灌溉器解决植物浇水难题 2364次阅读
- 一种简单的变频恒压供水系统的设计方案 1w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多