跳至主要内容

檢測接近 - 虛擬 IoT 硬件

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

硬件

虛擬 IoT 設備將使用模擬距離傳感器。

在物理 IoT 設備中,您將使用帶有激光測距模塊的傳感器來檢測距離。

將距離傳感器添加到 CounterFit

要使用虛擬距離傳感器,您需要將其添加到 CounterFit 應用程序中

任務 - 將距離傳感器添加到 CounterFit

將距離傳感器添加到 CounterFit 應用程序中。

  1. 在 VS Code 中打開 fruit-quality-detector 代碼,並確保虛擬環境已激活。

  2. 安裝一個額外的 Pip 包來安裝一個 CounterFit shim,它可以通過模擬 rpi-vl53l0x Pip 包,與 VL53L0X 飛行時間距離傳感器 進行交互。確保您是在激活虛擬環境的終端中安裝此包。

    pip install counterfit-shims-rpi-vl53l0x
  3. 確保 CounterFit 網頁應用程序正在運行

  4. 創建一個距離傳感器:

    1. Sensors 面板的 Create sensor 框中,打開 Sensor type 下拉框並選擇 Distance

    2. Units 保持為 Millimeter

    3. 這個傳感器是一個 I2C 傳感器,所以將地址設置為 0x29。如果您使用的是物理 VL53L0X 傳感器,它將被硬編碼為此地址。

    4. 選擇 Add 按鈕來創建距離傳感器

    距離傳感器設置

    距離傳感器將被創建並出現在傳感器列表中。

    創建的距離傳感器

編程距離傳感器

現在可以編程虛擬 IoT 設備以使用模擬距離傳感器。

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

  1. fruit-quality-detector 項目中創建一個名為 distance-sensor.py 的新文件。

    💁 模擬多個 IoT 設備的一個簡單方法是將每個設備放在不同的 Python 文件中,然後同時運行它們。

  2. 使用以下代碼啟動與 CounterFit 的連接:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
  3. 在此下方添加以下代碼:

    import time

    from counterfit_shims_rpi_vl53l0x.vl53l0x import VL53L0X

    這將導入 VL53L0X 飛行時間傳感器的傳感器庫 shim。

  4. 在此下方,添加以下代碼以訪問傳感器:

    distance_sensor = VL53L0X()
    distance_sensor.begin()

    此代碼聲明了一個距離傳感器,然後啟動傳感器。

  5. 最後,添加一個無限循環來讀取距離:

    while True:
    distance_sensor.wait_ready()
    print(f'Distance = {distance_sensor.get_distance()} mm')
    time.sleep(1)

    此代碼等待傳感器準備好讀取值,然後將其打印到控制台。

  6. 運行此代碼。

    💁 別忘了這個文件叫做 distance-sensor.py!確保通過 Python 運行此文件,而不是 app.py

  7. 您將在控制台中看到距離測量值。更改 CounterFit 中的值以查看此值的變化,或使用隨機值。

    (.venv) ➜  fruit-quality-detector python distance-sensor.py 
    Distance = 37 mm
    Distance = 42 mm
    Distance = 29 mm

💁 您可以在 code-proximity/virtual-iot-device 文件夾中找到此代碼。

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