Comment contrôler un drone à distance ? Partie 1 : L'émetteur [Construire un drone #3]

in #steemstem5 years ago (edited)

Bonjour à tous !

Pour le troisième article de cette série consacrée à la construction d'un drone de course on va parler du contrôle à distance. Quoi, comment pourquoi, on répondra à toutes ces questions tout au long de l'article !


Nos besoins :

Avant de détailler les solutions il faut mettre à plat ce dont on a besoin, donc voici nos critères :

- Il faut pouvoir contrôler les 3 axes de rotations ainsi que les gaz (la puissance des moteurs)

- De quoi armer le drone (armer dans le sens d'activer les moteurs) et changer de modes (stabilisé/accro)

- Un protocole de communication compatible avec notre contrôleur de vol

- Avoir la place de mettre le récepteur sur le drone (et un récepteur pas trop lourd)

- Une bonne portée (500m à 1km minimum pour assurer une bonne réception au cas où il y aurais des obstacles qui pourrais atténuer le signal)

- Des fréquences et puissances autorisées dans notre pays (cet aspect sera plus important pour la transmission vidéo)

Avec ces critères sur papier (ou écran dans notre cas) on va pouvoir aller voir les différentes technologies existantes.

Les technologies sur le marché :

Il n'y en a pas énormément accessible au grand public, si on exclut le Bluetooth à cause de sa faible portée (fiable jusqu'à 5m en général) de même pour les ultrasons et l'infrarouge, de plus on ne peut pas (ou trés difficilement) tracker le récepteur donc on peut aussi écarter les systèmes utilisant [des faisceaux étroits](https://fr.wikipedia.org/wiki/Communications_optiques_en_espace_libre) ou très directifs. Il ne nous reste plus qu'à nous pencher sur les ondes électromagnétiques utilisées pour de longues distances (comme le wifi et les ondes radio par exemple).

Pourquoi utiliser ces ondes ?

Tout d'abord, partons des bases, qu'es-ce qu'une onde ?

Les ondes sont souvent décrites comme une perturbation se propageant telle des vaguelettes lorsque l'[on jette un corps](

) (ou un caillou) dans une étandue d'eau : ![water-321524_1280.jpg]()

Source : [Pixabay](https://pixabay.com/photos/water-wave-drip-liquid-321524/)

On peut caractériser (très simplement) une onde en utilisant 3 critères :

- Son type : mécanique, électromagnétique ou gravitationelle

- Sa longueur d'onde : la distance en m entre 2 répétitions, par exemple entre deux sommets d'une sinusoïde

- Son amplitude : la moitié de la différence de hauteur entre le point le plus haut et le point le plus bas   Les ondes radio et wifi possèdent de grandes longueurs d'ondes (pouvant aller jusqu'à l'ordre du kilomètre) et se trouve bien après le rouge et infrarouges, cela leur permet de ne pas être dérangée par les obstacles de tailles moyennes : ![Domaines_du_spectre_électromagnétique.svg.png]()

Source : [Wikipédia](), Auteur : Benjamin ABEL, Licence [CC-BY-SA](https://creativecommons.org/licenses/by-sa/3.0)

En effet, lorsqu'une onde électro-magnétique se heurte à un obstacle plus petit ou aussi grand que sa longueur elle a tendance a ne pas trop être perturbée (l'amplitude diminue mais on perçoit encore le signal). Puis plus l'obstacle devient grand par rapport à la longueur d'onde plus la transmission sera difficile et lorsque l'obstacle est de l'ordre de 100 plus grand que la longueur il est quasiment impossible d'établir une transmission. (Si vous souhaitez plus de détails à propos de la propagation des ondes radioélectriques je vous conseille de jeter un œil à cette [publication](https://journals.openedition.org/tem/1447))


Dans notre cas les ondes que l'on va utiliser ont des fréquences de 2,4 et 5,8Ghz. La longueur d'onde étant égale à c que divise la fréquence (λ=c/f) ont obtient des longueurs d'ondes d'environ 12cm ( **299792458/(2.4(10^9))** )et 5.2cm. Ainsi on peut espérer établir une transmission entre le transmetteur et le récepteur même lorsqu'un obstacle de l'ordre de 12m (pour le 2,4Ghz) ou de 5m (pour le 5,8 Ghz). Parfait pour notre utilisation !

Généralement le 2.4Ghz est utilisé pour la télécommande et le 5.8Ghz pour la transmission vidéo, cela permet de garder le contrôle lorsque certains obstacles bloquent momentanément le 5.8Ghz mais pas le 2.4Ghz.

Comment fonctionne la télécommande ?

Concernant la télecommande en elle-même, on va en utiliser une comportant 2 joystiks et plusieurs interrupteurs. Les joysticks controlleront les 3 axes de rotations du drone ainsi que la puissance des moteurs et les interrupteurs serviront à effectuer différentes actions que l'on configurera plus tard (on peut par exemple "armer" le drone, c'est-à-dire allumer les moteurs, passer d'un mode de vol à un autre, etc...).


Les joysticks :

Tout d'abord il faut se demander de quoi est fait un joystick. Si vous en avez déjà utilisé pour des projets DIY ou si vous avez déjà cassé/démonté une manette vous l'avez peut-être déjà remarqué, un joystick est capable de pivoter sur deux axes (x et y, haut-bas et gauche-droite).

Sur ces axes sont fixés des potentiomètres, ce sont des composants dont la résistance peut varier (généralement on peut faire varier cette résistance en tournant un bouton ou en déplaçant un curseur) :


Source : Sunfounder


On va donc pouvoir utiliser cette propriété pour lire l'angle auquel se trouve le joystick sur chacun des 2 axes. En effet, si on applique une tension de 5V au bornes d'un potentiomètre on va pouvoir lire une tension proportionnelle au déplacement. Mais avant un petit point très rapide sur les résistances :

Les résistances :

Une résistance est un composant électrique dont le but est de s'opposer au passage du courant. Très utilisées en électronique (vous les croiserez partout), elles sont présente dans une formule que vous connaissez peut-être, la fameuse loi d'Ohm : ***U=R x I*** qui permet met en relation la tension, la résistance et l'intensité traversant celle-ci :

![UIR.svg.png]()
Source : [Wikimedia Commons](), Auteur: [Pulsar](https://commons.wikimedia.org/wiki/User:Pulsar), Licence : [CC0](https://creativecommons.org/publicdomain/zero/1.0/deed.en)
*U est alors exprimé en Volts, R en Ohms et I en Ampères.*


Si on utilise l'analogie de l'eau, la résistance (le composant) pourrait être un rétrécissement d'une rivière, la tension serait la différence de hauteur d'eau aux extrémités du rétrécissement, l'intensité serait le courant traversant le composant et la résistance serait définie par le rétrécissement. Nous avions déjà vu dans l'article précédent comment une batterie se comportait lorsque l'on branchait des cellules en série ou en parallèle, nous allons retrouver des caractéristiques similaires pour les résistances. Par exemple, si vous connecter 2 résistances série :


By Omegatron - Created with the Electrical Symbols LibraryCC BY-SA 3.0Link

Les résistances s'additionnent, c'est-à-dire que si vous avez choisi des résistances de 100Ω chacune, vous obtiendrai une résistance de 200Ω aux bornes de l'ensemble.

Et si vous les mettez en parallèle ce sont les inverses qui s'additionnent aussi appelées conductance(1/Req = 1/R1 + 1/R2 + ..., Req signifie Résistance équivalente, soit la résistance du circuit) :


By Omegatron - Created with the Electrical Symbols LibraryCC BY-SA 3.0Link

Par exemple si on reprend nos résistances de 100Ω et qu'on les met en parallèles on obtient : 1/Req = 1/100 + 1/100 = 2/100 = 1/50 donc Req = 50 Ω 

-------

Revenons-en à notre potentiomètre, lorsqu'il ne bouge pas on peut le représenter de cette manière à l'aide de 2 résistances, comme on l'a ci-dessus, la résistance totale est égale à la somme des 2 résistances : Lorsque l'on bouge le bouton, les valeurs des résistances évoluent mais la somme reste inchangée. De cette manière on peut utiliser le principe du pont diviseur de tension (un montage permettant de diviser la tension d'entrée à l'aide de 2 résistances, voir schéma ci-dessous) pour lire l'évolution de la position du potentiomètre : ![Pont_diviseur_tension.svg.png]()

Source : [Wikipédia Comons](), Auteur : Tillmann Walther, Licence : [Public Domain](https://en.wikipedia.org/wiki/en:public_domain)

La formule utilisée pour ce genre de montage est la suivante :

![fe8d60ba134122ce762d92d2ea784b32b83a213e(1).jpg]()
Image issue de Wikipédia

La lettre U est utilisée pour représenté les tensions, R les résistances et I les intensités.

On peut la lire de cette manière : " La tension de sortie (Us) est égale à la résistance de la deuxième résistance divisée par la somme des résistances le tout multiplié par la tension d'entrée (Ue)".

Dans le cas d'un potentiomètre chacune des 2 résistances varie entre 0Ω et son maximum (généralement 10kΩ , 10 000Ω), de ce fait la tension sur le curseur variera entre 0V et la tension d'entrée de manière proportionnelle à l'angle du potentiomètre. Il est donc possible de lire la position du joystick en lisant la tension des 2 potentiomètres, ce qui est très simple avec des microcontrôleur comme les Arduinos par exemple.


Exemple de lecture de la position d'un joystick avec une Arduino

Si vous achetez des joysticks pour des projets DIY vous pourrez les trouver sous cette forme :



Il y a 5 broches :

- Les pattes pour l'alimentation 5V et la masse (GND)

- Les 2 curseurs des potentiomètres

- Et le bouton poussoir (ce pin est relié à la masse lorsque l'on appuie sur le bouton sur mon module)

Pour l'utiliser avec votre arduino nous allons réaliser un montage très simple.

Reliez le 5v et la masse du joystick au 5v et masse de votre arduino. Puis reliez le VRx au pin A0 et VRy au pin A1. Vous pouvez aussi relier SW (le pin du bouton) au pin D2 mais on ne vas pas l'utiliser aujourd'hui.


Puis envoyer ce programme pour lire les 2 curseurs et afficher les valeurs sur le traceur série :


#define X A0 //Axe X du joystick, bleu sur le traceur série 
#define Y A1 //Axe Y du joystick, rouge

void setup() { 
// put your setup code here, to run once: 
pinMode(X,INPUT); 
pinMode(Y,INPUT); 

Serial.begin(9600); //Initialise la communication avec l'ordinateur afin d'envoyer les différentes valeurs 



void loop() { 
// put your main code here, to run repeatedly: 

Serial.print(map(analogRead(X),0,1024,0,100)); // On lit la valeur du potentiomètre lié à l'axe X sur 32bits (on obtient une valeur entre 0 et 1024 qui est ensuite transformée en pourcentage par la fonction map) 
Serial.print(" "); //On envoie un espace pour séparer les variables à afficher 
Serial.println(map(analogRead(Y),0,1024,0,100)); 
//on utilise println à la place de print car on veut pas seulement afficher la variable mais aussi revenir à la ligne à la fin 
delay(10); 

}

Et voici le résultat lorsque je fais bouger le joysticks sur un axe puis l'autre (vous pouvez accéder au traceur série en cliquant sur "outils" puis "traceur série" sur Arduino IDE):


J'ai choisi d'afficher les valeurs dans le plotter Série mais une fois que l'on a récupéré les valeurs on peut en faire ce que l'on souhaite (diriger un robot, un drone, contrôler un jeu, allumer des leds,...), à vous de décider !

Ces données sont lues par la télécommande d'une manière similaire, classées par canaux (un canaux contenant une des informations) et envoyées au récepteur que l'on découvrira dans le prochain article !

Sur ce je vous dis à bientôt pour un nouvel article !

Merci de m'avoir lu :)

Sommaire de la série :

- [Introduction](https://steemit.com/@robotics101/fr-nouvelle-serie-construction-d-un-quadricoptere)
- [Comment voler ?](https://steemit.com/francostem/@robotics101/fr-comment-voler-construire-un-drone-1)
- [Qu'es-ce que l'électricité et comprendre les batteries](https://steemit.com/francostem/@robotics101/qu-est-ce-que-l-electricite-et-comprendre-les-batteries-construire-un-drone-2)
- [Comment contrôler un drone à distance ?]()


Aller plus loin :


- [Quelques aspects de la propagation des ondes radioélectriques](https://journals.openedition.org/tem/1447) par [Bernard Démoulins](https://journals.openedition.org/tem/1468)
- [CYMATICS: Science Vs Music - Nigel Standford](

Sort:  

Super post. En tous cas, merci pour ces details. Cela donne carrement envie de tester tout cela (vu que ca a l'air assez simple au fait, au vu de tes explications) et de voir le resultat en action. Peut-etre la prochaine fois que l'on se croisera, si tu amenes ton materiel avec toi (je devrais venir en Alsace d'ici avril; on pourrait de toute facon aller boire un coup si tu es dans le coin :) ).

Sinon, juste une petite typo:

  • Son amplitude : la différence de hauteur entre le point le plus haut et le point le plus bas

En fait, la tu definis deux fois l’amplitude (puisque la valeur de l’onde va de -A a +A).

Merci beaucoup !

Je suis super content si j'ai réussi à te donner envie d'en apprendre plus. Et oui, l'électronique de base n'est pas très compliquée mais demande beaucoup de temps ^^ Ce serait avec plaisir si j'ai l'occasion de te croiser avant fin mars (je devrais aussi passer 1 fois ou 2 sur Paris :) peut-être qu'on pourra se voir là-bas) mais à partir d'avril j'espère être dans une région que @lamouthe connait bien il me semble puisque je cherche un stage à Montréal (je me permettrais de vous contacter un de ces jours à propos de ça si ça ne vous dérange pas :) )

C'est modifié, merci :)

Article riche et très didactique ! Félicitations ! Upvoté à 100% !



This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie.

If you appreciate the work we are doing, then consider supporting our witness stem.witness. Additional witness support to the curie witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Ce post a été supporté par notre initiative de curation francophone @fr-stars.
Rendez-vous sur notre serveur Discord pour plus d'informations

Congratulations @robotics101! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You distributed more than 39000 upvotes. Your next target is to reach 40000 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Congratulations @robotics101! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

SteemFest Meet The Stemians Contest - The mysterious rule revealed
Vote for @Steemitboard as a witness to get one more award and increased upvotes!