Hervé Connect - Communication avec le quadricoptère
L’application Hervé Connect a pour but d’acquérir les données issues de l’application Hervé Motion et de l’ordinateur pour ensuite les traiter et les envoyer à la radiocommande du quadricoptère. Cette application a été faite dans le but d’être le plus efficace et le plus rapide possible. Il est important qu’aucun bug ne survienne au cours du pilotage du drone. Nous allons voir au cours du fonctionnement de l’application notre choix d’utiliser une Arduino UNO.
Le quadricoptère utilise un système de contrôle classique de modélisme, une radiofréquence de 2.4GHz dans laquelle les valeurs des différentes voies sont fournis à la suite à une fréquence de 50Hz. Chaque voix est représenté par un signal créneau variant de 1 à 2 ms (valeur minimale et maximale) et elles se succèdent sur une période de 20 ms, ce signal est appelé PPM (Pulse Position Modulation). Dans notre cas, nous utilisons un système émetteur récepteur à 8 voies, donc notre signal utile sera contenu dans les 16 premières millisecondes d'émission et le reste sera composé de blanc. Notre télécommande de contrôle principal est équipé d'un mode de vol d'écolage, lequel permettant à un utilisateur avec une autre télécommande de faire transiter le signal dans cette dernière, qui se charge de l’émission.
L'intérêt de ce mode, est qu'en cas d'erreur de vol de commande par l'élève, la télécommande maitre peut reprendre la main et donc corriger et sécuriser le vol. Dans notre application, notre système de contrôle intuitif a le rôle de l'élève et la télécommande physique est le maitre, ce qui d'une part permet de reprendre la main en cas de problème de pilotage de l'utilisateur et d'autre part, de respecter la loi. Cette dernière impose la présence d'une télécommande maitre "classique" permettant à tout moment de reprendre la main sur un moyen de contrôle non conventionnel.
Nous devons donc émuler une télécommande afin de s'en servir de télécommande élève. Les signaux PPM nécessaire au contrôle de la télécommande sont de 5V, nous avons donc cherché un moyen de générer ses signaux. Nous avons orienté notre choix vers un microcontrôleur très rependu et facile à prendre en main : l'Arduino. Cette carte de prototypage offre d'une part un microcontrôleur véloce et robuste et d'autre part intégré un port USB permettant d'obtenir une liaison série avec l'ordinateur.
Les 16MHz du microcontrôleur sont largement suffisant à notre application, la majeure partie des traitements étant effectuée dans le logiciel de traitement. Le microcontrôleur a donc pour objectif ici de recevoir les données, les interpréter et de générer sur une de ses broche de sortie le PPM désiré. Ce PPM sera ensuite envoyée à la télécommande au moyen du câble jack d'écolage.
Voyons plus en détail son fonctionnement :
Les données du programme de traitement et d'acquisition du Leap Motion sont envoyés dans l'Arduino via le port série à très haute débit (115200 bits par seconde) afin de pouvoir assurer le transfert de la quantité importante d'information nécessaire au vol. Pour gérer la liaison entre ces deux entités, nous avons choisi la librairie Firmata.
L'Arduino se charge ici de récupérer les données de l'ordinateur et de les interpréter. De ces données sont définies les largeurs d’impulsion nécessaires sur chacune des voix. Elle génère le PPM grâce à l'alternance du niveau de sa broche de sortie cadencé afin de respecter la période de 20ms.Notre signal est constitué de 8 voix, l'Arduino émet donc chacune des valeurs et se met en attente le temps que les 20 millisecondes soient atteintes (par exemple, si les 8 signaux sont à l'état le plus bas, c'est à dire une durée de 1ms, leur génération nécessite 8ms, impliquant donc une pause de 12ms à la fin).
La broche de sortie est branchée au câble d'écolage et envoyé directement dans la télécommande maitre. Du point de vue de cette dernière, le signal est strictement identique à celui qu'une autre télécommande aurait généré, ce qui ne cause aucun problème de communication.