Open Source French Drone Identification

Ok, c’est mieux :blush: Wireshark est satisfait…


Je vois que tu es passé en mode SoftAP, c’est le seul moyen que j’ai trouvé pour sélectionner le canal. Avec le 8266 qui conserve en mémoire certains éléments, on croit avoir codé quelque chose et si l’on prend un autre module on se rend compte que non…
Tu as aussi augmenté la puissance d’émission, par défaut, il n’y a pas grand chose qui sort du 8266, j’ai placé hier le montage dans le jardin et ça ne passait pas dans la maison où se trouve le PC de décodage avec des antennes wifi correctes… Je referai le même essai dès que possible.
Du coup on voit les balises SSID de l’AP du 8266, avec sa vraie adresses MAC et un numéro de séquence… Et ça permet de voir sa balise sur un analyseur wifi.

Il reste la partie charge utile qui me chiffonne, il manque le champ 3 dans le décodage de la Gendarmerie et on trouve un champ bizarre à la place “\u0000AP_DRONE_” avec le SSID de ma balise tronqué…
JSON du drone : {“2”:“DIY-PERSO-0123456789\u0000AP_DRONE_”,“4”:48.00003,“5”:1.00049,“6”:156,“7”:5,“8”:48.000,“9”:1.00054,“10”:0,“11”:0}
Le champ 3 c’est l’identifiant officiel du drone à la norme internationale ANSI comme précisé dans les specs du JO, a-t’il été implémenté en France ?

Ah, il semble que l’on ait le choix pour l’identifiant entre le champ type 2 (Français) ou le champ type 3 (ANSI) selon l’arrêté du JO, en deuxième position dans la charge utile on a :

b) L’identifiant unique de l’aéronef sans personne à bord, établi conformément à l’une ou l’autre des deux possibilités décrites ci-dessous, l’utilisation de la norme ANSI/CTA/2063 (numéro de série physique - PSN) pour définir l’identifiant de l’aéronef sans personne à bord étant réputée satisfaire aux exigences du présent arrêté :
i. soit un identifiant unique codé sur 30 octets et correspondant au type 02 du tableau des types porté en annexe, composé des trois champs suivants :

- le trigramme constructeur est codé sur 3 octets ;
- le modèle de l’aéronef (pour un aéronef circulant sans personne à bord comportant un système de signalement électronique ou numérique intégré) ou le modèle du dispositif de signalement électronique ou numérique (pour un système de signalement électronique ou numérique non intégré) codé sur 3 octets ;
- le numéro de série de l’aéronef (pour un aéronef circulant sans personne à bord comportant un système de signalement électronique ou numérique intégré) ou le numéro de série du dispositif de signalement électronique ou numérique (pour un système de signalement électronique ou numérique non intégré) codé sur 24 octets. Dans le cas où le numéro de série comporte moins de 24 caractères, des 0 seront ajoutés en amont de celui-ci ;

Cet identifiant unique ne doit comporter aucun signe espace. En outre, l’unicité de cet identifiant ne pourra être obtenue en prenant en compte la sensibilité à la casse pour discriminer deux identifiants uniques différents.
ii. soit un identifiant unique conforme à la norme ANSI/CTA/2063 (numéro de série physique - PSN) et correspondant au type 03 du tableau des types porté en annexe.

Ok, je crois que j’ai compris, mon identifiant ne fait pas les 3 + 3 + 24 = 30 caractères… Il faut que j’ajoute des 0 en amont dans le champ type 2…

Bonjour Patrick,
Tu n’avais pas regardé les commentaires sur les dernières modifs :slight_smile:

Bonsoir Laurent,

Oui, en effet, c’est mieux avec du padding, le champ d’identification n’est plus empêtré avec la chaîne qui suit dans la mémoire de l’ESP8266…
J’ai fait voler mon montage M7N + ESP-01, et capturé les trames avec le code de la Gendarmerie. Ne sachant pas quoi faire des éléments JSON, j’ai utilisé Excel et un convertisseur vers kml.EarthPointExcel_195428.zip (7.4 KB)
La portée du petit module ESP-01 est correcte en puissance max. Je me demande quand même ce que ça génère comme perturbation sur mon récepteur X8R à 2.4 Ghz placé à 5 cm…
Maintenant, chaque émission toutes les 3 secondes dure 1 ms, ça ne doit pas bien gêner de perdre un message SBUS de temps en temps…

Il est possible d’exploiter les fichiers télémétrie et de vérifier les éventuelles anomalies sur le RC in.

Merci pour votre travail.

Je n’ai rien trouvé dans les logs. Mais je pense qu’il n’y a rien à voir, la sortie SBUS de mon X8R fournit une trame complète de 16 canaux toutes les 8 ms. Si le XR8 perd le signal, il génère des trames identiques aux dernières reçues. Donc , si toutes les 3 secondes, une trame était perdue en raison de l’impulsion Wifi en champ proche, cela n’aurait qu’un effet marginal, et invisible en sortie du récepteur X8R.
Dans le cas d’un récepteur connecté à un contrôleur de vol de drone, l’information de la télécommande est très redondante car on ne fait pas varier les canaux toutes les 8 ms, même pour un pilotage de racer je pense.

