Soek Kode

Les 30/31: Motorlyn-opsporing deur Slimmotor vanaf SunFounder Arduino-stel | Robojax

Les 30/31: Motorlyn-opsporing deur Slimmotor vanaf SunFounder Arduino-stel | Robojax

Hierdie gids neem jou deur die bou van 'n lynvolgende slimkar met die SunFounder 3-in-1 Arduino-stel.

les30-lynvolging-lyn-1

 Die projek, soos in die video gedemonstreer, gebruik 'n infrarooi lynvolgingmodule om 'n swart lyn op 'n wit oppervlak te bespeur en twee motors te beheer om die kar op die baan te hou. Dit is 'n fundamentele robotika-projek wat jou leer oor sensorlesing, voorwaardelike logika en motorbeheer. Die werklike waarde is enorm—dit is die basis vir outomatiese geleide voertuie (AGV's) in pakhuise, robotiese stofsuiers wat kamerrande volg, en opvoedkundige platforms vir die leer van outonome navigasie. Behalwe die basiese bou, kan jy hierdie konsep gebruik vir:

  • Die skep van 'n eenvoudige robot wat 'n voorafbepaalde pad in 'n doolhof of op 'n baan kan navigeer.
  • Die bou van 'n outomatiese afleweringskarretjie vir 'n klein kantoor of laboratorium.
  • Die ontwikkeling van 'n lynvolgende robot vir 'n skoolwetenskapprojek of kompetisie.
  • Die prototipering van 'n stelsel vir 'n industriële vervoerband wat items op grond van posisie sorteer.

Hardeware en Komponente

Die kern van hierdie projek is die lynvolgingmodule, wat 'n infrarooi (IR) sender- en ontvangerpaar gebruik. Hier is 'n uiteensetting van die sleutelkomponente:

  • Lynvolgingmodule (TCRT5000): Hierdie sensor stuur infrarooi lig uit en meet die gereflekteerde intensiteit. Die module sluit 'n LM393-vergelyker in om die analoog sein na 'n digitale HOË of LAE uitset om te skakel.
  • Slimkar-onderstel met Motors: Die SunFounder-stel sluit 'n karraam met twee ratmotors in, wat deur die Arduino beheer word om die voertuig te stuur.
  • Arduino-bord: Die "brein" van die operasie, wat die sensor lees en opdragte na die motors stuur.
  • Motorbestuurder (op die kar se skild): Hierdie stroombaan stel die Arduino se lae-krag penne in staat om die hoër-stroom motors te beheer.
les30-lynvolging-bedrading

Bedradingsgids

Die bedrading vir die lynvolgingmodule is eenvoudig. Die video demonstreer die verbindings soos volg (in video by 04:04):

  • Lynvolger VCC (middelpen): Verbind aan die Arduino se 5V-pen.
  • Lynvolger GND (linkerpen): Verbind aan die Arduino se GND-pen.
  • Lynvolger OUT (regterpen): Verbind aan die Arduino se digitale pen 2.

Die motors is verbind aan die motorbestuurder op die kar se skild. In die kode word die regtermotor deur penne 5 en 6 beheer, en die linkermotor deur penne 9 en 10, soos in die videodemonstrasie getoon (in video by 12:28).

les30-lynvolging-hoe-lyn

Kodeverduideliking

Die kode is ontwerp om die digitale sein van die lynvolger te lees en die motors dienooreenkomstig te beheer. Hier is die sleutel gebruikerskonfigureerbare dele:

const int in1 = 5; // in1,2 vir regtermotor
const int in2 = 6;

const int in3 = 9; // in3,4 vir linkermotor
const int in4 = 10;

const int lineTrack = 2;
  • Motorpennne (in1, in2, in3, in4): Hierdie konstantes definieer watter Arduino-penne aan die motorbestuurder gekoppel is. As jou bedrading verskil, sal jy hierdie waardes moet verander om by jou opstelling te pas.
  • Lynvolgerpen (lineTrack): Dit definieer die digitale pen wat aan die sensor se seinuitset gekoppel is. Die kode lees hierdie pen om te bepaal of die sensor oor 'n swart of wit oppervlak is.

In die hoof lus kan jy die speed-veranderlike aanpas om die kar se draaispoed te beheer. Die waarde wissel van 0 tot 255, waar 'n hoër waarde die kar vinniger laat draai.

int speed = 150;//0 tot 255

Die logika is eenvoudig: as die sensor HOË lees (swart lyn), draai die kar links; andersins draai dit regs. Die aangepaste funksies moveLeft() en moveRight() beheer die motors om dit te bereik. Byvoorbeeld, om links te draai, spin die regtermotor terwyl die linkermotor stop, wat die kar laat draai. Hierdie gedrag word in detail in die video verduidelik (in video by 10:39).

les30-lynvolging-sensor-op-lyn
Plaas die lynvolger op die swart lyn. Ook die aanpassing van die sensitiwiteit. 

Lewende Projekdemonstrasie

Die video sluit af met 'n lewendige demonstrasie van die lynvolgende kar (in video by 13:13). Die kar word op 'n swart baan geplaas, en die sensor word direk oor die lyn geposisioneer. Soos die kar beweeg, bespeur die sensor die swart lyn en die wit agtergrond, en stuur seine na die motors om sy rigting aan te pas. Die demonstrasie wys die kar wat suksesvol 'n volle sirkel voltooi, wat die doeltreffendheid van die eenvoudige links/reghs-korreksielogika bewys.

Hoofstukke

  • [00:00] Inleiding tot Lynvolging
  • [01:09] Hoe die Lynvolgingmodule Werk
  • [04:04] Bedrading van die Lynvolgingmodule
  • [04:23] Toets van die Sensor met die Seriële Monitor
  • [07:27] Verstaan die Lynvolginglogika
  • [09:08] Kode vir die Lynvolgende Motor
  • [11:37] Demonstrasie van die Lynvolgende Motor
  • [13:13] Lewendige Toets op 'n Swart Baan

Beelde

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

Hulpbronne en verwysings

Geen hulpbronne nog.

Lêers📁

Geen lêers beskikbaar.