Enregistreur de signal avec RTL_POWER

Objectif de la réalisation

Le Groupe Mammalogique Normand (consacré à l’étude et à la protection des mammifères sauvages de Normandie) relaie un programme d’étude porté par leurs collègues allemands sur la migration de deux espèces de chauves-souris (la Pipistrelle de Nathusius et la Noctule de Leisler). Les chiroptérologues allemands recherchent ainsi l’aide des radioamateurs pour suivre les individus équipés d’émetteurs radio. 10 chauves-souris sont équipées d’émetteurs radio (entre 150 et 150,2 MHz) : 7 Pipistrelles de Nathusius et 3 Noctules de Leisler en 3 trois lieux d’Allemagne.

Étant Radioamateur, le sujet ne pouvait pas mieux tomber et pour les essais, j’ai mis en œuvre un enregistreur de radio-balises pour permettre la réception d’une plage de fréquences comprises entre 150 000 Khz et 150 200 Khz en modulation USB.

Principe de fonctionnement

Le signal est acquis par un récepteur SDR, le niveau est analysé pour être enregistré sous forme d’échantillons dans un fichier texte. Le spectre est enfin dessiné pixel par pixel depuis le relevé des échantillons ou chaque niveau de signal est représenté par une couleur.

1/ Le signal RF est scanné sur une plage de fréquence par la clé USB SDR

La commande est la suivante :

rtl_power -f 150000K:150200K:200 -e 10H SSB_STEP200Hz_$(date +%Y-%m-%d+%H-%M).csv

Avec :

  • -f 150000K:150200K : Scan de 150 MHz à 150,2 MHz
  • :200 : Pas de 200 Hz entre chaque échantillons
  • -e 10H : La durée d’acquisition est fixée à 10Heures
  • SSB_STEP200Hz_$(date +%Y-%m-%d+%H-%M).csv : Fichier CSV avec date et heure courante.

2/ Les niveaux pour chaque échantillons sont enregistrés (valeurs en dbm) par fréquence et horodatés dans un fichier CSV.

tableau_csv_rtl_power

Exemple de fichier CSV produit après un relevé.

3/ Le CSV est traduit en cartographie du spectre (image)

Pour chaque échantillon du niveau de signal, un pixel est généré avec pour couleur, la valeur correspondante au niveau mesuré.

La commande est la suivante :

python heatmap.py –palette twente SSB_STEP200Hz_2016-09-08+21-00.csv Spectre_2016-09-08+21-00.jpg

Avec :

  • python heatmap.py : Lancement du script écrit en langage python
  • –palette twente : on définit une palette de couleurs
  • SSB_STEP200Hz_2016-09-08+21-00.csv Spectre_2016-09-08+21-00.jpg : fichier CSV à traiter, Image en sortie

 

Premiers résultats

spectre_releve_exemple_rtl_power

Sources logicielles et matériels

Le système d’enregistrement est réalisé à partir de composants matériels largement répandus dans les domaines de l’électronique et de l’informatique.

La partie logicielle repose sur l’acquisition des niveaux du signal RF sur la plage de fréquences définie et sur son exploitation de façon à produire une image représentant les niveaux par couleur.

Matériel :

Le module d’horloge DS1307 n’est pas nécessaire au fonctionnement de la capture / restitution. J’ai souhaité automatiser le lancement et l’arrêt de la capture des signaux via la crontab en plus de pouvoir horodater les fichiers et les échantillons. Le Raspberry ne conservant pas l’heure courante après un arrêt (juste la dernière heure connue) et souhaitant disposer d’une système autonome pouvant fonctionner sans référence de temps Internet, une horloge externe est une solution peu onéreuse et facile à mettre en œuvre.

A noter qu’un excellent article a été publié dans Hackable magazine si vous souhaitez en savoir un peu plus.

RasPI_RTL_POWER

Partie RF / Acquisition du signal :

Tuner RTL2832U / R820T2 : http://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/

Cle_RTL_SDR__RTL_POWER

Antenne directive 4 éléments Yagui montée en polarisation verticale (à 9m du sol)

Yagui_RTL_POWER

Scan d’une plage de fréquences et enregistrement des niveaux du signal reçus dans un fichier CSV : http://kmkeen.com/rtl-power/ et http://www.rtl-sdr.com/tag/rtl_power/

Partie Analyse et rendu du signal :

Script Python servant à dessiner une image pixel par pixel : https://github.com/keenerd/rtl-sdr-misc.git

Tags: ,

Comments are closed.