有一位農夫日日夜夜辛勤的在田間耕種,但是人工種植的方式費時又費力,
農夫也想要子早點下班去打Game, 追劇,所以突發奇想使用 Raspberry Pi3
加上土壤濕度檢測器和澆水馬達,製作出一套全自動的植物澆水系統。
透過樹梅派主機上的Python程式設定每十分鐘偵測和讀取當前植物所在土壤的
乾濕度,並判斷在乾燥時澆水。同時將一整天的澆水次數和乾濕度數據紀錄
並上傳到用Nextcloud建立的雲端資料庫,農夫便能在家就能隨時用手機查看
植物的生長狀況 => 於是便能偷懶-躺著賺錢
- Raspberry Pi3 x1(本課助教提供)
- 土壤濕度檢測器 x1(自行購買)
- 澆水馬達 x1(自行購買)
- 繼電器 x1(自行購買)
- 受試植物 x1(
自願自備) - 寶特瓶 x1(自備)
- 電焊槍 x1(管237 Moli實驗室借用)
以下是NextCloud的安裝步驟:
1. 更新
$ sudo apt-get update && sudo apt-get upgrade
2. 安裝Apache2 和 PHP
$ sudo apt-get install apache2 -y
$ sudo apt-get install php
3. 安裝 NextCloud
$ cd /**var**/www/html
$ curl https://download.nextcloud.com/server/releases/nextcloud-18.0.3.tar.bz2 | sudo tar -jxv
4. 建立同步資料夾
$ sudo mkdir -p /var/www/html/nextcloud/data
$ sudo chown -R www-data:www-data /var/www/html/nextcloud/
$ sudo chmod 750 /var/www/html/nextcloud/data
5. 用瀏覽器打開Nextcloud管理介面,設定帳號密碼
- 將土壤濕度檢測器接上Pi的3V3 power, GROUND, GPIO 7(CE1) 腳位
- 將繼電器接上Pi的5V power, GROUND, GPIO 17 腳位
- 將澆水馬達的正極接上繼電器/負極接上Pi的GROUND 腳位
- 由於馬達的接口是裸線設計,所以我們使用電焊槍將裸線與杜邦線針腳焊接固定
- 首先在Pi中創建nc_getsoil.py程式檔,並import RPi.GPIO 和 Nextcloud => 完成初始化設定
- 在def main()中,透過感測器回傳的高低電壓判斷土壤是濕潤或乾燥,並同時決定是否開啟馬達
- 由於過量的澆水也會導致植物掛掉,所以我們設定每10分鐘偵測土壤濕度,每次澆水5秒鐘
- 當資料筆數達到144筆(也就是剛好過完一天時)就將資料上傳到Nextcloud的共享資料夾同步
- 接著定義login_to_nextcloud()函式,判斷是否成功登入Nextcloud
- 最後在upload_file()函式將資料nc以.txt檔上傳至指定路徑file_path,並刪掉樹梅派上記錄檔(避免佔用空間)
- 查詢Host-Server IP: ip addr show
- 更改目錄的所有者: sudo chown
- 更改目錄的權限:sudo chmod
- Raspberry Pi3 的針腳, 構造知識
- 使用vim在Pi中編輯Python程式碼
- 將土壤濕度感測器插入植物種植的土壤中
- 準備一個寶特瓶大小的容器裝水
- 將澆水馬達放入裝水的容器內並接上軟管,另一端則通向植物
- 依照上方指示在樹梅派上安裝Nextcloud
- 透過外接式螢幕或個人電腦用PUTTY打開樹梅派命令列
- 成品應如下圖範例所示
- 確認安裝過程無誤
- 在樹梅派命令列執行nc_getsoil.py
- 接著澆水系統便會自動運行
可以開始放心偷懶
- 組長: 梁灝 [寫程式]+[上台報告]
- 組員1: 陳彥熏 [簡報製作]+[上台報告]
- 組員2: 黃士瀚 [硬體線路連接]
- 組員3: 王瑞呈 [主題構想]+[材料購買]
- 組員4: 陳厚駪 [寫程式]