Open Source French Drone Identification

Bonne nouvelle, on peut vérifier la trame émise par la balise directement avec un smartphone. L’ESP8266 permet d’abriter un serveur WEB accédant aux données GPS en même temps que s’effectue l’émission de la trame de la balise ici affiché sur un TTGO :

La dernière version de la page obtenu depuis un smartphone ici un Iphone.
Comme bonus, j’affiche la vitesse max du modèle durant le vol :

oui tout à fait.
Pour la version décodeur c’est pareil, on peut utiliser un server web pour afficher les balises détectées, voir même les afficher sur une carte pour ceux qui ont assez de mémoire !

Bonjour,
Encore merci pour ce code bien documenté, as-tu un lien sur ce décodeur avec serveur WEB qui produit un affichage sur carte, pour le moment je ne connais que l’APK de Julien Launay qui s’appuie sur Appinventor et un décodeur qui réémet en BLE la trame décodée.
Est-ce lié au travail de Patrick Arnoul dans l’environnement Mavlink/Mission planner ?

Pas du tout ! J’ai partagé qu’un partie des codes que j’ai réalisé. Malheureusement, je ne peux pas partager la version décodeur pour l’instant. Mais le principe est le même que code que tu viens de présenter : tu fait tourner un server web sur point d’accés en parallèle du sniffer de trame ! Sur le serveur, tu envois juste une application JS de carte qui plotte les balises (avec websocket ou autre) et profite de la connexion internet du téléphone via 4G pour avoir la carte.

Bonsoir, j’ai suivi tes indications et après 3 jours d’apprentissage et de tâtonnement, je commence à avoir un résultat prometteur.

1 Like

Bonjour

Y a t’il une version compatible Mavlink déjà développée quelque part ?

Merci

Bonjour à tous,
c’est mon premier post ici…
merci déjà à tous pour ce travail fabuleux qui est fait sur ces balises!

je me suis permis de reprendre un peu les devs, pour les adapter à mes besoins…
voilà ce que j’ai fait:

j’ai dans un premier temps fait en sorte que le projet s’adapte aux deux cartes (esp01 (ou esp01s c’est pareil mais c’est mieux), et esp32) et donc il n’y a plus qu’un unique projet maintenant, avec deux fichiers: balise_dgac_web.ino et droneID_FR.h

pour passer d’une carte ESP à l’autre (pour ceux qui ne sauraient pas faire… désolé pour les autres):
commentez/décommentez en début de code:

