Gester este un prezenter ce poate muta silde-urile unei prezentări sau poate efectua acțiuni de tipul scroll. Scopul său este de a oferi unui prezentator o experiență mai facilă în timpul prestației sale. Acest proiect este util pentru dezvoltarea altor aplicații ce captează gesturile unui om pentru a realiza alte acțiuni de la distanță.
Acesta se folosește de un modul IMU pentru a capta gesturile și de un modul bluetooth pentru a transmite codificarea gestului rezultat la un device conectat. Înregistrarea gestului pornește din momentul în care utilizatorul apasă pe un buton.
ESP32 WeMos LOLIN32 - Microcontroller cu modul de Bluetooth integrat, perfect pentru un proiect ce nu consumă multă energie electrică.
IMU GY-521 cu MPU-6050 - Accelerometru și Giroscop cu 3 axe, utilizat pentru a înregistra mișcările de swipe și scroll.
Acumulator litiu, 3.7V, 400mAh - Mic și cu o tensiune optimă pentru microcontroller.
Modul incarcare acumulator litiu, TP4056, 5v, 1A, cu protectie, MicroUSB - Folosit pentru a putea încărca acumulatorul cu un cablu MicroUSB.
Pentru a putea muta slide-urile unei prezentări, Gester funcționează ca o tastatură wireless foarte simplă și cu puține butoane. Pentru a muta slide-urile se transmit keystroke-urile Left Arrow sau Right Arrow, iar pentru scroll se transmit mai multe keystroke-uri de Up Arrow sau Down Arrow în funcție de sensibilitatea stabilită.
Determinarea gestului se realizează cu ajutorul accelerometrului. În momentul apăsării butonului, se înregistrează valorile curente ale accelerației, se așteaptă o perioadă scurtă de timp în care se realizează gestul iar apoi se înregistrează valorile finale ale accelerației. Dacă diferența dintre valorile finale și cele inițiale pe axa X sau Z trec de un anumit prag, se transmit apoi keystroke-urile corespunzătoare.
Toate valorile constante pentru sensibilitate sau perioada de timp a gestului au fost stabilite experimental.
Conceptele software folosite sunt comunicația prin BLE cu un alt device, comunicația prin I2C cu un senzor, timere și GPIO.
Implementarea se poate găsi pe GitHub.
Link-ul pentru demo se află aici: Demo