A propos, je me demande à quoi sert le tableau en annexe 1, on ne retrouve pas le type d’aéronef dans la trame de signalement :thinking:

Ou alors je n’ai pas compris quelque chose…

Les groupes ne sont pas émis me semble-t-il, il permettent d’utiliser une même balise/ID à partir du moment où l’appareil appartient au même groupe et dans la même plage de masse. ex. un autogire et un multi de 1Kg

Je viens de voir qu’AlphaTango propose l’enregistrement avec un trigramme prédéfini mais ne propose pas d’ID généré de son coté.

Je m’interroge sur la pertinence d’une telle règlementation.

De un, cette reglementation ne peut pas s’appliquer pour les operateurs europeens non francais operant en France (liberté des services), ni pour les visiteurs venant en France avec leur(s) drone(s) pendant les vacances. A moins qu’on soit obliger aux frontières de déclarer ses drones et d’etre retenu en quarantaine le temps de faire modifier le materiel… Absurde.

De deux, les individus aux mauvaises intentions ne vont évidemment pas s’identifier avec un beacon. Cela n’empechera donc pas le survol illégal des centrales nucleaires par exemple ou tout autre usage malévolent utilisant des drones…Re -Absurde.

Cette obsession des gouvernements européens et de l’Europe de vouloir tout micro-controler et micro-reguler tue tout simplement le developpement economique qui pourrait naitre des innovations et on en subit les consequences.

  1. Nul n’est censé ignorer la loi … Étranger ou non. Il y a déjà des notices d’informations pour les drones dans les aéroports. Quand on va dans un autre pays, on se renseigne au niveau loi, drone ou pas drone. C’est la même chose en France. Pour les drones ça implique d’équiper son drone d’une balise. Rien de compliqué…

  2. L’identification drone n’est pas là pour empêcher les vols illégaux … mais identifier ceux qui le sont ! Sans balise, le drone sera neutralisé immédiatement (à voir techniquement comment ils font) et des sanctions pénales son possible.

  3. Si on arrêtait de faire n’importe quoi sous prétexte d’innovation, on n’en serait pas forcement la … Aprés l’identification drone est une bonne chose. Tout comme on a des immatriculations sur les voitures, on en a pour les drones. Ça permettra sûrement de réccupperer un peu de matériel en cas de flyaway !

Bonjour à tous.
Tout d’abord merci à khancyr pour son travail sur la carte TTGO et a f5soh pour le portage sur esp32.
J’ai réussi à installer le code sur une carte wemos mini D1 connecté à un GPS sirf3 (en attendant la réception d’un plus petit module GPS). J’ai bien la génération de trames beacon et l’émission en wifi sur le canal 6 et avec le ssid choisi, vue avec WifiAnalyser sur android. Je n’ai pas décodé la trame émise (ça me semble compliqué à faire… j’espère que l’on aura une apli android qui fera cela…).
Le seul souci rencontré c’est que j’ai régulièrement des longues séries d’émission de trames répétitives qui viennent s’ajouter aux trames émises toute les 3s.
Exemple horodaté:

14:41:09.026 -> LAT=37.822637 LONG=3.277925 ALT=169.60 SAT=8
14:41:10.010 -> LAT=37.822640 LONG=3.277925 ALT=169.60 SAT=9
14:41:11.041 -> LAT=37.822640 LONG=3.277927 ALT=169.60 SAT=9
14:41:11.791 -> Send beacon
14:41:12.026 -> LAT=37.822642 LONG=3.277927 ALT=169.70 SAT=9
14:41:13.010 -> LAT=37.822642 LONG=3.277927 ALT=169.80 SAT=9
14:41:13.807 -> Send beacon
14:41:13.854 -> Send beacon
14:41:13.854 -> Send beacon
14:41:13.854 -> Send beacon
14:41:13.854 -> Send beacon
14:41:13.901 -> Send beacon
14:41:13.901 -> Send beacon
14:41:13.901 -> Send beacon
14:41:13.901 -> Send beacon
14:41:13.947 -> Send beacon
14:41:13.947 -> Send beacon
14:41:13.947 -> Send beacon
14:41:13.994 -> Send beacon
14:41:13.994 -> Send beacon
14:41:13.994 -> Send beacon
14:41:13.994 -> Send beacon
14:41:14.041 -> Send beacon
14:41:14.041 -> LAT=37.822638 LONG=3.277925 ALT=169.60 SAT=9
14:41:14.041 -> Send beacon
14:41:14.041 -> Send beacon
14:41:14.041 -> Send beacon
14:41:14.088 -> Send beacon
14:41:14.088 -> Send beacon
14:41:14.088 -> Send beacon
14:41:14.135 -> Send beacon
14:41:14.135 -> Send beacon
14:41:14.135 -> Send beacon
14:41:14.135 -> Send beacon
14:41:14.182 -> Send beacon
14:41:14.182 -> Send beacon
14:41:14.182 -> Send beacon
14:41:14.182 -> Send beacon
14:41:14.229 -> Send beacon
14:41:14.229 -> Send beacon
14:41:14.229 -> Send beacon
14:41:14.229 -> Send beacon
14:41:14.276 -> Send beacon
14:41:14.276 -> Send beacon
14:41:14.276 -> Send beacon
14:41:14.276 -> Send beacon
14:41:14.322 -> Send beacon
14:41:14.322 -> Send beacon
14:41:14.322 -> Send beacon
14:41:14.322 -> Send beacon
14:41:14.369 -> Send beacon
14:41:14.369 -> Send beacon
14:41:14.369 -> Send beacon
14:41:14.416 -> Send beacon
14:41:14.416 -> Send beacon
14:41:14.416 -> Send beacon
14:41:14.416 -> Send beacon
14:41:14.463 -> Send beacon
14:41:14.463 -> Send beacon
14:41:14.463 -> Send beacon
14:41:14.463 -> Send beacon
14:41:14.510 -> Send beacon
14:41:14.510 -> Send beacon
14:41:14.510 -> Send beacon
14:41:14.510 -> Send beacon
14:41:14.557 -> Send beacon
14:41:14.557 -> Send beacon
14:41:14.557 -> Send beacon
14:41:14.557 -> Send beacon
14:41:14.604 -> Send beacon
14:41:14.604 -> Send beacon
14:41:14.604 -> Send beacon
14:41:14.651 -> Send beacon
14:41:14.651 -> Send beacon
14:41:14.651 -> Send beacon
14:41:14.651 -> Send beacon
14:41:14.697 -> Send beacon
14:41:14.697 -> Send beacon
14:41:14.697 -> Send beacon
14:41:14.697 -> Send beacon
14:41:14.744 -> Send beacon
14:41:14.744 -> Send beacon
14:41:14.744 -> Send beacon
14:41:14.744 -> Send beacon
14:41:14.791 -> Send beacon
14:41:14.791 -> Send beacon
14:41:14.791 -> Send beacon
14:41:15.026 -> LAT=37.822637 LONG=3.277927 ALT=169.40 SAT=9
14:41:16.010 -> LAT=37.822637 LONG=3.277927 ALT=169.40 SAT=9
14:41:17.041 -> LAT=37.822643 LONG=3.277928 ALT=169.60 SAT=9
14:41:17.791 -> Send beacon

Si je modifie le code pour ne plus tenir compte de l’info distance
bool time_to_send() const {
// return has_pass_time() || has_pass_distance(); //tient compte de la distance pour emettre une trame
return has_pass_time(); // ne tient pas compte de la distance (seulement une trame toute les 3 s)
}

Je n’ai plus d’émission des trames à rythme délirant, comme je ne pense pas qu’un drone normal fasse du 10 m/s, je ne voit pas trop de soucis à enlever la condition d’émission de trame lié aux déplacement > 30m puisqu’en 3s, il ne les aura jamais fait…

En tout cas, la solution à base d’esp32 permet de faire une balise toute petite et très économique :sunglasses:

Bonjour,

On m’a en effet signalé une erreur sur le calcul de la distance, j’ai mis à jour le dépot récement avec la correction

J’ai essayé le dernier dépot, ça ne changeai rien. C’est peut être le GPS que j’utilise qui fluctue trop en position, j’ai essayé d’augmenter les 30m à 100m pour voir mais c’était pareil. Je n’ai pas creusé plus car faire plus que 10m/s (36 km/h) se sera rare pour moi :grinning:

Est-ce que l’un de vous a réussi à injecter le code dans une carte T-BEAM ?

J’ai un plantage systématique à cause d’une erreur avec la librairie “button2”
visiblement dans cette ligne : " pBtns = new Button2 [args]; "
avec un code d’erreur : exit status 1
no matching function for call to ‘Button2::Button2()’

Avant de decouvrir le code pour l’esp32 ici, j’arrivais a compiler sans erreur le code d’origine pour la carte TT-beam sous l’interface arduino. J’ai juste ajouté les bibliotheques necessaires dans le dossier librairie du programme arduino et évidemment le support des cartes TT-beam avec le lien json dans les paramètres. J’attends une carte TT-beam, je vérifierai si le code fonctionne quand elle arrivera.

La carte, je viens de la recevoir, mais de toute façon, je n’arrive pas à compiler le code, donc impossible de l’injecter !
J’ai bien rajouter les librairies dans l’interface Arduino. Par contre, impossible de faire reconnaitre la librairie LORA. Il y a 11 versions différentes, plus X révisions pour chaque versions, mais aucune n’est reconnue par Arduino. Il n’y a pas de sous dossier src dans aucune des versions. J’ai trouvé une librairie LORA (arduino-LoRa-master) pour Arduino.

Bonjour,

As-tu essayé avec les librairies préconisées ?





Bonjour,
Pour décoder ce qui est émis par ta balise tu peux utiliser un deuxième esp32 : la trame n’est pas décodée en totalité mais tu auras l’ID, LAT, LONG et ALTmsl si tu mets un SSID court, genre “AP”
Voir “decode_balise” sur mon repo.

Ah, excellent ! merci, je vais essayer quand j’aura reçu un autre esp32 :grinning: