Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:aungureanu:codrut.ciulacu [2024/05/24 22:40]
codrut.ciulacu [Detalii de implementare]
pm:prj2024:aungureanu:codrut.ciulacu [2024/05/27 00:44] (current)
codrut.ciulacu [Jurnal]
Line 10: Line 10:
 Robotul este controlat folosind o telecomanda cu infra-rosu, acest semanl este procesat de un Arduino UNO, care trimite un semnal catre driverul de motoare care controleaza motoarele DC. La primirea unei anumite comenzi, microcontroller-ul incepe executia manevrei de parcare. Prima data cauta un loc potrivit(merge in fata pana da de un spatiu gol) se positioneaza conform algoritmului manevrei pentru care a primit comanda si incepe sa o execute pana ajunge la o distanta potrivita de marginile zonei delimitate. In timpul manevrei robotul nu mai poate primi alta comanda Robotul este controlat folosind o telecomanda cu infra-rosu, acest semanl este procesat de un Arduino UNO, care trimite un semnal catre driverul de motoare care controleaza motoarele DC. La primirea unei anumite comenzi, microcontroller-ul incepe executia manevrei de parcare. Prima data cauta un loc potrivit(merge in fata pana da de un spatiu gol) se positioneaza conform algoritmului manevrei pentru care a primit comanda si incepe sa o execute pana ajunge la o distanta potrivita de marginile zonei delimitate. In timpul manevrei robotul nu mai poate primi alta comanda
 {{:​pm:​prj2024:​aungureanu:​diagrama_sin_titulo.jpg?​700|}} {{:​pm:​prj2024:​aungureanu:​diagrama_sin_titulo.jpg?​700|}}
 +{{:​pm:​prj2024:​aungureanu:​whatsapp_image_2024-05-26_at_22.09.02.jpeg?​700|}}
 ===== Hardware Design ===== ===== Hardware Design =====
 **Piese necesare** **Piese necesare**
Line 28: Line 29:
 **Schema electrica** **Schema electrica**
  
-{{:​pm:​prj2024:​aungureanu:​screenshot_from_2024-05-15_23-50-28.png?750|}}+{{:​pm:​prj2024:​aungureanu:​proiectpm.png?750|}}
  
 ===== Software Design ===== ===== Software Design =====
Line 51: Line 52:
      * **IRremote**:​ pentru controlul robotului prin telecomanda      * **IRremote**:​ pentru controlul robotului prin telecomanda
    * Aceste componente sunt unite in **main.c**    * Aceste componente sunt unite in **main.c**
-======= ​Detectarea obstacolelor ​=======+   * Motoarele folosesc in spate PWM, folosesc Timer-ul 0 ambele canale pentru asta, in modul Fast PWM fara prescaler, asta insemnand ca valoarea maxima e intre cea setata in registrii OCR0A/OCR0B si 255 
 +   * Senzorul de ultrasonice functioneaza pe un principiu simplu: eu dau un trigger, in spate se trimite o unda ultrasonica care se va intoarce inapoi si va fi detectata de senzor, noi calculam timpul parcurs si folosind formula (0.000004 * time / 2 * 34300) putem afla distanta parcursa de unda. 
 +   * Aceste valori au fost aflate part experimental si part cautand pe net in dorinta de a gasi un punct de plecare 
 +   * Pentru a calibra timpul dintre 2 citiri am folosit tot metoda experimentala incercand sa gasesc un interval astfel incat sa nu se calce in picioare senzorii 
 + 
 +** Detectarea obstacolelor ​**
   * pentru detectarea distantelor folosesc 4 senzori de distanta cu ultrasonice   * pentru detectarea distantelor folosesc 4 senzori de distanta cu ultrasonice
   * cand senzorul din fata sau cel din spate detecteaza un obiect forteaza oprirea robotului   * cand senzorul din fata sau cel din spate detecteaza un obiect forteaza oprirea robotului
   * pentru a detecta locurile disponibile pentru parcare folosesc senzorii din lateral si caut secventa urmatoare: ambii senzori detecteaza un obiect, doar senzorul din spate detecteaza un obiect, nici un senzor nu detecteaza un obiect, senzorul din fata detecteaza iar un obiect   * pentru a detecta locurile disponibile pentru parcare folosesc senzorii din lateral si caut secventa urmatoare: ambii senzori detecteaza un obiect, doar senzorul din spate detecteaza un obiect, nici un senzor nu detecteaza un obiect, senzorul din fata detecteaza iar un obiect
   * prin acest algoritm simplu reusim sa gasim un loc liber si putem incepe manevrele de parcare   * prin acest algoritm simplu reusim sa gasim un loc liber si putem incepe manevrele de parcare
