Search Code

Tutorial ESP32 20/55 - Modul de urmărire a liniei | Kitul de învățare IoT ESP32 de la SunFounder

Tutorial ESP32 20/55 - Modul de urmărire a liniei | Kitul de învățare IoT ESP32 de la SunFounder

În acest tutorial, vom învăța cum să folosim modulul ESP32 împreună cu modulul de urmărire a liniei pentru a detecta liniile negre pe o suprafață albă. Această capacitate este esențială pentru aplicații precum mașinile robotice care trebuie să urmeze un traseu prestabilit. În plus, vom integra un buzzer care se activează atunci când modulul de urmărire a liniei detectează linia neagră, îmbunătățind mecanismul de feedback al proiectului nostru. Pentru clarificări suplimentare, vă rugăm să consultați videoclipul (în videoclip la 0:00).

line_track

Hardware Explicat

Componentele principale ale acestui proiect includ modulul ESP32, un modul de urmărire a liniei și un buzzer. Modulul ESP32 este un microcontroler puternic, cu capacități integrate de Wi-Fi și Bluetooth, permițând o gamă largă de aplicații IoT. Modulul de urmărire a liniei utilizează un emițător infraroșu și un fotorezistor pentru a detecta diferențele de culoare ale suprafeței pe baza intensității luminii infraroșii reflectate.

Modulul de urmărire a liniei funcționează prin emiterea de lumină infraroșie care se reflectă de pe suprafața de sub el. O suprafață mai închisă, precum cea neagră, absoarbe mai multă lumină, rezultând o intensitate reflectată mai scăzută, în timp ce o suprafață mai deschisă, precum cea albă, reflectă mai multă lumină, producând o intensitate mai mare. Această diferență este procesată de un amplificator operațional pentru a determina starea suprafeței (neagră sau albă) și pentru a emite un semnal corespunzător.

Detalii din Fișa Tehnică

Producător SunFounder
Număr de piesă TCRT5000
Tensiune logică/IO 3,3 V până la 5 V
Curent de ieșire (pe canal) 20 mA
Curent de vârf (pe canal) 50 mA
Timp de răspuns < 10 ms
Interval de detecție 1 cm până la 5 cm
Pachet Modul cu pini de tip header
Note / variante Utilizat frecvent în roboții de urmărire a liniei

 

  • Asigurați o alimentare adecvată (3,3 V sau 5 V).
  • Păstrați senzorul curat pentru citiri precise.
  • Reglați sensibilitatea folosind potențiometrul integrat.
  • Verificați conexiunile pentru a evita intrările flotante.
  • Utilizați rezistențe de pull-up dacă este necesar pentru citiri stabile.
  • Minimizați interferența din sursele ambientale de infraroșu.

Instrucțiuni de Cablare

ESP32-20_line-tracking-wiring

Pentru a cabla modulul de urmărire a liniei la ESP32, începeți prin conectarea pinului de masă al modulului la un pin de masă de pe ESP32. Apoi, conectați pinul V+ al modulului de urmărire a liniei la o sursă de alimentare adecvată, fie 3,3 V, fie 5 V de pe ESP32. Pinul de semnal (etichetat cu S) ar trebui conectat la GPIO 14 de pe ESP32. Asigurați-vă că aceste conexiuni sunt sigure înainte de a continua.

Dacă utilizați un buzzer, conectați terminalul său negativ la masă și terminalul pozitiv la GPIO 27 de pe ESP32. Această configurare permite buzzerului să se activeze atunci când modulul de urmărire a liniei detectează o linie neagră. Asigurați-vă că verificați toate conexiunile pentru a vă asigura că se potrivesc cu pinii specificați în cod.

ESP32-20_line-tracking-schemtaic

Exemple de Cod și Explicații

Mai jos este un extras cheie din codul care configurează modulul de urmărire a liniei. Variabila linePin este definită pentru a reprezenta pinul conectat la modulul de urmărire a liniei.

const int linePin = 14;  // Numărul pinului modulului de urmărire a liniei

Această linie inițializează linePin ca pinul 14, care va fi folosit pentru a citi starea liniei. Variabila lineState va reține rezultatul de la senzor.

În funcția setup(), configurăm modul pinului pentru linePin ca intrare.

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

Aceasta asigură că ESP32 poate citi starea modulului de urmărire a liniei. Comunicarea serială este inițiată la o viteză de transmisie de 115200 pentru monitorizarea ieșirii.

În final, în funcția loop(), citim continuu starea modulului de urmărire a liniei și afișăm culoarea detectată.

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

Această buclă verifică dacă lineState este HIGH (indicând negru) sau LOW (indicând alb) și afișează rezultatul în monitorul serial. Codul complet este încărcat mai jos, sub articol, pentru referință.

Demonstrație / Ce să Vă Așteptați

Odată ce cablarea este finalizată și codul este încărcat, ar trebui să observați ESP32 afișând „Negru” atunci când modulul de urmărire a liniei este deasupra unei suprafețe negre și „Alb” atunci când este deasupra unei suprafețe albe. În plus, buzzerul va suna atunci când modulul detectează linia neagră, oferind o alertă sonoră. Fiți atenți la setările potențiometrului, deoarece setările excesiv de sensibile pot duce la un comportament neregulat (în videoclip la 10:00).

Marcaje Temporale din Videoclip

  • 00:00 Început
  • 2:22 Introducere în modulul de urmărire a liniei
  • 5:10 Pagina de documentație
  • 9:20 Conexiunile explicate
  • 10:49 Codul Arduino explicat
  • 13:36 Selectarea plăcii ESP32 și a portului COM în Arduino IDE
  • 15:18 Demonstrație
  • 18:15 Proiect: Urmărirea liniei cu sonerie
  • 19:52 Codul Arduino pentru urmărirea liniei și sonerie
  • 20:52 Demonstrație

Imagini

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
Limba: 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);
  }
}

Resurse și referințe

Fișiere📁

Nu sunt disponibile fișiere.