Search Code

Les 30/31: Lijnvolgen met Car-8 Smart Car van de SunFounder Arduino Kit | Robojax

Les 30/31: Lijnvolgen met Car-8 Smart Car van de SunFounder Arduino Kit | Robojax

Deze handleiding leidt je door het bouwen van een lijnvolgende slimme auto met behulp van de SunFounder 3-in-1 Arduino-kit.

les30-lijnvolgen-lijn-1

 Het project, gedemonstreerd in de video, gebruikt een infrarood lijnvolgende module om een zwarte lijn op een wit oppervlak te detecteren en twee motoren aan te sturen om de auto op koers te houden. Dit is een fundamenteel robotica-project dat je leert over sensoruitlezing, conditionele logica en motorregeling. De praktische waarde is enorm—het is de basis voor automatisch geleide voertuigen (AGV's) in magazijnen, robotische stofzuigers die langs kamerranden volgen, en educatieve platforms voor het leren over autonome navigatie. Naast de basisbouw kun je dit concept gebruiken voor:

  • Het maken van een eenvoudige robot die een vooraf gedefinieerd pad in een doolhof of op een baan kan navigeren.
  • Het bouwen van een geautomatiseerde bezorgkar voor een klein kantoor of laboratorium.
  • Het ontwikkelen van een lijnvolgende robot voor een schoolwetenschapsproject of wedstrijd.
  • Het prototypen van een systeem voor een industriële transportband die items sorteert op basis van positie.

Hardware en componenten

De kern van dit project is de lijnvolgende module, die een infrarood (IR) zender- en ontvangerpaar gebruikt. Hier is een uitsplitsing van de belangrijkste componenten:

  • Lijnvolgende module (TCRT5000): Deze sensor zendt infrarood licht uit en meet de gereflecteerde intensiteit. De module bevat een LM393-comparator om het analoge signaal om te zetten naar een digitale HOOG of LAAG uitvoer.
  • Smart car-chassis met motoren: De SunFounder-kit bevat een autoframe met twee vertragingsmotoren, die door de Arduino worden aangestuurd om het voertuig te sturen.
  • Arduino-bord: Het "brein" van de operatie, dat de sensor uitleest en commando's naar de motoren stuurt.
  • Motordriver (op het shield van de auto): Dit circuit stelt de laagvermogenpinnen van de Arduino in staat om de hogere-stroommotoren aan te sturen.
les30-lijnvolgen-bedrading

Bedradingsgids

De bedrading voor de lijnvolgende module is eenvoudig. De video demonstreert de verbindingen als volgt (in video op 04:04):

  • Lijnvolger VCC (middelste pin): Verbind met de 5V-pin van de Arduino.
  • Lijnvolger GND (linker pin): Verbind met de GND-pin van de Arduino.
  • Lijnvolger OUT (rechter pin): Verbind met digitale pin 2 van de Arduino.

De motoren zijn verbonden met de motordriver op het shield van de auto. In de code wordt de rechter motor aangestuurd door pinnen 5 en 6, en de linker motor door pinnen 9 en 10, zoals getoond in de videodemonstratie (in video op 12:28).

les30-lijnvolgen-hoe-lijn

Code-uitleg

De code is ontworpen om het digitale signaal van de lijnvolger te lezen en de motoren dienovereenkomstig aan te sturen. Hier zijn de belangrijkste door de gebruiker configureerbare delen:

const int in1 = 5; // in1,2 voor rechter motor
const int in2 = 6;

const int in3 = 9; // in3,4 voor linker motor
const int in4 = 10;

const int lineTrack = 2;
  • Motorpinnen (in1, in2, in3, in4): Deze constanten definiëren welke Arduino-pinnen verbonden zijn met de motordriver. Als je bedrading verschilt, moet je deze waarden wijzigen zodat ze overeenkomen met jouw opstelling.
  • Lijnvolger-pin (lineTrack): Dit definieert de digitale pin die verbonden is met de signaaluitvoer van de sensor. De code leest deze pin om te bepalen of de sensor zich boven een zwart of wit oppervlak bevindt.

In de hoofdloop kun je de variabele speed aanpassen om de draaisnelheid van de auto te regelen. De waarde varieert van 0 tot 255, waarbij een hogere waarde de auto sneller laat draaien.

int speed = 150;//0 tot 255

De logica is eenvoudig: als de sensor HOOG leest (zwarte lijn), draait de auto naar links; anders draait hij naar rechts. De aangepaste functies moveLeft() en moveRight() sturen de motoren aan om dit te bereiken. Om bijvoorbeeld naar links te draaien, draait de rechter motor terwijl de linker motor stopt, waardoor de auto draait. Dit gedrag wordt in detail uitgelegd in de video (in video op 10:39).

les30-lijnvolgen-sensor-op-lijn
Positionering van de lijnvolger op de zwarte lijn. Ook het aanpassen van de gevoeligheid. 

Live projectdemonstratie

De video wordt afgesloten met een live demonstratie van de lijnvolgende auto (in video op 13:13). De auto wordt op een zwarte baan geplaatst en de sensor wordt direct boven de lijn gepositioneerd. Terwijl de auto beweegt, detecteert de sensor de zwarte lijn en de witte achtergrond, en stuurt signalen naar de motoren om de richting aan te passen. De demonstratie toont dat de auto met succes een volledige cirkel voltooit, wat de effectiviteit van de eenvoudige links/rechts-correctielogica bewijst.

Hoofdstukken

  • [00:00] Inleiding tot lijntracking
  • [01:09] Hoe de lijntrackingmodule werkt
  • [04:04] Aansluiten van de lijntrackingmodule
  • [04:23] De sensor testen met de seriële monitor
  • [07:27] De logica van het lijntraceren begrijpen
  • [09:08] Code voor de lijntracerende auto
  • [11:37] Demonstratie van de lijntracerende auto
  • [13:13] Live test op een zwarte baan

Afbeeldingen

lesson30-line-tracking-wiring
lesson30-line-tracking-wiring
lesson30-line-tracking-line-1
lesson30-line-tracking-line-1
lesson30-line-tracking-how-line
lesson30-line-tracking-how-line
lesson30-line-tracking-sensor-on-line
lesson30-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);
}

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Geen bestanden beschikbaar.