Usb-HID par Bluetooth : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Architecture)
 
Ligne 1 : Ligne 1 :
 +
[[Catégorie:Projets]]
 +
[[Catégorie:Projets Réseaux Mobiles et Avancés]]
 +
 +
{{
 +
Projet Étudiant
 +
|titre = Usb-HID par Bluetooth
 +
|cadre= Projets Réseaux Mobiles et Avancés
 +
|equipe= Bazin Jérémy, Delevoye Valentin, Mouss Wassim, Servettaz Morgan
 +
|encadrants=[mailto:Franck.Rousseau@imag.fr Franck Rousseau]
 +
}}
 +
 
== Introduction ==
 
== Introduction ==
 
=== presentation ===
 
=== presentation ===

Version actuelle en date du 17 mars 2020 à 16:25


Project schedule.png
Titre du projet Usb-HID par Bluetooth
Cadre Projets Réseaux Mobiles et Avancés

Équipe Bazin Jérémy, Delevoye Valentin, Mouss Wassim, Servettaz Morgan
Encadrants Franck Rousseau


Introduction

presentation

Notre projet est de connecter une souris et un clavier à une raspberry afin de manipuler un pc à distance par le biais du bluetooth.

Afin de reproduire notre travail, vous pouvez vous munir du matériel nécéssaire (voir Materiel & biliotheques) puis suivre les indications qui sont dans la section tutoriel d'installation.

Contributeurs

  • Bazin Jérémy
  • Delevoye Valentin
  • Mouss Wassim
  • Servettaz Morgan

Materiel & bibliotheques

Materiel

Pour ce projet nous avons besoin d'une raspberry avec le bluetooth, d'un pc avec le bluetooth, d'un clavier usb et d'une souris usb.

bibliotheques

Nous avons utilisé plusieurs bibliotheques de python notament:

  • pyautogui
  • pynput
  • pybluez

Architecture

L'architecture de l'application est assez simple. L'ordinateur sur lequel l'on souhaite que les périphériques soit simulés est le serveur Bluetooth, c'est à dire qu'il attend qu'un appareil se connecte sur sa session. La raspberry est connectée aux différents périphériques et agit comme le client Bluetooth.

BDMSArchitecture.png

Dans nos tests, nous utilisons un ordinateur (serveur) sous Ubuntu 18.04 et une raspberry sous raspbian 10.

Tutoriel d'installation

Installation commune

  • Pour pouvoir utilisé notre projet, vous allez avoir besoin d'installer python3 sur votre machine et sur la raspberry.

Sur un environnement comme Ubuntu vous pouvez utiliser cette commande :

 sudo apt-get update 
 sudo apt-get install python3.6

cela installera la version 3.6 de python.

  • Ensuite vous aurez besoin d'installer pip pour recuperer les bibliothèques de python.

Pour cela vous pouvez utiliser cette commande (notez que la commande utilise python3 comme indiqué par l'installation précédente) :

 sudo apt update
 sudo apt install python3-pip

Une fois l'installation de pip réussi, nous pouvons ajouter les bibliothèques nécéssaires.

  • Installation de pyautogui

Pyautogui est nécessaire pour récupéré les actions de la souris et du clavier mais aussi pour les émuler dans la machine. Il est donc nécéssaire de l'avoir sur la raspberry et sur votre machine.

Pour cela il suffit de faire :

 sudo pip3 install pyautogui
  • Installation de pybluez

Télécharger : http://www.bluez.org/download/ et lancer:

 ./configure

Puis:

 sudo apt-get install glib2.0
 sudo apt install libdbus-1-dev libudev-dev libical-dev libreadline-dev

Dans le dossier de pybluez:

 sudo make
 sudo make install
 sudo apt-get install libbluetooth-dev
 sudo pip install pybluez
  • En cas d'erreur " bluetooth.btcommon.BluetoothError: (2, 'No such file or directory') ".
 Ajouter -C à la fin de ExecStart dans le fichier /etc/systemd/system/dbus-org.bluez.service
 sudo sdptool add SP
 sudo systemctl deamon-reload
 sudo service bluetooth restart

Machine cliente (raspberry)

Machine serveur

  • Sur la machine serveur (votre machine) il est aussi nécéssaire d'installer pynput.

Pour ce faire utiliser la commande :

 sudo pip3 install pynput

Difficultés rencontrées

  • Gestion des événements:

Nous avions utilisé dans un premier temps seulement la librairie pyautogui pour le gestion des événements et pour l'émulation de la souris et du clavier mais le problème rencontré est que quand on envoyait le deplacement de la souris, pyautogui était trop lent et instaurais de la latence entre le mouvement de la main et le fait que la souris bouge. C'est pour cette raison que nous avons ensuite changé de librairie pour pynput mais celle-ci ne contenait pas certaines fonctionnalités c'est pourquoi nous avons gardé pyautogui en parallèle.

Extensions possibles

Pour améliorer l'application, il serait possible de supporter un plus grand nombre de périphériques (ex: manette). Pour ceci, il faut intégrer une librairie qui permet d'écouter les entrées de ce périphérique mais aussi être capable de l'émuler sur l'hôte . Pour que l'application soit plus générique, il est possible d'émuler directement un port USB. Pour réaliser cette extension, il faut pouvoir communiquer directement avec le système d'exploitation (sur l'hôte et sur la raspberry) afin de récupérer les trames binaires transmises par le port USB.

Sources

pyautogui :

pynput :

pybluez :