Ionita Florin Teodor - LineFollowing Robot

Introducere

Proiectul ales de mine este un robot de tip line following, mai exact foloseste senzori si un motor pentru a urmari o linie neagra pe un fundal alb.

Am ales fix acest proiect pentru ca mereu m-au atras robotii de genul acesta mai ales cand vedeam pe internet cat de micutzi si rapizi pot deveni si astfel am decis ca vreau si eu sa fac versiunea mea amatoriceasca de acest tip de robot. De asemenea, pe langa partea de navigare as dori sa implementez si un sistem giroscopic pentru miscari mult mai smooth. Daca nu devine foarte complicat ma gandesc sa-i implementez si un sistem de luminite sa-l faca mai dragut.

Consider ca este util intrucat o sa ma treaca prin conceptele studiate la laboratoare si la curs si pentru ca o sa am un proiect hardware pe care o sa-l pot pune in CV.

Descriere generală

Robotul va avea 2 senzori cu care va putea urmarii o linie neagra. Modul prin care se va deplasa va fi folosind 2 motoare care comunica printr-un driver si care sunt conectate catre 2 roti pozitionate in spatele masinii, in fata va fi o biluta de metal care se poate misca in toate directiile. Arduino-ul o sa fie conectat si la un MPU6050 pentru a avea input legat de miscarile masinii si pentru a creea miscari mult mai smooth sau mai bune in functie de context. Arduino-ul o sa fie alimentat la baterie.

Schema bloc:

Hardware Design

Schema Hardware

Bill of Materials

Componenta Protocol Datasheet De unde
Driver Motor L298N PWM Datasheet Optimus Digital
Accelerometru cu 3 axe ADXL345 I2C Datasheet Optimus Digital
Senzor IR Pololu QTR-MD-05A ADC Site Optimus Digital
Breadboard tot Optimus
Fire tot Optimus
Schelet robot Unchiul meu
4 x 1,5v baterii De prin casa
Arduino Uno r3 Arduino Dintr-un set
2x motor reductor 3-6V DataSheet Optimus Digital

Conexiuni pini

Componentă Pin/Conexiune Legătură/Interfață Funcție/Descriere
Atmega324P PC0 (ADC0) Senzor linie 1 Citire valoare analogică
Atmega324P PC1 (ADC1) Senzor linie 2 Citire valoare analogică
Atmega324P PC2 (ADC2) Senzor linie 3 Citire valoare analogică
Atmega324P PC3 (ADC3) Senzor linie 4 Citire valoare analogică
Atmega324P PC4 (ADC4/SDA) ADXL345 (SDA) Comunicație I2C – date
Atmega324P PC5 (ADC5/SCL) ADXL345 (SCL) Comunicație I2C – ceas
Atmega324P PD5 ENA (L298N) Semnal PWM motor stânga
Atmega324P PD6 ENB (L298N) Semnal PWM motor dreapta
Atmega324P PD2, PD3 IN1, IN2 (L298N) Control direcție motor stânga
Atmega324P PD4, PD7 IN3, IN4 (L298N) Control direcție motor dreapta
L298N OUT1, OUT2 Motor A Motor stânga – semnale de putere
L298N OUT3, OUT4 Motor B Motor dreapta – semnale de putere
L298N VS Baterie 1 x 9V Alimentare pentru motoare
L298N VSS +5V Alimentare logică driver
Senzori IR (CNY70/QTR) Semnal analogic A0–A3 (sau ADC0–ADC3) Reflectanță – detectare linie
ADXL345 VDD_IO, VS +3.3V sau +5V Alimentare accelerometru
ADXL345 GND GND comun Masă comună sistem
Senzori + L298N + MCU GND GND comun Referință masă

Galerie

Software Design

Descrierea codului aplicatiei

Codul aplicatiei controleaza un robot autonom capabil sa urmeze o linie folosind patru senzori IR analogici si un accelerometru ADXL345 pentru a ajusta viteza in functie de inclinarea terenului. Motorul stang si cel drept sunt controlate printr-un driver L298N conectat la pinii digitali ai microcontrolerului, folosind semnale PWM pentru ajustarea vitezei.

Etapa 3: Surse si functii implementate

Fisierul principal al aplicatiei este 'main.c', care contine codul firmware-ului pentru controlul robotului line follower. Toate functiile periferice sunt implementate direct, fara librarii externe, folosind registrele microcontrolerului ATmega328P. Programul este organizat modular, cu functii separate pentru fiecare componenta hardware: motoare, UART, I2C, ADC si accelerometru.

Functiile implementate:

pwm_init() motor_forward() motor_left() motor_right() motor_stop() uart_init(ubrr) uart_putchar() i2c_init() i2c_start(), i2c_stop(), i2c_write(), i2c_read_ack(), i2c_read_nack()4 adxl345_write(reg, value) adxl345_read_xyz(x, y, z) adxl345_init() adc_init() read_adc(channel) follow_line() main()

Mediu de dezvoltare

Aplicatia a fost dezvoltata pe WSL si programul a fost incarcat prin sistem de operare Windows folosind toolchain-ul GNU AVR. Am utilizat un editor de text (VS Code) impreună cu urmatoarele unelte:

* 'Compilator': avr-gcc * 'Uploader': avrdude * 'Platforma hardware': Arduino Uno R3 cu microcontroler ATmega328P * 'Terminal serial pentru debugging': Serial Monitor Arduino IDE

Compilarea si programarea s-au realizat prin urmatoarele comenzi:

avr-gcc -mmcu=atmega328p -DF_CPU=16000000UL -Os -o main.elf main.c -Wl,-u,vfprintf -lprintf_flt -lm

avr-objcopy -O ihex -R .eeprom main.elf main.hex

avrdude -c arduino -p m328p -P COM5 -b 115200 -U flash:w:C:\Users\40731\Desktop\main.hex:i

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

main.rar

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

4/30 ora 1:01 - am facut inceputurile

4/30 15:48 - am schimbat diagrama cu senzorul si accelometru si am cumparat de ce mai aveam nevoie Jaja Bless -38 lei

5/17 ora 3:00 - am sters schema din kicad si am refacut-o

5/18 ora 15:00 - ultimele retusuri pe hardware

5/26 ora 1:49 - am schimbat pinii pe schema hardware, adaugat software-ul, retusat facut putin mai dragut si adaugat codul in download

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2025/vstoica/florin.ionita3007.txt · Last modified: 2025/05/26 13:49 by florin.ionita3007
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0