balise DGAC de signalement électronique à distance drone et aéromodélisme

Appréciation moyenne:  / 20
Très mauvaisTrès bien 

La loi drones oblige les aéromodélistes à équiper leurs modèles de plus de 800g d'une balise de signalement électronique à distance.

L'objectif ici est de fabriquer soi-même une balise de signalement répondant aux caractéristiques de l'arrêté du 27 décembre 2019.

 

Résumé des règles

 

Voilà un résumé des cas dans lesquels utiliser ou pas une balise, pour des modèles de + de 800g:
 
je suis licencié FFAM ou UFOLEP:
 
je vole sur le terrain de mon club, terrain exempté de balise: pas balise
je vole sur le terrain de mon club, terrain NON exempté de balise: balise
je suis invité sur un autre terrain que celui de mon club, exempté de balise: pas balise
je suis invité sur un autre terrain que celui de mon club, NON exempté de balise: balise
je vole sur une pente déclarée et exemptée de balise: pas balise
je vole dans un endroit "sauvage": balise
 
je ne suis pas licencié FFAM ou UFOLEP:
 
je suis invité sur le terrain d'un club, exempté de balise: balise
je suis invité sur le terrain d'un club, NON exempté de balise: balise
je vole sur une pente déclarée et exemptée: balise
je vole dans un endroit "sauvage": balise

 

Norme

 

La norme technique définie dans le document légifrance est respectée:
 
Quelques grands principes: Réseau wifi, canal 6, émission d'une trame toutes les 3s ou si le modèle a fait plus de 30m, etc.
 
 

L'identifiant à déclarer sur AlphaTango

 

pour fabriquer puis utiliser sa propre balise DGAC, il fallait jusqu'à une certaine date demander un trigramme "constructeur". Maintenant, il faut utiliser le trigramme 000.

En ce qui concerne l'identifiant de la balise (et non pas du modèle, puisqu'une balise peut changer de modèle, sous certaines conditions), celui-ci est construit comme ceci :
  • il comporte 30 caractères alphanumériques (pas d'espace, de tirets ou autres caractères)
  • les 3 permiers caractères sont ceux du trigramme constructeur, 000 pour une balise faite soi-même
  • les 3 suivants représentent le type de votre balise, mettre ce qu'on veut, par exemple B01 pour moi, car c'est mon premier modèle de balise, ma première version de balise
  • les 24 suivants sont le numéro de série de la balise (pas du modèle puisque cette balise peut changer de modèle), à définir comme bon vous semble...
 
exemple d'identifiant pour une balise qui va équiper un motoplaneur de 1,8kg: 000B01000000000000000000000001
000: trigramme constructeur
B01: modèle de balise
000000000000000000000001: numéro de série de la balise
 
C'est ce numéro d'identifiant qu'il faudra renseigner sur AlphaTango, pour le planeur choisi, et/ou pour d'autres modèles de même catégorie de masse et de type.
 
 

Caractéristiques techniques de la balise

Composants utilisés pour ces mesures:

régulateur ASM117

ESP01S

GPS GY-NEO6MV2 NEO-6M

Alimentation

DC 4.75V-12V

Consommation

90mA

Fréquence de travail

 2.437 Ghz (canal 6 Wifi)

Puissance d'émission

~20dBm

Antenne intégrée sur le PCB

oui

Portée

 

Dimensions

36mmx30mmx21mm

Masse

25g

Puissance d'émission

100mW max

câble

10cm

 
 

Fonctionnement de la balise

 

La balise s'alimente sur une sortie libre du récepteur, en 5V donc.
Dès qu'elle est alimentée,  la balise émet sa trame d'identification toutes les 3s.
Tant qu'elle n'a pas fait un fix GPS, la trame ne contient que l'identifiant de la balise, le reste des informations est rempli de 0.
 
Dans le principe, la balise doit émettre une trame, même si le GPS n'a pas encore fixé, et surtout même s'il perd le fix. Il ne doit pas y avoir de "trou" dans l'émission des trames, dès que le modèle a décollé.
 
Elle va aussi, dès le démarrage, faire un fix GPS  (fix qui va dépendre de la qualité de réception, il n'est pas possible de dire avec certitude combien de temps il faut attendre).
Une fois le fix réussi,  la balise émet une trame complète, contenant l'identification et les informations de positionnement complètes, toutes les 3s ou si elle s'est déplacée de + de 30m. 
 
La balise émet aussi un code d'information qui permet de savoir dans quelle état elle est... (mais ça, c'est pas dans la norme, voir plus loin)
 
Une LED rouge et une LED bleue permettent aussi de vérifier son bon fonctionnement:
  • La LED rouge indique que la balise est bien alimentée
  • au démarrage, un clignotement lent de la LED bleue, de 5 impulsions, indique que la balise s'initialise
  • ensuite, tant que la LED bleue est éteinte, la balise n'a pas encore eu son fix GPS
  • la LED bleue se met à flasher très rapidement une demi-seconde, la balise vient de réussir son fix, elle définie sa position de départ (qui ne bougera plus jusqu'à l'extinction de la balise)
  • Ensuite, la LED bleue reste allumée, elle flashe très brièvement à chaque émission d'une trame.
La balise que je présente ici ne crée aucun site web, aucun réseau wifi visible.
On ne peut pas se connecter dessus en wifi pour vérifier son fonctionnement.
 
C'est important ici car l'accès à un site web sur la balise, via un réseau wifi, peut perturber le fonctionnement du récepteur du modèle, qui n'est en général pas très loin...
Autant une simple émission d'une trame toutes les 3s via le wifi, émission qui dure qq millisecondes, ne pertube pas le récepteur, autant une connexion permanente wifi sur la balise, avec un smartphone par exemple, et le dialogue wifi qui s'en suit, peut perturber le fonctionnement du récepteur.
 
C'est pourquoi j'ai choisi de gérer toute la partie contrôle sur un équipement séparé, qui n'est pas dans le modèle mais au sol vers le pilote.
 
Cet équipement, tout aussi simple à fabriquer, une sorte de récepteur, va récupérer les trames émises par la balise (sniffer), puis les présenter sur un site web en wifi, ou via une application pour smartphone Android en BT (Bluetooth).
Tout le dialogue se passe entre le récepteur au sol et soit un navigateur web au sol connecté en wifi sur ce récepteur, soit une application android depuis un smartphone et en BT.
Ce récepteur a son chapitre dédié, plus loin...
 
 

Composants de la balise DGAC

 

la balise est composée d'un GPS, d'une carte ESP01S ou ESP01, et d'un convertisseur de tension 5V vers 3.3V.
 
Chacun peut se fournir selon ses habitudes.
 
Voilà un exemple de schéma de câblage de l'ensemble, basé sur une carte ESP32 attention, carte non supportée dans cette version de balise:
 
schéma de la balise
 

Programmation de la balise

 

La balise se programme via l'IDE Arduino et le programme fourni. Comme je m'adresse ici à des connaisseurs d'arduino, je n'entre pas dans les détails..
Cette balise ne s'utilise qu'avec une carte basée sur le composant esp8266, comme par exemple esp01 ou esp01s.
 
Pensez à changer l'identifiant de votre balise dans le code, ligne 78:
 
const char drone_id[] = "ILLEGAL_DRONE_APPELEZ_POLICE17";
remplacer ILLEGAL_DRONE_APPELEZ_POLICE17 par votre identifiant.
 
De plus, vous pouvez désactiver un mode de calibrage du gps.
Il y a deux façons d'estimer que notre gps est assez précis pour pouvoir démarrer la balise: la précision horizontale et la précision 3D.
La précision 3D (PDOP) est plus difficile à obtenir mais elle est plus adaptée au mode de fonctionnement de la balise. Tous les GPS ne permettent pas non plus de récupérer cette valeur.
La précision horizontale (HDOP) est suffisante pour ce qu'on en fait.
Il est donc possible de désactiver la précision 3D, pour n'utiliser que la préxcision horizontale. Utile si votre GPS arrive à faire son fixe mais que la balise estime qu'il manque de précision sans arriver à en avoir plus, par exemple...
 
Dans le code de la balise, il y a cette ligne:
#define PDOP
il suffit de la mettre en commentaire:
//#define PDOP
pour passer en précision horizontale simplement.
 
 

Les logiciels fournis

 

Je fournis plusieurs programmes pour gérer cette balise, ils sont donnés comme ça, sans garantie etc, pour partager.
Je suis parti de programmes que l'on trouve sur le net, notamment ici:
 
 
je remercie aussi Ardisoft qui m'a autorisé à prendre une partie du code de son sniffeur pour l'intégrer dans mon récepteur.
Je vous invite à visiter sa page avec une balise très bien faite, professionelle: http://www.ardisoft.com
 
 
j'ai donc ensuite adapter ce que je voulais pour obtenir quelque chose qui me convient bien.
 
 
il contient:
  • un dossier balise_dgac_esp01_noweb qui est le projet arduino pour programmer la balise
  • un dossier recepteur_esp32_web_BT qui est le projet pour programmer le récepteur
  • un dossier appli-smartphone qui contient un fichier recepteur_web_BT.apk qui est l'application android à installer sur un smartphone pour vérifier le fonctionnement de la balise, en BT.
    (on y trouve aussi un fichier recepteur_web_BT.aia qui est le fichier projet pour appinventor, ne sert pas dans notre cas sauf pour les curieux qui veulent voir la source de l'appli smartphone)
je ne détaille pas les procédures d'installation ou de programmation.
 
 

Le récepteur BT

 

Afin de vérifier que la balise émet correctement, de voir dans quel état est le GPS, il est possible de programmer une carte ESP32 (uniquement) avec le logiciel que je fournis.
Cette carte possède un port mini-usb, qui sert à la programmer et à l'alimenter.
Dès qu'elle est alimentée (en 5V via un chargeur de téléphone par exemple, ou via une batterie de secours pour smartphone, et un câble USB), la carte analyse le canal 6 wifi pour récupérer les trames qui y sont émises.
Dès qu'une trame est reçue, elle est décomposée et déposée sur un site web qu'elle fournit, ou via BT si elle est connectée à un smartphone depuis l'application Android fournie aussi (et qu'il faut installer sur un smartphone).
Elle fournit aussi des messages d'information en focntion du code reçue dans la trame en cours.
 
Bon, il est temps de voir tout ça en images...
 
 

La balise et le récepteur

 

Bon, côté récepteur il n'y a rien à voir, la carte ESP32 est utilisée sans ajout, directement connectée au port usb d'un ordinateur, d'un chargeur de smartphone ou d'une batterie de secours d'un smartphone.
 
Et voilà un exemple d'une balise un peu volumineuse, c'est celle  dont les caractéristiques sont indiquées plus haut:
 
balise DGAC
 
Balise DGAC
 
Balise DGAC
 

le site web du récepteur

 

L'objectif de ce site web, situé sur le récepteur, est de vérifier si la balise émet une trame, le contenu de la trame, et de trouver des messages d'information sur le wifi émetteur et sur l'état du GPS.
La connexion au site web du récepteur se fait avec un navigateur, en étant connecté sur le wifi généré par ce récepteur.
Ce réseau wifi s'appelle DECODEUR_DGAC_XAV, le mot de passe programmé est 1234567890
Il est sur le canal 6
l'adresse ip de ce site web est 192.168.1.1
 
 
Voilà présenté ci-dessous différents états de la balise:
 
Le récepteur reçoit des trames, mais le GPS n'a pas encore fait son fixe, donc les positions sont vides:
 
Site web du récepteur DGAC
 
On a reçu une trame valide qui date de 2 secondes, et le fix GPS vient d'être perdu:
 
Site web du récepteur DGAC
 
La dernière trame reçue valide date de 12s, la balise n'émet plus de trame (éteinte?)
Avec cette info on peut peut-être retrouver où est cette balise si entre temps elle est cassée ou éteinte suite à un crash...
 
Site web du récepteur DGAC
 
là un problème temporaire de GPS:
 
Site web du récepteur DGAC
 
et là tout est ok:
 
Site web du récepteur DGAC
 
 

L'application Android du récepteur

 

Il est possible aussi de se connecter au récepteur avec un smartphone, en BT (Bluetooth), avec l'application fournie dans le fichier zip plus haut.
Là, pas besoin d'activer le wifi sur le smartphone, il suffit de démarrer l'application.
Attention, l'application sauvegarde sur le téléphone un fichier qui contient les trames reçues afin de pouvoir les analyser ensuite.
Ce fichier (un fichier se crée à chaque connexionBT et est sauvegardé à la déconnexion) est stocké dans:
/stcokage interne/android/data puis il y a un dossier de l'application.
Cette fonctionnalité est encore en phase de mise au point...
 
Au démarrage, pour le moment le récepteur n'est pas encore connecté à une balise:
 
Application BT du récepteur DGAC
 
Dans l'application, un clic sur le bouton "scan récepteur", le bouton "connexion" apparait. Un clic dessus pour obtenir cette fenêtre, dans laquelle on voit bien le récepteur:
 
Application BT du récepteur DGAC
 
Il suffit d'appuyer dessus pour être connecté.
Ensuite, l'application montre les différents états de la balise:
 
Pour le moment, le GPS n'a pas encore fait son fix, on a donc juste l'identifiant de la balise:
 
Application BT du récepteur DGAC
 
Là ci dessous, le fix GPS vient d'être fait, la position de départ est stockée:
 
Application BT du récepteur DGAC
 
Perte de fix:
 
Application BT du récepteur DGAC
 
et là, plus de trame reçue depuis 14s, on garde la trace de la dernière trame, avec la localisation, si nécessaire de chercher:
 
Application BT du récepteur DGAC
 
enfin, un cas où tout est ok:
 
Tout va bien
 
 

Remarque importante

 

J'ai ajouté un truc qui fait que ma balise n'est sans doute pas "dans la norme":
j'ai ajouté un champs en fin de trame, un seul octet, qui contient un code d'info, ce code est récupéré sur le récepteur, et il est traduit en messages d'infos, notamment pour avoir les infos du gps, que je récupère ensuite soit sur le site web du récepteur, soit sur l'appli smartphone que je adaptée pour ça aussi...
 
 
cet octet ne change rien à la longueur de la trame qui est bien supérieure à sa "charge utile", mais faut le savoir, moi j'ai fait ça pour moi et je prends le risque d'être "hors norme" (risque très limité à mon avis) -> donc si vous utilisez mes codes faut le savoir quoi :-)
 
