跳至主要内容

檢測接近 - 樹莓派

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

硬體

樹莓派需要一個接近傳感器。

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

激光測距儀位於傳感器的背面,與Grove插座相對的一側。

這是一個I2C傳感器。

連接飛行時間傳感器

Grove飛行時間傳感器可以連接到樹莓派。

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

連接飛行時間傳感器。

一個Grove飛行時間傳感器

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

  2. 在樹莓派關機的情況下,將Grove電纜的另一端連接到樹莓派上Grove Base帽上的I2C插座之一。這些插座位於底排,與GPI引腳相對的一端,並且靠近相機電纜插槽。

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

編程飛行時間傳感器

現在可以編程樹莓派以使用連接的飛行時間傳感器。

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

編程設備。

  1. 啟動樹莓派並等待其啟動。

  2. 在VS Code中打開fruit-quality-detector代碼,可以直接在樹莓派上打開,也可以通過Remote SSH擴展連接。

  3. 安裝rpi-vl53l0x Pip包,這是一個與VL53L0X飛行時間距離傳感器交互的Python包。使用以下pip命令安裝它

    pip install rpi-vl53l0x
  4. 在此項目中創建一個名為distance-sensor.py的新文件。

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

  5. 將以下代碼添加到此文件中:

    import time

    from grove.i2c import Bus
    from rpi_vl53l0x.vl53l0x import VL53L0X

    這將導入Grove I2C總線庫和Grove飛行時間傳感器內置的核心傳感器硬件的傳感器庫。

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

    distance_sensor = VL53L0X(bus = Bus().bus)
    distance_sensor.begin()

    此代碼使用Grove I2C總線聲明一個距離傳感器,然後啟動傳感器。

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

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

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

  8. 運行此代碼。

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

  9. 你會在控制台中看到距離測量值。將物體放置在傳感器附近,你會看到距離測量值:

    pi@raspberrypi:~/fruit-quality-detector $ python3 distance_sensor.py 
    Distance = 29 mm
    Distance = 28 mm
    Distance = 30 mm
    Distance = 151 mm

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

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

💁 你可以在code-proximity/pi文件夾中找到此代碼。

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