電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>自動(dòng)澆水系統(tǒng)開源

自動(dòng)澆水系統(tǒng)開源

2022-11-14 | zip | 0.04 MB | 次下載 | 2積分

資料介紹

描述

夏季,您的花園或后院需要經(jīng)常澆水,尤其是在澳大利亞。為了確保它定期發(fā)生,我決定設(shè)計(jì)這樣一個(gè)澆水系統(tǒng)。

功能說(shuō)明

該項(xiàng)目最多由四個(gè)閥門組成,最多可以控制 3 個(gè)灑水器或其他類型的澆水裝置。它使用一個(gè)額外的閥門來(lái)更好地抵抗閥門故障,并且如果您決定使用水流量傳感器,它還會(huì)執(zhí)行泄漏檢查。

這三個(gè)澆水裝置最多可以澆灌您花園的 3 個(gè)不同區(qū)域。它們被稱為區(qū)域 1、區(qū)域 2 和區(qū)域 3,您可以分別配置它們的持續(xù)時(shí)間(以分鐘為單位)以及每天開始澆水的時(shí)間。

有兩個(gè)按鈕和一個(gè)彩色 LED 來(lái)控制/顯示設(shè)備的狀態(tài)。紅色按鈕用于顯示和切換模式以及立即關(guān)閉澆水。黑色按鈕開始澆水,如果它已經(jīng)在運(yùn)行,則切換到下一個(gè)區(qū)域。

當(dāng)您在空閑模式下按下紅色按鈕時(shí),它將首先在彩色 LED 上顯示當(dāng)前模式,然后在模式之間切換,如下所示:

  • 模式關(guān)閉(顏色 LED 紅色)
  • 模式開啟(彩色 LED 綠色)
  • 模式關(guān)閉一次(顏色 LED 紫色)

如果您和客人坐在后院卻忘記關(guān)掉它怎么辦?出于這個(gè)原因,我添加了一個(gè)警告激活澆水裝置。

當(dāng)開始澆水時(shí),會(huì)發(fā)生以下情況:

  • 泄漏檢查(如果已激活)
  • 打開區(qū)域 1 1 秒
  • 暫停一分鐘(讓您在有客人時(shí)切換它..)
  • 在給定的時(shí)間內(nèi)開始給區(qū)域 1 澆水(以分鐘為單位)
  • 打開區(qū)域 2 1 秒
  • 暫停一分鐘
  • 在給定的時(shí)間內(nèi)開始給區(qū)域 2 澆水(以分鐘為單位)
  • 打開區(qū)域 3 1 秒
  • 暫停一分鐘
  • 在給定的時(shí)間內(nèi)開始給區(qū)域 3 澆水(以分鐘為單位)

在此期間任何時(shí)候按紅色按鈕,澆水將立即停止,直到下一次預(yù)定的澆水才開始。如果按下黑色按鈕,它將切換到下一個(gè)區(qū)域。

軟件先決條件

為了安裝這個(gè)項(xiàng)目的草圖,你顯然需要在你的 PC 上安裝 Arduino IDE。組裝部分中的草圖和一些測(cè)試草圖也需要在 Arduino IDE 中安裝下面列出的庫(kù)。

推薦的安裝方法如下(適用于除 DS3232RTC 之外的所有設(shè)備)。

  • 菜單草圖->包含庫(kù)->管理庫(kù)...
  • 在“過(guò)濾您的搜索...”的右上角,輸入庫(kù)的名稱
  • 單擊它,然后單擊“安裝”

所需庫(kù):

電氣裝配

電氣部分主要由Arduino Uno、DS3231 RTC、MOSFET4板、彩色LED板和兩個(gè)按鈕組成。

?
pYYBAGNtrTqAdv3kAAG0bNo_Pf8993.png
電氣概述
?

如果您對(duì) Arduino 有經(jīng)驗(yàn),請(qǐng)?zhí)^(guò)以下章節(jié)并根據(jù)上圖進(jìn)行組裝。

連接和測(cè)試 DS3231 RTC

?
pYYBAGNtrUaAQ4ADAATD_sAHk40491.jpg
DS3231
?