Je parie sur la "flemme" des développeurs qui vont faire l'outil de contrôle de la trame, et qui ne décoderont sans doute que la partie utile de cette trame sans aller au delà du 11ième champs (le 12ième étant normalement le champs de tout ce qui reste d'inutilisé de la trame, rempli de 0...
 
 

Evolutions

 
Le site web du récepteur contient maintenant des informations sur le réseau wifi de la balise, afin de vérifier qu'il est bien paramétré et son niveau de réception:
 
 
 
et maintenant, dehors, environ 100m de distance entre balise et récepteur, au sol avec un obstacle (gros mur en pierre):
 
 
La largeur de bande du wifi de la balise est limitée à 20MHz car c'est la norme définie.
La vitesse d'émission est fixée à 6 Mbps en wifi 802.11g car c'est ainsi qu'on obtient la meilleure portée...
 
 
On retrouve les mêmes informations sur l'appli smartphone.
Il est important de bien faire correspondre les versions entre le récepteur et l'appli smartphone pour avoir toutes les infos sans erreur des deux côtés.
 
Il faut bien comprendre que toutes ces informations ne modifient pas la trame émise par la balise qui elle, reste normalisée comme prévue au départ.
Les informations affichées sur le mini site web du récepteur et de l'appli smartphone sont construite sur le récepteur directement, en combinant la trame officielle et d'autres infos que le sniffeur wifi capte (vitesse, bande, canal, rssi entre autres)
 
