Creșterea unui proiect de robotică poate fi atât interesant, cât și educațional, mai ales atunci când construiți ceva tangibil, cum ar fi un robot care urmărește linia. Utilizarea unui Arduino, unul dintre cele mai populare microcontrolere, face ca procesul să fie accesibil chiar și pentru începători. În acest ghid, vă vom parcurge pașii pentru a crea un robot simplu care urmărește linia care poate naviga într-o cale autonom.
Materiale de care aveți nevoie
- Arduino Uno - Creierul robotului tău.
- Modul de șofer cu motor (L298N) - Pentru a controla motoarele.
- Motor DC cu roți - Pentru mișcare.
- Şasiu - cadrul pentru a ține toate componentele.
- Modul senzor de linie (de exemplu, QRE1113) - Pentru a detecta linia.
- Pachet de baterii - Sursa de putere pentru robot.
- Fire de jumper - Pentru conexiuni.
- Bord - Pentru conexiuni de prototipare.
- Șuruburi, piulițe și șuruburi - Pentru a asambla șasiul.
Pasul 1: asamblarea șasiului
Șasiul servește ca fundament al robotului tău. Începeți prin atașarea motoarelor DC la șasiu folosind șuruburi și piulițe. Asigurați -vă că motoarele sunt fixate în siguranță pentru a preveni orice mișcare în timpul funcționării. Atașați roțile la arborele motorului și poziționați bateria și Arduino pe șasiu. Asigurați -vă că toate componentele se potrivesc bine și sunt la îndemână pentru cablare.
Pasul 2: Cablarea motoarelor
Conectați motoarele DC la modulul șoferului motorului (L298N). Șoferul motorului acționează ca o interfață între Arduino și motoare, permițând lui Arduino să controleze viteza și direcția motorului fără a fi supraîncărcat.
// 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);
}
Pasul 3: Conectarea senzorului de linie
Senzorul de linie detectează contrastul dintre linie și suprafață. De obicei, acești senzori au LED -uri și fotodiode infraroșii pentru a detecta suprafețele reflectate. Conectați VCC -ul senzorului și GND la 5V și respectiv GND al Arduino. Pinii de ieșire ale senzorului vor fi conectați la pinii digitali sau analogici ai lui Arduino pe baza tipului de senzor.
// Line sensor pins
const int sensorLeft = A0;
const int sensorRight = A1;
void setup() {
pinMode(sensorLeft, INPUT);
pinMode(sensorRight, INPUT);
}
Pasul 4: Scrierea codului Arduino
Codul Arduino va citi valorile senzorului și va controla motoarele în consecință pentru a urma linia. Mai jos este un exemplu simplu al modului în care ar putea arăta codul:
// 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);
}
Pasul 5: Alimentarea robotului
Odată ce se fac toate conexiunile, conectați -vă pachetul de baterii la Arduino și șoferul motorului. Asigurați -vă că polaritatea este corectă pentru a preveni deteriorarea componentelor. Este o practică bună să testați conexiunile cu un multimetru înainte de a se alimenta.
Testare și calibrare
După alimentarea în sus, așezați robotul pe o suprafață cu o linie clară (de exemplu, bandă neagră pe hârtie albă). Observați cum se comportă și faceți ajustările necesare. Este posibil să fie nevoie să reglați pragul senzorului sau să reglați viteza modificând valorile PWM din cod pentru a obține performanțe optime.
Sfaturi pentru succes
- Asigurați conexiuni stabile: Firele libere pot provoca un comportament intermitent. Utilizați o bordură pentru prototipare și luați în considerare conexiunile de lipit pentru o configurare permanentă.
- Utilizați senzori de calitate: Senzorii de linie de încredere pot îmbunătăți semnificativ performanța robotului tău.
- Calibrează -ți senzorii: Diferite suprafețe și condiții de iluminare pot afecta citirile senzorilor. Calibrează -ți pragurile în consecință.
- Optimizați codul: Codul eficient asigură timpi de răspuns rapid. Asigurați -vă că nu există întârzieri inutile în bucla dvs.
Îmbunătățiri și învățări ulterioare
După ce ați construit cu succes un robot de bază care urmărește linia, luați în considerare adăugarea mai multor caracteristici pentru a-și îmbunătăți capacitățile:
- Detectarea intersecției: Permiteți -vă robotului să ia decizii la intersecții.
- Controlul vitezei: Implementați ajustări dinamice ale vitezei pe baza intrării senzorului.
- Control wireless: Adăugați module Bluetooth sau Wi-Fi pentru a vă controla robotul de la distanță.
- Evitarea obstacolelor: Încorporați senzori cu ultrasunete pentru a naviga în jurul obstacolelor.
Construirea unui robot care urmărește linia cu Arduino este o modalitate fantastică de a te scufunda în lumea roboticii și a sistemelor încorporate. Vă învață concepte fundamentale, cum ar fi integrarea senzorilor, controlul motor și luarea deciziilor în timp real. Cu răbdare și experimentare, puteți extinde acest proiect de bază într -un robot mai complex și capabil. Clădire fericită!