python樹莓派 是什么_用樹莓派和Python給你的植物澆水

652beb19cb1ee3cc693892cc74f3be87.png

我想指出,我絕不是電子學專家。如果你讓我制作一個電路圖或者解釋某件電子產品工作原理的細節,我會一無所知。在生活中,我對電力的工作原理有了基本的了解,我只是胡亂擺弄了一下電子元件就完成了這個工程。話雖如此,當使用電子設備,尤其是使用外部電源時,應始終保持謹慎。在嘗試使用電子產品和電力設備時,務必小心謹慎!d680d3d6b6d2d67f1fe5d3c35b93b895.png

我不擅長照顧植物,主要是因為我經常忘了給它們澆水。于是我開始想,“我敢肯定有人已經找到了一種方法來自動化這個過程。”事實證明,很多人都有。也就是用Arduino或樹莓派自動給植物澆水。在這篇文章中,我將講述我如何使用樹莓派和Python來自動澆灌我的植物。
以下是我在這個工程中使用的組件:

  • 樹莓派3入門工具包

  • 12伏水泵

  • 12伏電源

  • 5伏繼電器

  • 各種各樣的跳線

  • 鱷魚跳線

  • 硅膠管


一旦我擁有了所有我需要的組件,就到了做一些研究的時候了。以下是我用來連接電子設備時參考的資源,并對它們的工作原理有了基本的了解:

  • 電是如何工作的

  • 如何使用繼電器

  • 從微型電腦樹莓派向繼電器供電

  • 將12伏電源連接到繼電器上


這是樹莓派上GPIO別針的圖片:becbb9d697c74a8ad98497e02d032768.png
首先,我把繼電器和樹莓派連接起來,就像這樣:

8b6096de75eb2e8f0f4de5f589b7583a.png

紅線(母對母)從繼電器板上的JD_VCC引腳引到樹莓派上的5V引腳(引腳2)。橙色導線(母對母)從繼電器板上的VCC引腳引到樹莓Pi上的3.3V引腳(引腳1)。

97c89d41549ec59ba17f5a211c0ca4d0.png

通過連接這些電線,我們給了繼電器板能量。為了實際控制單個繼電器,我們需要將繼電器板上的另外兩個插腳連接到Raspberry Pi、GND(接地)插腳和IN1插腳上。

e5cc05ff586abbf435a8028c8b0d5167.png

黑色的電線(母對母)是接地線,它從繼電器板上的GND引腳連接到Raspberry Pi上的任何地線(我用的是34號引腳)。白線(母對母)從繼電器板上的IN1引腳引到樹莓派上的12引腳。白線是允許我們打開和關閉繼電器與代碼。

0fe313f3d663d08dc796e56065f7a49c.png

你可以連接繼電器和樹莓派,如果你使用我提供的代碼,一定要記得換密碼。
將繼電器板和樹莓派連接好后,接著將12伏適配器連接到單個繼電器上。不要把12V的電源適配器連接到墻上的電源插座上,直到你把所有的東西都連接好之后,你才應該這樣做。

6cd5b2ea8d42fe192e61241e4d88017a.png

12伏電源有一個方便的適配器,你可以用它來連接電線。我把紅色電線(公對公)連接到適配器的正號上,把棕色電線(公對公)連接到適配器的負號上。然后我把一個鱷魚夾(母對公)加到棕色的金屬絲上。

0ad051a09cdb7c270bd5574b4bac3bfe.png

繼電器板有四個獨立的繼電器,每個繼電器有三個輸出,你可以在其中擰緊電線。中間的輸出是你想要連接外部電源的正引線的地方,而左邊的輸出是你想要連接你想要供電的設備的正引線的地方。這對于板上的所有繼電器都是一樣的。

5d6f5ae82cdd46eaa5071fa8214ad78a.png

從12伏適配器,把紅色電線(正/電源)連接到中間的繼電器輸出。然后,在繼電器最左邊的輸出端接上一根新的橙色電線(公對公),并在橙色電線的末端接上一個鱷魚夾(母對公)。

af0cbf6fb4b8dd3be0f37e530b630a5b.png1c931cf7e48b45edf9e9c7efbb5ceff6.png

