跳至主要内容

測量溫度 - Wio Terminal

在本課程的這部分,你將為你的 Wio Terminal 添加一個溫度傳感器,並從中讀取溫度值。

硬體

Wio Terminal 需要一個溫度傳感器。

你將使用的傳感器是 DHT11 濕度和溫度傳感器,將兩個傳感器組合在一個封裝中。這是相當流行的,有許多商業上可用的傳感器將溫度、濕度,有時還有大氣壓力結合在一起。溫度傳感器組件是一個負溫度係數(NTC)熱敏電阻,這是一種隨著溫度升高而電阻減小的熱敏電阻。

這是一個數字傳感器,因此具有一個板載 ADC,用於創建包含溫度和濕度數據的數字信號,微控制器可以讀取。

連接溫度傳感器

Grove 溫度傳感器可以連接到 Wio Terminal 的數字端口。

任務 - 連接溫度傳感器

連接溫度傳感器。

A grove temperature sensor

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

  2. 在 Wio Terminal 與計算機或其他電源斷開連接的情況下,將 Grove 電纜的另一端連接到 Wio Terminal 上屏幕右側的 Grove 插座。這是離電源按鈕最遠的插座。

The grove temperature sensor connected to the right hand socket

編程溫度傳感器

現在可以編程 Wio Terminal 以使用連接的溫度傳感器。

任務 - 編程溫度傳感器

編程設備。

  1. 使用 PlatformIO 創建一個全新的 Wio Terminal 項目。將此項目命名為 temperature-sensor。在 setup 函數中添加代碼以配置串行端口。

    ⚠️ 如果需要,你可以參考 項目 1,課程 1 中創建 PlatformIO 項目的說明

  2. 在項目的 platformio.ini 文件中添加 Seeed Grove 濕度和溫度傳感器庫的庫依賴項:

    lib_deps =
    seeed-studio/Grove Temperature And Humidity Sensor @ 1.0.1

    ⚠️ 如果需要,你可以參考 項目 1,課程 4 中向 PlatformIO 項目添加庫的說明

  3. 在文件頂部的現有 #include <Arduino.h> 下添加以下 #include 指令:

    #include <DHT.h>
    #include <SPI.h>

    這將導入與傳感器交互所需的文件。DHT.h 標頭文件包含傳感器本身的代碼,添加 SPI.h 標頭可確保在編譯應用程序時鏈接與傳感器通信所需的代碼。

  4. setup 函數之前,聲明 DHT 傳感器:

    DHT dht(D0, DHT11);

    這聲明了一個管理數字濕度和溫度傳感器的 DHT 類實例。這連接到 Wio Terminal 上的 D0 端口,即右側的 Grove 插座。第二個參數告訴代碼使用的是 DHT11 傳感器 - 你使用的庫支持此傳感器的其他變體。

  5. setup 函數中,添加代碼以設置串行連接:

    void setup()
    {
    Serial.begin(9600);

    while (!Serial)
    ; // 等待串行準備就緒

    delay(1000);
    }
  6. setup 函數的最後一個 delay 之後,添加調用以啟動 DHT 傳感器:

    dht.begin();
  7. loop 函數中,添加代碼以調用傳感器並將溫度打印到串行端口:

    void loop()
    {
    float temp_hum_val[2] = {0};
    dht.readTempAndHumidity(temp_hum_val);
    Serial.print("Temperature: ");
    Serial.print(temp_hum_val[1]);
    Serial.println ("°C");

    delay(10000);
    }

    此代碼聲明了一個包含 2 個浮點數的空數組,並將其傳遞給 DHT 實例上的 readTempAndHumidity 調用。此調用將數組填充 2 個值 - 濕度進入數組的第 0 項(請記住,在 C++ 中,數組是從 0 開始的,因此第 0 項是數組中的“第一”項),溫度進入第 1 項。

    溫度從數組的第 1 項讀取,並打印到串行端口。

    🇺🇸 溫度以攝氏度讀取。對於美國人,將其轉換為華氏度,將讀取的攝氏度值除以 5,然後乘以 9,然後加上 32。例如,20°C 的溫度讀數變為 ((20/5)*9) + 32 = 68°F。

  8. 構建並上傳代碼到 Wio Terminal。

    ⚠️ 如果需要,你可以參考 項目 1,課程 1 中創建 PlatformIO 項目的說明

  9. 上傳後,你可以使用串行監視器監控溫度:

    > Executing task: platformio device monitor <

    --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
    --- More details at http://bit.ly/pio-monitor-filters
    --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 ---
    --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
    Temperature: 25.00°C
    Temperature: 25.00°C
    Temperature: 25.00°C
    Temperature: 24.00°C

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

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