This is an old revision of the document!


Hand Gesture Control pentru Computer

Autor: Raliță Andreea-Mădălina
Grupa: 335CA

Introducere

Printr-o îmbinare de cod în Arduino cu un modul în Python, acest proiect oferă o modalitate creativă de a manipula laptop-ul, fără a atinge tastatura sau mouse-ul. Astfel, putem naviga prin tab-uri sau controla funcționalitățile de redare a unui videoclip într-un mod simplu, ușor și distractiv.

Descriere generală

Din punctul de vedere al componentelor, proiectul este unul destul de simplist. Prin intermediul a doi senzori, voi evalua și calcula distanța și direcția în care are loc mișcarea mâinilor, iar pentru fiecare tip de mișcare am atribuit o funcționalitate, după cum urmează:

  • Gestul 1 → Ne poziționăm mâna la o distanță mică față de senzorul stâng, cuprinsă între 15 și 35 cm, și o coborâm ușor înspre el. Acest gest va mări volumul videoclipului redat sau va naviga în susul paginii deschise.
  • Gestul 2 → Cu mâna poziționată ca mai devreme, o îndepărtăm ușor de senzorul stâng, mergând cu ea în sus. Acest gest va diminua volumul videoclipului redat sau va naviga în josul paginii deschise.
  • Gestul 3 → Ne poziționăm mâna la o distanță mică față de senzorul drept, cuprinsă între 15 și 35 cm, și o coborâm ușor înspre el. Acest gest va face Rewind pentru videoclipul redat, adică va sări peste câteva secunde față de momentul curent în care ne aflăm.
  • Gestul 4 → Cu mâna poziționată ca mai devreme, o îndepărtăm ușor de senzorul drept, mergând cu ea în sus. Acest gest va face Forward pentru videoclipul redat, adică ne va duce câteva secunde înapoi.
  • Gestul 5 → Plimbăm scurt mâna pe deasupra senzorului stâng (swipe) pentru a trece la tab-ul din stânga tab-ului curent.
  • Gestul 6 → Plimbăm scurt mâna pe deasupra senzorului drept (swipe) pentru a trece la tab-ul din dreapta tab-ului curent.

Schemă bloc

Hardware Design

Lista componente

Nume Număr Piese
Arduino UNO 1
Ultrasonic Sensor 2
Breadboard 1
Fire mama-tata 8
Fire tata-tata 1
Laptop cu conexiune la internet 1

Schemă electrică

Software Design

Mediul de dezvoltare:

  • software:
    • Arduino IDE 1)
    • PyAutoGUI 2)
  • pentru realizarea schemei-bloc:
    • draw.io 3)
  • pentru realizarea schemei electrice:
    • EAGLE 4)

Biblioteci folosite:

  • pentru comunicarea dintre Python si Arduino:
    • Serial library
  • pentru a converti datele in functionalitati ale tastaturii:
    • PyAutoGUI

Structura codului

Codul este stucturat în majoritatea lui în Arduino IDE, iar codul Arduino generează 6 comenzi care sunt trimise mai departe portului serial. Folosind aceste 6 comenzi, am scris un modul în Python care să manipuleze comenzile primite, invocând o anume combinație de taste pentru fiecare comandă în parte.

Arduino IDE - codul Arduino include următoarele funcții:

  • calculate_distance(trigger, echo) → calculează în centimetri distanța la care se află mâna de senzor, folosindu-se de funcția pulseIn pentru a determina durata pulsului HIGH, după care se aplică o formulă pentru a obține distanța în centimetri. Această funcție va fi folosită pentru a calcula distanța atât pentru senzorul stâng, cât și pentru senzorul drept, în funcție de parametrii pe care îi primește.

  • setup() → inițializez pinii de trigger și echo pentru fiecare senzor ca input și ca output

  • loop() → colecție de calcule și comparații pentru a identifica comanda sub care se plasează mișcarea efectuată. Pentru fiecare comandă, calculăm distanța până la senzorul corespunzător, și în funcție de încadrarea între anumite limite, stabilim ce comandă vom trimite mai departe portului serial.

Spre exemplu, pentru comenzile “Volume Up”/ “Volume Down”, calculăm distanța de la mână la senzorul stâng, iar dacă ea se află în intervalul [10 cm, 20 cm], continuăm să calculăm distanța în fiecare moment, pentru a determina dacă mâna se apropie (caz în care trimitem “Vup” pe seriala) sau se îndepărtează (vom trimite “Vdown”).

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2022/arosca/hand-gesture-control-pentru-computer.1654112953.txt.gz · Last modified: 2022/06/01 22:49 by andreea.ralita
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