-======= ​Algoritmul de parcare ​=======+** Algoritmul de parcare ​**
   * pentru parcare am decis sa folosesc 2 algoritmi de parcare(parcare laterala si parcare cu spatele)   * pentru parcare am decis sa folosesc 2 algoritmi de parcare(parcare laterala si parcare cu spatele)
   * parcarea laterala: ​   * parcarea laterala: ​
Line 69: Line 75:
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +[[https://​youtube.com/shorts/6XWtDga2NS0?​feature=share|Rezultat final]]
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</note>+
  
-===== Concluzii =====+* Rezultatul principal de care sunt cel mai mandru este ca am obtinut ceva care merge, folosind o buna parte din ce am invatat la laborator. Asta a fost si motivul pentru care am implementat folosind avr-c ca sa pot sa pun in aplicare si sa inteleg mai bine ce am folosit la laboratoare semestrul asta.
  
 + * Rezultatele sunt multumitoare,​ sure it's far from perfect si probabil o sa mai lucrez la acest proiect ca un mini proiect personal, dar in opinia mea e mult mai importanta calatoria si faptul ca am fost pus intr-un context pe care nu il stiam suuuper bine(partea de hardware)
 +===== Concluzii =====
 +* M-am confruntat cu destule dificultati pe parcurs, cateva dintre ele fiind:
 + * Am purtat lupta vietii mele cu driverele de motor, am schimbat 3 drivere: unul a venit ars si imi scotea pe un pin de input 5V, unul avea 4 pini de in care cereau pwm si am ramas rapid fara timere pe care sa calculez pwm-ul pentru ca aveam nevoie de timere si la receiver-ul de ir si la senzori cu ultrasonice si ultimul care a fost un succes(al 3-lea e mereu cu noroc)
 + * Si senzorii cu ultrasonice mi-au dat batai de cap si in special faptul ca eu aveam nevoie de 4
 + * Partea de lucru cu infrarosu a fost cam crancena si pana la urma am ajuns sa folosesc o librarie pentru ca era mai usor
 +* Dupa ce am trecut peste aceste probleme implementarea a fost straight-forward(aveam componentele separat testate si implementate si a trebuit sa le pun cap la cap)
 +* Implementarea curenta nu include toate incercarile si aproach-urile la care m-am gandit si care nu au mers(sa folosesc un singur pin de echo pt senzori de distanta, sa conectez 2 arduino-uri unul pentru senzori si unul pentru motoare, sa implementez algoritmul NEC pentru infrarosu, lipiturile facute, incercarea de a adauga un buzzer si led-uri pentru semnalizare) pe care le-am scos pentru ca nu functionau corect impreuna cu codul deja scris
 +* Experienta a fost fun si as mai repeta-o, dar ce as face mai bine ar fi:
 +  * organizare mai buna ca timp
 +  * scris de teste 
 +  * sa incerc sa vin prima data cu un PoC inainte sa fac restul implementarii
 +  * sa imi setez asteptari la joase
 ===== Download ===== ===== Download =====
 +Arhiva cu schemele si codul: Ciulacu Codrut-Cristian,​ 333CC → {{:​pm:​prj2024:​aungureanu:​self_parking_robot_codrut_ciulacu.zip}}
  
-<note warning> 
-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**. 
-</​note>​ 
- 
-===== Jurnal ===== 
- 
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
- +  * [[https://​www.avrfreaks.net | Forum AVR]] 
-<​note>​ +  * laboratoare 
-Listă cu documente, datasheet-uri, resurse Internet folositeeventual grupate pe **Resurse Software** şi **Resurse Hardware**. +  * [[https://​ocw.cs.pub.ro/​courses/​_media/​pm/​doc8272.pdf | Datasheet 328p]] 
-</note>+  * [[https://​images.prismic.io/​circuito/​8e3a980f0f964cc539b4cbbba2654bb660db6f52_arduino-uno-pinout-diagram.png?​auto=compress,format | Pinout Arduino]] 
 +  ​[[https://​www.arduino.cc/​reference/​en/​ | Docs arduino pentru Serial printing]] 
 +  ​[[https://​stackoverflow.com/​search?​q=avr&​s=0b270fdb-6b38-4594-8098-63e4dc3f4498| Forum programare in general]] 
 +  ​[[https://​www.electrosoftcloud.com/​en/​pcint-interrupts-on-arduino/​ | paralela pini PCINT_vect]] 
 +  * [[https://​wiki.dfrobot.com/Arduino_Motor_Shield__L298N___SKU_DRI0009_ | Docs shield]]
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2024/aungureanu/codrut.ciulacu.1716579618.txt.gz · Last modified: 2024/05/24 22:40 by codrut.ciulacu
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