This is an old revision of the document!


Obstacle Avoiding Robot

Introducere

  • Proiectul consta intr-un robot care poate evita obstacolele. Acesta este echipat cu senzori si algoritmi specializati care ii permit sa detecteze obstacolele din calea sa si sa le evite, miscandu-se in consecinta.
  • Scopul principal al proiectului nostru este de a crea un robot autonom capabil sa navigheze intr-un mediu cu obstacole fara a necesita interventia umana constanta. Acesta poate fi utilizat in diverse aplicatii practice, cum ar fi explorarea terenurilor periculoase sau necunoscute, monitorizarea mediului ambiental sau chiar in industria de transport pentru a preveni coliziunile.
  • Am plecat de la dorinta de a creea roboti, in principal roboti autonomi care sa indeplineasca un anumit scop. De asemenea, imi ofera sansa de a invata si de a imi perfectiona abilitatile in domeniul roboticii.

Descriere generală

Un robot cu 2 motoare ce se plimba intr-o incapere, care atunci cand intalneste un obstacol va lua o decizie de schimbare a directiei, va folosi un senzor ultrasonic actionat de un servo-motor ce se va roti la 180 de grade. Vor fii masurate distantele din stanga si din dreapta, iar robotul isi va schimba traiectoria, iar cand cineva/ceva se va apropia prin spatele lui, acesta isi va schimba directia spre stanga sau spre dreapta intr-un mod random pentru a evita sa se blocheze.

Schema bloc:

Hardware Design

Schema electrica:


Schema TinkerCad:

Software Design

Mediul de dezvoltare: PlatformIO

Librarii si surse 3rd-party: Am folosit libraria Servo.h pentru a controla servo-ul si Arduino.h pentru a scrie HIGH si LOW pe pinii digitali si analogici

Descrierea codului: Robotul verifica la fiecare pas daca se afla vreun obstacol in fata lui (la mai putin de 40 de cm) sau in spatele lui (la mai putin de 15 cm). Daca se afla un obstacol in fata lui, servo-ul se va roti spre stanga si spre dreapta si va calcula distantele, alegand-o pe cea cu distanta cea mai mare. In cazul care se afla un obstacol in spatele lui, acesta isi va alege o directie random(stanga sau dreapta), acest lucru a fost implementat pentru a ajuta robotul sa nu ramana blocat in diverse situatii, acesta putand fii ajutat si “artificial”. De asemenea, cu ajutorul unui led si al unui divizor de tensiune calculez tensiunea venita pe pinul analogic, iar daca tensiunea va scadea sub o marja de 6.8V, ledul se va stinge semnaland ca bateriile trebuie reincarcate sau schimbate.

Rezultate Obţinute

Concluzii

Download

:pm:prj2024:cc:banulescu_eduard

Jurnal

25.04.2024 - Stabilire tema proiect
30.04.204 - Sosire piese
03.05.2024 - Crearea documentatiei si a paginei de wiki
09.05.2024 - Creare schema bloc si inceperea asamblarii
14.05.2024 - Am mai comandat un senzor ultrasonic
15.05.2024 - Finalizare milestone hardware

18.05.2025 - Mi-am dat seama ca nu am destul voltaj si am conectat arduino la o baterie de 9V separata si am mai adaugat o baterie in serie la setul de 4 pentru a obtine 7.5v
19.05.2025 - Am actualizat schema electrica si schema bloc
20.05.2025 - Am inceput scrierea codului
21.05.2025 - Am adaugat un led care ma ajuta sa tin evidenta voltajului bateriilor folosind ADC
22.05.2025 - Am schimbat alimentarea arduino-ului, l-am legat la o baterie externa de 5V/1A si alimentez sensorii ultrasonic si servo-ul din pinul de 5V al arduino-ului deoarece curentul din L298N fluctua si nu functionau senzorii la paramatrii optimi.
26.05.2025 - Finalizare pagina OCW

Bibliografie/Resurse

pm/prj2024/tdicu/andrei.banulescu.1716728350.txt.gz · Last modified: 2024/05/26 15:59 by andrei.banulescu
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