搜尋程式碼

第7課,共10課:線路追蹤、懸崖偵測 校準灰度感測器 Raspberry Pi Pico 車

呢一課係……嘅一部分: Raspberry Pi Pico 四驱智能车

第7課,共10課:線路追蹤、懸崖偵測 校準灰度感測器 Raspberry Pi Pico 車

喺呢個 Raspberry Pi Pico 智能車課程嘅第七課入面,我哋會探討用灰度感測器模組嚟做循線追蹤同懸崖偵測嘅關鍵功能。呢個模組就好似你架車嘅「眼睛」,等佢可以自主噉跟住預設路徑行,同時避開危險嘅落差。呢個項目會示範點樣校準感測器嚟攞到準確讀數,同埋實現令架車保持喺軌道上嘅邏輯,仲有個好玩嘅「唔好推我」功能嚟模擬懸崖偵測。呢個指南好適合任何想超越基本遙控、進入感測器導航機械人世界嘅人。

呢種技術除咗係一個好玩嘅DIY項目之外,仲有好多實際應用。你喺度學到嘅原理係建立真實世界自主系統嘅基礎。以下有啲諗法可以啟發你:

  • 自動送貨機械人:整一個細機械人,可以喺倉庫或者辦公室地面跟住標記線行,用嚟送貨。
  • 桌面迷宮解難器:整一個機械人,可以喺用黑色電線膠紙畫出嚟嘅複雜迷宮入面行。
  • 安全同保安機械人:實現一個巡邏機械人,跟住設定路線行,用懸崖偵測嚟避免跌落樓梯或者高處。
  • 教育平台:用呢架車嚟教PID控制、感測器融合同自主導航嘅基礎。

硬件同組件

呢個項目係建基於SunFounder Raspberry Pi Pico 4WD車套件。呢課嘅關鍵組件係灰度感測器模組,佢對循線追蹤同懸崖偵測都好重要。呢個模組有三個獨立感測器,用嚟量度下面表面反射嘅光量。呢啲數據用嚟分辨黑色線、白色表面同「懸崖」或者空曠空間。成個套件仲包括Pico車底盤、摩打同一個電池盒嚟供電畀成個系統。

接線指南

正確接線係令你個感測器運作嘅第一步。灰度模組用四條線連接到Raspberry Pi Pico。接線好直接,影片入面有清楚示範。

以下係影片入面顯示嘅接線配置(影片03:01位置):

  • 黑色線:連接到Pico嘅GND針腳。
  • 紅色線:連接到Pico嘅3.3V針腳。
  • 黃色線(右邊感測器):連接到GPIO針腳28
  • 啡色線(中間感測器):連接到GPIO針腳27
  • 白色/灰色線(左邊感測器):連接到GPIO針腳26

校準灰度感測器

喺架車可以可靠噉跟線之前,你一定要校準感測器,等佢明白白色、黑色同空位嘅唔同讀數。呢個係確保你架車做啱決定嘅關鍵步驟。感測器嘅靈敏度可以透過模組上面嘅細微電位器嚟調整。

影片示範咗校準過程(影片04:39位置)。感測器應該放喺離地面一個合適嘅高度——大約11毫米或者一厘米——先可以攞到清晰讀數。透過調整電位器同觀察數值,你可以搵到最佳位置。目標係令白色表面(反射好多光)同黑色線(反射好少光)嘅讀數有明顯分別。

以下係讀數嘅意思總結:

  • 白色表面:高反射,所以感測器數值高(例如大約20,000)。
  • 黑色線:低反射,所以感測器數值低(例如大約3,000)。
  • 懸崖(空心位):冇反射,所以感測器數值最低(例如大約1,200)。

程式碼解釋

由於呢課冇提供程式碼,所以我哋會集中喺概念邏輯同Robojax函式庫入面用嚟令架車運作嘅關鍵函數。影片解釋咗你會用嘅兩個主要函數。

測試感測器

第一步係用一個簡單腳本測試你嘅感測器。呢個腳本用一個叫get_grayscale_value()嘅函數嚟讀取三個感測器嘅原始數值。佢會將呢啲數值打印到序列監視器,等你可以睇到當感測器放喺唔同表面上面時數值點樣變化。呢個對驗證你嘅接線同做校準步驟好有用。


# 呢個係測試函數嘅概念示例
from machine import Pin, ADC
import time

# 定義灰度感測器嘅ADC針腳
grayscale_pins = [26, 27, 28]
sensors = [ADC(Pin(pin)) for pin in grayscale_pins]

while True:
    # 讀取感測器嘅原始16位元數值
    values = [sensor.read_u16() for sensor in sensors]
    print("左:{} 中:{} 右:{}".format(values[0], values[1], values[2]))
    time.sleep_ms(100)

循線追蹤邏輯

對於循線追蹤,程式碼唔會用原始模擬數值。相反,佢會將佢哋轉換成簡單嘅數碼狀態:如果感測器喺黑色線上面就係1,如果喺白色表面上面就係0。呢個由一個函數處理,佢會返回一個有三個數值嘅列表(例如[0, 1, 0])。主控制迴圈跟住用呢個列表嚟決定架車嘅行動。

呢個邏輯係基於將感應器狀態同預設條件比較。例如,如果狀態係 [0, 1, 0],架車就啱啱好喺條線上面,應該向前行。如果狀態係 [1, 0, 0],架車就偏咗去左邊,需要向右修正路線。條片詳細解釋咗呢啲條件(喺片入面13:05),展示唔同嘅感應器讀數組合點樣對應唔同嘅摩打指令,例如轉左、轉右,或者急彎修正。


# 呢個係循線邏輯嘅概念示例
# 假設 'status' 係一個好似 [0, 1, 0] 咁嘅列表,嚟自灰度感應器

if status == [0, 1, 0]:  # 中間感應器喺條線上面
    # 向前行
    pass
elif status == [1, 0, 0]:  # 左邊感應器喺條線上面
    # 轉右
    pass
elif status == [0, 0, 1]:  # 右邊感應器喺條線上面
    # 轉左
    pass
# ... 其他條件用嚟處理更急嘅轉彎

現場項目示範

喺條片嘅示範入面,架車被放喺一條印有粗黑線嘅測試軌道上面。架車成功跟住條線行,沿途轉彎同修正路線。條片提到一個常見問題,就係喺急彎嘅時候車轆可能會鬆脫,然後展示咗一個簡單嘅解決方法,就係喺車軸上加一小塊膠紙令佢更緊。搞掂之後,架車就順暢咁行完整條軌道,證明咗校準同循線邏輯嘅有效性。

影片章節

  • [00:00] 循線同懸崖偵測簡介
  • [03:01] 接駁灰度感應器模組
  • [04:39] 校準灰度感應器
  • [13:05] 理解循線邏輯
  • [19:43] 測試循線程式碼
  • [24:50] 喺測試軌道上現場示範
请提供需要翻译的文本。

資源與參考資料

暫時冇資源。

文件📁

冇文件可用。