This shows you the differences between two versions of the page.
pm:prj2021:apredescu:hand_tracking [2021/06/02 13:18] serban.sorohan [Software Design] |
pm:prj2021:apredescu:hand_tracking [2021/06/04 11:20] (current) serban.sorohan [Hardware Design] |
||
---|---|---|---|
Line 7: | Line 7: | ||
* Scopul proiectului, pentru început este de a detecta mișcarile necesare jocului piatră, hârtie, foarfecă. | * Scopul proiectului, pentru început este de a detecta mișcarile necesare jocului piatră, hârtie, foarfecă. | ||
* Consider că acest proiect poate fi extins și utilizat în mai multe locuri, precum: transformarea limbajului semnelor în text, control de la distanța a roboților care necesită îndemânare cât mai bună (ex. dezamorsare de bombe), folosirea mâinilor în aplicații de tipul virtual reality. | * Consider că acest proiect poate fi extins și utilizat în mai multe locuri, precum: transformarea limbajului semnelor în text, control de la distanța a roboților care necesită îndemânare cât mai bună (ex. dezamorsare de bombe), folosirea mâinilor în aplicații de tipul virtual reality. | ||
+ | |||
+ | ===== Demo ===== | ||
+ | [[https://www.youtube.com/watch?v=pLP3VBGi91Q|Demo]] | ||
+ | |||
===== Descriere Generala ===== | ===== Descriere Generala ===== | ||
{{:pm:prj2021:apredescu:diagrama_bloc_hand_tracking_new.jpg?670|}} | {{:pm:prj2021:apredescu:diagrama_bloc_hand_tracking_new.jpg?670|}} | ||
Line 14: | Line 18: | ||
* Plăcuța arduino procesează datele, face o medie a valorilor trimese de către senzorii de îndoire, determină semnul făcut de către utilizator (piatră/hârtie/foarfecă) și alege un semn în mod aleator pentru plăcuță, apoi trimite către calculator un feedback vizual. | * Plăcuța arduino procesează datele, face o medie a valorilor trimese de către senzorii de îndoire, determină semnul făcut de către utilizator (piatră/hârtie/foarfecă) și alege un semn în mod aleator pentru plăcuță, apoi trimite către calculator un feedback vizual. | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | Schemă electrică: | + | **Schemă electrică:** |
{{:pm:prj2021:apredescu:schema_electrica_hand_tracking.png?700|}} | {{:pm:prj2021:apredescu:schema_electrica_hand_tracking.png?700|}} | ||
- | Piese: | + | **Piese:** |
- Arduino Uno | - Arduino Uno | ||
- Senzor IMU | - Senzor IMU | ||
Line 24: | Line 28: | ||
- Rezistențe | - Rezistențe | ||
- Mănușă | - Mănușă | ||
+ | |||
+ | **Poză mănușă:** | ||
+ | |||
+ | {{:pm:prj2021:apredescu:poza_manusa_hand_tracking_update.jpg?600|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
* Codul este dezvoltat în IDE-ul oferit de către arduino și nu reprezintă o logică foarte complicată. | * Codul este dezvoltat în IDE-ul oferit de către arduino și nu reprezintă o logică foarte complicată. | ||
Line 50: | Line 58: | ||
===== Rezultate Obtinute ===== | ===== Rezultate Obtinute ===== | ||
+ | Am obținut rezultate satisfăcătoare atât pe partea de hardware cât și pe partea de software. Mănușa are un aspect plăcut și detectează cu o acuratețe ridicată semnele făcute de utilizator astfel încât acesta se poate juca piatră, hârtie, foarfecă contra plăcuței fară probleme. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | A fost un proiect interesant din care simt că am învățat destul de multe lucruri. La început mă așteptam ca partea de hard să fie ceva mai ușoară decât partea de soft, însă s-a dovedit fix invers. | ||
===== Download ===== | ===== Download ===== | ||
+ | |||
+ | [[https://drive.google.com/file/d/1gNmsJ6Id4jneyu6GvaKWUrnUMutZGKHD/view?usp=sharing|Cod sursă]] | ||
+ | |||
+ | [[https://drive.google.com/file/d/1j6Ni9SVIxDs8lbQDqCJq_rNRBINfN3jm/view?usp=sharing|Code sursă pentru reprezentarea grafică]] | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | [14/05/2021] - Am început proiectul prin a întelege cum funcționează senzorul MPU6500 cu ajutorul unui breadboard. | + | **[14/05/2021]** - Am început proiectul prin a întelege cum funcționează senzorul MPU6500 cu ajutorul unui breadboard. |
Am scris un cod minimal pentru a obține valorile senzorului folosind biblioteca 'MPU6050_tockn'. | Am scris un cod minimal pentru a obține valorile senzorului folosind biblioteca 'MPU6050_tockn'. | ||
- | [15/05/2021] - A doua zi am continuat prin a întelege cum funcționează senzorii de flexiune. Tot folosind breadboard-ul | + | **[15/05/2021]** - A doua zi am continuat prin a întelege cum funcționează senzorii de flexiune. Tot folosind breadboard-ul |
am creat un divizor de tensiune și cu ajutorul unor bucăți de cod furnizate de sparkfun (vezi bibliografie) am testat funcționalitatea senzorilor. | am creat un divizor de tensiune și cu ajutorul unor bucăți de cod furnizate de sparkfun (vezi bibliografie) am testat funcționalitatea senzorilor. | ||
După testarea senzorilor am început să mă joc puțin cu multimetru, să măsor rezistențele senzorilor, a rezistențelor și voltajul plăcuței. | După testarea senzorilor am început să mă joc puțin cu multimetru, să măsor rezistențele senzorilor, a rezistențelor și voltajul plăcuței. | ||
- | [16/05/2021 - 20/05/2021] - Pauză de la proiect, alte teme necesitau atenția :( | + | **[16/05/2021 - 20/05/2021]** - Pauză de la proiect, alte teme necesitau atenția :( |
- | [21/05/2021] - Încep să fac planul pentru poziționarea pe mănușă, fac câteva cusături de probă să văd cum ar sta mai bine componentele. | + | **[21/05/2021]** - Încep să fac planul pentru poziționarea pe mănușă, fac câteva cusături de probă să văd cum ar sta mai bine componentele. |
- | [22/05/2021] - Încep să mă joc cu pistolul de lipit. Mă chinui câteva ore bune (nu sunt prea îndemânatic) să lipesc la fiecare senzor de flexiune | + | **[22/05/2021]** - Încep să mă joc cu pistolul de lipit. Mă chinui câteva ore bune (nu sunt prea îndemânatic) să lipesc la fiecare senzor de flexiune |
câte o rezistență și trei fire pentru a crea divizorul de tensiune. | câte o rezistență și trei fire pentru a crea divizorul de tensiune. | ||
- | [23/05/2021] - Cos pe mănușă senzorii de flexiune și plăcuța și fac câteva teste pentru a vedea dacă merg bine senzorii. | + | **[23/05/2021]** - Cos pe mănușă senzorii de flexiune și plăcuța și fac câteva teste pentru a vedea dacă merg bine senzorii. |
- | [24/05/2021 - 25/05/2021] - Pauză de relaxare, am muncit destul :). | + | **[24/05/2021 - 25/05/2021]** - Pauză de relaxare, am muncit destul :). |
- | [26/05/2021] - Încep să fac lipituri pentru senzorul MPU6500, lucru ce îmi ia destul de mult timp fiindcă sunt necesare lipituri destul de mici | + | **[26/05/2021]** - Încep să fac lipituri pentru senzorul MPU6500, lucru ce îmi ia destul de mult timp fiindcă sunt necesare lipituri destul de mici |
(între timp, pistolul de lipit începe să scoată fum :( ). | (între timp, pistolul de lipit începe să scoată fum :( ). | ||
- | [27/05/2021] - Termin lipiturile pentru MPU6500 și refac cusăturile pentru cei doi senzori de flexiune, a.î. să fie poziționati mai bine pe mănușa. Fac câteva cusături și in jurul firelor pentru a fixa în anumite poziții care nu încurcă. | + | **[27/05/2021]** - Termin lipiturile pentru MPU6500 și refac cusăturile pentru cei doi senzori de flexiune, a.î. să fie poziționati mai bine pe mănușa. Fac câteva cusături și in jurul firelor pentru a fixa în anumite poziții care nu încurcă. |
- | [28/05/2021] - Fac câte o gaură în vârful fiecărui senzor de flexiune (pe partea de plastic, nu în senzorul propriu-zis) pentru a îi fixa și mai | + | **[28/05/2021]** - Fac câte o gaură în vârful fiecărui senzor de flexiune (pe partea de plastic, nu în senzorul propriu-zis) pentru a îi fixa și mai |
bine pe mănușă și mă apuc să cos și senzorul MPU6500. | bine pe mănușă și mă apuc să cos și senzorul MPU6500. | ||
- | [29/05/2021] - Termin de cusut senzorul MPU6500 și încep să organizez partea de cod. Încep să folosesc biblioteca 'TinyMPU6050' în loc de | + | **[29/05/2021]** - Termin de cusut senzorul MPU6500 și încep să organizez partea de cod. Încep să folosesc biblioteca 'TinyMPU6050' în loc de |
'MPU6050_tockn' din motive de simplitate. Termin de scris mare parte din cod. | 'MPU6050_tockn' din motive de simplitate. Termin de scris mare parte din cod. | ||
- | [30/05/2021 - 01/06/2021] - Pauză pentru a face tema la SO. | + | **[30/05/2021 - 01/06/2021]** - Pauză pentru a face tema la SO. |
+ | |||
+ | **[02/06/2021]** - Ordonez codul și mai umblu puțin la un senzor flexor care nu face bine o conexiune, de asemenea încep și scrierea jurnalizării (the journal is self aware!!!). | ||
- | [02/06/2021] - Ordonez codul și mai umblu puțin la un senzor flexor care nu face bine o conexiune, de asemenea încep și scrierea jurnalizării (the journal is self aware!!!). | + | **[03/06/2021]** - Am refăcut legăturile firelor cu plăcuța deoarece câteodată erau întreruperi de semnale. |
+ | **[04/06/2021]** - Am făcut demo-ul și am finalizat pagina de wiki. | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||