Table of Contents

Obstacle Avoiding Car - Anghelescu Albert-Mihai 331CD

Introducere

Obstacle Avoiding Car reprezintă o platformă mobilă autonomă proiectată pentru detectarea și evitarea obstacolelor din mediul înconjurător. Sistemul utilizează Arduino Nano pentru procesarea datelor și coordonarea componentelor hardware, împreună cu un senzor ultrasonic montat pe un servomotor pentru scanarea mediului.

Scopul proiectului este implementarea unui sistem embedded capabil să realizeze deplasare autonomă și reacție în timp real la apariția obstacolelor.

Acest proiect este util atât din perspectivă educațională, deoarece implică lucrul cu microcontrolere, actuatori și senzori, cât și din perspectivă practică, reprezentând o bază pentru sisteme autonome mai complexe.

Descriere generală

Sistemul este alcătuit dintr-o platformă cu 4 roți, controlată de un Arduino Nano. Controlul motoarelor este realizat prin intermediul unui driver L298N, care permite comandarea direcției și vitezei motoarelor utilizând semnale PWM generate de microcontroler.

Detectarea obstacolelor se realizează cu ajutorul unui senzor ultrasonic HC-SR04 montat pe un servomotor SG90. Servomotorul permite rotirea senzorului pe diferite unghiuri, oferind posibilitatea scanării mediului în direcțiile stânga, centru și dreapta.

Pe baza informațiilor primite de la senzor, microcontrolerul decide direcția optimă de deplasare, evitând obstacolele prin oprire, schimbare de direcție sau rotație.

Schema bloc a sistemului:

Interacțiunea modulelor:

Hardware Design

Lista de componente hardware:

Descriere hardware:

Schema electrica:

Software Design

Mediu de dezvoltare: PlatformIO Biblioteci: doar biblioteci standard AVR (avr/io.h, avr/interrupt.h, util/delay.h).

Implementare

hcsr04.c — driver pentru senzorul ultrasonic folosind Timer2 (prescaler 64, 4us/tick). HCSR04_measure() trimite pulsul de trig de 10us, asteapta frontul crescator al echo-ului, numara tick-urile cat echo-ul e HIGH (cu tracking manual de overflow), si converteste in centimetri prin formula ticks * 4us / 58.

l298n.c — driver pentru motoare cu functii de directie (forward, backward, turn_left, turn_right, stop) si control viteza prin set_speed(left, right). Viteza e controlata prin PWM pe Timer0 in Fast PWM mode (OC0A = ENB, OC0B = ENA, ~980Hz). Virajele sunt de tip pivot — rotile din partea opusa merg invers pentru rotatie pe loc.

servo.c — semnal PWM 50Hz generat cu Timer1 in Fast PWM mode cu TOP = ICR1 = 40000 (prescaler 8, 16MHz). servo_write(us) primeste o valoare in microsecunde si seteaza OCR1A = us * 2.

main.c — automat de stari cu 3 stari:

Rezultate Obţinute

Concluzii

Download

Jurnal

Bibliografie/Resurse

Export to PDF