This shows you the differences between two versions of the page.
pm:prj2024:amocanu:alexandru.mihai02 [2024/05/12 22:45] alexandru.mihai02 |
pm:prj2024:amocanu:alexandru.mihai02 [2024/05/26 21:39] (current) alexandru.mihai02 |
||
---|---|---|---|
Line 6: | Line 6: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Proiectul își propune realizarea unei mănuși capabile să identifice semnele specifice ASL (American Sign Language). În funcție de postura mâinii purtătorului, se va afișa pe ecran litera corespunzătoare semnului interpretat. | + | Proiectul își propune realizarea unei mănuși capabile să identifice semnele specifice ASL (American Sign Language). În funcție de postura mâinii purtătorului, se va afișa pe ecran mesajul corespunzătoare semnului interpretat. |
Acest proiect este util, considerând că la momentul actual există un suport tehnologic limitat pentru persoanele cu deficiențe auditive în vederea comunicării cu alte persoane care nu cunosc limbajul. În plus, acest proiect prezintă o foarte mare scalabilitate, putând fi introduse noi semne sau mecanisme în vederea învățării autonome a unor expresii din limbaj. | Acest proiect este util, considerând că la momentul actual există un suport tehnologic limitat pentru persoanele cu deficiențe auditive în vederea comunicării cu alte persoane care nu cunosc limbajul. În plus, acest proiect prezintă o foarte mare scalabilitate, putând fi introduse noi semne sau mecanisme în vederea învățării autonome a unor expresii din limbaj. | ||
Line 17: | Line 17: | ||
- | {{:pm:prj2024:amocanu:schemablockpm.jpg?700 |}} | + | {{:pm:prj2024:amocanu:schemablockpm.jpg?800 |}} |
În vederea realizării proiectului vor exista 2 etape principale. | În vederea realizării proiectului vor exista 2 etape principale. | ||
Line 57: | Line 56: | ||
Am decis a coase flex senzorii de mănușă pentru a asigura totuși o mobilitate corespunzătoare mâinii (în cazul în care aceștia ar fi fost lipiți de mănușă, mișcarea ar fi fost limitată și ar fi putut să se rupă). Cablarea a constituit o problemă pentru că pinii senzorilor sunt foarte fragili și lipirea lor efectivă cu pastă conductoare nu a adus rezultatul dorit (nu se închidea circuitul). Așadar am ales de a sertiza 3 dintre senzorii, iar ceilalți 2 au fost lipiți simplu pentru a fixa cablurile de senzori. | Am decis a coase flex senzorii de mănușă pentru a asigura totuși o mobilitate corespunzătoare mâinii (în cazul în care aceștia ar fi fost lipiți de mănușă, mișcarea ar fi fost limitată și ar fi putut să se rupă). Cablarea a constituit o problemă pentru că pinii senzorilor sunt foarte fragili și lipirea lor efectivă cu pastă conductoare nu a adus rezultatul dorit (nu se închidea circuitul). Așadar am ales de a sertiza 3 dintre senzorii, iar ceilalți 2 au fost lipiți simplu pentru a fixa cablurile de senzori. | ||
- | ===== Software Design ===== | + | === Mănușa în stare nefuncțională === |
+ | {{ :pm:prj2024:amocanu:sign_language_glove_functional.jpeg?300 |}} | ||
+ | === Mănușa în stare funcțională === | ||
+ | {{ :pm:prj2024:amocanu:sign_language_glove_nefunctional.jpeg?300 |}} | ||
+ | |||
+ | ===== Software Design ===== | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | * Mediu de dezvoltare: ArduinoIDE. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Biblioteci utilizate: LiquidCrystal, SoftwareSerial. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
</note> | </note> | ||
+ | [[https://youtu.be/AeMXSBa2YGM|Demo - Youtube]] | ||
+ | === Obținerea datelor === | ||
+ | |||
+ | Prima etapă reprezintă etapa de obținere a datelor pentru fiecare senzor și fiecare mesaj. În acest scop, am decis ca fiecare semn să fie măsurat de câte minim 5 ori (întrucât, în cazul existenței unui outlier, măsurătoarea este eliminată și refăcută). Datorită modului de implementare a divizorului de tensiune, valorile oferite de senzori se află între 180 și 320, fiind o plajă suficient de largă pentru a putea eșantiona fiecare mesaj. | ||
+ | |||
+ | De asemenea, înainte fiecărei măsurători este necesară o calibrare mecanică a mănușii pentru a avea certitudinea că senzorii se află într-o poziție corespunzătoare. | ||
+ | |||
+ | === Prelucrarea datelor === | ||
+ | |||
+ | Pentru fiecare senzor și semn, am determinat media și deviația standard a valorilor obținute. Aceste valori sunt folosite pentru a determina un interval de încredere a măsurătorilor pentru un semn corespunzător, conform următoarei formule: [mean - 3 * std, mean + 3 * std] pentru fiecare senzor. În urma unei analize atente, am observat că intervalele respective sunt disjuncte, astfel încât fiecare semn este unic determinat. | ||
+ | |||
+ | === Interpretarea semnelor === | ||
+ | |||
+ | A doua etapă constă în identificarea semnelor pe baza unor măsurători aleatorii. Pentru fiecare semn și senzor, avem stocate în cadrul unor liste valorile mediei și deviației standard, urmând ca să iterăm prin aceste valori și să identificăm care dintre ele se potrivesc corespunzător semnului propus. | ||
+ | |||
+ | În cazul în care nu se obține o măsurătoare corectă, se afișează un mesaj pe eroare pe display. | ||
+ | |||
+ | {{ :pm:prj2024:amocanu:pm_signs.jpeg?600 |}} | ||
+ | |||
+ | === Implementare și mențiuni === | ||
+ | |||
+ | Proiectul se folosește de următoarele laboratoare în vederea realizării: | ||
+ | * Lab0: GPIO | ||
+ | * Lab1: USART | ||
+ | * Lab2: Întreruperi | ||
+ | * Lab3: Timere | ||
+ | * Lab6: I2C | ||
+ | |||
+ | Am configurat timerul 1 al microcontroller-ului să genereze o întrerupere la fiecare secunda în vederea citirii senzorilor și interpretării semnelor corespunzătoare. | ||
+ | |||
+ | Display-ul LCD a fost configurat conform sample-ului din bibliografie. La fiecare secundă mesajul curent este șters, iar un nou mesaj este afișat conform semnului identificat. De asemenea, mesajul este afișat și pe serială, metodă utilizată în timpul procesului de debug și identificare a valorilor extreme. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | |||
+ | Device-ul este capabil să identifice 10 semne conform ASL: | ||
+ | * STAND-BY | ||
+ | * PERFECT | ||
+ | * I LOVE YOU | ||
+ | * LATER | ||
+ | * NO | ||
+ | * YES | ||
+ | * QUESTION | ||
+ | * THAT | ||
+ | * GOOD JOB | ||
+ | * YOU | ||
+ | |||
+ | Implementarea device-ului este fiabilă, intervalele de încredere pentru valorile senzorilor fiind generoase în vederea identificării semnelor. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | Proiectul vine în ajutorul persoanele cu deficiente auditive pentru a le oferi un sprijin în comunicare. Acesta reprezintă un prototip și poate fi extins din mai multe considerente: pot fi adăugate semne noi într-un mod foarte facil folosind implementarea modulului de învățare, cât și integrarea unor modele de învățare automată pentru identificarea unor semne noi. |
- | <note warning> | + | Prezintă o vastă aplicabilitate în domeniul medicinei, atât pentru persoanele cu deficiențe auditive cât și în vederea recunoașterii mișcărilor degetelor. De asemenea, poate fi folosită în vederea implementării unor module de automatizare a mișcărilor în jocuri (VR). |
- | 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**. | + | ===== Download ===== |
- | </note> | + | |
- | ===== Jurnal ===== | + | Codurile sursă, cât și datele înregistrate se găsesc în următoarea arhivă. |
- | <note tip> | + | {{:pm:prj2024:amocanu:pm_project.zip|}} |
- | 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> | + | <html><a class="link" href="https://www.optimusdigital.ro/en/others/3401-flex-sensor-22-.html">Flex sensor 2.2"</a></html> |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
- | </note> | + | <html><a class="link" href="https://www.plusivo.com/electronics-kit/88-plusivo-microcontroller-super-starter-kit-196-pcs.html">Arduino super starter kit</a></html> |
+ | |||
+ | <html><a class="link" href="https://th.bing.com/th/id/OIP.j151v1pDyyKrSVRp6rckRwAAAA?rs=1&pid=ImgDetMain">Sign language signs</a></html> | ||
+ | |||
+ | <html><a class="link" href="https://en.wikipedia.org/wiki/Sign_language">Sign language</a></html> | ||
<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> |