00d3766b04dfe973783286856d1748bc.png

現在我們只需要把鱷魚夾連接到水泵上。無論你以何種順序將鱷魚夾連接到泵上,你所做的只是設置水流。


我安裝水泵的方式是,我想讓水從左向右流動,所以我把黑色的鱷魚夾和旁邊有一個紅點的別針連接起來,把另一個鱷魚夾和水泵上的別針連接起來。如果我把鱷魚夾的連接方式反過來,水就會從右向左流動。

b84de3fca390252655efd673f82c1138.pngd680d3d6b6d2d67f1fe5d3c35b93b895.png

水從左管流入,進入泵,從右管流出,然后進入植物
最后,我們來看看我真正擅長的部分,代碼。為了與樹莓派上的GPIO交互,我使用了gpiozero庫。它真的很容易使用,并抽象出了許多低層操作,你通常需要學習,以開始與GPIO引腳交互。你可以在這里找到相關文檔的鏈接。
在我們真正開始編寫代碼之前,您必須將樹莓派連接到監視器、鼠標和鍵盤,或者您可以通過SSH連接到樹莓派。
一旦你登錄到你的樹莓派,導航到你的桌面,并創建一個名為“run”的文件夾。在“run”里面,你會有另一個叫做“classes”的文件夾。現在在“classes”文件夾中,創建一個名為"Hardware.py"的文件,它應該是這樣的:
在這個文件中,我只定義了一個名為Relay的新類,它繼承自OutputDevice類。
接下來,在“classes”文件夾中,創建一個名為“TimeKeeper.py”的新文件。應該像下面這樣:

bd7cb1e6026bd761bb90347d50e0584d.png

本質上,這個類的目的是記錄當前時間和我們的植物最后一次澆水的時間。
“Harware.py”和“TimeKeeper.py”都在“classes”文件夾中。然后我創建了一個名為“water_plant.py”的新文件。我把它放在“classes”文件夾之外。
?"water_plant.py"文件看起來是這樣的:

dccae0323687315991a068ab5715ea31.png

?你可以隨意更改“WATERING_TIME”和“SECONDS_TO_WATER”變量的值。第一個變量決定一天中的什么時候植物應該收到水,而第二個變量決定植物收到水的時長。
?我還設置了電子郵件提醒,這樣當你的植物澆水時,你就會收到一封電子郵件,每周五還會收到一封電子郵件,提醒你查看水位。默認情況下,我已經禁用了這些提醒,所以程序在啟動時不會崩潰,但如果你想啟用它們,你必須做三件事:
?1)必須更改第26行和第27行來包含您的Gmail和密碼
?2)必須取消第63、65和68行注釋
?3)必須到這里,用你想要接收提醒的Gmail登錄,并切換到“on”,否則當你嘗試用你的Gmail帳戶發送電子郵件時,你會收到一個錯誤提示。同樣重要的是,電子郵件提醒只適用于Gmail帳戶。
?現在所有的文件都設置好了,你應該有如下目錄樹結構:6e81a3f915dddb4d6a19e3e7b9802a02.png

你可以把這個“run”文件夾放在樹莓派的任何地方,但我只是決定把它放在桌面上。
最后,當我們想要運行“water_plant”腳本時,我想讓腳本在我們打開樹莓派時運行,而不是在每次我們想要運行樹莓派的時候都將它連接到顯示器上,這樣我們就可以關閉樹莓派并將它移動到任何地方。
一旦我們打開它,我們就不需要SSH到樹莓派或將它連接到監視器來運行腳本。為此,我們需要使用“crontab”命令。
如果你打開樹莓派上的一個終端窗口,要么把它連接到顯示器上,要么把它轉到顯示器上,然后輸入以下命令:

sudo crontab -e
你應該看到類似這樣的東西:6bd52245a7a1497702ee7b7ce76d2b1d.png

在這個文件中,你要添加以下代碼片段:

@reboot python3 /home/pi/Desktop/run/water_plant.py


