Inhoudsopgave:

[Wearable Mouse] Bluetooth-gebaseerde draagbare muiscontroller voor Windows 10 en Linux - Ajarnpa
[Wearable Mouse] Bluetooth-gebaseerde draagbare muiscontroller voor Windows 10 en Linux - Ajarnpa

Video: [Wearable Mouse] Bluetooth-gebaseerde draagbare muiscontroller voor Windows 10 en Linux - Ajarnpa

Video: [Wearable Mouse] Bluetooth-gebaseerde draagbare muiscontroller voor Windows 10 en Linux - Ajarnpa
Video: HAPPY ST. PATRICK'S DAY | Happy Wheels - Part 91 2024, November
Anonim
Image
Image
Interfacing versnellingsmeter met Raspberry Pi
Interfacing versnellingsmeter met Raspberry Pi

Ik heb een op Bluetooth gebaseerde muiscontroller gemaakt die kan worden gebruikt om de muisaanwijzer te besturen en pc-muisgerelateerde bewerkingen on-the-fly uit te voeren, zonder oppervlakken aan te raken. Het elektronische circuit, dat op een handschoen is ingebed, kan worden gebruikt om handgebaren te volgen via een versnellingsmeter en dat kan worden vertaald in de beweging van de muisaanwijzer. Dit apparaat is ook gekoppeld aan een knop die de klik met de linkerknop nabootst. Het apparaat kan serieel op de pc worden aangesloten (via USB) of draadloos via een Bluetooth-verbinding. Bluetooth zorgt voor een robuuste en universele draadloze communicatie tussen het hostapparaat en deze draagbare muis. Omdat Bluetooth overal beschikbaar is en wordt geleverd met bijna alle persoonlijke laptops, is het gebruik van een dergelijk draagbaar apparaat breed. Met Raspberry Pi, een veelgebruikt ontwikkelplatform voor verschillende projecten, is de interface van verschillende sensoren en de ontwikkeling van een dergelijk apparaat eenvoudig en schaalbaar. De handschoen kan worden vervangen door andere wearables om de toepassing breder te maken.

Als voorzorgsmaatregel tegen de COVID-19 is het raadzaam om het aanraken van oppervlakken die door verschillende mensen kunnen worden gedeeld, te vermijden, en een laptop met aanraakscherm of een muis kan een van die gemeenschappelijke oppervlakken zijn. Het gebruik van een dergelijk draagbaar apparaat helpt bij het handhaven van de hygiëne en om de veelgebruikte oppervlakken schoon te houden:)

Benodigdheden

  • Raspberry Pi 3 Model B V1.2
  • SparkFun Triple Axis Accelerometer Breakout - MMA8452Q
  • Man-vrouw verbindingsdraad
  • Een handschoen
  • Duct tape
  • Schaar
  • Micro-USB-kabel
  • HDMI-kabel (voor foutopsporing via Raspberry Pi)

Stap 1: Interfacing versnellingsmeter met Raspberry Pi

Interfacing versnellingsmeter met Raspberry Pi
Interfacing versnellingsmeter met Raspberry Pi

Ik heb een MMA8542Q drieassige versnellingsmeter van Sparkfun gebruikt die het I2C-communicatieprotocol gebruikt om met de Raspberry Pi GPIO-pinnen te praten en de assengegevens te verzenden. Deze sensor biedt verschillende werkingsmodi met de configureerbare datasnelheid, slaapmodi, acceleratiebereik, filtermodus, enz. Ik vond de code van Pibits erg nuttig bij mijn eerste configuratie van de sensor en het testen met mijn handgebaren. Het is beter om de sensor eerst op een vlakke ondergrond te plaatsen en deterministische kantelingen te maken terwijl u de ruwe sensorwaarden in de gaten houdt. Dit is vooral handig om te begrijpen hoe deze sensor reageert met verschillende handgebaren en hoe we drempels kunnen instellen voor onze toepassing. Zodra de versnellingsmeter met succes is gekoppeld, kunt u de onbewerkte assengegevens op het terminalscherm van de Pi zien verschijnen.

Stap 2: Interface-drukknop met Raspberry Pi

Interface-drukknop met Raspberry Pi
Interface-drukknop met Raspberry Pi

In dit draagbare apparaat heb ik een knop aangesloten die kan werken als een linkermuisknop, zodat ik op pictogrammen op het scherm kan klikken. De 2 uiteinden van de knop zijn dan verbonden met 2 GPIO-pinnen van de Pi. Een van de pinnen geeft een logische high af en de andere pin leest die waarde. Wanneer de knop wordt ingedrukt, wordt het circuit gesloten en kan de invoerpin een logisch hoge waarde lezen, die vervolgens wordt verwerkt door het script dat ik heb geschreven om klikken met de linkermuis te emuleren. Vanwege het ontbreken van een soldeerbout heb ik ducttape gebruikt om de jumpers met de knop te verbinden.

Stap 3: Python-script ontwikkelen om de muisaanwijzer serieel te besturen

