日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何使用Arduino來開發(fā)灌溉系統(tǒng)

幾周之前,我展示了最近為父親做的一個項目:Remotely controlling IR/RF devices with an Arduino,他卻抱怨道我還沒有為他開發(fā)一個可遠程控制得灌溉系統(tǒng)。我們有幾英畝地需要灌溉,以前是通過中央水泵加管道的方式灌溉。然而在那時,事實是他需要一個遠程控制水泵,這對我來說是一個新的挑戰(zhàn),正如對你們一樣,所以我詢問了父親他的具體的需求。

他告訴我他需要一個允許他向一個手機號打電話或者發(fā)短信以控制遠程的水泵開始或者關(guān)閉,以及如果灌溉系統(tǒng)出現(xiàn)問題,系統(tǒng)會發(fā)送短息并及時關(guān)閉水泵。

以前灌溉就是大量線軸連接到水泵上,但是仍然會存在一些問題,比如缺電、管道連接不正確或管道需要加壓等。由于以上問題出現(xiàn)的突然性,一個及時提醒你并保存現(xiàn)場數(shù)據(jù)的系統(tǒng)是非常寶貴的, 即使你在事發(fā)12小時之后回到農(nóng)場仍然會發(fā)現(xiàn)管道破損之前5分鐘灌溉現(xiàn)場狀況。

Arduino 來拯救

Arduino非常適合這樣的項目:低成本、只需要一個電源、沒有系統(tǒng)會凍結(jié)/掛起、擁有眾多的標準周邊設(shè)備。聽起來這個想法適合我做,所以我通過互聯(lián)網(wǎng)搜索到Arduino GSM模塊。***,我發(fā)現(xiàn)一個模塊以及開放庫只需要30美元,非常便宜。完整的系統(tǒng)成本大約50美元,和大多數(shù)其他系統(tǒng)成本700美元形成鮮明對照。

幸運的是,GSMLib很容易使用,我一找出哪些針腳能用到,哪些沒用就開始動手去做。一個簡短的例子,當一個認證的手機號發(fā)短息給你時,你需要做的就是:

 
 
  1. stat = call.CallStatusWithAuth(number, 1, 3);if(stat == CALL_INCOM_VOICE_AUTH) {
  2.     call.HangUp();
  3.     sms.SendSMS(number, value_str);}

系統(tǒng)描述

最終的水泵控制系統(tǒng)是相當簡單的。開始或者關(guān)閉的方法通過一個繼電器或者兩個繼電器系統(tǒng)模擬開/關(guān)按鈕實現(xiàn)。我想要的是兩種方法都支持,這并不是很困難。

除了輸出之外,也有輸入。當系統(tǒng)啟動并運行時,相應(yīng)的繼電器開啟和關(guān)閉;當有一個錯誤時(斷電、低壓、高溫),三個繼電器可能會開啟。我們的軟件一般需要發(fā)送短信,當系統(tǒng)開始和停止運行時(無論任何原因,無論你是否通過電話開啟系統(tǒng)),當一個錯誤繼電器觸發(fā)時,一條帶有具體錯誤原因的短信將發(fā)送。

我們也想要一種取消SMS發(fā)送的方法,與確保你不會得到無關(guān)緊要的信息,如果你手動開啟/關(guān)閉系統(tǒng),而你在水泵身旁(顯而易見的是當你站在水泵旁邊時,關(guān)閉水泵,壓力消失,你不在需要接受短信)通過簡單的選擇輸入可實現(xiàn)開啟短息發(fā)送功能或者關(guān)閉。

當然也有一些次要的問題需要考慮,比如錯誤繼電器和其他元件不相關(guān)聯(lián)(當關(guān)閉電源后,所有其他的錯誤繼電器將繼續(xù)運行,所以你只需要發(fā)送“電力消失”信息),錯誤條件具體到錯誤(例如,關(guān)閉系統(tǒng)觸發(fā)“壓力下降”錯誤),但這都非常簡單。

實現(xiàn)錯誤短信

實現(xiàn)錯誤短息的函數(shù)只需幾行。初始時,我們檢測繼電器的狀態(tài)是否改變(當一個錯誤繼電器保持激活狀態(tài)時,我們想要邊緣觸發(fā)以避免虛假循環(huán)。例如):

 
 
  1. for (char i=0; i < INPUT_LENGTH; i++) {
  2.     pinState = digitalRead(inputPins[i]);
  3.     if (pinState != pinStates[i]) {
  4.         // If the pin's state changed, note it.
  5.         statesChanged[i] = 1;
  6.     }
  7.     // Update the state.
  8.     pinStates[i] = pinState;}

然后我們掌握了所有狀態(tài)的改變以及新狀態(tài),決定接下來做什么就不難了:

 
 
  1. // Decide what happens.if (statesChanged[0] == 1 && pinStates[0] == OFF) {
  2.     // Phase dropped, send message regardless.
  3.     sendSMS("Phase dropped.");} else if (statesChanged[1] == 1 && pinStates[1] == OFF) {
  4.     sendSMS("Thermal dropped.");} else if ((statesChanged[2] == 1 && pinStates[2] == OFF) &&
  5.            (statesChanged[3] == 1 &&  pinStates[3] == OFF)) {
  6.     // Pressure dropped *and operation stopped simultaneously*.
  7.     // This is because we don't want to be notified of normal
  8.     // pressure drops after we stop the system ourselves.
  9.     sendSMS("Pressure dropped.");} else if (statesChanged[3] == 1 && pinStates[3] == OFF) {
  10.     sendSMS("Pump shut down.");} else if (statesChanged[3] == 1 && pinStates[3] == ON) {
  11.     sendSMS("Pump started.");}

結(jié)束語

最終完成的系統(tǒng)應(yīng)當是即插即用的。如果你想要使用它,并且像我一樣擁有兼容好的錯誤繼電器,你可以安裝到 Arduino 并且運行它。

你能在GitHub上找到完整的代碼:https://github.com/skorokithakis/arduino-irrigation

非常樂見你提出系統(tǒng)功能上的需求,這是走向成功的故事。失敗的故事也是非常受歡迎的,但是它們使我不怎么幸福。我也將期待你后面的評論,或者你可以Tweet我。我希望基于Arduino的灌溉系統(tǒng)將至少給提供一些有用的東西,感謝你的閱讀!

英文原文:Arduino-powered irrigation system

譯文鏈接:http://www.oschina.net/translate/arduino-powered-irrigation-system


網(wǎng)站欄目:如何使用Arduino來開發(fā)灌溉系統(tǒng)
新聞來源:http://www.dlmjj.cn/article/djpoppp.html