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 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”.
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.
Pasi de utilizare:
Ordered List ItemSe pozitioneaza corespunzator senzorii, deasupra display-ului laptopului si se conecteaza placuta Arduino.
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