This is an old revision of the document!
Line Follower and Obstacle Avoiding Car
Introducere
Prezentarea pe scurt a proiectului meu:
Proiectul consta intr-un robot de tip line-follower care poate sa ocoleasca anumite obstacole aparute in calea sa. Acesta urmareste un traseu bine definit, iar in cazul in care se intalneste cu un obstacol, il va ocoli, intorcandu-se inapoi pe circuit.
Scopul proiectului este de a fi folosit ca prototip pentru masini si roboti utili apoi in industrii precum agricultura sau constructii.
Ideea de la care am pornit are la baza un robot de explorare. Mai in detaliu, un robot care poate urmari o linie trasata pe teren si in acelasi timp sa evite obstacolele, cum ar fi roci sau arbori. Acest tip de robot ar putea fi utilizat in cercetarea terenurilor greu accesibile sau pentru a colecta date despre mediul inconjurator
Descriere generala
Un proiect de tipul line follower and obstacle avoiding implică construirea unui robot care poate urmări o linie trasată pe o suprafață plană, cum ar fi o bandă neagră sau o linie albă pe un fundal negru, și în același timp poate evita obstacolele care apar in cale.
Pentru a realiza acest proiect, voi avea nevoie de un ansamblu de piese, printre care se remarca: un microcontroller, senzori infraroșu sau senzori de proximitate pentru a detecta linia și obstacolele, motoare pentru a propulsa robotul și un algoritm de control care să permită robotului să urmeze linia și să evite obstacolele.
Hardware Design
Componente Hardware utilizate:
Placa de dezvoltare compatibila cu Arduino UNO R3
Doua roti
O a treia roata care nu este actionata de motor si se poate deplasa pe directia orizontala
Doua motoare TT ce pot fi dotate cu sistem de encoder
Patru baterii AA (1.5V) + dispozitiv de prindere
O baterie de 9V + dispozitiv de prindere
Senzor ultrasonic de distanta HC-SR04 + suport de prindere
Servomotor SG90
Doi senzori IR FC-123
Senzor IR Reflectiv Pololu QTRX-HD-06A
Driver Motor L298N
Mini Breadboard
Modul cu Buzzer activ
Fire mama-tata, tata-tata, mama-mama
Switch
Banda electrica izolatoare
Banda alba dublu adeziva
Conectori si suruburi
Sasiu
Header de pini (40buc)
Baterie externa
Schema Electrica
Conectare Senzor Ultrasonic HC-SR04
Pinul de GND este conectat la GND-ul de pe Arduino
Pinul de VCC este conectat la 5V de pe Arduino
Pinii de Trigger si Echo sunt conectati direct la Arduino pe pinul 6, respectiv pinul 7
Conectarea Servomotorului SG90
Conectarea Senzorilor IR FC-123
Pinii de GND si VCC sunt conectati la fel ca mai sus
Pinii de OUT sunt conectati direct la Arduino pe pinul 2, respectiv pinul 3
Conectarea Matricii de Senzori IR QTRX-HD-06A
Conectarea Senzorului de Buzzer
Conectarea Driver-ului Motor L298N
Primeste 6V de la baterie pe pinul de 12+, si GND tot de la aceasta
Primeste 5V de la Arduino pe pinul de 5+
Pinii de Input sunt conectati direct la Arduino pe pinii: 4, 5, 12 si respectiv 13
Pinii de Output sunt legati la cele doua motoarea TT.
Pinii de Enable sunt conectati direct la Arduino pe pinii de PWM: 10, respectiv 11
Alimentare
Arduino-ul impreuna cu toti ceilalti senzori sunt alimentati de o baterie externa, folosind conexiunea prin cablu USB
Driver-ul Motor L298N este alimentat de ansamblu de baterii AA
Software Design
Pentru a realiza partea de software, am folosit mediul de dezvoltare Arduino.
Codul il pot imparti in mai multe etape dupa cum urmeaza:
Etapa de initializare
Este inclusa biblioteca suplimentara «servo.h».
Sunt definiti majoritatea pinilor folositi in conformitate cu schema hardware.
Sunt declarate si initializate restul de variabile globale necesare in rezolvarea probei software.
Etapa de Setup
Este setata starea pinilor, si anume cea de OUTPUT, INPUT sau INPUT_PULLUP.
Este initializat si configurat un pin specific pentru a controla servomotorul.
Este atasata o rutina de intrerupere pentru ambii senzori de IR de pe margini.
Etapa de implementare a miscarii
Functiile: go_stop, go_forward, go_left, go_right, sunt foarte asemanatoare si indeplinesc acelasi scop: de a seta diferite viteze pe motoare si valori pe pinii corespunzatori.
Functia followLine se ocupa cu calcularea unor sume partiale pentru a decide directia in care sa se indrepte robotelul.
Sumele provin din valorile analogice ale pinilor de *IR* aflati pe matrice QTRX-HD-06A.
Functiile: turnObstacleRight si turnObstacleLeft se ocupa cu partea de ocolire a unui obstacol, folosindu-se la baza de functiile definite mai sus.
Etapa de identificare a unui obstacol
Sunt definite variabile locale care sa calculeze distanta si durata.
Urmeaza o secventa de cod care e menita sa genereze semnalul de trigger catre senzorul de ultrasunete.
Apoi este folosita functia de pulseIn pentru a extrage durata de timp necesara primirii unui puls sau impuls.
Intr-un final se poate aplica o formula matematica pentru a extrage distanta.(avand in vedere, o mica eroare)
Etapa de evitare a unui obstacol
Este actionat servomotorul sub trei unghiuri diferite menite sa acopere directiile: “fata”, “spate”, si “fata”.
Datorita cablului USB care poate sa agate, am decis in teste sa realizez ocolirea numai pe partea dreapta.
Etapa de loop
Calculeaza distanta pana la obiect folosindu-se de functiile descrise mai sus.
Daca distanta obtinuta este mai mica decat o valoare de *THRESHOLD*, atunci avem un obstacol in fata si va trebui sa il evitam.
In caz contrar, robotul trebuie doar sa urmareasca linia.
Fotografii
Youtube
Concluzii
Download
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF