Chapitre III Conception et mise en oeuvre du
fonctionnement
38
III.3.2. Algorithme du transmetteur RF :
Au début, il est nécessaire de définir
la librairie de l'NRF24 et l'adresse du canal de transmission radio, la
même adresse doit apparaître dans les instructions du programme du
récepteur pour assurer le cryptage de nos informations. Avant de
commencer par le programme principal, il faut calibrer les joysticks en
utilisant L'ADC de l'Arduino Nano. L'utilisation de la fonction AnalogRead
permet de lire les valeurs analogiques de chaque potentiomètre des deux
joysticks qui corresponds aux commandes à envoyer, puis les
affichés sur le moniteur série de l'Arduino IDE à l'aide
de l'instruction Serial.print (" ") en faisant varier la position des joysticks
dont chaque colonne représente la valeur d'un canal "une commande"
Figure 3.17.
![](Conception-et-realisation-dun-quadrotor-UAV46.png)
Figure 3.17 : Capture d'écran des valeurs
analogiques affichées sur le moniteur série de l'Arduino
IDE.
Ces valeurs analogiques sont codées sur 10 bits, de
sorte que le taux des potentiomètres peut aller de 0 à 1024 en
décimale. On note ensuite les valeurs correspondantes aux positions
(minimal, centrale et maximal) des joysticks pour les utilisées dans le
programme principal du transmetteur RF, j'ai trouvé
:
![](Conception-et-realisation-dun-quadrotor-UAV47.png)
Throttle = min : 115 centre : 645 max : 989 Yaw = min : 62
centre : 622 max : 980 Pitch = min : 25 centre : 594 max : 929
Roll = min : 75 centre : 612 max : 974
Comme l'NRF24l01 envoi les données dans des paquets de
8bit/s, alors l'utilisation de la fonctions prédéfinie map(, , ,
, ); dans le programme principale du transmetteur RF permet de coder les
valeurs précédentes à des grandeurs de 8 bits (0 à
255) afin de les envoyer aux récepteur RF
en utilisant la fonction prédéfinit radio.
|
write(&data, sizeof(MyData)).
|
|
Chapitre III Conception et mise en oeuvre du
fonctionnement
La lecture des valeurs numérique des commutateurs SW1
et SW2 sera une valeur booléenne de 0 ou 1 logique (ON/OFF). L'NRF24L01
peut envoyer jusqu'à 32 canaux différents de 8 bits chacun, dans
ce cas nous enverrons que les 6 canaux de 8 bits qu'il correspond enfaite aux
valeurs des commandes: (Tangage, Roulis, Lacet, Gaz et les deux switches). Le
programme Principal du transmetteur RF est expliqué dans cet
organigramme:
Sous-programme mapJoystickValues :
![](Conception-et-realisation-dun-quadrotor-UAV48.png)
Déclaration des librairies SPI
& NRF24l01 Pins direction
Déclaration des variables 8 bits: Throttle,
Yaw,
Pitch, Roll,
SW1, SW2
Non
Val< centre
Oui
Void setup :
Codé val de 128 jusqu'à 255
Initialisation des instructions de la
Radio
Déclaration des variables sur 10 bits: min,
centre, max val
Codé val de 0 jusqu'à 128
Void loop :
Déclaration du sous-programme mapJoystickValues
|
|
![](Conception-et-realisation-dun-quadrotor-UAV49.png)
Codé les valeurs de 10 bits et les Affectés aux
variables à envoyer En utilisant le sous-programme mapJoystickValues
Throttle = mapJoystickValues (lire de A0, 115, 645, 989) Yaw =
mapJoystickValues (lire de A1, 62, 622, 980) Pitch = mapJoystickValues (lire de
A2, 25, 594, 929) Roll = mapJoystickValues (lire de A3, 75, 612, 974)
SW1 = lire la valeur digitale du pin 7
SW2 = lire la valeur digitale du pin 8
39
Transmettre DATA :
radio.write
|
(&data,
|
sizeof(MyData))
|
|
|