Une solution Open Source pour le signalement électronique à distance à moins de 40 €

55
7552

La loi dite « drones » de 2016 et ses arrêtés et décrets d’application imposent le signalement électronique à distance à partir du 29 juin 2020 en France pour les appareils de plus de 800 grammes, avec un délai supplémentaire jusqu’au 29 décembre 2020 pour les appareils enregistrés sur AlphaTango avant le 29 juin 2020.

Comment se conformer ?

Si vous pilotez un appareil dépourvu de solution prévue par son constructeur, c’est à vous de vous équiper. Pierre Kancir de Hivebotics, ingénieur en robotique et expert ArduPilot, propose une solution logicielle en Open Source. Elle permet d’utiliser l’une des cartes électroniques disponibles dans le commerce pour y injecter le code nécessaire à la transformer en dispositif de signalement électronique à distance conforme avec la loi de 2016.

Je laisse le clavier à Pierre…

Ce signalement électronique repose sur l’envoi de trames « beacon » avec un équipement wifi en utilisant une structure et un protocole définis dans l’arrêté du 27 décembre 2019. La difficulté d’implémentation du signalement électronique vient de la technique d’envoi des trames. Contrairement à certaines idées reçues, l’utilisation de la trame « beacon » ne nécessite pas de créer un point d’accès wifi sur lequel on doit se connecter pour récupérer les informations. La trame « beacon » est justement une trame qui ne nécessite pas d’appairage d’équipement wifi. Lorsque vous utilisez votre gestionnaire réseau pour détecter et afficher les points d’accès wifi présents autour de vous, ce sont ces mêmes trames « beacon » qui s’affichent, indiquant les informations émises par les différents points d’accès wifi autour de vous.

Solution Open Source

La difficulté repose donc sur les connaissances nécessaires pour pouvoir faire transmettre cette fameuse trame par votre puce wifi. L’encodage des informations ne présente pas de réelles difficultés pour peu qu’on sache un minimum coder. Il existe peu de solutions actuellement sur le marché, notamment pour les budgets modestes. C’est pourquoi nous vous proposons une solution open source que j’ai réalisé avec le soutien d’Airbot Systems afin de vous permettre de faire vous même votre module de signalement électronique pour moins de 40€, sans savoir coder, ni souder !

A télécharger…

Quatre dépôts ont été mis en ligne :

Explications

La librairie C++ est un simple fichier .h qui permet de faire l’encodage des informations de la bonne façon. Le code Python est un exemple de code utilisable sous Linux pour générer et envoyer des trames d’identification avec un système MAVLink (comme le simulateur d’ArduPilot). Le code Python est séparé en deux. Un script permet de récupérer les informations MAVLink et d’envoyer la trame beacon. Le second script scanne les trames wifi reçu par votre ordinateur pour décoder les trames de signalement électronique drone. Ce code n’utilise que des outils standard et fonctionne sur Rasberry Pi. Vous trouverez aussi dans la documentation de ce dépôt comment utiliser un logiciel pour voir toutes les trames beacon qui sont captées par votre ordinateur.

Recommandations

Le dernier dépôt propose la création d’un module indépendant et autonome permettant de faire votre propre signalement électronique. La carte utilisée en exemple est une carte TTGO T-Beam que vous trouverez facilement pour moins de 40 € chez votre vendeur favori. Privilégiez une version 1.0 ou 1.1 de la carte si possible pour plus de performance GPS. Cette carte est basée sur une puce wifi ESP32, bien connu des communautés de développeurs et bricoleurs, et possède un GNSS ainsi qu’un support de batterie pour compléter le tout. Nous avons réalisé une documentation sur comment programmer la carte, et pour plus de facilité, le code a été réalisé avec le framework Arduino. Il ne vous reste qu’à changer le nom de point d’accès wifi que va créer la carte et l’ID drone, avec celui que vous a fourni AlphaTango ! (La DGAC a précisé que ce serait bientôt disponible sur leur site). Attention, si vous ne modifiez pas les valeurs par défaut vous aurez un réseau wifi nommé « ILLEGAL_DRONE_AP » et un ID drone : « ILLEGAL_DRONE_APPELEZ_POLICE17 »…

