跳至主要内容

建造一個夜燈 - 樹莓派

在這部分課程中,你將在樹莓派上添加一個光傳感器。

硬體

這節課的傳感器是一個光傳感器,它使用光電二極管將光轉換為電信號。這是一個模擬傳感器,發送一個從0到1,000的整數值,表示相對的光量,這不對應於任何標準的測量單位,如lux

光傳感器是一個外部的Grove傳感器,需要連接到樹莓派上的Grove Base帽子。

連接光傳感器

用於檢測光線水平的Grove光傳感器需要連接到樹莓派。

任務 - 連接光傳感器

連接光傳感器

A grove light sensor

  1. 將Grove電纜的一端插入光傳感器模組上的插座。它只能以一種方式插入。

  2. 在樹莓派斷電的情況下,將Grove電纜的另一端連接到樹莓派上Grove Base帽子上的模擬插座A0。這個插座在GPIO引腳旁邊的一排插座中是從右數第二個。

The grove light sensor connected to socket A0

編程光傳感器

現在可以使用Grove光傳感器來編程設備。

任務 - 編程光傳感器

編程設備。

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

  2. 在VS Code中打開你在本作業的前一部分中創建的夜燈項目,可以直接在樹莓派上運行,也可以使用Remote SSH擴展連接。

  3. 打開app.py文件並刪除其中的所有代碼

  4. 將以下代碼添加到app.py文件中以導入所需的庫:

    import time
    from grove.grove_light_sensor_v1_2 import GroveLightSensor

    import time語句導入time模組,該模組將在本作業後面使用。

    from grove.grove_light_sensor_v1_2 import GroveLightSensor語句從Grove Python庫中導入GroveLightSensor。這個庫包含與Grove光傳感器交互的代碼,並在樹莓派設置期間全局安裝。

  5. 在上述代碼之後添加以下代碼,以創建管理光傳感器的類的實例:

    light_sensor = GroveLightSensor(0)

    這行light_sensor = GroveLightSensor(0)創建了一個連接到引腳A0GroveLightSensor類的實例 - 光傳感器連接的模擬Grove引腳。

  6. 在上述代碼之後添加一個無限循環,以輪詢光傳感器值並將其打印到控制台:

    while True:
    light = light_sensor.light
    print('Light level:', light)

    這將使用GroveLightSensor類的light屬性讀取0-1,023範圍內的當前光線水平。該屬性從引腳讀取模擬值。然後將此值打印到控制台。

  7. 循環的末尾添加一個一秒的小睡眠,因為光線水平不需要連續檢查。睡眠可以減少設備的功耗。

    time.sleep(1)
  8. 從VS Code終端運行以下命令以運行你的Python應用程序:

    python3 app.py

    光線值將輸出到控制台。覆蓋和揭開光傳感器,值將會改變:

    pi@raspberrypi:~/nightlight $ python3 app.py 
    Light level: 634
    Light level: 634
    Light level: 634
    Light level: 230
    Light level: 104
    Light level: 290

💁 你可以在code-sensor/pi文件夾中找到這段代碼。

😀 添加傳感器到你的夜燈程序成功了!