然后保存它,按?CTRL+X?→?Y?→?Enter
本質上,我們只是告訴樹莓派“嘿,無論何時你重啟,在桌面上運行‘run’文件夾內的python腳本‘water_plant.py’”。
如果你沒有把“run”文件夾放在你的桌面上,只需更新你放置“water_plant.py”腳本的路徑。
你可以在這里查看完整的代碼,或者你可以用下面的命令克隆存儲庫:
git clone https://github.com/AlanConstantino/rpi-plant-project.git
就是這樣!現在你應該有一個工作的樹莓派,每24小時澆灌你的植物!它甚至會在你的植物澆水的時候給你發郵件提醒,以及每周五提醒你檢查水位。

英文原文:https://blog.alanconstantino.com/articles/water-your-plant-using-a-raspberry-pi-and-python.html
譯者: Yang

fe8bbef9b8faef0b70dad9d2da79467b.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539417.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539417.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539417.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

htmlspecialchars() 函數過濾XSS的問題

htmlspecialchars()函數的功能如下: htmlspecialchars() 函數把預定義的字符轉換為 HTML 實體。 預定義的字符是: & (和號)成為 &" (雙引號)成為 " (單引號)成為 …

c語言中 字母對應的數值,C語言編程:求下式中每個字母所代表的數字

編寫程序求解下式中各字母所代表的數字,不同的字母代表不同的數字。PEAR- ARA PEA*問題分析與算法設計類似的問題從計算機算法的角度來說是比較簡單的,可以采用最常見的窮舉方法解決。程序中采用循環窮舉每個字母所可能代表的數字,然后將字母…

用mac的python寫網絡爬蟲_在mac下使用python抓取數據

2015已經過去,這是2016的第一篇博文! 祝大家新年快樂! 但是我還有好多期末考試! 還沒開始復習,唉,一把辛酸淚! 最近看了一遍彥祖的文章叫做 所以自己也想小試牛刀.于是便開始動手寫,但初次接觸,…

運輸配送信息Delivery_Information