將手表電池放在 DS3231 RTC 板上并按照概覽圖所示進(jìn)行連接。連接如下:

  • RTC PIN SDA = Arduino PIN A4 (SDA)
  • RTC PIN SCL = Arduino PIN A5 (SCL
  • RTC PIN SQW = Arduino PIN 8
  • RTC PIN GND = 面包板 GND(也可以是任何用于測(cè)試的 Arduino GND)
  • RTC PIN VCC = Breadboard VCC(5V,也可以是Arduino 5V進(jìn)行測(cè)試)

將以下草圖上傳到 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 中單擊菜單工具->串行監(jiān)視器并檢查輸出。

連接并測(cè)試彩色 LED

?
poYBAGNtrUqAcxmKAAIP1Jt_YnY436.jpg
彩色 LED
?

該項(xiàng)目中使用的 RGB 彩色 LED 板本身包含限流電阻(見上圖)。請(qǐng)確保您使用的那個(gè)也是這種情況,以防止損壞。如果沒有,則需要放置單獨(dú)的電阻器。

有不同的 RGB 顏色 LED。我在這個(gè)項(xiàng)目中使用的那個(gè)有一個(gè)標(biāo)有“GND”的 PIN。如果您使用一個(gè)帶有標(biāo)記為 + 的 PIN,則需要相應(yīng)地調(diào)整測(cè)試草圖和生產(chǎn)草圖(參見 Constants.h 中的 COLOR_LED_INVERTED)。

如概覽圖所示連接彩色 LED。連接如下:

  • 彩色 LED G = Arduino A0
  • 彩色 LED R = Arduino A1
  • 彩色 LED B = Arduino A2
  • 顏色 LED GND = 面包板 GND(也可以是任何 Arduino GND 進(jìn)行測(cè)試)

將以下草圖上傳到 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 中單擊菜單工具->串行監(jiān)視器并觀察 LED 的顏色是否與控制臺(tái)上打印的顏色匹配。

連接和測(cè)試 MOSFET4

?
poYBAGNtrXmAT5cFAA3QPBUizVA987.jpg
MOSFET4
?

?

?
poYBAGNtrYKAcVuzAAL8NKv04gk776.jpg
MOSFET4 輸入
?

該項(xiàng)目中使用的MOSFET4板包含 4 個(gè) IRF540 MOSFET,包括通過(guò) Arduino PIN 控制它們的所有必要部件。您還可以使用其他帶有單個(gè) IRF540 的 MOSFET 或電路板。

如概覽圖所示連接 MOSFET4 板。引腳 S 是左側(cè)引腳,引腳“-”是輸入連接器中的右側(cè)引腳,如上所示(MOSFET4 輸入)。中間的 PIN 是 + 我們?cè)谶@個(gè)項(xiàng)目中不需要的。連接如下。

  • MOSFET4 CH1 S = Arduino 4
  • MOSFET4 CH2 S = Arduino 5
  • MOSFET4 CH3 S = Arduino 6
  • MOSFET4 CH4 S = Arduino 7
  • MOSFET4 CH1 - = 面包板 GND(也可以是任何用于測(cè)試的 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); 
} 

您應(yīng)該看到 MOSFET4 板上的 4 個(gè) LED 一個(gè)接一個(gè)地亮起。

連接和測(cè)試按鈕

?
pYYBAGNtrYSADiPRAABH4SHcBUo576.png
黑色防水按鈕
?

如概覽圖所示連接黑色和紅色按鈕。連接如下:

  • 黑色按鈕的任何 PIN = Arduino 10
  • 黑色按鈕的其他 PIN = Breadboard GND(也可以是任何用于測(cè)試的 Arduino GND)
  • 紅色按鈕的任何 PIN = Arduino 11
  • 紅色按鈕的其他 PIN = Breadboard GND(也可以是任何用于測(cè)試的 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 并觀察在單擊相應(yīng)按鈕時(shí)是否在控制臺(tái)上看到“黑色按鈕”和“紅色按鈕”。

完成電氣裝配

最后連接水流傳感器插頭和 12V 電源,但不要連接橙色線。

機(jī)械裝配

該項(xiàng)目的機(jī)械部分由連接器、水流傳感器、閥門和出口組成。建議將所有部件連接到至少第一個(gè)帶有螺紋而不是快速連接器的閥門。這意味著它的機(jī)械組裝方式如下。

?
poYBAGNtrYiAAOARAALB__MbxtE680.png
裝配概述
?

?

?
pYYBAGNtrYqASBfqAABUS94i1Jo845.jpg
水流量傳感器
?

?

?
連接器 1/2
連接器 1/2"
?

?

?
poYBAGNtrZGAfPNeAADI5n3tHNc768.jpg
4路交叉耦合
?

順序如下:

  • 帶螺紋的花園水龍頭
  • 從花園水龍頭螺紋到 1/2" 閥門的連接器
  • 主閥:兩端 1/2" 外螺紋
  • 從主閥到水表的連接器:兩端 1/2" 內(nèi)螺紋
  • 水表:兩端 1/2" 公頭
  • 4 路交叉聯(lián)軸器:所有螺紋 1/2" 內(nèi)螺紋
  • 面積 1/2/3 閥門:兩端 1/2" 外螺紋
  • 面積 1/2/3 螺紋接頭連接器:1/2" 內(nèi)螺紋到花園房屋的快速接頭

連接閥門/水流量傳感器:

  • 主閥 = mosfet4 CH1(極性無(wú)關(guān)緊要)
  • 區(qū)域 1 閥門 = mosfet4 CH2
  • 區(qū)域 2 閥門 = mosfet4 CH3
  • 區(qū)域 3 閥門 = mosfet4 CH4
  • 水流傳感器 = 水流傳感器插頭,請(qǐng)參見水流傳感器說(shuō)明關(guān)于 VCC、GND 和信號(hào)線是什么線

將電氣部件安裝在適當(dāng)?shù)暮凶又小?/font>我推薦一個(gè)正面透明的,這樣可以看到內(nèi)部和彩色 LED。