Voilà ce que ça donne sur l'appli smartphone:
 
 
 
on voit bien que le sniffeur côté récepteur trouve un réseau wifi sur le canal 6, d'une bande de largeur 20MHz.
La vitesse d'émission de cette trame est de 6 Mbps afin d'optimiser la portée pour la trame.
Le RSSI donne une indication de la qualité du signal, plus il est bas et moins c'est bon...
 

Les tests de portée

Afin de juger de l'efficacité relative de tout ça, je vous invite à voir les cartes résumant mes tests de portée:

on est à un max de 200m de portée, sans savoir si c'est le récepteur qui perd la liaison wifi ou la trame qui est émise à un max de 200m...

donc pour retrouver un modèle c'est pas top...

Voilà, ça relativise bien l'intérêt de tout ça à part pour avoir une balise DGAC faite soi-même!

La suite:

avec une antenne externe sur le récepteur, j'arrive à 350m ce qui est bien mieux, et je me rends compte si ça se trouve que je ne vais pas plus loin avec mon planeur...

voilà un exemple de relevés sur un vol de 40mn environ, vu la concentration des points je n'ai pas l'impression de perdre des trames à cause de la portée trop faible:

 

voilà une analyse croisée entre la balise et la vario, installés tous les deux dans le planeur en même temps pour ce même vol:

la balise est en bleu

pas si mal que ça côté altitude, les écarts sont dus à la fréquence qui n'est pas la même, 3s pour la balise et 1s pour le vario.

voilà un autre exemple d'exploitation des données de la balise, ici un essai de calcul de finesse de mon planeur:

 
un extrait des logs dans le tableau, la courbe de descente, et un petit calcul de distances entre les coordonnées.
ça donne une finesse de 8 (j'ai divisé la distance totale par l'atitude perdue totale)
 
on remarque deux points rouges, avec une grosse perte de trame entre les deux... pourtant, le RSSI est correct, la distance est classique, la vitesse du planeur aussi.
 

Conclusion

 
Pour discuter de tout ça, c'est ici que ça se passe: