Open Source French Drone Identification

J’essaie de faire téléverser ma carte TT-beam avec Arduino mais en vain, j’ai un problème de communication A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
Je précise que j’ai pas eu de problème lors de la compilation, apparemment je suis connecter au bon port Port 13:
image

Voici mes paramètres de connexion :
image

J’ai également changé de câble usb mais toujours le même problème.Si quelqu’un peut m’aider je suis preneur car la je sèche.

Finalement problème résolu après plusieurs tentatives sans rien modifier.

Bonjour Pierre,
Pour ma part je ne suis pas trop convaincu par le fait d’accumuler la distance. Si tu prends un appareil qui tourne en rond il va émettre alors sa position avant les 3s alors qu’il ne s’est pas déplacé plus que ça de sa dernière position signalée. De plus, le fait d’accumuler la distance dépend alors du refresh rate du GPS.
Je comprends bien que le fait d’accumuler permet de coller mieux à la trace réelle de l’appareil sur une carte mais je ne pense pas que ce soit le but premier de la balise soit de savoir si tu fais des ronds ou des carrés en l’air.

Le calcul 3D est par contre indispensable, en l’état un multirotor qui monte plein gaz à la verticale ne sera signalé que toutes les 3s. Dans le cas de la proximité avec un aéroport il ne sera clairement pas signalé correctement.

Le texte de loi précise :
“2 envois sont séparés d’au plus 30 mètres.” Pour moi on parle bien d’une distance parcouru.Je pense que c’est surtout pour appareil rapide car en 3s la distance parcouru sera importante.

“De plus, le fait d’accumuler la distance dépend alors du refresh rate du GPS.” ça dépendent de ta source de données ! Si tu prend du mavlink en entré tu aura surement l’estimation d’état de l’EKF plutot que le GPS directement. Mais dans tous les cas, l’actualisation du GPS est limitante comme ça précision : si tu a une donnée par seconde avec une précision de 10m, la balise va donner des données abérantes … mais bon, c’est du GPS …

Bonsoir Pierre,
Dans le cas du GPS seul il faut aussi s’assurer que les données soient réellement mises à jour avant de les envoyer à la librairie. Il faut également tenir compte de la vitesse pour anticiper le prochain point à émettre, quitte à l’envoyer à moins de 30m de distance.

J’ai fait une mise à jour sur https://github.com/f5soh/balise_esp32/tree/droneID_FR_testing , testé en voiture (en dépassant un peu la limitation de vitesse…) à 5Hz et ça fonctionne assez bien :
les deux conditions “2 envois sont séparés d’au plus 3 secondes” et “2 envois sont séparés d’au plus 30 mètres.” sont respectées. (Pas interprétée comme une distance parcourue si parcours en zig-zag.)

Bonsoir,
voici ce que j’ai trouvé sur le site du Ministère : ça complique un peu la chose :slight_smile:
https://www.ecologique-solidaire.gouv.fr/modeles-reduits-et-drones-loisir

Nouveautés et points d’attention

# Dispositif de signalement électronique : saisie dans Alphatango

Le portail AlphaTango intègre dorénavant la possibilité de saisir le numéro d’identification du dispositif de signalement électronique de l’aéronef sans personne à bord, conformément aux dispositions de l’arrêté du 19 octobre 2018 relatif à l’enregistrement des aéronefs civils circulant sans personne à bord. Une notice explicative est disponible ci-dessous. Ces dispositions ne sont applicables qu’aux aéronefs dont la masse au décollage est supérieure à 800 grammes, ou qui sont nativement équipés d’un tel dispositif de signalement électronique.

Important : Seul le constructeur de l’aéronef sans personne à bord ou du dispositif amovible de signalement électronique (“add-on”) est en mesure de fournir ce numéro d’identification. Si cette information ne vous a pas été explicitement fournie par le constructeur (par courriel, sur l’interface/appli proposée par le constructeur ou dans l’emballage du drone ou de l’add-on, par exemple), il convient de s’adresser à lui pour l’obtenir. Si vous ne disposez pas du numéro d’identification ou n’êtes pas certain de ce qu’il convient de saisir, il vous est recommandé de ne saisir aucune information, afin de ne pas vous exposer aux sanctions prévues dans le décret n°2019-1253 du 28 novembre 2019.

Merci pour ce travail remarquable,
j’ai modifié un peu le code pour afficher la home position,
rien n’y fait j’ai “AltHome: -29440 HLAT: 0.00000 HLON: 0.00000” tjs identique avant ou après le setting de la home position par le tracker

