Cuprins:

[Wearable Mouse] Controler Wearable Mouse bazat pe Bluetooth pentru Windows 10 și Linux: 5 pași
[Wearable Mouse] Controler Wearable Mouse bazat pe Bluetooth pentru Windows 10 și Linux: 5 pași

Video: [Wearable Mouse] Controler Wearable Mouse bazat pe Bluetooth pentru Windows 10 și Linux: 5 pași

Video: [Wearable Mouse] Controler Wearable Mouse bazat pe Bluetooth pentru Windows 10 și Linux: 5 pași
Video: They were SO close! - Weird controllers that defined modern gaming 2024, Noiembrie
Anonim
Image
Image
Accelerometru de interfață cu Raspberry Pi
Accelerometru de interfață cu Raspberry Pi

Am realizat un controler de mouse bazat pe Bluetooth, care poate fi folosit pentru a controla indicatorul mouse-ului și a efectua operațiuni legate de mouse-ul computerului din mers, fără a atinge nicio suprafață. Circuitele electronice, care sunt încorporate pe o mănușă, pot fi utilizate pentru a urmări gesturile mâinilor printr-un accelerometru și care pot fi traduse în mișcarea indicatorului mouse-ului. Acest dispozitiv este, de asemenea, interfațat cu un buton care reproduce clicul din stânga. Dispozitivul poate fi atașat serial la computer (prin USB) sau fără fir printr-o conexiune Bluetooth. Bluetooth oferă o comunicație fără fir robustă și universală între dispozitivul gazdă și acest mouse portabil. Deoarece Bluetooth este disponibil pe scară largă și vine încorporat cu aproape toate laptopurile personale, cazul de utilizare al unui astfel de dispozitiv portabil este larg. Utilizarea Raspberry Pi, care este o platformă de dezvoltare utilizată în mod obișnuit pentru diverse proiecte, interfața diferiților senzori și dezvoltarea unui astfel de dispozitiv este ușoară și scalabilă. Mănușa poate fi înlocuită cu orice alt purtabil pentru a-și face aplicarea mai largă.

Ca măsură de precauție împotriva COVID-19, este recomandabil să evitați atingerea suprafețelor care pot fi partajate între diferite persoane, iar un laptop cu ecran tactil sau un mouse pot fi printre acele suprafețe comune. Utilizarea unui astfel de dispozitiv portabil ajută la menținerea igienei și la menținerea igienizate a suprafețelor utilizate în mod obișnuit:)

Provizii

  • Raspberry Pi 3 Model B V1.2
  • SparkFun Triple Axis Breakout Accelerometer Breakout - MMA8452Q
  • Sârmă jumper de la bărbat la feminin
  • O mănușă
  • Banda adeziva
  • Foarfece
  • Cablu micro-USB
  • Cablu HDMI (pentru depanare prin Raspberry Pi)

Pasul 1: Interfață accelerometru cu Raspberry Pi

Accelerometru de interfață cu Raspberry Pi
Accelerometru de interfață cu Raspberry Pi

Am folosit un accelerometru cu trei axe MMA8542Q de la Sparkfun care folosește protocolul de comunicație I2C pentru a vorbi cu pinii GPIO Raspberry Pi și pentru a trimite datele axelor. Acest senzor oferă diferite moduri de funcționare cu viteza de date configurabilă, modurile de repaus, intervalul de accelerație, modul de filtrare etc. Am găsit codul de la Pibits foarte util în configurația inițială a senzorului și testarea acestuia cu gesturile mâinii. Este mai bine să așezați mai întâi senzorul pe o suprafață plană și să faceți înclinări deterministe în timp ce observați valorile brute ale senzorului. Acest lucru este deosebit de util pentru a înțelege cum reacționează acest senzor cu diferite gesturi ale mâinii și cum putem seta praguri pentru aplicația noastră. Odată ce accelerometrul este interfațat cu succes, puteți vedea datele despre axele brute care vin pe ecranul terminalului Pi.

Pasul 2: interfațarea butonului cu Raspberry Pi

Buton de interfață cu Raspberry Pi
Buton de interfață cu Raspberry Pi

În acest dispozitiv purtabil, am interfațat un buton care poate funcționa ca un buton stâng al mouse-ului, astfel încât să pot face clic pe pictograme pe ecran. Cele 2 capete ale butonului sunt apoi conectate la 2 pini GPIO ai Pi. Unul dintre pini produce un nivel logic ridicat, iar celălalt pin citește acea valoare. Când butonul este apăsat, circuitul se închide și pinul de intrare este capabil să citească o valoare logică ridicată, care este apoi procesată de scriptul pe care l-am scris pentru a emula clicul din stânga al mouse-ului. Din cauza lipsei de lipit, am folosit bandă adezivă pentru a conecta jumperii cu butonul.

Pasul 3: Dezvoltarea scriptului Python pentru controlul serial al mouse-ului

