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:
Montajul electronic:
Schema electrica:
Software Design
Descrierea codului aplicaţiei (firmware):
Biblioteci:
Arduino:
Adafruit_GFX.h
Adafruit_SSD1306.h
Python:
Functii:
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():
void display_message(const char *message):
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 alfa 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”
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
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