Lecția 30/31: Urmărirea liniei Car-8 de către mașina inteligentă din kit-ul Arduino SunFounder | Robojax
Acest ghid te îndrumă prin construirea unei mașini inteligente care urmărește o linie, folosind kit-ul Arduino 3-în-1 de la SunFounder.
Proiectul, demonstrat în videoclip, folosește un modul de urmărire a liniei cu infraroșu pentru a detecta o linie neagră pe o suprafață albă și pentru a controla două motoare pentru a menține mașina pe traseu. Acesta este un proiect fundamental de robotică care te învață despre citirea senzorilor, logica condițională și controlul motoarelor. Valoarea din lumea reală este imensă—este baza pentru vehiculele ghidate automat (AGV) din depozite, aspiratoarele robotice care urmăresc marginile camerelor și platformele educaționale pentru învățarea navigației autonome. Dincolo de construcția de bază, poți folosi acest concept pentru:

- Crearea unui robot simplu care poate naviga pe o cale prestabilită într-un labirint sau pe o pistă.
- Construirea unui cărucior automat de livrare pentru un birou sau laborator mic.
- Dezvoltarea unui robot care urmărește linia pentru un proiect școlar de știință sau o competiție.
- Prototiparea unui sistem pentru o bandă transportoare industrială care sortează obiectele pe baza poziției.
Hardware și componente
Miezul acestui proiect este modulul de urmărire a liniei, care folosește o pereche de emițător și receptor cu infraroșu (IR). Iată o defalcare a componentelor cheie:
- Modul de urmărire a liniei (TCRT5000): Acest senzor emite lumină infraroșie și măsoară intensitatea reflectată. Modulul include un comparator LM393 pentru a converti semnalul analogic într-o ieșire digitală HIGH sau LOW.
- Șasiu de mașină inteligentă cu motoare: Kit-ul SunFounder include un cadru de mașină cu două motoare cu angrenaje, care sunt controlate de Arduino pentru a direcționa vehiculul.
- Placă Arduino: „Creierul" operațiunii, care citește senzorul și trimite comenzi către motoare.
- Driver de motor (pe shield-ul mașinii): Acest circuit permite pinilor de putere redusă ai Arduino să controleze motoarele cu curent mai mare.
Ghid de conexiuni
Conexiunile pentru modulul de urmărire a liniei sunt simple. Videoclipul demonstrează conexiunile după cum urmează (în videoclip la 04:04):
- VCC al tracker-ului de linie (pinul din mijloc): Conectează-l la pinul 5V al Arduino.
- GND al tracker-ului de linie (pinul din stânga): Conectează-l la pinul GND al Arduino.
- OUT al tracker-ului de linie (pinul din dreapta): Conectează-l la pinul digital 2 al Arduino.
Motoarele sunt conectate la driver-ul de motor de pe shield-ul mașinii. În cod, motorul drept este controlat de pinii 5 și 6, iar motorul stâng de pinii 9 și 10, așa cum se arată în demonstrația video (în videoclip la 12:28).
Explicația codului
Codul este conceput pentru a citi semnalul digital de la tracker-ul de linie și pentru a controla motoarele în consecință. Iată părțile cheie configurabile de utilizator:
const int in1 = 5; // in1,2 pentru motorul drept
const int in2 = 6;
const int in3 = 9; // in3,4 pentru motorul stâng
const int in4 = 10;
const int lineTrack = 2;
- Pinii motoarelor (in1, in2, in3, in4): Aceste constante definesc care pini Arduino sunt conectați la driver-ul de motor. Dacă conexiunile tale diferă, va trebui să schimbi aceste valori pentru a se potrivi configurației tale.
- Pinul tracker-ului de linie (lineTrack): Acesta definește pinul digital conectat la ieșirea de semnal a senzorului. Codul citește acest pin pentru a determina dacă senzorul este deasupra unei suprafețe negre sau albe.
În bucla principală, poți ajusta variabila speed pentru a controla viteza de virare a mașinii. Valoarea variază de la 0 la 255, unde o valoare mai mare face mașina să vireze mai repede.
int speed = 150;//0 la 255
Logica este simplă: dacă senzorul citește HIGH (linie neagră), mașina virează la stânga; în caz contrar, virează la dreapta. Funcțiile personalizate moveLeft() și moveRight() controlează motoarele pentru a realiza acest lucru. De exemplu, pentru a vira la stânga, motorul drept se rotește în timp ce motorul stâng se oprește, pivotând mașina. Acest comportament este explicat în detaliu în videoclip (în videoclip la 10:39).
Poziționarea tracker-ului de linie pe linia neagră. De asemenea, ajustarea sensibilității.
Demonstrație live a proiectului
Videoclipul se încheie cu o demonstrație live a mașinii care urmărește linia (în videoclip la 13:13). Mașina este plasată pe o pistă neagră, iar senzorul este poziționat direct deasupra liniei. Pe măsură ce mașina se mișcă, senzorul detectează linia neagră și fundalul alb, trimițând semnale către motoare pentru a-și ajusta direcția. Demonstrația arată mașina finalizând cu succes un cerc complet, dovedind eficiența logicii simple de corecție stânga/dreapta.
Capitole
- [00:00] Introducere în urmărirea liniei
- [01:09] Cum funcționează modulul de urmărire a liniei
- [04:04] Conectarea modulului de urmărire a liniei
- [04:23] Testarea senzorului cu monitorul serial
- [07:27] Înțelegerea logicii de urmărire a liniei
- [09:08] Cod pentru mașina care urmărește linia
- [11:37] Demonstrație a mașinii care urmărește linia
- [13:13] Test live pe o pistă neagră
/*
this is code for the tutorial: Lesson 30/31: Car-8 Line Tracking by Smart Car from SunFounder Arduino Kit
YouTube video: https://www.youtube.com/watch?v=Cp2rD5RkYug
Get the code from: 📚⬇️ Download and resource page https://robojax.com/RJT613
www.robojax.com
*/
const int in1 = 5; // in1,2 for right motor
const int in2 = 6;
const int in3 = 9; // in3,4 for left motor
const int in4 = 10;
const int lineTrack = 2;
void setup() {
Serial.begin(9600);
//motor
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
//line track
pinMode(lineTrack, INPUT);
}
void loop() {
int speed = 150;//0 to 255
int lineColor = digitalRead(lineTrack); // 0:white 1:black
// Serial.println(lineColor); //print on the serial monitor
if (lineColor) {
Serial.print("Black ");
moveLeft(speed);
} else {
Serial.print("White ");
moveRight(speed);
}
}
void moveLeft(int speed) {
Serial.println("LEFT");
analogWrite(in1, 0);
analogWrite(in2, speed);
analogWrite(in3, 0);
analogWrite(in4, 0);
}
void moveRight(int speed) {
Serial.println("RIGHT");
analogWrite(in1, 0);
analogWrite(in2, 0);
analogWrite(in3, speed);
analogWrite(in4, 0);
}
Common Course Links
Common Course Files
Resurse și referințe
Încă nu sunt resurse.
Fișiere📁
Nu sunt disponibile fișiere.