跳至主要内容

測量溫度 - 虛擬物聯網硬體

在本課程的這部分,你將為你的虛擬物聯網設備添加一個溫度傳感器。

虛擬硬體

虛擬物聯網設備將使用模擬的 Grove 數字濕度和溫度傳感器。這使得本實驗與使用實體 Grove DHT11 傳感器的樹莓派相同。

該傳感器結合了一個溫度傳感器和一個濕度傳感器,但在本實驗中你只需關注溫度傳感器部分。在實體物聯網設備中,溫度傳感器將是一個熱敏電阻,通過感應電阻隨溫度變化來測量溫度。溫度傳感器通常是數字傳感器,內部將測量的電阻轉換為攝氏度(或開爾文,或華氏度)的溫度。

將傳感器添加到 CounterFit

要使用虛擬濕度和溫度傳感器,你需要將這兩個傳感器添加到 CounterFit 應用中

任務 - 將傳感器添加到 CounterFit

將濕度和溫度傳感器添加到 CounterFit 應用中。

  1. 在你的電腦上創建一個名為 temperature-sensor 的文件夾,並在其中創建一個名為 app.py 的單文件 Python 應用程序和一個 Python 虛擬環境,並添加 CounterFit pip 包。

    ⚠️ 如果需要,你可以參考第 1 課中創建和設置 CounterFit Python 項目的說明

  2. 安裝一個額外的 Pip 包來安裝 DHT11 傳感器的 CounterFit shim。確保你在啟動虛擬環境的終端中安裝此包。

    pip install counterfit-shims-seeed-python-dht
  3. 確保 CounterFit 網頁應用正在運行

  4. 創建一個濕度傳感器:

    1. 傳感器窗格的創建傳感器框中,展開傳感器類型框並選擇濕度

    2. 保持單位設置為百分比

    3. 確保引腳設置為5

    4. 選擇添加按鈕以在引腳 5 上創建濕度傳感器

    濕度傳感器設置

    濕度傳感器將被創建並出現在傳感器列表中。

    創建的濕度傳感器

  5. 創建一個溫度傳感器:

    1. 傳感器窗格的創建傳感器框中,展開傳感器類型框並選擇溫度

    2. 保持單位設置為攝氏度

    3. 確保引腳設置為6

    4. 選擇添加按鈕以在引腳 6 上創建溫度傳感器

    溫度傳感器設置

    溫度傳感器將被創建並出現在傳感器列表中。

    創建的溫度傳感器

編程溫度傳感器應用

現在可以使用 CounterFit 傳感器編程溫度傳感器應用。

任務 - 編程溫度傳感器應用

編程溫度傳感器應用。

  1. 確保 temperature-sensor 應用在 VS Code 中打開

  2. 打開 app.py 文件

  3. 將以下代碼添加到 app.py 的頂部以連接應用到 CounterFit:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
  4. 將以下代碼添加到 app.py 文件中以導入所需的庫:

    import time
    from counterfit_shims_seeed_python_dht import DHT

    from seeed_dht import DHT 語句導入 DHT 傳感器類,以使用 counterfit_shims_seeed_python_dht 模塊中的 shim 與虛擬 Grove 溫度傳感器交互。

  5. 在上述代碼之後添加以下代碼以創建管理虛擬濕度和溫度傳感器的類的實例:

    sensor = DHT("11", 5)

    這聲明了一個 DHT 類的實例來管理虛擬數字濕度和溫度傳感器。第一個參數告訴代碼使用的是虛擬 DHT11 傳感器。第二個參數告訴代碼傳感器連接到端口 5

    💁 CounterFit 通過連接到 2 個傳感器來模擬這個組合的濕度和溫度傳感器,一個濕度傳感器在創建 DHT 類時給定的引腳上運行,另一個溫度傳感器在下一個引腳上運行。如果濕度傳感器在引腳 5 上,shim 預期溫度傳感器在引腳 6 上。

  6. 在上述代碼之後添加一個無限循環來輪詢溫度傳感器值並將其打印到控制台:

    while True:
    _, temp = sensor.read()
    print(f'Temperature {temp}°C')

    調用 sensor.read() 返回一個濕度和溫度的元組。你只需要溫度值,所以忽略濕度。然後將溫度值打印到控制台。

  7. loop 的末尾添加一個十秒的小睡眠,因為不需要連續檢查溫度水平。睡眠可以減少設備的功耗。

    time.sleep(10)
  8. 從啟動虛擬環境的 VS Code 終端中運行以下命令來運行你的 Python 應用:

    python app.py
  9. 從 CounterFit 應用中更改將被應用讀取的溫度傳感器的值。你可以通過以下兩種方式進行此操作:

    • 在溫度傳感器的框中輸入一個數字,然後選擇設置按鈕。你輸入的數字將是傳感器返回的值。

    • 勾選隨機複選框,並輸入最小最大值,然後選擇設置按鈕。每次傳感器讀取值時,它將讀取一個介於最小最大之間的隨機數。

    你應該會在控制台中看到你設置的值。更改隨機設置以查看值的變化。

    (.venv) ➜  temperature-sensor python app.py
    Temperature 28.25°C
    Temperature 30.71°C
    Temperature 25.17°C

💁 你可以在 code-temperature/virtual-device 文件夾中找到此代碼。

😀 你的溫度傳感器程序成功了!