資料介紹
描述
夏季,您的花園或后院需要經常澆水,尤其是在澳大利亞。為了確保它定期發生,我決定設計這樣一個澆水系統。
功能說明
該項目最多由四個閥門組成,最多可以控制 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次下載 | 免費
評論
查看更多