版權聲明:本文由蔣鵬原創文章,轉載請註明出處:
文章原文連接:https://www.qcloud.com/community/article/118css
來源:騰雲閣 https://www.qcloud.com/community前端
不知道其餘人有沒有這樣的顧慮,就是每次須要外出一些時日的時候老是擔憂家裏的花無人澆水會幹死。因而就想着是否能本身動手作一個能夠用手機操控實現澆花的「半自動澆花器」呢,之因此稱之爲「半自動」是由於在必定程度上該設備使用了自動化控制的元件與技術,但操做依然是根據人的意志用手機來完成的所以爲「半自動」。當實現自動檢測土壤溼度來實現澆花併發送澆花報告到主人手機時可稱之爲「自動化」。node
話很少說,來看看折騰這樣一個東西須要準備些什麼硬件和軟件,有須要的人必定要耐心看完哦,內容有點多。python
鑑於網絡有點繞,開始前先放一下個人網絡拓撲圖react
1.樹莓派:因爲前段時間用樹莓派折騰過家裏的NAS,所以樹莓派首當其衝做爲智控中心用來相應手機端發出的指令
linux
2.arduino:此設備與各類智能元器件通訊很是方便,所以用他做爲終端來和小水泵鏈接
nginx
3.5v繼電器:此設備與下面提到的小型水泵串聯,來實現水泵的運行與中止
redis
4.5v小水泵:用來抽水的,如圖,我爲了方便連線,把這個usb頭剪掉了用4節7號電池供電。這裏要對水泵的電路進行簡單改造,找到裏面的紅線(正極),剪短分別連到繼電器的常開和公共端。
windows
5.usb攝像頭:用來定時進行拍照,傳回運行的監控圖片。
微信
6.其餘設備:a.塑料軟管,但因爲塑料軟管的方向性很差控制致使出水效果很差,後續考慮用一根pvc管來替代。b.萬用表,c.電烙鐵,d.杜邦線(最好有公對母的,可用母對母和排針自制)若干。
硬件準備的差很少了,如今咱們開始連線。
樹莓派是一個完整的linux系統(debian系統),所以arduino能夠以usb設備的形式掛載,而且用串口進行通訊。固然通訊方式還能夠有其餘,讀者有想試的能夠本身搜索方案。
繼電器的vcc,gnd分別鏈接arduino電源的5v,GND端,繼電器的in口鏈接arduino的13口。
1.minicom:這個能夠設置樹莓派與arduino進行串口通訊的端口。自行搜索使用方法,設置成功後運行lsusb應該能看到arduino的設備
2.python:這個其實樹莓派中已經內置了,而且對接了跟硬件操做的函數庫,很是方便實現跟其餘設備的串口通訊或者操做樹莓派自身的管腳
3.nginx:在樹莓派上進行http請求轉發
4.nodejs:用來處理http請求,來進行調用python程序進行串口通訊進而控制arduino。
5.路由器:家裏的路由器上設置端口轉發用來將公網的http請求轉發到樹莓派的nginx上
6.騰訊雲vm:因爲是在微信上操做,所以操做必定要在公網進行。
7.運行在騰訊雲上的redis:因爲家裏的路由器通常採用的動態ip,所以從家裏路由器定時發送請求到騰訊雲,程序獲取此ip後記錄到redis中,後續進行操做的時候先從redis獲取此ip,而後請求都綁定到該ip上。
8.騰訊雲對象存儲服務(cos):此步驟可生,由於cos能夠看成CDN使用,咱但是一名前端工程師,固然須要把h5頁面、js、css圖片等資源作cdn分佈
9.重要的arduino ide:這個用來燒製arduino程序,能夠在windows下編寫好後燒製到arduino便可。
1.樹莓派上的python進行串口通訊。readline用來獲取arduino的輸出,write用來向arduino發送指令。
2.arduino代碼:用來向繼電器發送指令(其實就是高電平與低電平)控制繼電器的打開與吸合。
3.作一個簡單的手機端界面用進行操控,這裏的實現方式太多了,此處不列舉了。我用react作界面,nodejs作後臺,頁面的url生成二維碼用微信掃碼後運行(記得放入微信的收藏夾)
4.鑑於網絡交互仍是挺繞的,這裏補充一張網絡拓撲圖吧。之後有什麼須要能夠直接在這個框架上進行。
至此,澆花設備打造完成,放心外出吧,澆花的事情就交給他吧。澆花的同時會定時回傳監控圖片,用來協助你判斷是否該中止澆花。嗯,到了2.0自動化的時候也許就不用這麼麻煩了。