This shows you the differences between two versions of the page.
pm:prj2023:apredescu:robodog [2023/05/01 18:19] adelin_doru.crestus created |
pm:prj2023:apredescu:robodog [2023/05/30 12:49] (current) adelin_doru.crestus |
||
---|---|---|---|
Line 4: | Line 4: | ||
<note tip> | <note tip> | ||
Prezentarea pe scurt a proiectului: | Prezentarea pe scurt a proiectului: | ||
- | * Robodog este un robot ce imita comportamentul unui catel | + | * Robodog este un cățel autonom ce nu face mizerie și nu are nevoie să fie scos afară dimineața devreme |
* Poate sa faca paza, sa patruleze prin casa si chiar sa latre sau sa interactioneze cu un laser | * Poate sa faca paza, sa patruleze prin casa si chiar sa latre sau sa interactioneze cu un laser | ||
* Ideea a pornit de la interdictia de a avea animale de companie in camine | * Ideea a pornit de la interdictia de a avea animale de companie in camine | ||
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 | ||
- | * Ultrasonic HC-SR005 | + | * Ultrasonic HC-SR04 |
* PIR | * PIR | ||
* Speaker | * Speaker | ||
Line 29: | Line 26: | ||
* LED | * LED | ||
2. Schema electrica: | 2. Schema electrica: | ||
- | TO DO | + | |
- | </note> | + | {{schematic_robodog.png?760}} |
+ | |||
+ | {{hwrobo1.png}} | ||
+ | {{hwrobo2.png}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 36: | Line 36: | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | * 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. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * 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. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * 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. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
</note> | </note> | ||
- | ===== Rezultate Obţinute ===== | + | ===== Demo ===== |
+ | [[https://photos.google.com/share/AF1QipP-36bDyDWqJ027iSQQmWQ50Y3A7kYH-QAvX9GxUM8vU089McXst1d9TqZevRhZlA/photo/AF1QipNLn69ewfckUHWqzsVwMh5v2lPAnmMu2MD_kbW1?key=VndVQmFRZlFxcXJMdlZtdXJyQU9HVFBHMVRFbm5n | Demo]] | ||
+ | |||
+ | |||
+ | |||
+ | ===== Concluzii ===== | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Î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> | </note> | ||
- | |||
- | ===== Concluzii ===== | ||
- | |||
===== Download ===== | ===== Download ===== | ||
<note warning> | <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ă ;-). | + | {{catel_robot_avr.zip}} |
- | + | ||
- | 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> | </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> | ||