為什么80%的碼農都做不了架構師?>>> 運輸配送信息Delivery_Information 金銀倉會選用以下運輸公司,為客戶配送磁磚傢俬潔具: 佛山冠昌達中港運輸(散貨或包車,近佛山石灣的磁磚倉庫,近樂從傢俬城…

linux的 dev vdal,RAZVOJ DELA NA DALJAVO V SLOVENIJI

摘要:V diplomskem delu bomo raziskovali razvoj dela na daljavo v Sloveniji. Na? poglavitni cilj je prikazati ?irjenje teledela v Sloveniji. Drugod po Evropi se ?e vrsto let uveljavlja tudi ta vrsta opravljanja dela, pri nas pa manj. O tem lah…

Spring+SpringMVC+Mybatis 多數據源整合

原文地址:http://blog.csdn.net/q908555281/article/details/50316137 ----------------------------------- 此篇文章是基于Spring3.0和mybatis3.2的總體大概流程 :1. 拷貝所需jar 2.寫一個數據庫切換的工具類:DataSourceContextHolder&am…

查看mysql sql執行器優化后的sql

EXPLAIN EXTENDED select s.* from student s where s.sid in ( select sid from sc where sc.cid 0 and sc.score 100); show WARNINGS;

git ssh拉取代碼_win10下git初始安裝及配置工作

git安裝從https://git-scm.com/https://git-scm.com/download/win 中下載安裝包,點擊exe文件運行,選擇安裝路徑即可安裝。git配置初次運行git前的配置,新建文件夾1、 新建一個文件夾,用來存放代碼的文件夾---2、 打開文件夾&#…

用ABAP 生成二維碼 QR Code

除了使用我的這篇blogStep by step to create QRCode in ABAP Webdynpro提到的使用ABAP webdynpro生成二維碼之外,也可以通過使用二維碼在線生成網站提供的service來生成二維碼。 二維碼在線生成網站: www.makepic.com/qrcode.php 在網頁上輸入要生成的二…

c語言不用第三變量,C語言中幾種不用第三變量交換兩值的方法

int main(){int a3,b4;int *p(int *)malloc(sizeof(int));*p3;int *q(int *)malloc(sizeof(int));*q4;int a24,b27;printf("***位運算****/n");printf("轉換前:%d %d/n",a,b);a^b^a^b;printf("轉換后:%d %d/n",a,b);print…

聯想m7400pro清零方法_聯想打印機怎么清零 聯想打印機清零方法【教程】

今天小編為讀者挑選出了聯想 打印機 部分機型的清零方式,希望閱讀完這篇文章能幫助到各位。LJ3010A、LJ3116A、LJ3220A清零方式先點擊控制面板上的“聯機”按鈕,讓打印機處于脫機狀態,再點擊“執行”按鈕進行打印。先點擊控制面板上的“聯機”…

mapperLocations屬性通配符的使用

mapperLocations屬性通配符的使用 示例&#xff1a; [html] view plaincopy <bean id"sqlSessionFactory" class"org.mybatis.spring.SqlSessionFactoryBean"> <property name"dataSource" ref"dataSource" /> …

c語言中數組名可以與其他變量名相同,C語言初學者入門講座?第九講?數組(1)...

C語言初學者入門講座 第九講 數組(1)(2007-01-17 11:39:19)數組在程序設計中&#xff0c;為了處理方便&#xff0c;把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數據元素的集合稱為數組。在C語言中&#xff0c;數組屬于構造數據類型。一個數組可以分解為…

pb通過對象名稱調用對象_C++ 可調用對象(二)

點擊上方“藍字”&#xff0c;發現更多精彩。本文在前一篇關于函數對象、bind 函數的基礎上&#xff0c;對 C 中 lambda不表達式的使用進行總結。lambda01PART定義一個 lambda 表達式表示一個可調用的代碼單元&#xff0c;可以理解為是一個未命名的內斂函數。類似任何函數&…

easyui datagrid 表格組件列屬性formatter和styler使用方法

明確單元格DOM結構 要想弄清楚formatter和styler屬性是怎么工作的&#xff0c;首先要弄清楚datagrid組件內容單元格的DOM接口&#xff0c;注意&#xff0c;這里指的是內容單元格&#xff0c;不包括標題單元格&#xff0c;標題單元格的結構有所區別。我們所有內容單元格的默認DO…

c+++11并發編程語言,C++11并發編程:多線程std:thread

原標題&#xff1a;C11并發編程&#xff1a;多線程std:thread一&#xff1a;概述C11引入了thread類&#xff0c;大大降低了多線程使用的復雜度&#xff0c;原先使用多線程只能用系統的API&#xff0c;無法解決跨平臺問題&#xff0c;一套代碼平臺移植&#xff0c;對應多線程代碼…

交換機虛擬化和堆疊的區別_核心交換機和普通交換機有何區別?

提起核心交換機與普通交換機有什么區別&#xff1f;相信很多朋友都有點迷惑&#xff0c;今天我們一起來了解下。核心交換機并不是交換機的一種類型&#xff0c;而是放在核心層(網絡主干部分)的交換機叫核心交換機。一般大型企業網絡和網吧需要購買核心交換機來實現強大的網絡擴…

tmpfiles.d導致的unix:///tmp/supervisor.sock no such file坑(待續)

為什么80%的碼農都做不了架構師&#xff1f;>>> 系統環境: CentOS Linux release 7.1.1503 (Core) supervisor 3.3.1今天初七&#xff0c;剛放完假需要去supervisor restart下程序。發現報了這個錯誤。但是看supervisord的進程還在運行&#xff0c;項目代碼也還在…

springMVC兩種方式實現多文件上傳及效率比較

springMVC實現多文件上傳的方式有兩種&#xff0c;一種是我們經常使用的以字節流的方式進行文件上傳&#xff0c;另外一種是使用springMVC包裝好的解析器進行上傳。這兩種方式對于實現多文件上傳效率上卻有著很大的差距&#xff0c;下面我們通過實例來看一下這兩種方式的實現方…

c語言 個位,如何才能給C語言增加幾個位操作函數

在匯編語言中有直接對位進行操作的指令&#xff0c;如置位、復位、位取反、測試某一位等&#xff0c;這對于硬件操作十分方便&#xff0c;在C語言中盡管也提供了一些位操作手段&#xff0c;如按位與、按位或、按位取反等&#xff0c;但它們是對一個字節進行操作&#xff0c;如要…