跳至主要内容

檢測接近 - Wio Terminal

在本課程的這一部分中,您將為您的 Wio Terminal 添加一個接近傳感器,並從中讀取距離。

硬件

Wio Terminal 需要一個接近傳感器。

您將使用的傳感器是 Grove 飛行時間距離傳感器。該傳感器使用激光測距模塊來檢測距離。該傳感器的範圍為 10mm 至 2000mm(1cm - 2m),並且在該範圍內報告的值相當準確,超過 1000mm 的距離報告為 8109mm。

激光測距儀位於傳感器的背面,即 Grove 插座的對面。

這是一個 I2C 傳感器。

連接飛行時間傳感器

Grove 飛行時間傳感器可以連接到 Wio Terminal。

任務 - 連接飛行時間傳感器

連接飛行時間傳感器。

Grove 飛行時間傳感器

  1. 將 Grove 電纜的一端插入飛行時間傳感器上的插座。它只能以一種方式插入。

  2. 在 Wio Terminal 與計算機或其他電源斷開連接的情況下,將 Grove 電纜的另一端連接到 Wio Terminal 左側的 Grove 插座,當您看著屏幕時。這是最靠近電源按鈕的插座。這是一個數字和 I2C 的組合插座。

Grove 飛行時間傳感器連接到左側插座

  1. 現在您可以將 Wio Terminal 連接到您的計算機。

編程飛行時間傳感器

現在可以編程 Wio Terminal 以使用連接的飛行時間傳感器。

任務 - 編程飛行時間傳感器

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

  2. 在項目的 platformio.ini 文件中添加 Seeed Grove 飛行時間距離傳感器庫的庫依賴項:

    lib_deps =
    seeed-studio/Grove Ranging sensor - VL53L0X @ ^1.1.1
  3. main.cpp 中,在現有的 include 指令下方添加以下內容,以聲明 Seeed_vl53l0x 類的實例以與飛行時間傳感器交互:

    #include "Seeed_vl53l0x.h"

    Seeed_vl53l0x VL53L0X;
  4. setup 函數的底部添加以下內容以初始化傳感器:

    VL53L0X.VL53L0X_common_init();
    VL53L0X.VL53L0X_high_accuracy_ranging_init();
  5. loop 函數中,從傳感器讀取一個值:

    VL53L0X_RangingMeasurementData_t RangingMeasurementData;
    memset(&RangingMeasurementData, 0, sizeof(VL53L0X_RangingMeasurementData_t));

    VL53L0X.PerformSingleRangingMeasurement(&RangingMeasurementData);

    此代碼初始化一個數據結構以讀取數據,然後將其傳遞給 PerformSingleRangingMeasurement 方法,其中將填充距離測量值。

  6. 在此下方,寫出距離測量值,然後延遲 1 秒:

    Serial.print("Distance = ");
    Serial.print(RangingMeasurementData.RangeMilliMeter);
    Serial.println(" mm");

    delay(1000);
  7. 構建、上傳並運行此代碼。您將能夠使用串行監視器查看距離測量值。將物體放置在傳感器附近,您將看到距離測量值:

    Distance = 29 mm
    Distance = 28 mm
    Distance = 30 mm
    Distance = 151 mm

    測距儀位於傳感器的背面,因此在測量距離時請確保使用正確的一側。

    飛行時間傳感器背面的測距儀指向香蕉

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

😀 您的接近傳感器程序成功了!