跳至主要内容

測量土壤濕度 - 樹莓派

在本課程的這一部分,你將向樹莓派添加一個電容式土壤濕度傳感器,並從中讀取數值。

硬體

樹莓派需要一個電容式土壤濕度傳感器。

你將使用的傳感器是電容式土壤濕度傳感器,它通過檢測土壤的電容來測量土壤濕度,這是一種隨著土壤濕度變化而變化的特性。隨著土壤濕度的增加,電壓會下降。

這是一個模擬傳感器,因此使用模擬引腳,並使用樹莓派上的 Grove Base Hat 中的 10 位 ADC 將電壓轉換為 1-1,023 的數字信號。然後通過樹莓派上的 GPIO 引腳通過 I2C 發送。

連接土壤濕度傳感器

Grove 土壤濕度傳感器可以連接到樹莓派。

任務 - 連接土壤濕度傳感器

連接土壤濕度傳感器。

A grove soil moisture sensor

  1. 將 Grove 電纜的一端插入土壤濕度傳感器上的插座。它只能以一種方式插入。

  2. 在樹莓派關機的情況下,將 Grove 電纜的另一端連接到樹莓派上 Grove Base Hat 上標有 A0 的模擬插座。這個插座在 GPIO 引腳旁邊的插座行中從右數第二個。

The grove soil moisture sensor connected to the A0 socket

  1. 將土壤濕度傳感器插入土壤中。它有一條“最高位置線” - 傳感器上的一條白線。將傳感器插入到但不超過這條線。

The grove soil moisture sensor in soil

編程土壤濕度傳感器

現在可以編程樹莓派以使用連接的土壤濕度傳感器。

任務 - 編程土壤濕度傳感器

編程設備。

  1. 啟動樹莓派並等待其啟動

  2. 啟動 VS Code,可以直接在樹莓派上啟動,也可以通過 Remote SSH 擴展連接。

    ⚠️ 你可以參考在夜燈 - 課程 1 中設置和啟動 VS Code 的說明

  3. 從終端,在 pi 用戶的主目錄中創建一個名為 soil-moisture-sensor 的新文件夾。在此文件夾中創建一個名為 app.py 的文件。

  4. 在 VS Code 中打開此文件夾

  5. 將以下代碼添加到 app.py 文件中以導入一些所需的庫:

    import time
    from grove.adc import ADC

    import time 語句導入 time 模塊,該模塊將在本作業中稍後使用。

    from grove.adc import ADC 語句從 Grove Python 庫中導入 ADC。此庫具有與樹莓派基座帽上的模擬數字轉換器交互並從模擬傳感器讀取電壓的代碼。

  6. 在此下面添加以下代碼以創建 ADC 類的實例:

    adc = ADC()
  7. 添加一個無限循環,從 A0 引腳上的 ADC 讀取,並將結果寫入控制台。然後此循環可以在讀取之間休眠 10 秒。

    while True:
    soil_moisture = adc.read(0)
    print("Soil moisture:", soil_moisture)

    time.sleep(10)
  8. 運行 Python 應用程序。你會看到土壤濕度測量值寫入控制台。向土壤中添加一些水,或將傳感器從土壤中取出,並查看值的變化。

    pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py 
    Soil moisture: 615
    Soil moisture: 612
    Soil moisture: 498
    Soil moisture: 493
    Soil moisture: 490
    Soil Moisture: 388

    在上面的示例輸出中,你可以看到隨著水的添加電壓下降。

💁 你可以在 code/pi 文件夾中找到此代碼。

😀 你的土壤濕度傳感器程序成功了!