là c’est la carte ESP01 (ou ESP01S c’est pareil, ne pas modifier les textes, juste enlever les // et les mettre dessous ou dessus)
//choix de la carte entre esp32 ou esp01
#define CARTE ‘esp01’
//#define CARTE ‘esp32’

et là la carte ESP32
//choix de la carte entre esp32 ou esp01
//#define CARTE ‘esp01’
#define CARTE ‘esp32’

puis changez votre type de carte dans arduino, menu “outils”, “type de cartes”
de mon côté j’ai choisi entre deux modèles, soit WEMOS D1 MINI ESP32 pour esp32 soit Generic ESP8266 module pour esp01 ou esp01s

pour info, les paramètres qui marchent chez moi sont une vitesse de 115200 pour les transferts, et surtout pour le flash size, No OTA pour la esp32 et "1M (FS:512KB OTA:~246KB) -> car là pas d’option no ota…

j’ai ajouté un petit site web dans la balise, comme la NAVEO :slight_smile:
dès que la balise est initialisée, et que le wifi dessus fonctionne, on peut se connecter dessus (le wifi, selon le nom que vous donnez à l’AP), et aller avec un navigateur à la page suivante:
http://192.168.1.1/
l’adresse est fixée en dur dans le code c’est plus simple ensuite.

vous allez arriver sur une page qui va vous donner des indications sur le fonctionnement de la balise.
alors bien sûr on ne saura pas si la trame est bien émise, ça c’est contrôlable avec l’appli smartphone, mais par contre on saura pourquoi ça marche pas… et comment ça marche, voilà des exemples (le site est moche mais c’est pas un concours de beauté ahahah)

ci-dessous tout va bien, on voit la trame émise, en hexa, j’ai pas converti parce que finalement c’est pas utile, puisque ce sont les infos qu’on retrouve forcément dans les autres parties de la page:

et là, un autre problème:

le bouton de reboot sert à rebooter la balise, c’est pratique une fois tout soudé et caché dans le modèle…
quand la balise a réussi une première fois à faire son fix, on stocke la position de départ, et le site l’affiche
enfin, au niveau de la led bleue, tel que je l’ai programmée, elle est bleue quand tout va bien, et elle est éteinte si ça ne fonctionne pas.
elle clignote au début en init, puis brièvement au moment de la définition de la position de départ, puis brièvement à chaque émission de la trame. d’un seul coup d’oeil on sait si ça va, et si ça va pas on peut voir sur le site pourquoi…

Le téléchargement des sources est ici:

https://www.tranquille-informatique.fr/perso/aeromodelisme/balise-dgac/balise_dgac.zip

je n’ai pas d’espace git ou autres donc je fais comme ça, si quelqu’un du projet de départ veut le stocker mieux que ça, il peut bien sûr.

il y a dedans ce zip le projet balise adaptée aux deux cartes, le projet récepteur qui récupère la trame émise et qui la transmets à l’appli smartphone en BT et dans lequel j’ai juste ajouté une petite partie quand on perd la connexion ça dit qu’on n’a plus reçu de trame depuis + de 6s, et l’appli smartphone que j’ai à peine modifiée (pour avoir le refresh de la trame car sinon quand on perdait la trame on gardait à l’écran la dernière reçue donc on ne savait pas trop… et là si on ne reçoit rien depuis + de 6 s ça l’indique, en gros).

n’hésitez pas à tester, et à critiquer c’est fait pour ça aussi! et à utiliser bien sûr si cette version vous convient.

1 Like

Bonsoir Khancyr, merci de super boulot que tu as fait avec ce code.
J’ai pu le faire cet été sans soucis, j’en ai sorti un petit tutorial sur mon site avec un boitier adapté aux Phantom4.
Dernièrement j’ai eu des questions concernant le fait de vérifier que l’émission était correcte, je me suis donc replongé dans tout ça (je suis novice en prog Python et j’ai découvert la carte grâce à toi) et j’ai réussi à utiliser le code et lire ma trame beacon.

Mais j’ai vu au fil des discussion que tu avais modifié ton fichier DroneID_FR.h, j’ai donc relancé l’injection du code dans ma carte.
Depuis j’ai ce “send beacon continue” dès que la carte capte assez de GPS pour fixer un point.

Avec l’astuce de Patrick de bloquer la mesure de distance j’ai bien maintenant une émission toutes les 3s, mais je perds la notion de distance…
Ton ancien code posait-il un vrai soucis qui le rende obsolète ?
Car là j’ai le choix de l’ancien code qui fonctionne parfaitement ou le nouveau qui fait un envoi du beacon en continue :frowning:
Mais en tout cas je peux dire que ta solution est vraiment parfaite, j’ai fais acheter par ma boite une solution “toute” faite" dont je ne dirais pas le nom, et si cette balise fait le même boulot, elle coute horriblement cher et il faut 2 minutes pour capter les GPS alors que la TT-Beam capte en moins de 30"

Bravo, très bon travail, la page Web permet un accès facile à une très grande richesse d’informations, c’est dense, précis et dynamique, la qualité du signal GPS est surveillée et renseignée en permanence.
Je note que ton critère de seuil pour définir le point de démarrage est plus bas que celui des devs pionnés : gps.satellites.value() < 4 || gps.hdop.hdop() > 5.0 contre gps.satellites.value() > 6 && gps.hdop.hdop() < 2.0 soit 3 satellites de moins et un HDOP en rapport.
Est ce qu’il existe une règle qui donne une idée de l’incertitude sur la mesure de position du GPS en fonctions de ces 2 paramètres ?

Merci, j’espère que ça servira :slight_smile:

pour les seuils non pas de règles précises, j’ai juste lu qu’il fallait au moins 4 satellittes,
pour hdop pareil j’ai été lire un peu, une mesure est bonne entre 5 et 6 et excellente entre 2 et 3, j’ai fait un mix donc.
et suite à mes multiples essais je me suis aperçu que comme ça, ça permettait de définir une position précise déjà donc voilà.

Si j’ai du temps, je vais mettre un mini site web aussi sur le récepteur, on verra…

1 Like

Ca ne m’intéresse pas qu’un peu!
Je suis presque dans le même cas que toi sauf que ma cam est une xiaomi yi, j’ai modifier un programme chargé de la déclencher par bouton pour que le déclenchement se fasse via PWM (photo ou vidéo selon la PWM).
Sur le même principe je trouvais ça dommage niveau poids d’embarqué un deuxième D1 mini.

Pourrais-tu m’indiquer ou trouver ton code?
Quel module gps à tu utiliser le BN220?

Je modifierais le code en remplaçant le code destiné à ta gopro par celui destiné à ma xiaomi et avec un peu de boulot là dessus ça devrait le faire.
Ou mieux, j’intégre le miens avec une variable qui sert au choix 0 = pas de caméra, 1 = gopro, 2 = YI.

Merci d’avance.

1 Like

peut-être dans les messages précédant, je ne me souviens plus. Mais ce n’est pas compliqué à faire et un bon exercice pour ceux qui veulent apprendre à coder un petit peu :stuck_out_tongue_winking_eye:

@Xav_YeYe, Sympa ! Excellent travail. C’est vrai que sur le code que j’ai donné, j’ai fait le minimun … j’aurai pu mettre plus de features comme le serveur embarqué … mais j’ai du aller vite et rester au plus simple. Par contre tu devrais apprendre à utiliser git. C’est vraiment un super outil de développement même pour les projets perso. Pour un dépot Github c’est une question de choix ! Au vu de tous les codes que les gens proposent ici, je me tâte à essayer de tout regrouper …

@JeromePouille, oui l’ancienne version avec deux erreurs donc j’ai du corrigé. Normalement, la gestion de la distance parcouru ne pose pas de problème avec un GNSS standard … sur les low cost ou en environnent perturbé, c’est sur que la précision va être moindre donc la mesure de distance parcouru plutot perturbé facilement. La carte TTGO était un example parce qu’elle a tout de dispo, mais il existe plein d’autre carte basé sur l’ESP qui fonctionnera aussi. La BALIZ est sympa aussi, Airbot System va sort une carte bien intégré aussi dans le même tarif.

@dev01fred, J’ai repris les valeurs qu’il y a dans ArduPilot, en aucun cas fixer plein de satellites ou avoir un hdop bas ne sont gage de bon positionnement … surtout avec des puces moyen de gamme comme les Ubox (je parle même pas des bn-xXx et autres puces acheté sur aliexpress). Cependant, je pense qu’il vaut mieux être un peu conservatif sur les valeurs GNSS que trop laxiste. Avoir 6 satellites est simple en Europe et permet normalement d’atteindre le 3D fix. Quand au hdop c’est pareil, atteindre 2 devrait etre simple en Europe. D’autant plus avec le support de Galileo … Je vous prépare un autre post de blog à ce propos !

3 Likes

moi je ne fais que du cosmétique, la partie la plus importante je n’aurais pas les compétences!!!
pour le git on verra :slight_smile:

du coup j’ai un peu modifié le code de la balise pour faire en sorte que le nom de l’AP contienne l’adresse MAC
ça donne par exemple ça:

BALISE_DGAC-84_CC_A8_88_86_77
le préfixe est paramétrable, max 14 caractères, dans mon exemple c’est “BALISE_DGAC-”

le fichier zip qui contient le source est à jour…

1 Like

Félicitation pour ton boulot, ça semble top, j’ai l’intention de modifié ton code pour intégrer le déclenchement de ma cam xiaomi yi par wifi un peu à la manière dont damien Donche l’a fait pour sa gopro (message 370 de ce fil je crois).

Le truc c’est que je n’ai déjà pas le moyen de compiler avec succès ton code de base, j’ai installer manuellement les librairies et le compilateur dit qu’il manque une accolade à la fin du .ino, j’ai vérifier et c’est faux, la fonction loop est bien fermée.
J’ai déjà eu le même problème dans un autre projet et ma main au feu qu’il s’agit d’un problème de librairies (bon on va dire un doigt).

Serais-ce déplacé de te demander de nous jeter ton dossier de librairies en téléchargement histoire de régler le problème?

je veux bien mais de quel dossier parles-tu? dans le dossier arduinon j’ai lib et libraries…

Super, dossier “libraries”, tu dois retrouver dedans des dossiers comportant le nom de chaque librairie que tu à installé et à l’intérieur de chaque dossier se trouve le fichier .h correspondant.
Merci.

juste pour ma culture perso: il me semblait que le programme n’utilisait que les librairies incluses dans le projet… ainsi que celles fournies avec la carte sélectionnée, j’ai pas bon, il y a d’autres choses cachées?
ça aurait été bien de savoir si ce souci était général ou juste toi, car si général, ça signifie que j’utilise quelque chose de non standard et c’est pas bon du coup…

de ton côté tu es sûr d’essayer de compiler mon code avec une des deux cartes esp01 ou esp32? sans rien d’autre ajouté ensuite?

je vais mettre à dispo en attendant:
https://www.tranquille-informatique.fr/perso/aeromodelisme/balise-dgac/libraries.zip

@Xav_YeYe
Alors là, je ne sais pas te répondre.
Ce que je peux te dire c’est que j’ai du intaller manuellement (pas trouvés dans les listes malgré l’ajout des url json correspondantes) esp_wifi.h et WebServer.h

Je compile sans carte, pour vérifier la validité du .ino mais je l’ai paramétré pour esp32 vu que j’utiliserais un D1 mini voir un D1 classique pour les essais.
La sélection carte est valide puisque j’ai déjà utilisé ces paramètres pour un autre .ino sur cette même carte.

Actuellement je me demande même si ça ne serais pas plus clean niveau hardware (et poids!) en jetant le BN220 aux oubliettes et en récupérant la position GPS via mavlink pour la balise.

Voir même puisqu’on y est (a mavlink) mettre à jour un programme de télémétrie ou on incorpore la balise DGAC (second AP/SSID dans le programme), ainsi ou aurait une télémétrie rapide (pas comme la radio) pour télécharger des dataflashlog + la balise…
Mais là ça commence à être hors de portée de mes modestes compétences je crois…

Voici une version de balise avec affichage d’une carte utilisant Open Street Map ,un projet ayant le but de créer une carte libre du monde et Leaflet, une bibliothèque Javascript open-source.


Elle tourne sur un esp8266 WEMOS D1 mini relié à un GPS BN220 -> carte Wemos D1 R1 et Flash size “4M (FS:none OTA:~1019KB)”

Il suffit de se connecter avec un smartphone, sans mot de passe, sur le réseau qui apparait = concatenation du SSID et de la MAC adresse (merci à @Xav_YeYe).

La case -SAT correspond à l’un des statuts du GPS, on peut avoir WAIT SAT, -ou+SAT selon que l’on perd ou gagne 1 satellite, NO SAT en cas de perte totale. La carte se déplace sur le point de départ qui est en bas à gauche quand on a suffisamment de satellites >5 et un HDOP <2. À ce moment on affiche la position du départ DLNG et DLAT et le statut ATTENTE passe en DEPART, là on peut décoller, la balise émet. S’affiche également l’heure universelle, le nombre de trames émises, le temps écoulé et la vitesse max.

https://github.com/dev-fred/GPS_Tracker_ESP8266