Table des matières:

[Souris portable] Contrôleur de souris portable basé sur Bluetooth pour Windows 10 et Linux : 5 étapes
[Souris portable] Contrôleur de souris portable basé sur Bluetooth pour Windows 10 et Linux : 5 étapes

Vidéo: [Souris portable] Contrôleur de souris portable basé sur Bluetooth pour Windows 10 et Linux : 5 étapes

Vidéo: [Souris portable] Contrôleur de souris portable basé sur Bluetooth pour Windows 10 et Linux : 5 étapes
Vidéo: Je suis une BDH ?! 🚨 2024, Juillet
Anonim
Image
Image
Accéléromètre d'interfaçage avec Raspberry Pi
Accéléromètre d'interfaçage avec Raspberry Pi

J'ai créé un contrôleur de souris basé sur Bluetooth qui peut être utilisé pour contrôler le pointeur de la souris et effectuer des opérations liées à la souris PC à la volée, sans toucher aucune surface. Le circuit électronique, intégré à un gant, peut être utilisé pour suivre les gestes de la main via un accéléromètre et peut être traduit en mouvement du pointeur de la souris. Cet appareil est également interfacé avec un bouton qui reproduit le clic gauche. L'appareil peut être connecté en série au PC (via USB) ou sans fil via une connexion Bluetooth. Bluetooth fournit une communication sans fil robuste et universelle entre l'appareil hôte et cette souris portable. Comme Bluetooth est largement disponible et est intégré à presque tous les ordinateurs portables personnels, le cas d'utilisation d'un tel appareil portable est large. En utilisant Raspberry Pi, qui est une plate-forme de développement couramment utilisée pour divers projets, l'interfaçage de différents capteurs et le développement d'un tel appareil sont faciles et évolutifs. Le gant peut être remplacé par n'importe quel autre appareil portable pour rendre son application plus large.

Par mesure de précaution contre le COVID-19, il est conseillé d'éviter de toucher des surfaces qui peuvent être partagées entre différentes personnes, et un ordinateur portable à écran tactile ou une souris peuvent faire partie de ces surfaces communes. L'utilisation d'un tel appareil portable aide à maintenir l'hygiène et à désinfecter les surfaces couramment utilisées:)

Fournitures

  • Raspberry Pi 3 modèle B V1.2
  • Breakout d'accéléromètre à trois axes SparkFun - MMA8452Q
  • Fil de cavalier mâle à femelle
  • Un gant
  • Ruban adhésif
  • Ciseaux
  • Câble micro-USB
  • Câble HDMI (pour le débogage via Raspberry Pi)

Étape 1: Interfaçage de l'accéléromètre avec Raspberry Pi

Accéléromètre d'interfaçage avec Raspberry Pi
Accéléromètre d'interfaçage avec Raspberry Pi

J'ai utilisé un accéléromètre à trois axes MMA8542Q de Sparkfun qui utilise le protocole de communication I2C pour parler aux broches GPIO du Raspberry Pi et envoyer les données des axes. Ce capteur fournit divers modes de fonctionnement avec le débit de données configurable, les modes de veille, la plage d'accélération, le mode de filtrage, etc. J'ai trouvé le code de Pibits très utile dans ma configuration initiale du capteur et de le tester avec mes gestes de la main. Il est préférable de placer d'abord le capteur sur une surface plane et de faire des inclinaisons déterministes tout en observant les valeurs brutes du capteur. Ceci est particulièrement utile pour comprendre comment ce capteur réagit avec divers gestes de la main et comment nous pouvons définir des seuils pour notre application. Une fois l'accéléromètre interfacé avec succès, vous pouvez voir les données brutes des axes arriver sur l'écran du terminal du Pi.

Étape 2: Interfaçage du bouton-poussoir avec Raspberry Pi

Bouton poussoir d'interfaçage avec Raspberry Pi
Bouton poussoir d'interfaçage avec Raspberry Pi

Dans cet appareil portable, j'ai interfacé un bouton qui peut fonctionner comme un bouton gauche de la souris afin que je puisse cliquer sur les icônes à l'écran. Les 2 extrémités du bouton sont alors connectées aux 2 broches GPIO du Pi. L'une des broches génère une valeur logique élevée et l'autre broche lit cette valeur. Lorsque le bouton est enfoncé, le circuit se ferme et la broche d'entrée est capable de lire une valeur logique élevée, qui est ensuite traitée par le script que j'ai écrit pour émuler le clic gauche de la souris. En raison du manque de fer à souder, j'ai utilisé du ruban adhésif pour relier les cavaliers au bouton.

Étape 3: Développement d'un script Python pour contrôler en série le pointeur de la souris

