PAE 2021 Envoi de données

De Learning Lab Environnements Connectés
Révision datée du 6 juin 2021 à 13:29 par MounirZemmiri (discussion | contributions) (Calculs de la mesure)
Sauter à la navigation Sauter à la recherche

Sources : https://www.signal-drone.com/2020/06/26/informations-codees-transmises-par-le-signalement-electronique/ https://www.ecologie.gouv.fr/sites/default/files/notice_signalement_electronique.pdf

http://icnisnlycee.free.fr/index.php/57-nsi/projets/75-balise-de-signalement-pour-aeronefs-sans-personne-a-bord

https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000039685188

https://discuss.ardupilot.org/t/open-source-french-drone-identification/56904 (Très utile)

https://github.com/GendarmerieNationale/ReceptionInfoDrone ( code source Gendarmerie pour décoder et afficher une trame beacon.)

https://www.electroniclinic.com/esp32-wroom-32d-pinout-features-and-specifications/

Introduction

Depuis le 27 décembre 2019 un arrêté a été déclaré stipulant les caractéristiques techniques des dispositifs de signalement des aéronefs opérés sans personne à bord. Ces dispositifs utilisent des trame beacon wifi composé de plusieurs informations afin de s’identifier. Parmi ces informations nous retrouvons : la version du protocol, l’identifiant FR, l’identifiant ANSI, la latitude et la longitude de l’appareil, son altitude, latitude et longitude du point de décollage, sa vitesse horizontale, son cap. Dans ce projet nous voulons rajouter une information supplémentaire au sein de cette trame. Cette information est la tension de la batterie de la balise.

Trame data source:https://www.signal-drone.com/2020/06/26/informations-codees-transmises-par-le-signalement-electronique/


Ici nous observons un exemple de trame, ainsi que les données obligatoires minimales à transmettre pour être en accord avec la loi drones.

Dans un premier temps nous nous servons d'une carte arduino uno, du module baliz navéol (émetteur) et d'un raspberry pi 3 pour recevoir la trame beacon que nous voulons observer. Après installation du programme de réception de la gendarmerie, trouvable à l'adresse:https://github.com/GendarmerieNationale/ReceptionInfoDrone nous pourrons recevoir, décoder et afficher la trame émise par la baliz navéol.

Mesure de la tension de la batterie

Schéma du montage de la batterie

Le schéma est le suivant:
schéma mesure tension

Les résistances sont choisies avec un pont diviseur de tension. Plus précisément: Pont diviseur (1)
De plus les résistances sont élevées pour débiter un minimum de courant à la batterie. Le rapport entre les résistances (R1/R2) doit être de 1.5. Sachant que la tension Vmax de la batterie est égale à 8.4V et que la tension max sur le pin de la carte arduino doit être de 3.3V et que le rapport entre ces deux tensions est égale à R2/(R2+R1) d'après le pont diviseur de tension ce rapport de résistance doit être de 0.4. Nous avons donc R2/(R1+R2) = 0.4 <=> R2 = 2/3 * R1 (1) De plus nous voulons maximiser les résistances pour débiter un minimum de courant donc fixons donc la résistance R1 à une valeur normalisée élevée de 10M ohm. R1 = 10M ohm (2). Donc:
(1) R2 = 2/3 * R1
(2) R1 = 10M ohm
nous avons donc R1 = 10M ohm et R2 = 2/3 * 10M ohm soit ~6.67M omh, en normalisant nous pouvons choisir une résistance R2 de 6.8M ohm.
le nouveau rapport R2/(R1+R2) = 6.8/16.8 = 0.405. Ce qui reste cohérent.

Calculs de la mesure

Dans cette partie nous allons détailler comment nous mesurons la tension de la batterie étape essentielle pour pouvoir l'inclure dans la trame que nous voulons modifier. La batterie utilisée sera une Lipo 2S de tension nominale 7.4V et de tension max 8.4V. La carte esp32 contenant notre émetteur va être alimentée en 5V par un régulateur de tension. De plus les pins de cette carte étant ayant des tensions allant de 0 - 3.3V nous adaptons la tension max de notre batterie pour être en accord avec ces valeurs à l'aide d'un pont diviseur de tension. Une fois la tension acquis par le pin, nous allons être capable de la mesurer avec la fonction analogRead(GPIO) Arduino. Le résultat retourné sera une valeur analogique comprise entre 4095 et 0. Avec la courbe ce dessous, nous sommes capable de retrouver la valeur en tension à l'entrée du pin et donc à remonter à la tension de la batterie qui est à transmettre. Plus précisément il suffit de multiplier la valeur analogique lue par 0.000806 (3.3/4095) qui correspond au pas du convertisseur A.N. On obtient donc la valeur en volt de la tension sur le pin 25, que l'on multiplie par 2.545 (inverse du pont diviseur) pour retrouver la tension de la batterie, de plus: 2.545*0.000806=0.00205 donc finalement il nous suffit de multiplier la valeur obtenue à la sortie de la fonction analogRead() par 0.00205 pour obtenir la tension aux bornes de la batterie.

Courbe analogique tension


source:https://randomnerdtutorials.com/esp32-adc-analog-read-arduino-ide/

La tension varie beaucoup en entrée comme on peut la voir sur la figure suivante qui représente la tension mesurée aux bornes de la batterie, une moyenne est alors effectuée dans le code afin de lisser ces variations.


Le code sera alors le suivant (le code suivant est dans une boucle qui tourne constamment):

    int tension_int = analogRead(MESURE_TENSION); // Lecture de la tension sur la pin MESURE_TENSION
    
    tension+= tension_int * 0.0022066;//Conversion de la valeur en tension
    compt++;
    if(compt == 100){ // Moyenne sur 100 valeurs de la tension
      float tension_moy = tension/compt;
      compt = 0;
      tension = 0;
      drone_idfr.set_tension(tension_moy);
    }

Émission de la trame Beacon

Premièrement qu'est ce qu'une trame beacon? les trames beacon sont constituées de 3 parties: le 802.11 MAC header, le body et un FCS.
Une trame se compose comme ça: trame beacon
source:https://ensiwiki.ensimag.fr/index.php?title=Wifi_low_power
La partie qui nous intéresse ici est le body, dans lequel nous voulons ajouter une information.

Modification de la trame

Pour cette partie nous nous sommes servis du programme d'émission déjà fournis par M. Launay auquel nous avons rajouté quelques lignes de code afin de récupérer la tension et de la transmettre. Le code rajouté est le suivant: Code émetteur

Réception de la trame Beacon

Pour ce qui concerne la réception de la trame, plusieurs solutions sont possible, notamment : Solution n°1 : Utiliser une clé Wifi externe connectée sur un système Linux ou Raspberry Pi avec une programme Python. • Solution n°2 Utiliser le logiciel Wireshark sur Linux avec le récepteur Wifi en mode moniteur. • Solution n°3 : Utiliser une autre carte ESP32, puis programmer la carte pour visualiser les trames sur le moniteur série de l’IDE Arduino. • Solution n°4 : Utiliser une autre carte ESP32, puis programmer la carte. On utilisera un smartphone qui sera connecté en Bluetooth BLE à ce récepteur. On installera une application Android pour visualiser la localisation et toutes les informations (solution la plus pratique et simple).

source: Conception d’une balise de signalement électronique. Julien Launay.

Dans un premier temps nous allons essayer la solution numéro 3 à l'aide d'une seconde carte ESP32 programmée en tant que récepteur. Le résultat sur le moniteur série est le suivant:

Modification de la réception

Transmission des informations sur un serveur web en série