This shows you the differences between two versions of the page.
pm:prj2023:apredescu:robodog [2023/05/28 22:45] adelin_doru.crestus [Concluzii] |
pm:prj2023:apredescu:robodog [2023/05/30 12:49] (current) adelin_doru.crestus |
||
---|---|---|---|
Line 10: | Line 10: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | <note tip> | ||
{{schema_bloc_robodog.png?750}} | {{schema_bloc_robodog.png?750}} | ||
Senzorii preiau date din mediu, le trimit catre arduino, care calculeaza tensiunea care ar trebui trimisa spre roti, dar si daca cainele ar trebui sau nu sa latre | Senzorii preiau date din mediu, le trimit catre arduino, care calculeaza tensiunea care ar trebui trimisa spre roti, dar si daca cainele ar trebui sau nu sa latre | ||
- | </note> | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | <note tip> | ||
1.Lista piese: | 1.Lista piese: | ||
* Arduino Uno R3 | * Arduino Uno R3 | ||
Line 31: | Line 28: | ||
{{schematic_robodog.png?760}} | {{schematic_robodog.png?760}} | ||
- | </note> | + | |
+ | {{hwrobo1.png}} | ||
+ | {{hwrobo2.png}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 37: | Line 36: | ||
<note tip> | <note tip> | ||
- | In loop() se verifică mai intâi dacă roțile ar trebui să se invârtă și dacă e vreuna blocată. Pentru acest lucru exista 2 fire de la Output-ul Punții H către Analog In-ul plăcuței Arduino. | + | * In loop() se verifică mai intâi dacă roțile ar trebui să se invârtă și dacă e vreuna blocată. Pentru acest lucru exista 2 fire de la Output-ul Punții H către Analog In-ul plăcuței Arduino. Dacă valoarea diferă față de ce ne-am aștepta înseamnă că avem o roată blocată. Robotul va merge un pic cu spatele și se va roti pentru a se așeza paralel cu peretele. |
- | Dacă valoarea diferă față de ce ne-am aștepta înseamnă că avem o roată blocată. Robotul va merge un pic cu spatele și se va roti pentru a se așeza paralel cu peretele. | + | * Se citesc datele de la senzorul ultrasonic(intervalul de timp in care semnalul se intoarce) si se calculează distanța. Apoi se preiau si se prelucrează datele de la senzorii de lumină. Daca se detectează o acțiune a unui laser, se trimite comanda de viraj către roți. Dacă se detectează o lumină prea slabă, Arduino activează PIR-ul si LED-ul, pune pe GND ambele borne ale motoarelor, iar atunci când detectează mișcare, se apelează funcția care pornește sunetul de lătrat. Algoritmul după care robotul se plimbă prin mediu este să țină tensiunea pe HIGH la bornele roților cât timp distanța față de obstacol este mai mare de 40 cm. Când nu este îndeplinită această condiție, microcontroller-ul dă comanda de rotire la stânga(roata din stânga se rotește inapoi, iar cea din dreapta inainte) până când robotul se rotește cu aproximativ 90 grade. |
- | Se citesc datele de la senzorul ultrasonic(intervalul de timp in care semnalul se intoarce) si se calculează distanța. Apoi se preiau si se prelucrează datele de la senzorii de lumină. Daca se detectează o acțiune a unui laser, se trimite comanda de viraj către roți. | + | * Se măsoară noua distanță, dacă este mai mare de 1.5 m, robotul se va deplasa înainte(timp in care va colecta din nou datele necesare din mediu). Dacă nu este satisfăcută această condiție, cățelul se va roti în sens invers trigonometric cu 180 grade, iar mai apoi va determina distanța maximă pe care o poate parcurge pe această direcție. In cazul, in care este mai mare decât distanța din stânga si mai mare de 70 cm(era redundant sa mai comparam si aici cu 150), iși va continua deplasarea in dreapta, altfel se va intoarce tot in sens invers trigonometric spre partea stângă, pentru a analiza si distanța față de obiectele din spate. |
- | Dacă se detectează o lumină prea slabă, Arduino activează PIR-ul si LED-ul, pune pe GND ambele borne ale motoarelor, iar atunci când detectează mișcare, se apelează funcția care pornește sunetul de lătrat. | + | |
- | Algoritmul după care robotul se plimbă prin mediu este să țină tensiunea pe HIGH la bornele roților cât timp distanța față de obstacol este mai mare de 40 cm. Când nu este îndeplinită această condiție, microcontroller-ul dă comanda de rotire la stânga(roata din stânga se rotește inapoi, iar cea din dreapta inainte) până când robotul se rotește cu aproximativ 90 grade. | + | |
- | Se măsoară noua distanță, dacă este mai mare de 1.5 m, robotul se va deplasa înainte(timp in care va colecta din nou datele necesare din mediu). | + | |
- | Dacă nu este satisfăcută această condiție, cățelul se va roti în sens invers trigonometric cu 180 grade, iar mai apoi va determina distanța maximă pe care o poate parcurge pe această direcție. In cazul, in care este mai mare decât distanța din stânga si mai mare de 70 cm(era redundant sa mai comparam si aici cu 150), iși va continua deplasarea in dreapta, altfel se va intoarce tot in sens invers trigonometric spre partea stângă, pentru a analiza si distanța față de obiectele din spate. | + | |
</note> | </note> | ||
- | ===== Rezultate Obţinute ===== | + | ===== Demo ===== |
+ | |||
+ | [[https://photos.google.com/share/AF1QipP-36bDyDWqJ027iSQQmWQ50Y3A7kYH-QAvX9GxUM8vU089McXst1d9TqZevRhZlA/photo/AF1QipNLn69ewfckUHWqzsVwMh5v2lPAnmMu2MD_kbW1?key=VndVQmFRZlFxcXJMdlZtdXJyQU9HVFBHMVRFbm5n | Demo]] | ||
- | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
- | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | <note tip> | ||
În urma unor teste, am observat că există probabilitatea ca unele unde emise prin mediu să se reflecte astfel încât să nu se mai întoarcă și să fie recepționate (în momentul în care robotul se îndreaptă spre un obstacol/perete , iar unghiul dintre direcția roboțelului si perete este destul de mic). Astfel măsurând tensiunea de la bornele motoarelor, robotul îsi dă seama ce roată s-a blocat pentru a se roti cât mai eficient si a se poziționa paralel cu peretele. | În urma unor teste, am observat că există probabilitatea ca unele unde emise prin mediu să se reflecte astfel încât să nu se mai întoarcă și să fie recepționate (în momentul în care robotul se îndreaptă spre un obstacol/perete , iar unghiul dintre direcția roboțelului si perete este destul de mic). Astfel măsurând tensiunea de la bornele motoarelor, robotul îsi dă seama ce roată s-a blocat pentru a se roti cât mai eficient si a se poziționa paralel cu peretele. | ||
+ | </note> | ||
===== Download ===== | ===== Download ===== | ||
Line 60: | Line 57: | ||
</note> | </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 ===== | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * ATmega328 datasheet |
+ | * LDR datasheet | ||
+ | * HC SR 04 datasheet | ||
+ | * L293d datasheet | ||
</note> | </note> | ||
<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> | ||