搜尋程式碼

ESP32 教學 20/55 - 循線模組 | SunFounder 嘅 ESP32 IoT 學習套件

ESP32 教學 20/55 - 循線模組 | SunFounder 嘅 ESP32 IoT 學習套件

喺呢個教學入面,我哋會學吓點樣用ESP32模組同埋循線模組嚟偵測白色表面上嘅黑色線。呢種能力對於好似機械車要跟住指定路徑嘅應用嚟講係好重要嘅。除此之外,我哋仲會整合一個蜂鳴器,當循線模組偵測到黑色線嘅時候就會啟動,增強我哋項目嘅反饋機制。如果想再清楚啲,請參考條片(片入面0:00位置)。

line_track

硬件講解

呢個項目嘅主要組件包括ESP32模組、一個循線模組同一個蜂鳴器。ESP32模組係一個功能強大嘅微控制器,內置Wi-Fi同藍牙功能,可以支援好多IoT應用。循線模組利用紅外線發射器同光敏電阻,根據反射紅外線嘅強度嚟偵測表面顏色嘅差異。

循線模組嘅運作原理係發射紅外線,光線會由下面嘅表面反射返嚟。深色表面好似黑色咁會吸收多啲光,令到反射強度低啲;而淺色表面好似白色咁會反射多啲光,產生較高嘅強度。呢個差異會由運算放大器處理,嚟判斷表面嘅狀態(黑定白),然後輸出相應嘅訊號。

數據表詳情

製造商 SunFounder
零件編號 TCRT5000
邏輯/IO電壓 3.3 V 至 5 V
輸出電流(每通道) 20 mA
峰值電流(每通道) 50 mA
響應時間 < 10 ms
偵測範圍 1 cm 至 5 cm
封裝 帶排針嘅模組
備註/變體 常用於循線機械人

 

  • 確保電源供應正確(3.3 V 或 5 V)。
  • 保持感應器清潔,先至可以讀得準。
  • 用板上嘅可變電阻嚟調整靈敏度。
  • 檢查接線,避免浮空輸入。
  • 如有需要,用上拉電阻嚟確保讀數穩定。
  • 盡量減少環境紅外線光源嘅干擾。

接線指示

ESP32-20_line-tracking-wiring

要將循線模組接到ESP32,首先將模組嘅接地腳接到ESP32上面嘅一個接地腳。然後,將循線模組嘅V+腳接到合適嘅電源,即係ESP32上面嘅3.3 V或者5 V。訊號腳(標示為S)就要接到ESP32嘅GPIO 14。確保呢啲連接穩固先至繼續。

如果你有用蜂鳴器,就將佢嘅負極接到接地,正極接到ESP32嘅GPIO 27。呢個設定令到蜂鳴器喺循線模組偵測到黑色線嘅時候啟動。記得要再三檢查所有接線,確保同代碼入面指定嘅腳位一致。

ESP32-20_line-tracking-schemtaic

代碼示例同講解

下面係代碼入面一個關鍵嘅部分,用嚟設定循線模組。變數linePin定義咗連接循線模組嘅腳位。

const int linePin = 14;  // 循線模組腳位嘅編號

呢行將linePin初始化為腳位14,用嚟讀取線嘅狀態。lineState變數會儲存感應器嘅結果。

setup()函數入面,我哋將linePin嘅腳位模式設定為輸入。

void setup() {
  Serial.begin(115200);  
  pinMode(linePin, INPUT);
}

咁樣確保ESP32可以讀取循線模組嘅狀態。串口通訊以115200嘅波特率啟動,用嚟監察輸出。

最後,喺loop()函數入面,我哋持續讀取循線模組嘅狀態,並打印偵測到嘅顏色。

void loop() {
  lineState = digitalRead(linePin);
  if (lineState == HIGH) {
    Serial.println("Black");
    delay(100);
  } else {
    Serial.println("White");
    delay(100);
  }
}

呢個迴圈檢查lineState係咪HIGH(代表黑色)定LOW(代表白色),然後將結果打印到串口監察器。完整代碼會喺文章下面載入,方便你參考。

示範/預期效果

當接線完成同代碼上載之後,你應該會見到ESP32喺循線模組放喺黑色表面上面嘅時候打印「Black」,放喺白色表面上面嘅時候打印「White」。另外,當模組偵測到黑色線嘅時候,蜂鳴器會響,提供聲音提示。要小心可變電阻嘅設定,因為太敏感嘅設定可能會導致行為唔穩定(片入面10:00位置)。

影片時間戳

  • 00:00 開始
  • 2:22 線追蹤模組介紹
  • 5:10 文檔頁面
  • 9:20 接線說明
  • 10:49 Arduino 程式碼解釋
  • 13:36 喺 Arduino IDE 度選擇 ESP32 板同 COM 埠
  • 15:18 示範
  • 18:15 專案:帶蜂鳴器嘅線追蹤
  • 19:52 線追蹤同蜂鳴器嘅 Arduino 程式碼
  • 20:52 示範

圖片

ESP32-20_line-tracking-schemtaic
ESP32-20_line-tracking-schemtaic
ESP32-20_line-tracking-wiring
ESP32-20_line-tracking-wiring
line_track
line_track
819-ESP32 Tutorial 20/55- Arduino code line tracking
語言: C++
// Set pin number
const int linePin = 14;  // The number of the line track module pin

// Variable for storing the line status 
int lineState = 0;

void setup() {
  Serial.begin(115200);  
  // Initialize the line track module pin as an input
  pinMode(linePin, INPUT);
}

void loop() {
  // Read the state of the line track module
  lineState = digitalRead(linePin);

  if (lineState == HIGH) {
    Serial.println("Black");
    delay(100);
  }
  else {
    Serial.println("White");
    delay(100);
  }
}

資源與參考資料

文件📁

冇文件可用。