Sur d’autres matériels ?

Évidemment, ce code est portable à d’autres cartes basées sur l’ESP32. La carte TTGO T-BEAM a été choisie car elle possède directement tout l’équipement pour être autonome pour le signalement électronique. [elle est dispo sur Amazon et d’autres sources comme Banggood]. Nous proposerons plus tard un autre exemple avec juste une puce ESP32 branchée sur une carte type Pixhawk ou Cube avec ArduPilot. En combinant, les informations de l’exemple Python et de l’ESP32, vous ne devriez pas avoir de mal à faire vous-même la modification pour obtenir un module d’émission encore moins chère et / ou plus intégré dans votre drone. Malheureusement, nous ne connaissons pas les protocoles utilisés par les autopilotes BetaFlight et autres, et n’avons pas le temps de proposer d’implémentation d’exemple. N’hésitez pas à proposer d’autres exemples qui utilisent les protocoles LTM, MSP, etc. comme entrées de la librairie pour envoyer les bonnes données dans la trame beacon.

La FAQ ?

  • Est-ce légal ?
    OUI ! C’est même la finalité puisqu’il s’agit de rendre un drone conforme à la réglementation. Le dispositif
     a été testé avec succès avec le code que propose la Gendarmerie pour la détection des trames : https://github.com/GendarmerieNationale/ReceptionInfoDrone
  • Est-ce que je dois payer pour utiliser ce code ?
    NON ! Le code que nous proposons est en libre accès.
  • Est-ce que je peux vendre des modules basés sur ce code ?
    OUI ! Dans le respect de la licence GPL qui impose que vous proposiez à votre acheteur un accès au code utilisé.
  • Est-ce que vous vendez des modules tout fait ?
    NON ! Pour ma part, je ne vends rien. Veuillez voir avec Airbot Systems ou d’autres entreprises pour avoir une carte clé en main.
  • Est-ce que je peux utiliser une autre carte avec ce code ?
    OUI et NON. Si c’est une carte avec une puce ESP32, alors vous n’aurez simplement qu’à changer la définition des ports de votre carte pour faire fonctionner le tout. Avec une autre puce, la librairie C++ sera fonctionnelle, mais vous devrez faire appel aux bonnes API de votre puce wifi pour émettre la trame beacon.
  • Qu’est-ce que je risque à voler avec l’ID par défaut ou sans signalement ?
    Une amende de 4e classe, donc forfaire à 135 € selon le décret du 30 octobre 2019.
  • Est-ce que je suis obligé d’utiliser votre librairie ?
    NON ! Vous avez un code référence qui fonctionne, vous pouvez créer votre propre librairie et outils ou utiliser ceux d’autres personnes ou entreprises.
  • Je n’ai jamais codé, est-ce que c’est dur à utiliser ?
    Normalement NON. Mais cela dépend de votre capacité à suivre des informations techniques. N’hésitez pas à poser des questions sur vos forums drones favoris, voire vous déplacer sur un terrain de modélisme ou Fablab pour qu’on vous montre comment faire !

Pierre Kancir (Hivebotics)
Julien Queffélec (Airbot Systems)

55 COMMENTAIRES

  1. Si tu as un contrôleur de vol avec un GPS, prend juste un ESP32 et récupére les infos de la télémetrie. Tu aura juste une petite puce wifi pour 4€ à intégré.
    La je proposai juste une version autonome. Il existe d’autres cartes avec GNSS, à vous de jouer pour proposer un autre exemple !

  2. @khancyr , j’avais déjà réfléchie a cette solution esp32 ,maintenant le coté prog je suis une bitoss ,et là c’est cool ,je pense que je vais apprendre plein de truc , par contre ,au niveau propa wifi ,c’est pas terrible (par contre la radio c’est mon boulot ) . Et j’ai toujours pas compris la doctrine d’emplois de ce système là par la gendarmerie .

  3. Le choix a été fait du wifi pour simplifier les déploiements auprès des forces de l’ordre. Je trouve l’utilisation de la trame beacon assez astucieux en faite. Aprés c’est sur que j’aurai plus vu l’utilisation d’un LORA vers LORAWAN public. On aurait eu un U-Space facile et centralisé facilement !

  4. Il me semble que ces cartes ont 2 parties RF:
    – une pour le GNSS
    – une pour cibler la réception LORA et alors c’est du 433MHz, 868MHz, 915MHz ou 923MHz selon le choix.
    Même si le chip TTGO et son firmware supportent le protocole WIFI, je ne suis pas sûr que la partie RF permette de diffuser efficacement une trame BEACON en 2.4GHz.
    Quelqu’un peut infirmer mon feeling?

  5. Autant mettre des vraies sources à pas cher si tant est que mes commentaires passent une nouvelle fois

  6. Super 🙂 J’ai quelques questions sur le chois de l’ESP32
    – Quelle doit être la puissance légale de ce « beacon » ?
    – Pourquoi faut-il un ESP32 pour juste envoyer une trame en 2,4Ghz ? Quel est l’avantage sur un petit uC comme un petit PIC et un module radios genre NRF24L01 qui présente des versions 100mW pour moins de 10€ ?

    Merci d’avance.
    John3volts3

  7. La je ne comprends plus trop. La loi drone de 2016 n’est elle pas remplacée par la nouvelle loi Européenne? C’est le principe de toute nouvelle loi.

  8. J’avais la carte en stock, cà fonctionne et çà fera l’affaire… Par contre, ce sera sur le bord du terrain et toujours le même identifiant alphatango… quite à être ridicule, autant l’être jusqu’au bout…

  9. @ LeonZ : Cette loi de 2016 reste en vigueur tant que la suite n’est pas elle-même entrée en vigueur, et ça on ne sait toujours pas quand ce sera, dans les faits. D’ailleurs si tu as un complément d’info dans ton pays, je prends toujours 🙂

  10. @FerARepasser : Si ça fonctionne bien, c’est dans le standard Wifi pour les points d’accés de toute façon. Si tu regardes avec Wireshark, tu verra que le point d’accés spam des trames beacons ,par défault à 10Hz mais j’ai baissé à 1Hz

    @John3volts3: le choix de l’ESP32 c’est fait sur la simplicité d’approvisionnement et programmation. N’importe quelle puce Wifi avec une API fera bien l’affaire. Pour le NRF24L01, c’est peut être possible mais je pense que ça va être complexe de faire la bonne modulation pour matcher une trame bacon 802.11. Aprés juste l’ESP32 est pas chère, un ESP8266 fonctionnera aussi (avec une légère différence pour envoyer la trame).
    Il n’y a pas de spécification sur la distance, ils précisent juste au maximum de puissance alloué sur 2.4GHz soit 100mW. Aprés tu peux toujours joué au con et ne pas mettre d’antenne sur ta puce wifi, théoriquement c’est valide mais tu va porter à 2m et prend le risque que les forces de l’ordre neutralisent ton drone car il envoie pas de signalement suffisamment loin. Avec un ESP32 tu as bien au moins 50m même en ville, donc c’est plutot confortable.

  11. L’idée me plait, ne me voyant pas mettre 150 € pour un module tout prêt !

    Est-ce que quelqu’un pourrait faire une vidéo tuto, ou au moins un tuto pour expliquer comment modifier injecter le code dans la carte TTGO T-Beam ?
    Je connais un peu sous arduino, mais là, je ne connais pas du tout, et je ne pense pas être le seul.

    Merci et vraiment super idée.

  12. Pensez vous qu’il serait possible d intégrer ceci dans un contrôleur de vol avec inav et de piloter un esp32 ou une autre puce pour envoyer les trames? De plus une modification au niveau de inav configurator permettrait de modifier le nom du réseau wifi et l ID du drone. Je pense qu il faut ouvrir une demande sur le github d’inav:https://github.com/iNavFlight/inav/wiki
    Qu’en pensez vous?

  13. Si Inav est capable de sortir un protocol de télémétrie pour avoir accés aux données demandés, il n’y aura pas de problème.
    Le fait de ne pouvoir changer l’ID du drone que par programmation de la carte est intentionnel ! On pourrait tout à fait utilisé le point d’accés wifi pour changer l’ID mais ça deviendrait limite vis à vis de l’inviolabilité qu’ils demandent dans la loi. Personnellement, je ne le recommande pas

  14. @khancyr, merci des explications. Pour la partie radio, pratiquement tout est dans l’ESP32 ou un autre composant? Je veux parler du LNA, les filtres, DAC, ADC, Power Amp … Si en effet il n’y a pas de composant passif dans la chaine radio le 2.4GHz doit passer sans problème. Si par contre la partie radio est adaptée à la fréquence cible (433MHz, 868MHz, 915MHz ou 923MH), un signal étalé en OFDM sur une porteuse 2.4GHz risque d’être distordu non?

  15. @khancyr, pas la peine de répondre:-). Je suis allé chercher le esp32-s2_hardware_design_guidelines_en.pdf pour voir de quoi il en retourne.
    Le ESP32 fait bien toute la partie RF y compris analogique et la pin LNA_IN est raccordée à l’antenne physique au travers d’un simple filtre d’adaptation CLC. Il suffit donc de changer l’antenne par une antenne 2.4GHz pour que le module puisse travailler dans les bandes 2.4GHz.

  16. @FerARepasser : Je pense que tu a mal lu ce que fait la carte TTGO T-BEAM …
    la puce ESP32 est une puce intégré pour justement permettre de travailler avec un signal wifi. Généralement, elle a une antenne PCB mais on peut la trouver avec une antenne extérieure pour plus de portée.
    Sur la carte TTGO T-BEAM, il y a un récepteur GNSS (ça émet pas, juste de la réception), une puce WIFI (en l’occurrence l’ESP32) et une puce LORA (en 868MHz) avec une antenne externe. Le carte est capable de faire du LORA et du WIFI en même temps ! Il n’y a rien à changer.

  17. @khancyr, j’avais zappé cet aspect du WiFi tout en un. Il y a donc une antenne dédiée sur la carte TTGO T-BEAM pour le 2.4GHz. Elle est en microstrip ou c’est celle qui part derrière le PCB? Je pensais que celle là était pour la reception GNSS. Si c’est un microstrip, y a t’il un connecteur pour en rajouter une plus performante?

  18. Pour FerARepasser, oui il y a un connecteur d’antenne en bas à gauche de la photo du module en face Tx/Rx.

  19. Bonjour et merci pour cette implémentation.
    J’ai adapté le code sur un lolin32, mais lorsque je lance le python de ReceptionInfoDrone je n’obtiens en réponse que des “module object has no attribute ‘dumps’ “.
    Une idée ?
    Merci

  20. Bonjour,
    lorsque je regarde les modules LILYGO TTGO T-Beam ESP32, on voit qu’il y a 4 fréquences radio possible (433/868/915/923Mhz).
    Si j’ai bien compris, on n’utilise pas cette partie de la carte pour ce montage ; donc n’importe lequel de ces modules convient.
    Pouvez-vous me le confirmer ?
    Merci

  21. Je ne comprends pas pourquoi ils n’ont pas choisi le FLARM des planeurs sur 868mhz…
    Le réseau et le matériel existe déjà…
    Par contre ce n’est pas du Wi-Fi et ça impose un module mais le TTGO T-BEAM fait le taf pour moins de 50€…

  22. En fait, je n’avais rien compris, et la réponse a été donnée plus haut :
    “une puce WIFI (en l’occurrence l’ESP32) et une puce LORA (en 868MHz) avec une antenne externe. Le carte est capable de faire du LORA et du WIFI en même temps”

  23. Je n’y connais pas grand chose mais la question de Nicolas Pujol m’intéresse. La loi semble imposer une fréquence de fonctionnement à 2,4 Ghz (2400 à 2483,5 Mhz) et la carte TTGO T-Beam fonctionne sous 433/868/915/923 Mhz. Du coup, c’est bon ou pas? Je ne voudrais pas me lancer dans un dispositif qui ne soit pas conforme …

  24. bonjour. Quelqu’un pourrait-il me dire comment redémarrer une carte TTGO T-Beam V1.1 ESP32 868/915 qui ne répond plus après une injection de code.Merci

  25. Bonjour
    Je viens de découvrir cette nouvelle restriction. Mon Phantom 3 standard pesant 1.2kg je suis obligé de me plier à cette contrainte. Je viens donc de me commander une carteTTGO T-Beam V1.0 et vais essayer de rentrer le code . Cependant je ne saisis pas tout : n’ayant jamais codé de ma vie j’espère réussir à le modifier et l’entrer dans la carte, mais ma principale question est la suivante : lorsque je modifierais mon enregistrement à la DGAC de mon drone, un identifiant de cette carte est demandé : où se trouve donc cet identifiant ?
    En attendant la carte et une réponse de votre part je vais me mettre à l’impression du boitier pour le module. En tous cas merci pour votre super boulot

  26. lors du contrôle du fichier J’ai cette erreur sous arduino et je ne trouve pas la solution:board_def.h: No such file or directory.
    Quelqu’un pourrait-il me renseigner. Merci

  27. Bonjour Edouard,

    Les fichiers board_def.h, droneID_FR.h et LilyGO-T-Beam.ino doivent être dans le même répertoire.
    Par contre moi je bloque sur error: ‘BUTTON_PIN’ was not declared in this scope

    Bon courage à ceux qui tentent!!

  28. Bonjour et merci pour cette initiative…
    La question de pascal est très pertinente et j’avoues que je bute sur le même problèmeµ… A ceux qui ont déjà abouti dans ce projet qu’avez vous rentré dans Alphatango comme identifiant de carte?

    merci d’avance pour votre soidarité 🙂
    Mike

  29. Bonjour,
    je viens de recevoir ma carte. Effectivement, c’est un peu gros comme système.
    De mon côté, j’utilise l’environnement Arduino pour compiler, et c’est le fichier TinyGPS++.h qui me manque : probablement que mon environnement n’est pas complètement compatible avec ma carte (d’ailleurs, je ne sais pas si j’ai choisi la bonne).
    Ce n’est pas aussi simple que je le pensais ; j’essaierai de faire un tuto une fois que j’aurais réussi.

  30. @Nicolas Pujol
    si tu y parviens je suis preneur car j’y suis presque parvenu, j’ai chargé le script dans la carte qui émet bien mais je ne suis pas parvenu à utiliser les scripts python pour vérifier la trame :-/
    en outre comme je l’écrivais précédemment j’ignore quel numéro de série renseigner sur Alphatango pour déclarer ma balise.
    Tiens nous au courant 😉
    Mike

  31. Alors, j’ai du ajouter plusieurs bibliothèque dans mon environnement :
    – TinyGPSPlus
    – AXP202X_Library
    – arduino-LoRa
    – esp8266-oled-ssd1306
    – Button2
    Puis j’ai une erreur à la ligne 133:
    pBtns = new Button2 [args];
    comme si ma bibliothèque Button2 n’était pas la bonne.

  32. Bonjour,
    premièrement, pour le numéro d’identificaton, dans droneID_FR.h, j’ai mis mon “UAS-FR-xxxxx”.
    Mais c’est secondaire, pour moi, car je ne vais pas reflasher mon module si je le change d’avion !
    Donc, pour compiler le projet, j’ai utiliser PlatformIO IDE et VS_Code de Microsoft. Je ne sais pas pourquoi, mais je n’ai pas réussi avec l’IDE Arduino.
    La méthode : suivre https://www.firediy.fr/article/debuter-avec-un-esp32-et-platformio
    le blog suivant http://emery.claude.free.fr/vscode-platformio.html permet également d’y arriver.
    Ensuite, j’ai créé un projet. Dans le main.cpp (créé automatiquement lors de la création du projet), j’ai copié le fichier LilyGO-T-Beam.ino.
    J’ai mis board_def.h et droneID_FR.h dans le même répertoire.
    J’ai du ajouter les bibliothèque TinyGPSPlus, AXP202X_Library et Button2 (peut-être une de plus ; je ne sais plus, parce que j’ai testé plusieurs projets en même temps).
    Pour rajouter les librairies, j’ai trouvé un bouton dans l’environnement, mais je ne sais pas comment vous le décrire ; quelque chose comme “librairie”, puis on fait une recherche en mettant le nom que j’ai indiqué plus haut, puis “add”.
    J’ai pu compiler (ou builder, en franglais) et dans le répertoire .pio/build/ttgo-t-bean, j’ai obtenu mon binaire, que j’ai pu flasher.
    Pour la board, j’ai choisi TTGO-T-BEAN.
    Plus qu’à tester !

  33. Bonjour, est-ce qu’il y a parmi nous qui a déjà testé ce produit avec des drone Yuneec? J’ai un H520 pour utilisation professionnel et je voudrais juste savoir si cela fonctionne bien avec?

  34. Bonjour,
    Je compte me lancer dans la fabrication de ce module mais j’ai un soucis : quel identifiant mettre ? Sur le site alpha tango, il y a 2 choix :

    1er choix : FR 30 caractères. Dans ce cas il ya une multitude de choix de 3 lettres et ensuite une longue case ou taper des chiffres.

    2ème choix ansi/cta/2063-a (psn) !!! Kesaco ????

    Pour info j’ai un xiaomi mi drone déjà immatriculé depuis longtemps et ma licence de telepilote obtenu sur alpha tango (mdr)

    Merci si vous pouvez m’éclairer sur cette fichue immatriculation.
    Merci d’avance

  35. Bonjour,
    voilà je viens de recevoir mon fameux trigramme da DSAC.
    L’installation s’est faite assez facilement depuis plateformio même pour un novice dans ce domaine comme moi (j’ai déjà programmé mais pas avec cette plateforme).
    pour obtenir le Trigramme il faut remplir le formulaire CERFA 15963*01 https://www.ecologique-solidaire.gouv.fr/sites/default/files/cerfa_15963_01.pdf

    dans la proposition d’identifiant il faut simplement leur donner 3 lettres au choix qui seront ensuite votre identifiant officiel. Ils m’ont demandé quelques détails par mail sur le dispositif, en faisant un lien vers cette même page tout est passé (merci Helicomicro !!!)
    Identifiant que l’on retrouve ensuite sous Alphatango à l’enregistrement en format FR.

    Reste a imprimer en 3D un boitier pour fixer ça sur mon Phantom 4 et ça devrait être opérationnel.

  36. Merci Jérôme, ton tuto m’a bien aidé.
    Je ne sais pas bien pourquoi, j’avais un “kernel panic” qui fait que mon système rebootait sans cesse.
    Je suis reparti de zéro, en suivant ta méthode, et je vois bien mon réseau WIFI.
    Par contre, quand j’essaie de me connecter, il ne me demande pas le mot de passe, et refuse.

  37. Un grand merci @Jerome Pouille pour le tuto et le boulot que cela représente, c’est vraiment sympa 😉
    Mike

  38. @Jerome Pouille, te rappelles tu combien de temps as tu attendu pour recevoir le trigramme après l’envoi du formulaire?

  39. Désolé, je n’ai reçu aucun retour indiquant une réponse…
    @mike Heurtault : j’ai du attendre 15-20 jours maxi, mais suite à une relance je l’ai reçu 2 jours après.
    Ils m’ont seulement demandé quelques précisions par mail

  40. Bonjour,
    mon système marche, mais j’ai un petit problème pour l’allumer / l’éteindre.
    Une fois la batterie en place, je dois appuyer (environ) 2 secondes sur le bouton “PWR”.
    Ca me paraît normal !
    Ensuite, je vois rapidement mon nouveau réseau WIFI.
    Par contre, comment faire pour arrêter le système, sans devoir enlever la batterie ?
    J’ai essayer “PWR”, pendant un certain temps, mais en vain.
    Merci

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.