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 de senzor, 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 de senzor, 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.1684687739.txt.gz · Last modified: 2023/05/21 19:48 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