Pretraži kod

Lekcija 30/31: Praćenje linije Car-8 pametnim automobilom iz SunFounder Arduino kita | Robojax

Lekcija 30/31: Praćenje linije Car-8 pametnim automobilom iz SunFounder Arduino kita | Robojax

Ovaj vodič vas provodi kroz izradu pametnog automobila koji prati liniju koristeći SunFounder 3-u-1 Arduino komplet.

lesson30-line-tracking-line-1

 Projekat, prikazan u videu, koristi infracrveni modul za praćenje linije kako bi detektovao crnu liniju na bijeloj površini i kontrolisao dva motora kako bi automobil ostao na stazi. Ovo je osnovni robotički projekat koji vas uči o čitanju senzora, uslovnoj logici i kontroli motora. Vrijednost u stvarnom svijetu je ogromna—to je osnova za automatski vođena vozila (AGV) u skladištima, robotske usisivače koji prate ivice prostorija i obrazovne platforme za učenje autonomne navigacije. Osim osnovne izrade, ovaj koncept možete koristiti za:

  • Kreiranje jednostavnog robota koji može navigirati unaprijed definisanom putanjom u lavirintu ili na stazi.
  • Izgradnju automatizovanih kolica za dostavu u maloj kancelariji ili laboratoriji.
  • Razvoj robota koji prati liniju za školski naučni projekat ili takmičenje.
  • Izradu prototipa sistema za industrijsku transportnu traku koja sortira predmete na osnovu pozicije.

Hardver i komponente

Srce ovog projekta je modul za praćenje linije, koji koristi par infracrvenog (IR) predajnika i prijemnika. Evo pregleda ključnih komponenti:

  • Modul za praćenje linije (TCRT5000): Ovaj senzor emituje infracrveno svjetlo i mjeri reflektovani intenzitet. Modul uključuje LM393 komparator za pretvaranje analognog signala u digitalni HIGH ili LOW izlaz.
  • Šasija pametnog automobila s motorima: SunFounder komplet uključuje okvir automobila s dva zupčasta motora, koje Arduino kontroliše za upravljanje vozilom.
  • Arduino ploča: "Mozak" operacije, čita senzor i šalje komande motorima.
  • Draver motora (na štitu automobila): Ovo kolo omogućava Arduino pinovima male snage da kontrolišu motore veće struje.
lesson30-line-tracking-wiring

Vodič za povezivanje

Povezivanje modula za praćenje linije je jednostavno. Video prikazuje veze na sljedeći način (u videu na 04:04):

  • Line Tracker VCC (srednji pin): Spojite na Arduino 5V pin.
  • Line Tracker GND (lijevi pin): Spojite na Arduino GND pin.
  • Line Tracker OUT (desni pin): Spojite na Arduino digitalni pin 2.

Motori su povezani na draver motora na štitu automobila. U kodu, desni motor kontrolišu pinovi 5 i 6, a lijevi motor pinovi 9 i 10, kao što je prikazano u video demonstraciji (u videu na 12:28).

lesson30-line-tracking-how-line

Objašnjenje koda

Kod je dizajniran da čita digitalni signal s tragača linije i u skladu s tim kontroliše motore. Evo ključnih dijelova koje korisnik može konfigurisati:

const int in1 = 5; // in1,2 za desni motor
const int in2 = 6;

const int in3 = 9; // in3,4 za lijevi motor
const int in4 = 10;

const int lineTrack = 2;
  • Pinovi motora (in1, in2, in3, in4): Ove konstante definišu koji Arduino pinovi su povezani na draver motora. Ako se vaše povezivanje razlikuje, morat ćete promijeniti ove vrijednosti kako bi odgovarale vašoj postavci.
  • Pin tragača linije (lineTrack): Ovo definiše digitalni pin povezan na izlaz signala senzora. Kod čita ovaj pin kako bi odredio da li je senzor iznad crne ili bijele površine.

U glavnoj petlji možete podesiti varijablu speed za kontrolu brzine okretanja automobila. Vrijednost se kreće od 0 do 255, gdje veća vrijednost čini da se automobil brže okreće.

int speed = 150;//0 do 255

Logika je jednostavna: ako senzor očita HIGH (crna linija), automobil se okreće lijevo; u suprotnom, okreće se desno. Prilagođene funkcije moveLeft() i moveRight() kontrolišu motore kako bi to postigle. Na primjer, za okretanje lijevo, desni motor se vrti dok lijevi motor stoji, okrećući automobil. Ovo ponašanje je detaljno objašnjeno u videu (u videu na 10:39).

lesson30-line-tracking-sensor-on-line
Pozicioniranje tragača linije na crnoj liniji. Također podešavanje osjetljivosti. 

Demonstracija projekta uživo

Video se završava demonstracijom uživo automobila koji prati liniju (u videu na 13:13). Automobil se postavlja na crnu stazu, a senzor se pozicionira direktno iznad linije. Dok se automobil kreće, senzor detektuje crnu liniju i bijelu pozadinu, šaljući signale motorima za prilagođavanje smjera. Demonstracija pokazuje automobil kako uspješno završava pun krug, dokazujući efikasnost jednostavne logike korekcije lijevo/desno.

Poglavlja

  • [00:00] Uvod u praćenje linije
  • [01:09] Kako radi modul za praćenje linije
  • [04:04] Povezivanje modula za praćenje linije
  • [04:23] Testiranje senzora pomoću serijskog monitora
  • [07:27] Razumijevanje logike praćenja linije
  • [09:08] Kod za automobil koji prati liniju
  • [11:37] Demonstracija automobila koji prati liniju
  • [13:13] Test uživo na crnoj stazi

Slike

Lesson 30 line tracking wiring
Lesson 30 line tracking wiring
Lesson 30 line tracking line 1
Lesson 30 line tracking line 1
Lesson 30 line tracking how line
Lesson 30 line tracking how line
Lesson 30 line tracking sensor on line
Lesson 30 line tracking sensor on line
889-Lesson 30/31: Car-8 Line Tracking by Smart Car from SunFounder Arduino Kit
Jezik: C++

/*
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);
}

Resursi i reference

Još nema resursa.

Datoteke📁

Nema dostupnih datoteka.