Coté decode_balise.ino, avec ajout après
//Altitude msl
Serial.print(" ALTmsl: “); printAltitude(offset, TLV_LENGTH[ALTITUDE] , snifferPacket->data);
offset += TLV_LENGTH[ALTITUDE];
//ajout
Serial.print(” AltHome: "); printAltitude(offset, TLV_LENGTH[HEIGTH] , snifferPacket->data);
offset += TLV_LENGTH[HEIGTH];

Serial.print(" HLAT: "); printCoordinates(offset, TLV_LENGTH[HOME_LATITUDE] , snifferPacket->data);
offset += TLV_LENGTH[HOME_LATITUDE]+2;

Serial.print(" HLON: "); printCoordinates(offset, TLV_LENGTH[HOME_LONGITUDE] , snifferPacket->data); Serial.println();

Le serial monitor affiche :

ID: ILLEGAL_DRONE_APPELEZ_POLICE17 LAT: 48.78137 LON: -3.03456 ALTmsl: 256 AltHome: -29440 HLAT: 0.00000 HLON: 0.00000
ID: ILLEGAL_DRONE_APPELEZ_POLICE17 LAT: 48.78137 LON: -3.03456 ALTmsl: 256 AltHome: -29440 HLAT: 0.00000 HLON: 0.00000
ID: ILLEGAL_DRONE_APPELEZ_POLICE17 LAT: 48.78137 LON: -3.03456 ALTmsl: 256 AltHome: -29440 HLAT: 0.00000 HLON: 0.00000
ID: ILLEGAL_DRONE_APPELEZ_POLICE17 LAT: 48.78137 LON: -3.03456 ALTmsl: 256 AltHome: -29440 HLAT: 0.00000 HLON: 0.00000

Coté du tracker , avec ajout après
if (!has_set_home && gps.satellites.value() > 6 && gps.hdop.hdop() < 2.0) {
Serial.println(“Setting Home Position”);
drone_idfr.set_home_lat_lon(gps.location.lat(), gps.location.lng());
has_set_home = true;
home_alt = gps.altitude.meters();
//ajout
Serial.print(gps.location.lat(),DEC);
Serial.println(gps.location.lng(),DEC);

Je vérifie que serial monitor affiche bien
Setting Home Position
48.7813728330-3.0346040000
et c’est le cas, avez vous une piste ?

Bonjour,
C’est un comportement “normal” du sniffer, le buffer de la trame reçue est limité. (voir README)
Le decode_balise n’ira pas plus loin que la valeur “Altmsl” à la condition que le ssid de la balise soit court (il n’est pas utilisé par la balise elle-même) et peut donc être mis à “AP” pour faire court.

Chez moi, tout fonctionne…
Je viens de recevoir la carte TTGO Tbeam (en V1.0) et j’ai injecté le code de khancyr. Cela fonctionne parfaitement à la condition de choisir un id de 30 caractères sinon j’ai des lettres qui allongent l’id.
La trame est bien décodée avec le module ESP01 contenant le code de f5soh :sunglasses:
Il n’y a pas d’émission de trames indésirables avec la carte TTGO. Mais comme cela est résolu avec la dernière version du code pour l’ESP01, c’est juste pour info.
Ma préférence va assez naturellement à la solution ESP01 + module GPS du fait de la compacité finale :grinning:

Je n’avais pas bien compris comment remplir dans AlphaTango le champ concernant le signalement électronique, en fait il s’agit d’y mettre la trame émise par la balise si on l’achète car dans ce cas elle émet un id préprogrammé qu’il faut évidemment renseigner dans AlphaTango…
Dans le cas du DIY, on peut émettre un Id bien plus pertinent mais que renseigner dans AlphaTango puisque l’on peut émettre directement son identifiant AlphaTango ?

Merci pour cette réponse rapide, c’est dommage mais c’est suffisant pour vérifier l’ID et cela donne la position courante du GPS ce qui est précieux en cas de crash.

Bonjour,
J’ai porté sur un ESP32 l’application decode_balise qui peut maintenant afficher la totalité de la trame balise reçu :
len=144 ID: ILLEGAL_DRONE_APPELEZ_POLICE17 LAT: 48.78136 LON: -3.03459 ALT ABS: 19 HAUTEUR: 2 LAT DEP: 48.78140 LON DEP: -3.03456 VITESSE HOR: 0 DIR: 1

Le code se trouve ici : https://www.dropbox.com/s/yx0l9q11isg1ve7/Decode_balise_ESP32.zip?dl=0
Il se compile avec une carte “ESP32 Dev Module”

Fred

La touche final :wink: : https://github.com/dev-fred/Decode_balise_ESP32

2 Likes

Merci pour le partage !
Le code fonctionne très bien sur la carte TT GO T-Beam :sunglasses:
Je vais pouvoir utiliser cette carte pour avoir un récepteur portable. Il faudrait juste sortir sur le bluetooth les infos pour les afficher sur un smartphone :wink:

C’est déjà mieux…
Pas d’ESP32 ici :stuck_out_tongue_closed_eyes:

Je pensais le connecter sur 1 appli terminal Android via l’USB pour avoir un outil de terrain, j’ai commandé un câble Micro USB-B/A OTG mais je vais creuser ton idée.

Merci,
et encore merci pour ton code très bien écrit :+1:

Si c’est pour le décode_balise, c’est de l’humour j’espère ! :roll_eyes:

Sur https://github.com/dev-fred/Decode_balise_ESP32 j’ai ajouté une version avec sortie Bluetooth.
J’ai dû ralentir le rythme de sortie des messages à 1 toutes les 4 secondes.

2 Likes

Je reformule :
et encore merci pour ton code que j’ai pu facilement réutiliser.

Excellent ! Il n’y a ici que des programmeurs enthousiastes et performants ! ça fonctionne directement :grinning:

On a maintenant toutes les briques pour avoir une balise miniature à une dizaine d’euros et un récepteur portable pour recevoir la trame sur son smartphone. Merci à tous !

Malheureusement, tant que le site AlphaTango ne propose que l’enregistrement du dispositif de signalement avec un trigramme prédéfini par un constructeur, je ne vois pas comment on pourra obtenir un ID légal pour un dispositif de signalement DIY en Opensource.
Il manque un trigramme OPS avec un menu de génération d’ID unique qui reposerait sur le propriétaire, la plage de masse et le groupe.
Heureusement, la brique décodeur ne pose pas ce type de problème et sera bien utile pour contrôler les balises sur le terrain.