Ik heb de Pyautogui Python-bibliotheek gebruikt om de muisaanwijzer te besturen. De reden om deze bibliotheek te gebruiken was dat deze zowel op Linux als op het Windows-platform werkt. Om de muisaanwijzer op mijn Raspberry Pi te bedienen, heb ik eerst mijn Pi op een display aangesloten. Vervolgens heb ik de volgende API's van de bibliotheek gebruikt om mijn muisaanwijzer te besturen:

  1. pyautogui.move(0, 200, 2) # beweegt muis 200 pixels omlaag in 2 seconden
  2. pyautogui.click() # klik met de muis

Om foutgegevens uit Accelerometer te filteren, heb ik middeling en andere filtermethoden gebruikt die gemakkelijk kunnen worden begrepen via de bijgevoegde code. De API pyautogui.move(0, y) werd zo gebruikt dat de muisaanwijzer tegelijk omhoog of omlaag of van links naar rechts kan gaan. Dit komt omdat de versnellingsmeter assen in X-, Y- en Z-richting rapporteert, maar de API heeft slechts 2 argumenten, X- en Y-assen. Daarom was deze aanpak zeer geschikt voor mijn versnellingsmeter en om de gebaren op het scherm in kaart te brengen.

Stap 4: Python-script ontwikkelen om de muisaanwijzer via Bluetooth te bedienen

Python-script ontwikkelen om muisaanwijzer via Bluetooth te bedienen
Python-script ontwikkelen om muisaanwijzer via Bluetooth te bedienen

Dit onderdeel is een geavanceerde applicatie waarbij elke laptop met Bluetooth-mogelijkheden kan communiceren met Raspberry Pi in een server-client communicatiemodel en muiscoördinaten draadloos kan verzenden. Om een Windows 10 64-bit laptop in te stellen om Bluetooth-communicatie toe te staan, moeten we de onderstaande stappen volgen:

Windows 10:

  1. Maak een inkomende Bluetooth COM-poort.
  2. Koppel de Bluetooth van de Pi met de Bluetooth van de laptop door Pi vindbaar te maken.
  3. Installeer Python op Windows.
  4. Installeer pip op Windows. Pip wordt gebruikt om bibliotheken op een Linux- of Windows-machine te installeren.
  5. Installeer pyautogui op Windows met: pip install pyautogui
  6. Nadat pyautogui op het apparaat is geïnstalleerd, installeert u Pybluez op Windows met behulp van de volgende opdracht op de Windows-terminal met: pip install PyBluez-win10. PyBluez maakt Bluetooth-communicatie mogelijk op zowel Windows- als Linux-pc's.
  7. Om een applicatie op een Windows 10-laptop te ontwikkelen, moeten we Microsoft Visual Studio (15-20 GB aan ruimte vereist) en de bijbehorende buildtools installeren. Daarom moeten we, samen met PyBluez, de onderstaande instructies volgen,

    1. Download en voer "Visual Studio Installer" uit:
    2. Installeer "Visual Studio Build Tools 2017", vink "Visual C++ build tools" en "Universal Windows Platform build tools" aan

    3. git kloon
    4. cd pybluez
    5. python setup.py installeren

  8. Als de bovenstaande instructies correct worden gevolgd, zou het uitvoeren van Python op Windows Terminal en het importeren van pyautogui en Bluetooth-module zonder fouten moeten werken, zoals in de afbeelding hierboven.
  9. Navigeer in de pybluez-bibliotheek die op de Windows-computer is geïnstalleerd naar: pybluez-master\examples\simple\rfcomm-server.py en voer het uit met python rfcomm-server.py. Als de terminal zonder fouten in een wachtstand gaat, ga dan naar het onderstaande gedeelte voor het instellen van Bluetooth op Pi. Als er fouten zijn bij het installeren van pybluez, raadpleeg dan GitHub-problemen voor foutopsporing.

Raspbian op Raspberry Pi:

  1. Installeer PyBluez op Pi
  2. Voer het servervoorbeeld uit op Windows. Navigeer vervolgens op Pi naar pybluez-master\examples\simple\rfcomm-client.py en voer het uit. Als de twee apparaten met elkaar zijn gaan communiceren, is Bluetooth nu op beide apparaten ingesteld. Raadpleeg deze link van MIT voor meer informatie over hoe socketcommunicatie werkt met Python.

Er is wat extra gegevensparsering vereist om assengegevens van Pi naar pc te verzenden, omdat de gegevens in bytes worden verzonden. Raadpleeg de bijgevoegde code voor meer informatie over de client- en serverdatacommunicatie.

Stap 5: Accelerometer en knop op de handschoen insluiten

Versnellingsmeter en knop op de handschoen insluiten
Versnellingsmeter en knop op de handschoen insluiten
Versnellingsmeter en knop op de handschoen insluiten
Versnellingsmeter en knop op de handschoen insluiten

Zodra de versnellingsmeter goed is aangesloten, ziet het skeletsysteem eruit als de eerste afbeelding in deze stap.

Omdat het oppervlak van de handschoen niet vlak is, heb ik een nep-creditcard gebruikt die af en toe in mijn brievenbus komt. Volgens de tweede afbeelding bij deze stap heb ik de dummy-creditcard op het bovenoppervlak van mijn handschoen bevestigd met ducttape. Over de kaart heb ik mijn versnellingsmeter bevestigd. Deze opstelling was robuust genoeg om mijn versnellingsmeter stabiel te houden en mijn gebaren nauwkeurig te volgen.

Aanbevolen: