---
# System prepended metadata

title: 物聯網節能溫室

---

物聯網節能溫室
==
## 1. 作品概述
#### 物聯網節能溫室有灌溉系統和太陽能供電系統。灌溉系統可以偵測土壤濕度，當土壤濕度過低時，會自動注水。系統會用中央氣象局的API抓未來36小時的降雨預測資訊，系統的注水量會隨著降雨機率調節。使用者也可以自行注水和決定注水量。太陽能系統可以控制太陽能板底座，讓太陽能板面向陽光最充足的方向，最大化太陽能板的功率，並統計太陽能板的充電功率。
---
## 2. 作品圖片
![](https://drive.google.com/uc?export=view&id=1IlKzHXs6tudaLehrPxuRyouixhPMpHTr)

![](https://drive.google.com/uc?export=view&id=1w5OJYZna6Gk72sWTpNw-ooXugzG6y6sL)

![](https://drive.google.com/uc?export=view&id=1IrtDg2goVo7LMPciapa0XFhfPwpZoiXq)
---
## 3. 介紹影片
##### https://youtu.be/9To3TKBEUrI?si=9TgNsHI6DrZF-A6A
---
## 4. 使用材料
1. Raspberry Pi
2. Arduino Uno
3. ADC 類比數位訊號轉換器
4. 鋰電池充電模組
5. 數位功率計
6. 光敏電阻 4個
7. 5V沉水馬達
8. 土壤溼度感測器
9. 18650電池 6顆
10. 18650 2節串聯電池座 3個
11. 大收納盒(當作溫室)
12. 花盆
13. 小收納盒(蓄水池)
14. 水管(內徑8mm)
15. 100mm M5螺絲 & M5螺帽
16. 1W 5.5V 太陽能電池板
17. 伺服馬達 2顆
18. 220歐姆電阻 4個
---
## 5. 製作步驟
1. 太陽能供電系統
    1. 製作太陽能追光板
        我是參考 https://www.instructables.com/Dual-Axis-Light-Tracker-for-Solar-Panels/ 這個網站來製作。作者有提供3D列印的圖檔，可根據自己的需求修改圖檔。我因為之前比賽還有用剩的M5螺絲，所以把原本圖檔的M6螺絲槽改成M5螺絲槽。會使用Arduino Uno主要是因為Arduino Uno可以直接處理類比訊號，而且光敏電阻的數值也不需要傳回Raspberry Pi，所以用Arduino Uno比較方便也能省Raspberry Pi的腳位。
        
    2. 供電系統前置作業
        1. 檢查I2C interface有沒有啟用(左上角logo -> Preference -> Raspberry Pi Configuration -> Interfaces)
        ![](https://drive.google.com/uc?export=view&id=19KVeBserCpEZzZP1mhcsXSSm3xaF5pjq)
        
        2. 安裝python library
                                
                sudo apt-get update
                sudo apt-get install build-essential python-dev python-smbus git
        
        3. 安裝鋰電池充電板驅動
                
                git clone https://github.com/DFRobot/DFRobot_INA219.git
        
        4. 電路配置和程式碼請參考6.電路配置和7.程式碼
        
  
:::warning
如果測試的時候發現光敏電阻的數值變化很小，或是四個光敏電阻的變化幅度差距很大，有可能會Arduino Uno板的排針座出問題。我把原本的排針座解焊拆下來後，焊上新的排針座就解決了。
:::
    

2. 灌溉系統
     由於Raspberry Pi無法直接讀取類比訊號，因此需要透過ADC類比數位轉換器來實作。建議使用gpiozero，這樣可以直接使用MCP3008類別。如果要使用RPi.GPIO會很麻煩。
     
     電路配置和程式碼請參考6.電路配置和7.程式碼。
:::warning
如果5V繼電器使用5V供電的話，可能會遇到繼電器在高電位和低電位時都處於on的狀態，因此建議使用3V3來供電。
:::

3. 中央氣象局API & Flask
    1. 中央氣象局API
        1. 登入/註冊氣象資料開放平台會員 
                點擊 https://opendata.cwa.gov.tw/index 進行註冊/登入
                
        2. 取得API授權碼
                ![](https://drive.google.com/uc?export=view&id=10Pc0sw1fMv92bqoEhs2awL-jaWIVk2EU)
                
        3. 選擇資料集
                在資料主題中選擇想要的資料集，點選API，點擊Try it out，
                ![](https://drive.google.com/uc?export=view&id=1yayRqpkeDWJi2_xbh5aP2BpGvw_q-3e3)
                
        4. 取得request URL
                填完表單後，按下Execute，複製下方request URL
                ![](https://drive.google.com/uc?export=view&id=14Tlea1b9evM5fOq7qu1mfYObTKhT8-cI)
                
            程式碼請參考7.程式碼
                
    2. Flask
        1. 安裝pip
        
                sudo apt-get update
                sudo apt-get upgrade
                sudo apt-get install python-pip python-flask
                
        2. 安裝flask
                
                sudo pip install flask
                
            程式碼請參考7.程式碼
4. 讓Raspberry Pi開機就執行自動灌溉程式
    1. 開啟autostart檔案
            
                sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
    2. 在最後一行加入要執行的程式的完整路徑
        
                @ lxterminal — e python3 執行檔案的路徑
        ![](https://drive.google.com/uc?export=view&id=1thU9roENIpT1aIyYZXuKeEOPqxSdi8nF)
    
    3. 存檔離開
                
                Ctrl+x -> y -> Enter
        
        
---
## 6. 電路配置
- Raspberry Pi
        ![](https://drive.google.com/uc?export=view&id=1tZBN5rFSwfpf0ETntU6vhoSyUym3sivl)
- Arduino Uno
        ![](https://drive.google.com/uc?export=view&id=1nM1KVyd3lCGXrzSwrP7-F7zqCRfcxgjS)
--- 
## 7. 程式碼
https://github.com/mkj-mkj/IoT-Eco-Greenhouse.git
## 8. 參考資料
- flask
    https://randomnerdtutorials.com/raspberry-pi-web-server-using-flask-to-control-gpios/
- 太陽能追光板
    https://www.instructables.com/Dual-Axis-Light-Tracker-for-Solar-Panels/ 
- 繼電器
    https://crazymaker.com.tw/arduino-how-to-use-relay/#google_vignette
    https://raspberrypi-guide.github.io/electronics/control-electronics-with-a-relay
- 中央氣象局API
    https://pjchender.dev/react-bootcamp/docs/book/ch5/5-1/
    https://steam.oxxostudio.tw/category/python/spider/forecast.html
- 數位功率計 
    https://wiki.dfrobot.com/Gravity%3A%20I2C%20Digital%20Wattmeter%20SKU%3A%20SEN0291
    
- 樹莓派開機自動執行Python 程式(System Method)iiii
- 
    https://kiwi-half.medium.com/raspberry-pi-%E6%A8%B9%E8%8E%93%E6%B4%BE%E9%96%8B%E6%A9%9F%E8%87%AA%E5%8B%95%E5%9F%B7%E8%A1%8Cpython-%E7%A8%8B%E5%BC%8F-system-method-84ff84814ebd

