Xe dò line với Arduino

Xe dò line với Arduino

Bạn đã bao giờ tưởng tượng tạo ra một chiếc xe tự động dựa trên tín hiệu từ bề mặt sáng và tối để nó có thể tự vạch đường đi chưa? Thật thú vị và hấp dẫn phải không? Hôm nay chúng ta sẽ cùng nhau khám phá cách tự tạo một chiếc xe dò line chỉ bằng Arduino và một số linh kiện đơn giản khác.

Những linh kiện bạn cần

  • 1 board Arduino Uno
  • 2 Module thu phát hồng ngoại IR
  • 1 Khung robot
  • 1 Motor Driver IC – L293D
  • 2 bộ bánh xe gắn kèm motor
  • Nguồn cấp từ pin 9v và jack kết nối với Arduino

Cách hoạt động

Chiếc xe sẽ dựa vào tín hiệu phát ra và hồi tiếp từ bộ thu phát hồng ngoại IR để tự động chạy theo vạch mà chúng ta đã kẻ sẵn trên đoạn đường. Driver motor L293D sẽ điều khiển 2 động cơ DC 5v để động cơ quay thuận và nghịch, giúp chiếc xe có thể quay trái, phải hoặc chỉ có 1 bên quay trong khi bên còn lại dừng. Bộ thu và phát tín hiệu hồng ngoại sẽ giúp xe nhận biết và hướng đi theo vạch.

Các bước để tạo chiếc xe dò line

Bước 1: Kết nối linh kiện

Sơ đồ toàn mạch

Bước 2: Hoạt động của bộ thu phát hồng ngoại

Sơ đồ hoạt động của IR hồng ngoại

Chiếc xe sẽ phát ra bước sóng hồng ngoại và phản xạ lại từ bề mặt. Những nơi không có màu đen (vạch) sẽ có phản hồi, còn trên vạch thì không. Nguyên lý này sẽ giúp xe dẫn hướng đi đúng theo vạch đã định.

Bước 3: Chương trình Arduino

int mot1=9;
int mot2=6;
int mot3=5;
int mot4=3;

int left=13;
int right=12;

int Left=0;
int Right=0;

void LEFT (void);
void RIGHT (void);
void STOP (void);

void setup()
{
  pinMode(mot1,OUTPUT);
  pinMode(mot2,OUTPUT);
  pinMode(mot3,OUTPUT);
  pinMode(mot4,OUTPUT);

  pinMode(left,INPUT);
  pinMode(right,INPUT);

  digitalWrite(left,HIGH);
  digitalWrite(right,HIGH);
}

void loop()
{
  analogWrite(mot1,255);
  analogWrite(mot2,0);
  analogWrite(mot3,255);
  analogWrite(mot4,0);

  while(1)
  {
    Left=digitalRead(left);
    Right=digitalRead(right);

    if((Left==0 && Right==1)==1)
      LEFT();
    else if((Right==0 && Left==1)==1)
      RIGHT();
  }
}

void LEFT (void)
{
  analogWrite(mot3,0);
  analogWrite(mot4,30);

  while(Left==0)
  {
    Left=digitalRead(left);
    Right=digitalRead(right);
    if(Right==0)
    {
      int lprev=Left;
      int rprev=Right;
      STOP();

      while(((lprev==Left)&&(rprev==Right))==1)
      {
        Left=digitalRead(left);
        Right=digitalRead(right);
      }
    }
    analogWrite(mot1,255);
    analogWrite(mot2,0);
  }
  analogWrite(mot3,255);
  analogWrite(mot4,0);
}

void RIGHT (void)
{
  analogWrite(mot1,0);
  analogWrite(mot2,30);

  while(Right==0)
  {
    Left=digitalRead(left);
    Right=digitalRead(right);
    if(Left==0)
    {
      int lprev=Left;
      int rprev=Right;
      STOP();

      while(((lprev==Left)&&(rprev==Right))==1)
      {
        Left=digitalRead(left);
        Right=digitalRead(right);
      }
    }
    analogWrite(mot3,255);
    analogWrite(mot4,0);
  }
  analogWrite(mot1,255);
  analogWrite(mot2,0);
}

void STOP (void)
{
  analogWrite(mot1,0);
  analogWrite(mot2,0);
  analogWrite(mot3,0);
  analogWrite(mot4,0);
}

Kết luận

Việc tạo ra một chiếc xe dò line với Arduino không chỉ vui mà còn giúp bạn hiểu rõ hơn về cách các linh kiện hoạt động cùng nhau để thực hiện một nhiệm vụ đơn giản như chạy theo đường màu đen. Hy vọng rằng bài viết này đã truyền đạt đầy đủ thông tin và giúp bạn có thể tự tạo một chiếc xe dò line thú vị. Chúc bạn thành công!

FEATURED TOPIC

hihi