Open Source French Drone Identification

J’ai essayé de lancer l’appli de la gendarmerie sur un raspberry pi 3 avec clé USB wifi et mode moniteur, mais j’ai une erreur.

root@astropi1:/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master# sudo python3.8 main.py
Lancement du script.
Lancement du mode monitor.
Mode monitor de l’interface wlan1mon
Process sniffer:
Traceback (most recent call last):
File “/usr/local/lib/python3.8/multiprocessing/process.py”, line 313, in _bootstrap
self.run()
File “/usr/local/lib/python3.8/multiprocessing/process.py”, line 108, in run
self._target(*self._args, **self._kwargs)
File “/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master/lib/sniff.py”, line 59, in sniffer
scapy.sniff(iface=interface_wifi,
File “/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master/lib/scapy/sendrecv.py”, line 835, in sniff
sniff_sockets[L2socket(type=ETH_P_ALL, iface=iface,
File “/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master/lib/scapy/arch/linux.py”, line 456, in init
set_promisc(self.ins, self.iface)
File “/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master/lib/scapy/arch/linux.py”, line 145, in set_promisc
mreq = struct.pack(“IHH8s”, get_if_index(iff), PACKET_MR_PROMISC, 0, b"")
File “/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master/lib/scapy/arch/linux.py”, line 360, in get_if_index
return int(struct.unpack(“I”, get_if(iff, SIOCGIFINDEX)[16:20])[0])
File “/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master/lib/scapy/arch/common.py”, line 50, in get_if
ifreq = ioctl(sck, cmd, struct.pack(“16s16x”, iff.encode(“utf8”)))
OSError: [Errno 19] No such device
Exception ignored in: <function SuperSocket.del at 0x765484f0>
Traceback (most recent call last):
File “/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master/lib/scapy/supersocket.py”, line 123, in del
self.close()
File “/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master/lib/scapy/arch/linux.py”, line 481, in close
set_promisc(self.ins, self.iface, 0)
File “/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master/lib/scapy/arch/linux.py”, line 145, in set_promisc
mreq = struct.pack(“IHH8s”, get_if_index(iff), PACKET_MR_PROMISC, 0, b"")
File “/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master/lib/scapy/arch/linux.py”, line 360, in get_if_index
return int(struct.unpack(“I”, get_if(iff, SIOCGIFINDEX)[16:20])[0])
File “/home/pi/Documents/balise/gendarmerie/ReceptionInfoDrone-master/lib/scapy/arch/common.py”, line 50, in get_if
ifreq = ioctl(sck, cmd, struct.pack(“16s16x”, iff.encode(“utf8”)))
OSError: [Errno 19] No such device

Auriez vous une solution. Merci.

Julien

Essayer avec le device wlan1 ?

Salut Guillaume,

Si cela se programme sans problème. Il faut installer les bonnes libraries pour le programmer, mais aucun problème sous Arduino. Heureusement d’ailleurs, je ne connais pas du tout Plaformio, et j’ai pas compris le fonctionnement. C’est vrai que l’anglais, ce n’est quand même pas la langue avec laquelle je suis le plus à l’aise

Pour les librairies :

Button2 : GitHub - lewisxhe/Button2: Arduino Library to simplify working with buttons. It allows you to use callback functions to track single, double, triple and long clicks. It also takes care of debouncing.
AXP202X_Library : GitHub - lewisxhe/AXP202X_Library: Arduino & ESP-IDF libraries written for AXP19x, 20x
TinyGPSPlus : GitHub - mikalhart/TinyGPSPlus: A new, customizable Arduino NMEA parsing library
ESP8266_SSD1306 : GitHub - ThingPulse/esp8266-oled-ssd1306: Driver for the SSD1306 and SH1106 based 128x64, 128x32, 64x48 pixel OLED display running on ESP8266/ESP32
LoRa : https://github.com/dragino/Lora

Normalement avec tout ça, tu dois pouvoir programmer ta carte TTGO T-beam

merci pour vos réponses…
Pour les libs j’ai un problème avec LORA :
Le dossier spécifié ne contiens pas de bibliothèque valide

par contre j’ai vu qu’en fait sur ce site il semble y avoir plusieurs versions pour LORA : faut-il pointer sur l’une d’elle?

Oui, exact, maintenant que tu me le dis, c’est vrai qu’Arduino ne trouvait pas les librairies valides.

J’ai contourné le problème directement avec Arduino

Dans l’onglet “Croquis”, tu choisis “Inclure une bibliothèque”, puis “Gérer les bibliothèques”
Ça ouvre une fenêtre “Gestionnaire de bibliothèques”. Je le laisse faire ses mise à jour et en haut dans la fenêtre blanche (en haut vers le centre droit), je tapes “Lora”. Il me propose un choix avec Lora Node. Tu choisis la version 1.0.1, et tu cliques sur installer. Tu devrais ne plus avoir de problème, et ce sont les bibliothèques “officiels” Arduino.

Toujours impossible de téléverser le programme dans l’ESP01 :cry:

Est-ce que j’aurai des paramètres que j’aurai mal régler ?

Merci de votre aide

Perso, je n’ai pas réussi à passer la carte wifi de la rpi3+ en mode monitoring. J’ai l’impression que c’est le cas des dongle USB également.
Je me suis monté un PC Linux avec une carte wifi sur bus PCI (debian 10) et wireshark décode bien les trames de balises wifi. Wireshark lancé en root.
A voir…

L’esp01 est branché dans le bon sens ?
Le bouton est en position “Prog” avant de brancher sur le port USB ?

Oui, visiblement, c’est bien ce que j’ai fait, enfin, je pense

Par contre, je pense que c’est peut être là que j’ai le problème ?

Non, tout semble bon.
A tout hasard essaye avec Upload speed à 57600 et vérifie que la pin GPIO0 est bien mise à la masse avec l’inter en position “Prog”

J’ai essayé à 57600, et vérifié la mise à la masse du GPO0. Il est bien a la masse lorsque le curseur est sur “Prog”. Lorsque qu’il est sur UART, le GPO0 n’est plus à la masse.

Je me suis basé sur ce diagramme pour vérifier :
Connections ESP01

J’ai aussi trouvé des connections entre un Arduino Uno et un ESP01 pour visiblement le programmer, je pense. J’ai bien compris que pour flasher un ESP01, il faut impérativement mettre le GPO0 à la masse. J’ai trouvé deux schémas légèrement différents. Je ne sais pas lequel est le mieux ?

Sinon, mon message d’erreur me fait vraiment pense que Arduino ne trouve pas, ou ne sait pas contrôler l’adaptateur UART CH 340. J’ai pourtant bien installé les drivers puisque le gestionnaire de périphériques de Windows le trouve bien en port COM 13 :thinking:

Aucun, dans les deux cas c’est pour dialoguer avec l’ESP avec une adaptation du 5V > 3.3V sur le Rx , pas pour le programmer.

Il y a marqué quoi sur le chip de ton programmeur ? CH340 et ensuite quelle lettre ?

c’est un USB to ESP-01 adapter et le chipset est un WCH CH340C
( https://fr.aliexpress.com/item/32971337222.html?spm=a2g0s.9042311.0.0.27426c37HlGkTt )

Je viens d’en trouver un autre chez un distributeur, mais le chipset est un WCH CH 340G :
https://www.diymore.cc/collections/esp8266/products/3-3v-usb-to-esp8266-esp-01-wi-fi-adapter-module-with-ch340g-usb-to-ttl-driver-serial-wireless-wifi-module-for-arduino

Ça joue ou pas sur le fonctionnement ?

Merci. Nickel, ca marche. Il faut bien mettre wlan1 et pas wlan1mon.
J’utilise une carte ESP32 avec un module GNSS GPS grove pour la balise.
J’ai vérifié avec le code:
int r = esp_wifi_get_max_tx_power(&P1);
Serial.print(“Power Get Return %d Value %d”);
Serial.println®;
Serial.print(“power Value %d”);
Serial.println(P1);

On lit bien 78 pour P1, ce qui correspond bien à une émission de 20dBm quand même qui correspond bien à la puissance max autorisée en France en émission de 100mW. Donc la puissance est au max par défaut.
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_wifi.html

Est-ce que quelqu’un à déjà fait des essais de portée optique avec un ESP32 en balise et carte raspberrypi avec clé USB par exemple.

Julien.

1 Like

C’était juste pour vérifier…
Le CH340C a un oscillateur intégré (d’où le quartz X1 qui n’est pas soudé)

Si tu as un usb serial qui traine tu peux essayer en faisant le cablâge avec les connecteurs de servo.
GPIO0 à la masse et liaison Tx/Rx (en 3.3v)

bon finalement j’ai laissé tomber l’arduino ide et avec platformio j’ai buildé et chargé le code dans le board… il me crée bien un réseau wifi ILLEGAL_DRONE_AP et je voulais le tester avec le code de la gendarmerie…
Là j’ai un problème à l’exécution :
Traceback (most recent call last):
File “main.py”, line 20, in
from lib.sh.sh import airmon_ng, service
ImportError: cannot import name ‘airmon_ng’ from ‘lib.sh.sh’ (/data/windows/lib/sh/sh.py)

???
j’ai essayé de chercher avec pip3 mais il ne connais pas airmon_ng

J’en ai un que j’ai utilisé l’autre jour pour flasher un GPS BN 220, mais il est en 5 V. Il y a bien une sortie 3,3 V sur la carte, mais par sécurité, j’ai préféré en commander un commutable 3,3 / 5 V ( https://fr.shopping.rakuten.com/offer/buy/4214407874/usb-a-ttl-ft232rl-ftdi-serue-adaptateur-convertisseur-module-pour-arduino-3-3v-5v-magideal.html ).

Comme j’ai commandé des connecteurs 8 broches pour CI, avec les AMS 1117 et des résistances CMS pour faire mes CI permettant de pluger l’ESP-01 de mes modules de signalement récupérant le signal GPS de mes Naza ou BN 220 (en utilisant ses schémas : Open Source French Drone Identification ) , je vais faire une petite platine de programmation directement relié au FTDI. Comme ça, pas d’erreur possible (hormis le pluger dans le mauvais sens) puisque ce sera exclusivement dédié à la programmation des ESP-01. Pour 3,77 €, c’est pas la mer à boire et un jour, un manque d’attention, et hop, on se trompe et on crame tout. Donc, un module de programmation dédié sera plus sécurisant. Plus qu’a attendre tout ça et me remettre au travail. De toute façon, pour l’instant comme tout a est enregistré sur AlphaTango avant le 29/06, j’ai jusqu’à la fin de l’année avant d’avoir l’obligation d’avoir des modules électroniques

Merci pour ton aide :+1:

Si on choisit un module LILYGO® TTGO T-Beam Module Bluetooth sans fil WiFi 433/470/868 / 915MHz ESP32 GPS NEO-M8N SMA Support LORA 32 avec support 18650 Batterie
Il est autonome et se programme directement via une micro usb. on peut aussi pour 3/4€ de plus avoir un écran oled pour débugger… ou tracker une autre balise :slight_smile:
RAPPEL : il suffit d’un module par groupe. le même module peut servir pour tous vos multis… j’en ai pris 2 car j’ai aussi des avions et ce n’est pas le même groupe…

Oui, tout à fait, une fois toutes les bonnes librairies intégrées à Arduino, ça se programme facilement, mais c’est gros et lourd avec sa batterie LiFe 18650. Sur le mien, j’ai d’ailleurs viré le support, et il faut compter 25 € le module. Il y a une antenne qui fait ch…r en plus. Sur un modèle ne possédant pas de GPS, c’est une bonne alternative.
Depuis les développements faits sur ESP-01, j’avoue que je suis plus tenté par une solution plus petite, plus légère, bien moins chère si on a une machine avec GPS. Mais de toute façon, il en faut pour tout les goûts, et c’est ce qui est bien sur ce post, on trouve plusieurs alternatives en fonction de ses besoins et envies :wink:

C’est un peu plus compliqué que ça en fait :thinking:

J’ai passé un peu de temps a étudier l’autre jour les textes pour éviter les erreurs, qui peuvent coûter 135 € et la saisie du matériel. Il faut donc un module par groupe que l’on possède et fait voler, bien sur.
Pour rappel :

  • Groupe 1 : aérostat captif / aéromodèle de vol circulaire / aéromodèle de vol libre / montgolfière
  • Groupe 2 : planeur, aile (non motorisé) / dirigeable / parachute, parapente / aéronef à ailes battantes
  • Groupe 3 : hélicoptère / multirotors / convertible / combiné / paramoteur / autogire
  • Groupe 4 : avion, aile, planeur (motorisé)

, mais aussi dans une même catégorie de poids (800 gr à 2 kg / 2 kg à 4 kg / 4 kg à 25 kg / 25 kg à 150 kg / plus de 150 kg) et appartenant au même propriétaire enregistré sur Alpha Tango (AT).

En clair, si on un multirotor ou hélico de 1999 gr et un autre de 2001 gr, il faut deux modules avec des codes différents. Si on a en plus, un avion de 2689 gr, il faut un troisième module, et un quatrième si on a un planeur de 3672 gr. Par contre, si on aussi un motoplaneur de 2578 gr, on pourra utiliser le même module que pour l’avion (même groupe et catégorie de masse), pour autant que l’appareil soit enregistré au nom de la même personne sur AT.
Si c’est un appareil “partagé” par exemple, si c’est A qui est déclaré propriétaire sur AT et qu’il a un autre appareil de même groupe et de même catégorie de poids, il pourra utilisé son module. Si c’est B qui en est le propriétaire et qu’il n’a pas d’appareil de même catégorie et de même poids enregistré sur AT, il lui faut un module pour cet appareil.
Il y a aussi possibilité de n’avoir qu’un seul module que l’on reprogramme en fonction du modèle que l’on utilise. Solution économique, mais contraignante.

Perso, si j’arrive a programmer l’ESP01 (il n’y a pas de raison quand j’aurai le bon programmeur !), il va y avoir un ESP01 à demeure intégré dans chaque machine équipé d’un GPS (récupération des données via MSP, ou TX du GPS Naza) et pour celles qui n’ont pas de GPS, je vais rajouter un GPS BN-220 connecté à l’ESP01. Ce sera léger et pas cher. Je connecte sur une voie libre du récepteur ou du Naza pour récupérer le 5 V (au pire, je rajoute un petit régulateur si je veux passer en direct) et comme cela, je suis sur de ne pas l’oublier ou me tracasser la tête avec la charge du 18650.

En effet :slight_smile: ,il y a également une solution intermédiaire basé sur un “ESP8266 D1 mini” à peine + gros qu’un BN180 qui dispose d’une alimentation en 5V et d’un connecteur micro USB de programmation :


Pour lequel j’ai ajouté un buzzer :

  • Tick = phase de recherche de satellites
    
  • Beep = un satellite de +
    
  • Beep Beep Beep = enregistrement des coordonnées de départ
    

image

2 Likes