Am folosit biblioteca Pyautogui Python pentru a controla indicatorul mouse-ului. Motivul utilizării acestei biblioteci a fost că funcționează atât pe Linux, cât și pe platforma Windows. Pentru a controla indicatorul mouse-ului pe Raspberry Pi, mai întâi mi-am conectat Pi-ul la un afișaj. Apoi, am folosit următoarele API-uri furnizate de bibliotecă pentru a controla indicatorul mouse-ului:

  1. pyautogui.move (0, 200, 2) # mută mouse-ul în jos cu 200 de pixeli timp de 2 secunde
  2. pyautogui.click () # faceți clic pe mouse

Pentru a filtra datele de eroare provenite de la Accelerometer, am folosit medii și alte metode de filtrare care pot fi ușor înțelese prin codul atașat. API-ul pyautogui.move (0, y) a fost utilizat într-un mod astfel încât indicatorul mouse-ului să poată merge în sus-jos sau în stânga-dreapta la un moment dat. Acest lucru se datorează faptului că accelerometrul raportează axe în direcția X, Y și Z, dar API acceptă doar 2 argumente, axele X și Y. Prin urmare, această abordare a fost mult mai potrivită pentru accelerometrul meu și pentru a mapa gesturile pe ecran.

Pasul 4: Dezvoltarea scriptului Python pentru a controla indicatorul mouse-ului prin Bluetooth

Dezvoltarea scriptului Python pentru a controla indicatorul mouse-ului prin Bluetooth
Dezvoltarea scriptului Python pentru a controla indicatorul mouse-ului prin Bluetooth

Această parte este o aplicație avansată în care orice laptop care are capacități Bluetooth poate comunica cu Raspberry Pi într-un model de comunicație server-client și transmite coordonatele mouse-ului fără fir. Pentru a configura un laptop Windows 10 pe 64 de biți pentru a permite comunicarea prin Bluetooth, trebuie să urmăm pașii de mai jos:

Windows 10:

  1. Creați un port Bluetooth COM de intrare.
  2. Asociați Bluetooth-ul Pi-ului cu Bluetooth-ul laptopului, făcând Pi descoperibil.
  3. Instalați Python pe Windows.
  4. Instalați pip pe Windows. Pip este folosit pentru a instala biblioteci pe un computer Linux sau Windows.
  5. Instalați pyautogui pe Windows folosind: pip instalați pyautogui
  6. Odată ce pyautogui este instalat pe dispozitiv, instalați Pybluez pe Windows folosind următoarea comandă pe terminalul Windows folosind: pip instalați PyBluez-win10. PyBluez permite comunicarea Bluetooth atât pe computerele Windows, cât și pe cele Linux.
  7. Pentru a dezvolta o aplicație pe un laptop Windows 10, trebuie să instalăm Microsoft Visual Studio (15-20 GB spațiu necesar) și instrumentele sale de construire. Prin urmare, împreună cu PyBluez, trebuie să urmăm instrucțiunile de mai jos,

    1. Descărcați și rulați „Visual Studio Installer”:
    2. Instalați „Visual Studio Build Tools 2017”, bifați „Visual C ++ build tools” și „Universal Windows Platform build tools”

    3. git clone
    4. cd pybluez
    5. instalare python setup.py

  8. Dacă instrucțiunile de mai sus sunt respectate corect, rularea Python pe terminalul Windows și importarea modulelor pyautogui și Bluetooth ar trebui să funcționeze fără erori, conform imaginii de mai sus.
  9. În biblioteca pybluez instalată pe computerul Windows, navigați la: pybluez-master / examples / simple / rfcomm-server.py și executați folosind python rfcomm-server.py. Dacă terminalul intră într-o stare de așteptare fără erori, accesați secțiunea de mai jos pentru configurarea Bluetooth pe Pi. Dacă există erori la instalarea pybluez, consultați Probleme GitHub pentru depanare.

Raspbian pe Raspberry Pi:

  1. Instalați PyBluez pe Pi
  2. Rulați exemplul de server pe Windows. Apoi, pe Pi, navigați la pybluez-master / examples / simple / rfcomm-client.py și executați. Dacă cele două dispozitive au început să comunice, Bluetooth este acum configurat pe ambele dispozitive. Pentru a înțelege mai multe despre cum funcționează comunicarea socket cu Python, consultați acest link de la MIT.

Va fi necesară o analiză suplimentară a datelor pentru a trimite datele axelor de la Pi la PC, deoarece datele sunt trimise în octeți. Consultați codul atașat pentru mai multe informații despre comunicarea datelor client și server.

Pasul 5: încorporarea accelerometrului și butonului pe mănușă

Încorporarea accelerometrului și butonului pe mănușă
Încorporarea accelerometrului și butonului pe mănușă
Încorporarea accelerometrului și butonului pe mănușă
Încorporarea accelerometrului și butonului pe mănușă

Odată ce accelerometrul este bine interfațat, sistemul scheletului arată ceva prima imagine din acest pas.

Deoarece suprafața mănușii nu este plană, am folosit un card de credit fals care vine în cutia poștală din când în când. Conform celei de-a doua imagini din acest pas, am atașat cardul de credit fals pe suprafața superioară a mănușii cu bandă adezivă. Peste card, mi-am atașat accelerometrul. Această configurare a fost suficient de robustă pentru a-mi menține accelerometrul stabil și capabil să-mi urmărească gesturile cu precizie.

Recomandat: