Hur man bygger en enkel linje efter robot med Arduino

Att inleda ett robotprojekt kan vara både spännande och pedagogiskt, särskilt när du bygger något påtagligt som en linjen efter robot. Att använda en Arduino, en av de mest populära mikrokontrollerna, gör processen tillgänglig även för nybörjare. I den här guiden kommer vi att gå igenom stegen för att skapa en enkel linjeföljande robot som kan navigera i en väg autonomt.

Material du behöver

  • Arduino uno - hjärnan på din robot.
  • Motordrivrutin (L298N) - för att kontrollera motorerna.
  • DC -motorer med hjul - för rörelse.
  • Chassi - Ramen för att hålla alla komponenter.
  • Linjesensormodul (t.ex. QRE1113) - för att upptäcka linjen.
  • Batteri - Strömkälla för roboten.
  • Bulttrådar - för anslutningar.
  • Bakbord - För prototypanslutningar.
  • Skruvar, muttrar och bultar - för att montera chassit.

Steg 1: Montering av chassit

Chassit fungerar som grunden för din robot. Börja med att fästa DC -motorerna på chassit med skruvar och muttrar. Se till att motorerna är säkert fixerade för att förhindra någon rörelse under drift. Fäst hjulen på motoraxlarna och placera batteripaketet och Arduino på chassit. Se till att alla komponenter passar bra och är inom räckhåll för ledningar.

Steg 2: Koppla mot motorerna

Anslut DC -motorerna till motordrivrutinsmodulen (L298N). Motorföraren fungerar som ett gränssnitt mellan Arduino och motorerna, vilket gör att Arduino kan styra motorisk hastighet och riktning utan att överbelastas.


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

Steg 3: Ansluta linjesensorn

Linjesensorn upptäcker kontrasten mellan linjen och ytan. Vanligtvis har dessa sensorer infraröda lysdioder och fotodioder för att upptäcka reflekterande ytor. Anslut sensorns VCC och GND till Arduino's 5V respektive GND. Sensorns utgångsstift kommer att anslutas till Arduinos digitala eller analoga stift baserat på sensortypen.


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

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

Steg 4: Skriva Arduino -koden

Arduino -koden kommer att läsa sensorns värden och styra motorerna i enlighet därmed för att följa linjen. Nedan är ett enkelt exempel på hur koden kan se ut:


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

Steg 5: Slå upp roboten

När alla anslutningar har gjorts, anslut ditt batteripaket till Arduino och motordrivrutinen. Se till att polariteten är korrekt för att förhindra skador på komponenterna. Det är en bra praxis att testa anslutningarna med en multimeter innan du startar.

Testning och kalibrering

När du har startat, placera din robot på en yta med en klar linje (t.ex. svart tejp på vitt papper). Observera hur det beter sig och gör nödvändiga justeringar. Du kan behöva justera sensortröskeln eller justera hastigheten genom att ändra PWM -värdena i koden för att uppnå optimal prestanda.

Tips för framgång

  • Se till stabila anslutningar: Lösa ledningar kan orsaka intermittent beteende. Använd en brödskiva för prototyper och överväg lödanslutningar för en permanent installation.
  • Använd kvalitetssensorer: Tillförlitliga linjesensorer kan förbättra din robots prestanda avsevärt.
  • Kalibrera dina sensorer: Olika ytor och belysningsförhållanden kan påverka sensoravläsningarna. Kalibrera dina trösklar i enlighet därmed.
  • Optimera koden: Effektiv kod säkerställer snabba responstider. Se till att det inte finns några onödiga förseningar i din slinga.

Förbättringar och ytterligare lärande

När du framgångsrikt har byggt en grundläggande linjesföljande robot kan du överväga att lägga till fler funktioner för att förbättra dess kapacitet:

  • Korsningsdetektering: Gör det möjligt för din robot att fatta beslut vid korsningar.
  • Hastighetskontroll: Implementera dynamiska hastighetsjusteringar baserade på sensoringång.
  • Trådlös kontroll: Lägg till Bluetooth- eller Wi-Fi-moduler för att styra din robot på distans.
  • Hinder undvikande: Inkorporera ultraljudssensorer för att navigera kring hinder.

Att bygga en linjeföljande robot med Arduino är ett fantastiskt sätt att dyka in i världen av robotik och inbäddade system. Det lär dig grundläggande koncept som sensorintegration, motorisk kontroll och beslut i realtid. Med tålamod och experiment kan du utöka detta grundläggande projekt till en mer komplex och kapabel robot. Glad byggnad!

Lämna en kommentar

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.