檢測接近 - Wio Terminal
在本課程的這一部分中,您將為您的 Wio Terminal 添加一個接近傳感器,並從中讀取距離。
硬件
Wio Terminal 需要一個接近傳感器。
您將使用的傳感器是 Grove 飛行時間距離傳感器。該傳感器使用激光測距模塊來檢測距離。該傳感器的範圍為 10mm 至 2000mm(1cm - 2m),並且在該範圍內報告的值相當準確,超過 1000mm 的距離報告為 8109mm。
激光測距儀位於傳感器的背面,即 Grove 插座的對面。
這是一個 I2C 傳感器。
連接飛行時間傳感器
Grove 飛行時間傳感器可以連接到 Wio Terminal。
任務 - 連接飛行時間傳感器
連接飛行時間傳感器。
-
將 Grove 電纜的一端插入飛行時間傳感器上的插座。它只能以一種方式插入。
-
在 Wio Terminal 與計算機或其他電源斷開連接的情況下,將 Grove 電纜的另一端連接到 Wio Terminal 左側的 Grove 插座,當您看著屏幕時。這是最靠近電源按鈕的插座。這是一個數字和 I2C 的組合插座。
- 現在您可以將 Wio Terminal 連接到您的計算機。
編程飛行時間傳感器
現在可以編程 Wio Terminal 以使用連接的飛行時間傳感器。
任務 - 編程飛行時間傳感器
-
使用 PlatformIO 創建一個全新的 Wio Terminal 項目。將此項目命名為
distance-sensor
。在setup
函數中添加代碼以配置串行端口。 -
在項目的
platformio.ini
文件中添加 Seeed Grove 飛行時間距離傳感器庫的庫依賴項:lib_deps =
seeed-studio/Grove Ranging sensor - VL53L0X @ ^1.1.1 -
在
main.cpp
中,在現有的 include 指令下方添加以下內容,以聲明Seeed_vl53l0x
類的實例以與飛行時間傳感器交互:#include "Seeed_vl53l0x.h"
Seeed_vl53l0x VL53L0X; -
在
setup
函數的底部添加以下內容以初始化傳感器:VL53L0X.VL53L0X_common_init();
VL53L0X.VL53L0X_high_accuracy_ranging_init(); -
在
loop
函數中,從傳感器讀取一個值:VL53L0X_RangingMeasurementData_t RangingMeasurementData;
memset(&RangingMeasurementData, 0, sizeof(VL53L0X_RangingMeasurementData_t));
VL53L0X.PerformSingleRangingMeasurement(&RangingMeasurementData);此代碼初始化一個數據結構以讀取數據,然後將其傳遞給
PerformSingleRangingMeasurement
方法,其中將填充距離測量值。 -
在此下方,寫出距離測量值,然後延遲 1 秒:
Serial.print("Distance = ");
Serial.print(RangingMeasurementData.RangeMilliMeter);
Serial.println(" mm");
delay(1000); -
構建、上傳並運行此代碼。您將能夠使用串行監視器查看距離測量值。將物體放置在傳感器附近,您將看到距離測量值:
Distance = 29 mm
Distance = 28 mm
Distance = 30 mm
Distance = 151 mm測距儀位於傳感器的背面,因此在測量距離時請確保使用正確的一側。
💁 您可以在 code-proximity/wio-terminal 文件夾中找到此代碼。
😀 您的接近傳感器程序成功了!