This is an old revision of the document!


Hand Wave Cinema

Introducere

Proiectul se foloseste de Arduino si Python pentru a controla comportamentul unei aplicatii prin diferite gesturi.

Se utilizeaza doi senzori ultrasonici pentru a detecta pozitia mainii si a controla un media player (VLC) in functie de aceasta. Este utilizat un buton pentru pornirea/oprirea interpretarii gesturilor, un display OLED pentru afisarea comenzii curente care se executa si un LED pentru feedback vizual.

Concepte aflate la baza dezvoltarii proiectului:

Principalul scop al acestui proiect este de a demonstra versatilitatea si potentialul platformelor hardware si software open-source si de a oferi un nou mod de a interactiona cu un media player, prin gesturi, fara a fi nevoie de a folosi tastatura sau o telecomanda. Folosind senzorii cu ultrasunete pentru a detecta pozitia mainii, utilizatorii pot controla aplicatia prin gesturi simple, cum ar fi apropierea sau departarea mainii pentru actiuni precum Rewind/Fast-Forward sau micsorarea/marirea volumului.

Printre utilizarile si beneficiile acestui proiect mentionam accesibilitatea si inovatia. Oferind o modalitate alternativa de a controla o aplicatie precum VLC prin gesturi ale mainii, acest proiect poate fi deosebit de util pentru persoane cu dizabilitati motorii, care au dificultati in a utiliza metodele de control traditionale. De asemenea, acest proiect are potentialul de a constitui o modalitate distractiva si captivanta de a interactiona cu diverse tehnologii si de a experimenta cu acestea.

Schema bloc

Hardware Design

Lista de componente:

  • 1 x Arduino UNO
  • 2 x Senzor ultrasonic HC-SR04
  • 1 x Display OLED I2C SSD1306 0.96' 128×64
  • 1 x Buton
  • 1 x Breadboard
  • Fire de legatura
  • Rezistente

Montajul electronic:

Schema electrica:

Software Design

Descrierea codului aplicaţiei (firmware):

  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Biblioteci:

  1. Arduino:
    • Adafruit_GFX.h
    • Adafruit_SSD1306.h
  1. Python:
    • serial
    • time
    • vlc

Functii:

  1. Arduino:
    • void setup():
      • seteaza viteza pentru transmisia de date;
      • configureaza pinii I/O pentru senzori, buton si led;
      • initializeaza si configureaza display-ul OLED;
    • void loop():
      • detecteaza daca butonul a fost apasat si face toggle la variabila de stare a interpretarii gesturilor;
      • daca interpretarea gesturilor este blocata, ecranul nu afiseaza niciun mesaj si led-ul de pe placuta Arduino este aprins;
      • altfel:
        • se calculeaza distantele dintre senzori si maini;
        • se verifica detectia ambelor maini, si daca comanda EXIT a fost detectata, se inchide programul;
        • daca o singura mana a fost detectata, se interpreteaza gesturile mainii respective;
    • int compute_distance(int trigger, int echo):
      • calculeaza distanta pana la obiect pe baza formulei: time_taken * 0.034 / 2;
      • returneaza valoarea distantei, distanta maxima acceptata fiind 50cm;
    • void get_hands_distances():
      • calculeaza, pentru fiecare mana, distanta pana la senzor;
    • void display_message(const char *message):
      • afiseaza centrat mesajul pe display;
    • int detect_both_hands():
      • daca ambele maini se afla la o distanta intre 40-50cm, se afiseaza (ecran, serial) mesajul “Play/Pause” si returneaza 0;
      • daca ambele maini se afla la o distanta mai mica de 12cm, se afiseaza (ecran, serial) mesajul “EXIT” si returneaza 1;
    • void detect_left_hand():
      • face lock pe mana stanga, daca se afla la o distanta intre 12-17cm;
      • cat timp mana nu se departeaza la mai mult de 40cm de senzor:
        • daca mana s-a apropiat, este afisata comanda “Volume DOWN”;
        • daca mana s-a departat, este afisata comanda “Volume UP”;
    • void detect_right_hand():
      • face lock pe mana dreapta, daca se afla la o distanta intre 12-17cm;
      • cat timp mana nu se departeaza la mai mult de 40cm de senzor:
        • daca mana s-a apropiat, este afisata comanda “Rewind”;
        • daca mana s-a departat, este afisata comanda “Forward”.
  2. Python:
    • se creeaza o noua instanta de VLC Player;
    • se seteaza filmul in functie de inputul utilizatorului si se porneste playback-ul;
    • citeste mesajul de pe serial, afiseaza si executa comanda.

Rezultat

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

[de incarcat videoclip]

Jurnal

  • 07.05.2023 - wiki part 1
  • 16.05.2023 - hardware design
  • 21.05.2023 - software design

Resurse

Medii de dezvoltare:

  • Realizare schema bloc: creately.com
  • Realizare montaj electronic: wokwi.com
  • Realizare schema electrica: tinkercad.com
  • Cod Arduino: Arduino IDE
  • Cod Python: PyCharm

Export to PDF

pm/prj2023/avaduva/hand_wave_cinema.1684688581.txt.gz · Last modified: 2023/05/21 20:03 by teodora.stroe2210
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