請(qǐng)仔細(xì)檢查盒子是否防水。我使用了一個(gè)以防水形式出售的盒子,但實(shí)際上并非如此。正如你所想象的,系統(tǒng)開始表現(xiàn)得很奇怪,所以我在前面放了一個(gè)塑料箔,以更好地保護(hù)它免受雨淋。

集成測(cè)試

電氣和機(jī)械組裝完成后,您可以對(duì)其進(jìn)行整體測(cè)試。

首先移除概覽圖像上的橙色連接,以便您可以使用 Arduino Uno 的 USB 電纜。使用 USB 時(shí),不要通過(guò)其 Vin 為 Arduino Uno 供電,這很重要,否則 PC 的 USB 端口可能會(huì)出現(xiàn)問題。

配置

  • 斷開您在概覽圖中看到的橙色連接
  • 使用 USB 電纜將 Arduino Uno 連接到您的 PC
  • 上傳主草圖“澆水系統(tǒng)”
  • 在 Arduino IDE 中單擊菜單工具->串行監(jiān)視器
  • 選擇 9600 波特
  • 您會(huì)在控制臺(tái)中看到初始化輸出
  • 按 h 和“輸入”鍵
  • 控制臺(tái)顯示可用命令
  • 使用 d--
    T:(一天 24 小時(shí))設(shè)置當(dāng)前時(shí)間,例如 d2017-11-11T20:00
  • 使用 a:(一天 24 小時(shí))設(shè)置澆水時(shí)間,例如 a21:00
  • 設(shè)置區(qū)域 1 時(shí)長(zhǎng):wz1:<分鐘,3 位數(shù)字>,例如 wz1:010
  • 設(shè)置區(qū)域 2 持續(xù)時(shí)間:wz2:<分鐘,3 位數(shù)字>,例如 wz2:010
  • 設(shè)置區(qū)域 3 持續(xù)時(shí)間:wz3:<分鐘,3 位數(shù)字>,例如 wz3:010
  • 打印狀態(tài):s
  • 檢查值和時(shí)間是否設(shè)置正確
  • 數(shù)值和時(shí)間存儲(chǔ)在 EEPROM 和 RTC 芯片中。只要 RTC 手表電池不空,它們就會(huì)在斷電時(shí)保持

第一次測(cè)試

  • 配置完成后,多次按下紅色按鈕,通過(guò)點(diǎn)亮紅色、紫色和綠色的彩色 LED 來(lái)查看模式是否切換
  • 按下黑色按鈕,查看主閥和區(qū)域1的閥門是否正確釋放
  • 再按一下黑色按鈕切換到區(qū)域 2 和區(qū)域 3
  • 按下紅色按鈕檢查澆水是否停止

完成設(shè)置

  • 用 12V 電源重新連接橙色線為 Arduino Uno 供電
  • 使用按鈕檢查它是否仍然按預(yù)期工作
  • 從現(xiàn)在開始監(jiān)督所有自動(dòng)和手動(dòng)運(yùn)行,以確保不會(huì)發(fā)生損壞

視頻

下面你可以一些簡(jiǎn)短的視頻來(lái)解釋如何操作澆水系統(tǒng)。

第一個(gè)視頻展示了如何查看澆水系統(tǒng)處于哪種模式。在此視頻中,它以綠色亮起,表示“模式開啟”。

?

第二個(gè)視頻演示了如何在“模式開啟”、“模式關(guān)閉一次”和“模式關(guān)閉”三種模式之間切換。

?

以下視頻展示了如何手動(dòng)開始澆水、在三個(gè)區(qū)域之間切換并再次關(guān)閉澆水。請(qǐng)注意,LED 最后以綠色亮起,表示系統(tǒng)當(dāng)前處于“模式開啟”狀態(tài)。

?

..這就是你的鄰居的樣子;-)。

?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)