摘要:我要給家里開發(fā)一個自動化的物聯(lián)網(wǎng)灌溉系統(tǒng)。大致思路有兩個一是自動控制,二是物聯(lián)網(wǎng),人可以輕松查看以及控制我們可以從我后續(xù)的手機上管窺一下具體的功能。持續(xù)更新,未完待續(xù)。
我住在鄉(xiāng)下,除卻鳥語花香
之外,就是有許多需要手工完成的農(nóng)活。
我是挺喜歡田園生活的,但是有些時候如果要出去玩,家里的菜地、院子就會沒有人管,很不自由,如果請鄰居來澆水,一次2、30塊一年也是一大筆錢。加上我家樹種的比較密集
,完成一次充分的澆水工作可能需要兩個小時以上。
代號家園防線,名字源自于國際知名光頭杰森斯坦森的電影《HomeFront》,為啥取這個名字呢?因為工作對象是家園,英文單詞也是以我的簡拼HF開頭
?
在暑假的這段時間里我本來想寫一個關(guān)于大學(xué)的回憶錄的,但是后來由于時間匆忙寫了一些些就沒寫了,以后還是要補上。如果你想粗略了解大學(xué)的時候干了什么事情的話,可以看看這個微平《浙警院封面人物:斐樂仔你的生活由你定義》
為啥要說到這個微平呢,主要是以為在這個微平里面的第一張合照,那是董教授給我們上的《物聯(lián)網(wǎng)概論》這門課,雖然是系部為了給我們補學(xué)分而開設(shè)的課程,但是我毫無偏袒的認(rèn)為:這絕對是ZJPC最有水平、最有價值、最有趣的課程之一
。(圖為ESP32和兩塊古早設(shè)備Arduino uno)
上課不久老師發(fā)給我們?nèi)耸忠粔KESP8266,讓我們用Blink示例代碼讓他閃爍,過程很簡單,插線、導(dǎo)入文件、燒錄,簡簡單單幾步,ESP8266上面自帶的LED就閃爍了起來。別看小小的一個LED燈,在那個時候我差不多是這樣的:
一瞬間,很多東西都jb說的通了,比如說電風(fēng)扇怎么做,自動開關(guān)的插線板怎么做,空調(diào)怎么做,董大師,我悟了
。我要給家里開發(fā)一個自動化的物聯(lián)網(wǎng)灌溉系統(tǒng)。
后來的課程具體我就不做贅述了,這門課程是真的好,而且也很感謝我的隊友小民哥,小民哥吃苦耐勞,在結(jié)課作業(yè)里負(fù)責(zé)了論文和PPT的制作,我只要負(fù)責(zé)寫代碼和上臺講解就好了,選擇一個好隊友真的很重要。
我們的功能主要有以下幾個:
洗車、手動自動模式切換、土壤濕度檢測(保證閉環(huán))、設(shè)備工作狀態(tài)提示、重啟設(shè)備等功能。
大致思路有兩個:一是自動控制,二是物聯(lián)網(wǎng),人可以輕松查看以及控制
我們可以從我后續(xù)的手機APP
上管窺一下具體的功能。(手機快沒電了giao,圖片為未連接系統(tǒng)時的app。)
1.我把院子切分成為了五個部分(即五個水路),分別進(jìn)行澆水灌溉
五個部分分別的樹木負(fù)責(zé)數(shù)為50、30+T、40、40、T
(T指的是灌木叢和低矮植被、蔬菜、果樹等,需要另外計算水力消耗)
2.水路搭建
水路大概就像是這樣:首先過濾器先把水泵抽上來的池塘雜質(zhì)給過濾
掉(保證我的滴灌不會被堵住)
然后按照劃分區(qū)域一片一片地進(jìn)行澆水:通過控制器配合電磁閥實現(xiàn),這樣設(shè)計的原因是為了降低水泵在流量動力方面的要求
,事實上后來發(fā)現(xiàn)還是得把水泵給換了。
澆水的部分分為主通水管和毛細(xì)管,主管送水,毛細(xì)管負(fù)責(zé)澆水的最后一公里,給噴水的小紅帽供水。(這里是后來運行時拍的,把頭向右彎可以看到原圖)
管道鋪設(shè)這個活真的是有點累,詳情可以咨詢我衣服上的鹽
3.我采用的水泵是一臺古早的自吸式水泵,已經(jīng)服役七八年了,做這個系統(tǒng)真的和考古一樣。
說到這臺水泵,別看他破破爛爛,經(jīng)過我的計算,現(xiàn)在它的流量仍然有1200L/h,七八年過去了只下降了300L(額定1500),十分堅挺,拆下來裝在小船上說不定以也可以繼續(xù)驅(qū)動,也許這就是傳說中的亦可賽艇
吧。
但是雖然是1200,我還是忽略了一個問題----我選用的16mm滴灌管最大流量是1000,否則會吃不消。我向來都是搏一搏類型的,認(rèn)為1200也無所謂。
結(jié)果是這樣的:我設(shè)計的這個系統(tǒng)不是傳統(tǒng)意義上的水路傳輸,而是在傳輸?shù)倪^程中不斷地把水播撒到外面:類似一個y=1/x(第一象限),水壓在不斷地減小。。。
In fact,我是在水路的第一次運行后才發(fā)現(xiàn)這個問題,越到后面小紅帽的出水越小。。。在和家里人匯報了這個事情之后,我決定買一個新的水泵,我就喜歡大大大,流量也得大,水也多。
終于有機會淘汰這個伊拉克老兵了。
4.控制器選擇了外星人技術(shù)ESP32,不錯不錯,味道好極了
1.物聯(lián)網(wǎng)平臺我選擇了Tlink,采用TCP協(xié)議進(jìn)行交互,我沒有用移動的物聯(lián)網(wǎng)平臺是因為他們的網(wǎng)頁卡的一,沒有用MQTT協(xié)議是因為前期我看不懂,后期看懂了發(fā)現(xiàn)沒必要(我要控制的只有一個設(shè)備,只需“物聯(lián)網(wǎng)”,而無需“萬物互聯(lián)”)
2.我用的是Arduino語言,眾所周知,Arduino是這樣的
void setup(){ Serial.begin(9600); ......}void loop() { .....}
但是想要實現(xiàn)定時任務(wù),就需要做到讓定時凌駕于loop()之上,做到循環(huán)的時候不改變時間設(shè)置的既有效果,更重要的是,要保證我與物聯(lián)網(wǎng)平臺的交互不斷,我的設(shè)備要有實時的信息發(fā)送出去。
所以嘿嘿嘿,我創(chuàng)新了一波,把整個創(chuàng)新切分為了標(biāo)志層、執(zhí)行層和交互層
,所有的工作都接線清晰
,而不會導(dǎo)致loop()執(zhí)行的時候的混亂不堪。在loop的末尾是很清晰的執(zhí)行+傳遞信號,KISS原則,簡單而有效
。
至于最下方的標(biāo)注不用delay(),用mills()的原因大家都懂的,防阻塞。
3.一個跨越loop()計時的方法(主要就是涉及flag們的設(shè)計和臨界狀態(tài)的判斷)
if (hand_watering_flag == 1 || (auto_watering_flag == 1 && time2go())) //fixme:time2go可能需要再大一點;1.算好delay和time2go;2.做一個每天幾次,或者上下午幾次的東西 { if (pump_working_flag == 1) { if (work_times > 1) { for (i = 0; i < length(working_solenoid_valve); i++) { if ((4 - work_times) == i) //次數(shù)為5,電磁閥2、3工作;為4,1,3工作;以此類推. ps:index需要減一 { working_solenoid_valve[i] = 0; } else { working_solenoid_valve[i] = 1; } } // Serial.println(work_times); // Serial.println("else分界線"); } else if (work_times == 1) { // Serial.println("1"); for (i = 0; i < length(working_solenoid_valve); i++) { // Serial.println("1"); working_solenoid_valve[i] = 0; } solenoid_valve4 = 1; } // mid_time = time_flag - mid_time; //fixme Serial.println(mid_time); if (time_flag > delaytime) //1秒 = 1000 毫秒 { work_times = work_times - 1; } if (work_times == -1) { for (i = 0; i < length(working_solenoid_valve); i++) { working_solenoid_valve[i] = 0; } solenoid_valve4 = 0; pump_working_flag = 0; hand_watering_flag = 0; // Serial.println("1"); time_flag = 0; // Serial.println("1"); mid_time = 0; // Serial.println("1"); } } }
4.最后一個問題就是寫代碼的時候要仔細(xì),總會出現(xiàn)一些奇奇怪怪的問題,有一次居然還提示我寄存器爆炸了。。無語子,看圖找錯誤
5.由于我的代碼實在是有點多(500行不到,說多不多),這里寫不大下,我會在github上面發(fā)布,大家可以去看看。 Click here for Filagiao’s Github
Enjoy your coding!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/121965.html
摘要:物聯(lián)網(wǎng)技術(shù)四層面對于標(biāo)準(zhǔn)的物聯(lián)網(wǎng)系統(tǒng),可以分為四層感知識別層網(wǎng)絡(luò)構(gòu)建層管理服務(wù)層和綜合應(yīng)用層。網(wǎng)絡(luò)構(gòu)建層數(shù)據(jù)傳輸網(wǎng)絡(luò)是物聯(lián)網(wǎng)最重要的基礎(chǔ)設(shè)施之一。 1.1什么是物聯(lián)網(wǎng) ????????從字面意思來說十分好理解——萬物相連的互聯(lián)網(wǎng),其實就是將日常生活中的一些設(shè)備以數(shù)字化方式連接世界的方式。這些...
摘要:不只云端電信業(yè)者紛紛押寶邊緣計算的市場,連全球較大開源社群基金會今年月也決定成立新項目來大力推動邊緣計算,要打造一套通用物聯(lián)網(wǎng)邊緣計算框架,超過家軟硬件廠商和新創(chuàng)加入,包括等。 為何有人開始主張邊緣計算將會吃掉云計算,也有人相信純云計算時代正邁向終結(jié),而且不只云端龍頭、商用軟件巨頭都搶著要押寶,連全球較大開源社群也大力支持,原因是什么?云端服務(wù)龍頭Amazon每年冬天在美國拉斯韋加斯舉行的r...
摘要:不只云端電信業(yè)者紛紛押寶邊緣計算的市場,連全球較大開源社群基金會今年月也決定成立新項目來大力推動邊緣計算,要打造一套通用物聯(lián)網(wǎng)邊緣計算框架,超過家軟硬件廠商和新創(chuàng)加入,包括等。為何有人開始主張邊緣計算將會吃掉云計算,也有人相信純云計算時代正邁向終結(jié),而且不只云端龍頭、商用軟件巨頭都搶著要押寶,連全球較大開源社群也大力支持,原因是什么? 云端服務(wù)龍頭Amazon每年冬天在美國拉斯韋加斯舉...
摘要:目前森普管材年均生產(chǎn)能力高達(dá)萬噸以上,位居西南區(qū)域前列,已連續(xù)兩年獲得政府采購塑料管道十大品牌。數(shù)字孿生系統(tǒng)可針對設(shè)備狀態(tài)進(jìn)行監(jiān)控年是森普管材數(shù)字化改造的進(jìn)階之年。而這也成為了森普管材引入數(shù)字孿生系統(tǒng)的契機。如何用數(shù)字技術(shù)1:1還原生產(chǎn)環(huán)節(jié),讓設(shè)備運行、監(jiān)控告警脫離人工經(jīng)驗,做到數(shù)據(jù)智能分析、工廠智慧生產(chǎn)?數(shù)字孿生可以給到你答案。數(shù)字孿生,也被稱為數(shù)字映射、數(shù)字鏡像。是指充分利用物理模型、傳...
摘要:月日,浙江衛(wèi)視智造將來展示了一套面向阿爾茲海默癥患者的看護(hù)系統(tǒng)。系統(tǒng)基于阿里云智能人居平臺搭建,可接入多種物聯(lián)網(wǎng)設(shè)備,通過非侵入無感知的技術(shù),對老人的起居吃藥出入跌倒生命體征出行定位等進(jìn)行全方位看護(hù)。她僅憑一己之力同阿爾茨海默癥展開對抗。阿爾茲海默癥,俗稱老年癡呆癥,在中國大概有 1000 萬患者,在美國每68秒就有一人確診。而過去20年的新藥研發(fā)幾乎全軍覆沒。面對平均生存周期7~10年這一...
閱讀 1816·2021-11-18 13:21
閱讀 1953·2021-10-18 13:30
閱讀 1539·2021-10-12 10:13
閱讀 906·2021-10-09 09:43
閱讀 5413·2021-09-22 15:13
閱讀 3583·2021-08-11 10:22
閱讀 935·2019-08-30 13:46
閱讀 3519·2019-08-30 13:21