Como construir uma linha simples seguindo o robô com Arduino

O embarque em um projeto de robótica pode ser emocionante e educacional, especialmente quando você está construindo algo tangível como um robô que segue a linha. A utilização de um Arduino, um dos microcontroladores mais populares, torna o processo acessível mesmo para iniciantes. Neste guia, levaremos você pelas etapas para criar um robô simples que possa seguir o caminho autonomamente.

Materiais que você precisará

  • Arduino Uno - O cérebro do seu robô.
  • Módulo de motorista do motor (L298N) - para controlar os motores.
  • Motores DC com rodas - para movimento.
  • Chassis - O quadro para manter todos os componentes.
  • Módulo de sensor de linha (por exemplo, qre1113) - Para detectar a linha.
  • Bateria - Fonte de energia para o robô.
  • Fios de jumper - para conexões.
  • Pão de pão - para conexões de prototipagem.
  • Parafusos, porcas e parafusos - para montar o chassi.

Etapa 1: montando o chassi

O chassi serve como base do seu robô. Comece conectando os motores CC ao chassi usando parafusos e porcas. Certifique -se de que os motores sejam fixos com segurança para evitar qualquer movimento durante a operação. Prenda as rodas nos eixos do motor e posicione a bateria e o Arduino no chassi. Certifique -se de que todos os componentes se encaixem bem e tenham fácil acesso para a fiação.

Etapa 2: Fiação dos motores

Conecte os motores CC ao módulo do motorista do motor (L298N). O motorista do motor atua como uma interface entre o Arduino e os motores, permitindo que o Arduino controlasse a velocidade e a direção do motor sem estar sobrecarregado.


// Connect motor A
const int motorA_EN = 9;
const int motorA_IN1 = 7;
const int motorA_IN2 = 8;

// Connect motor B
const int motorB_EN = 10;
const int motorB_IN3 = 5;
const int motorB_IN4 = 6;

void setup() {
  // Motor A
  pinMode(motorA_EN, OUTPUT);
  pinMode(motorA_IN1, OUTPUT);
  pinMode(motorA_IN2, OUTPUT);
  
  // Motor B
  pinMode(motorB_EN, OUTPUT);
  pinMode(motorB_IN3, OUTPUT);
  pinMode(motorB_IN4, OUTPUT);
}

Etapa 3: conectando o sensor de linha

O sensor de linha detecta o contraste entre a linha e a superfície. Normalmente, esses sensores têm LEDs e fotodiodos infravermelhos para detectar superfícies refletidas. Conecte o VCC e o GND do sensor ao 5V e GND do Arduino, respectivamente. Os pinos de saída do sensor serão conectados aos pinos digitais ou analógicos do Arduino com base no tipo de sensor.


// Line sensor pins
const int sensorLeft = A0;
const int sensorRight = A1;

void setup() {
  pinMode(sensorLeft, INPUT);
  pinMode(sensorRight, INPUT);
}

Etapa 4: escrevendo o código Arduino

O código Arduino lerá os valores do sensor e controlará os motores de acordo para seguir a linha. Abaixo está um exemplo simples de como o código pode ser:


// Define motor pins
const int motorA_EN = 9;
const int motorA_IN1 = 7;
const int motorA_IN2 = 8;
const int motorB_EN = 10;
const int motorB_IN3 = 5;
const int motorB_IN4 = 6;

// Define sensor pins
const int sensorLeft = A0;
const int sensorRight = A1;

// Threshold for line detection
const int threshold = 500;

void setup() {
  // Initialize motor pins
  pinMode(motorA_EN, OUTPUT);
  pinMode(motorA_IN1, OUTPUT);
  pinMode(motorA_IN2, OUTPUT);
  
  pinMode(motorB_EN, OUTPUT);
  pinMode(motorB_IN3, OUTPUT);
  pinMode(motorB_IN4, OUTPUT);
  
  // Initialize sensor pins
  pinMode(sensorLeft, INPUT);
  pinMode(sensorRight, INPUT);
  
  // Start serial communication for debugging
  Serial.begin(9600);
}

void loop() {
  int leftSensor = analogRead(sensorLeft);
  int rightSensor = analogRead(sensorRight);
  
  Serial.print("Left: ");
  Serial.print(leftSensor);
  Serial.print(" | Right: ");
  Serial.println(rightSensor);
  
  if (leftSensor > threshold && rightSensor > threshold) {
    // Move forward
    moveForward();
  }
  else if (leftSensor < threshold && rightSensor > threshold) {
    // Turn right
    turnRight();
  }
  else if (leftSensor > threshold && rightSensor < threshold) {
    // Turn left
    turnLeft();
  }
  else {
    // Stop
    stopMovement();
  }
}

void moveForward() {
  digitalWrite(motorA_IN1, HIGH);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, HIGH);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 200);
  analogWrite(motorB_EN, 200);
}

void turnRight() {
  digitalWrite(motorA_IN1, HIGH);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, LOW);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 200);
  analogWrite(motorB_EN, 0);
}

void turnLeft() {
  digitalWrite(motorA_IN1, LOW);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, HIGH);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 0);
  analogWrite(motorB_EN, 200);
}

void stopMovement() {
  digitalWrite(motorA_IN1, LOW);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, LOW);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 0);
  analogWrite(motorB_EN, 0);
}

Etapa 5: ligando o robô

Depois que todas as conexões forem feitas, conecte sua bateria ao Arduino e ao motorista do motor. Certifique -se de que a polaridade esteja correta para evitar danos aos componentes. É uma boa prática testar as conexões com um multímetro antes de ligar.

Teste e calibração

Depois de ligar, coloque seu robô em uma superfície com uma linha clara (por exemplo, fita preta em papel branco). Observe como ele se comporta e faça os ajustes necessários. Pode ser necessário ajustar o limite do sensor ou ajustar a velocidade alterando os valores do PWM no código para obter o melhor desempenho.

Dicas para o sucesso

  • Garanta conexões estáveis: Os fios soltos podem causar comportamento intermitente. Use uma placa de ensaio para prototipagem e considere as conexões de solda para uma configuração permanente.
  • Use sensores de qualidade: Os sensores de linha confiáveis ​​podem melhorar significativamente o desempenho do seu robô.
  • Calibre seus sensores: Diferentes superfícies e condições de iluminação podem afetar as leituras dos sensores. Calibre seus limiares de acordo.
  • Otimizar o código: O código eficiente garante tempos de resposta rápidos. Verifique se não há atrasos desnecessários em seu loop.

Aprimoramentos e aprendizado adicional

Depois de criar com sucesso um robô básico de acompanhamento de linha, considere adicionar mais recursos para aprimorar seus recursos:

  • Detecção de interseção: Ative seu robô para tomar decisões nos cruzamentos.
  • Controle de velocidade: Implementar ajustes dinâmicos de velocidade com base na entrada do sensor.
  • Controle sem fio: Adicione os módulos Bluetooth ou Wi-Fi para controlar seu robô remotamente.
  • Evitação de obstáculos: Incorpore sensores ultrassônicos para navegar em torno de obstáculos.

Construir um robô que segue a linha com Arduino é uma maneira fantástica de mergulhar no mundo da robótica e sistemas incorporados. Ensina conceitos fundamentais, como integração de sensores, controle motor e tomada de decisão em tempo real. Com paciência e experimentação, você pode expandir esse projeto básico para um robô mais complexo e capaz. Feliz edifício!

Deixe um comentário

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.