J'ai utilisé la bibliothèque Python Pyautogui pour contrôler le pointeur de la souris. La raison d'utiliser cette bibliothèque était qu'elle fonctionne à la fois sur Linux et sur la plate-forme Windows. Afin de contrôler le pointeur de la souris sur mon Raspberry Pi, j'ai d'abord connecté mon Pi à un écran. Ensuite, j'ai utilisé les API suivantes fournies par la bibliothèque pour contrôler le pointeur de ma souris:

  1. pyautogui.move (0, 200, 2) # déplace la souris vers le bas de 200 pixels en 2 secondes
  2. pyautogui.click() # cliquez sur la souris

Afin de filtrer les données d'erreur provenant de l'accéléromètre, j'ai utilisé la moyenne et d'autres méthodes de filtrage qui peuvent être facilement comprises grâce au code joint. L'API pyautogui.move(0, y) a été utilisée de manière à ce que le pointeur de la souris puisse aller de haut en bas ou de gauche à droite à la fois. En effet, l'accéléromètre signale les axes dans les directions X, Y et Z, mais l'API ne prend que 2 arguments, les axes X et Y. Par conséquent, cette approche était bien adaptée à mon accéléromètre et à la cartographie des gestes à l'écran.

Étape 4: Développement d'un script Python pour contrôler le pointeur de la souris via Bluetooth

Développement d'un script Python pour contrôler le pointeur de la souris via Bluetooth
Développement d'un script Python pour contrôler le pointeur de la souris via Bluetooth

Cette partie est une application avancée dans laquelle tout ordinateur portable doté de capacités Bluetooth peut communiquer avec Raspberry Pi dans un modèle de communication serveur-client et transmettre les données de coordonnées de la souris sans fil. Afin de configurer un ordinateur portable Windows 10 64 bits pour permettre la communication Bluetooth, nous devons suivre les étapes ci-dessous:

Windows 10:

  1. Créez un port COM Bluetooth entrant.
  2. Associez le Bluetooth du Pi au Bluetooth de l'ordinateur portable en rendant Pi détectable.
  3. Installez Python sur Windows.
  4. Installez pip sur Windows. Pip est utilisé pour installer des bibliothèques sur une machine Linux ou Windows.
  5. Installez pyautogui sur Windows en utilisant: pip install pyautogui
  6. Une fois pyautogui installé sur l'appareil, installez Pybluez sur Windows en utilisant la commande suivante sur le terminal Windows en utilisant: pip install PyBluez-win10. PyBluez permet la communication Bluetooth sur les PC Windows et Linux.
  7. Afin de développer une application sur un ordinateur portable Windows 10, nous devons installer Microsoft Visual Studio (15-20 Go d'espace requis) et ses outils de build. Par conséquent, avec PyBluez, nous devons suivre les instructions ci-dessous,

    1. Téléchargez et exécutez "Visual Studio Installer":
    2. Installez "Visual Studio Build Tools 2017", cochez "Visual C++ build tools" et "Universal Windows Platform build tools"

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

  8. Si les instructions ci-dessus sont correctement suivies, l'exécution de Python sur un terminal Windows et l'importation de pyautogui et du module Bluetooth devraient fonctionner sans erreur, conformément à l'image ci-dessus.
  9. Dans la bibliothèque pybluez installée sur la machine Windows, accédez à: pybluez-master\examples\simple\rfcomm-server.py et exécutez à l'aide de python rfcomm-server.py. Si le terminal passe en état d'attente sans erreur, passez à la section ci-dessous pour configurer Bluetooth sur Pi. S'il y a des erreurs lors de l'installation de pybluez, reportez-vous à GitHub Issues pour le débogage.

Raspbian sur Raspberry Pi:

  1. Installer PyBluez sur Pi
  2. Exécutez l'exemple de serveur sous Windows. Ensuite, sur Pi, accédez à pybluez-master\examples\simple\rfcomm-client.py et exécutez. Si les deux appareils ont commencé à communiquer, Bluetooth est maintenant configuré sur les deux appareils. Pour en savoir plus sur le fonctionnement de la communication par socket avec Python, reportez-vous à ce lien du MIT.

Des analyses de données supplémentaires seront nécessaires pour envoyer des données d'axes de Pi au PC, car les données sont envoyées en octets. Reportez-vous au code ci-joint pour plus d'informations sur la communication de données client et serveur.

Étape 5: Intégrer l'accéléromètre et le bouton sur le gant

Intégrer l'accéléromètre et le bouton sur le gant
Intégrer l'accéléromètre et le bouton sur le gant
Intégrer l'accéléromètre et le bouton sur le gant
Intégrer l'accéléromètre et le bouton sur le gant

Une fois l'accéléromètre bien interfacé, le squelette du système regarde quelque chose la première image sur cette étape.

Comme la surface du gant n'est pas plate, j'ai utilisé une fausse carte de crédit qui vient de temps en temps dans ma boîte aux lettres. Conformément à la deuxième image de cette étape, j'ai attaché la carte de crédit factice sur la surface supérieure de mon gant avec du ruban adhésif. Sur la carte, j'ai attaché mon accéléromètre. Cette configuration était suffisamment robuste pour garder mon accéléromètre stable et capable de suivre mes gestes avec précision.

Conseillé: