Remus-Dan UNGUREANU (66904) - Wired Glove

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Un data glove este un dispozitiv de input pentru interactiunea om-calculator purtat ca o manusa. Rezultatul acestui proiect este un dispozitiv care poate fi folosit in locul unui mouse.

Descriere generală

Pentru folosirea acestui dispozitiv, utilizatorul va trebui sa poarte o manusa care ii va transforma toate miscarile mainii in input pentru calculator: deplasarea mainii rezulta in deplasarea cursorului, iar gesturile degetelor vor reprezenta apasarea butoanelor.

Block Scheme

Nucelul proiectului este microcontrollerul ATmega324A care citeste datele de la senzori si le transmite catre calculator. Datele despre deplasarea mainii sunt citite de la giroscop, pentru mouse click sunt folosite doua butoane care au fost atasate degetului aratator si mijlociu. Pentru comunicarea cu calculatorul se poate folosi una dintre cele doua interfete: USB sau Bluetooth.

Hardware Design

Schematic

Schematic

Design-ul hardware al proiectului este simplu si contine cateva elemente cheie: giroscopul care este conectat la interfata I2C, modulul bluetooth care este conectat la interfata USART0 si cele doua butoane care sunt conectate cu doi pini GPIO ai microcontrollerului.

Componente

Piesa Qty
PCB 1
ATmega324A 1
Butoane 2
Giroscopul (MPU-6050) 1
Modul Bluetooth (HC-05) 1

Deoarece firmware-ul modului Bluetooth HC-05 nu are suport pentru clasa HID, am fost nevoit sa implementez un driver (in user-space) care sa comunice cu hardware-ul. Surprinzator, ofera o performanta mai buna, deci si o precizie mai mare. Cel mai probabil, profilul USB HID ar putea fi imbunatatit sa ajunga la o performanta similara sau poate chiar mai buna.

O alta solutie, poate fi flashuirea unui firmware pe modulul HC-05 care sa suporte clasa HID, asa cum a fost realizat si in unul din linkurile din bibliografie.

Software Design

Din punct de vedere software, firmware-ul poate fi impartit in trei parti:

  • cea care se ocupa de achizitia datelor de la giroscopul MPU-6050 si care le interpreteaza;
  • cea care transmite raportul catre calculator prin interfata USB;
  • cea care transmite raportul catre calculator prin Bluetooth.

Prin interfata USB, mouse-ul se prezinta ca un dispozitiv din clasa HID, ceea ce il face compatibil cu majoritatea dispozitivelor. Biblioteca V-USB a fost folosita pentru a comunica cu calculatorul.

Interfata Bluetooth necesita un driver pe care l-am implementat in user-space si care functioneaza doar pe macOS (momentan). Am folosit biblioteca wjwwood/serial pentru a comunica cu modulul Bluetooth.

Rezultate Obţinute

 Rezultatul final

Concluzii

A fost un proiect interesant in care am reusit sa folosim cunostintele de electronica si programare dobandite in facultate. A fost pe departe proiectul care a necesitat cele mai multe cunostinte si totusi a fost amuzant <fc #C0C0C0>(si putin frustant)</fc> de realizat.

Download

Intreg proiectul poate fi navigat pe GitHub.

In acest repo, veti gasi utilitarul pentru incarcat firmware-ul pe placuta, firmware-ul, schema hardware a proiectului, o mica biblioteca cross-platform pentru comunicarea seriala si driver-ul din user space necesar pentru comunicarea prin Bluetooth (functioneaza doar pe macOS).

Alternativ, puteti descarca toti continutul repo-ului de aici.

Jurnal

[21.04] Alegerea temei proiectului cu ajutorul lui Tudor Visan

[23.04] Inceperea placutei de baza

[23.04] Cautarea componentelor necesare; schitarea listei cu componente

[28.04] Terminarea placutei de baza

[29.04] Realizarea schemei electrice

[23.05] Realizarea proiectului (lipirea componentelor, realizarea firmware-ului si a driverului)

Bibliografie/Resurse

pm/prj2017/tvisan/wired-glove.txt · Last modified: 2021/04/14 17:07 (external edit)
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