Publié le 1 février 2016 - par

Réalisez un analyseur de spectre avec le Raspberry Pi 2

freqshow_250pxMême si je suis pas très actif côté émission (c’est un peu la faute au Raspberry Pi ), je reste radioamateur et passionné par les techniques de plus en plus numériques qui apparaissent dans ce domaine.
Je vous ai déjà parlé du SDR (Software Defined Radio) pour suivre les avions ou écouter la radio avec votre RasPi… Le projet que décrit cet article vous permettra de visualiser une fréquence et ses environs. Il s’agit d’un analyseur de spectre à base de Raspberry Pi. Adafruit appelle ce projet un scanner

[stextbox id=’warning’ caption=’Attention’]Ce tutoriel ne fonctionne qu’avec un Raspberry Pi 2. Pour le Pi3 voir en fin d’article ![/stextbox]

Ne vous lancez pas dans cette réalisation si vous êtes débutant. Ce tutoriel ne détaille pas toutes les opérations et il vaut mieux avoir un peu d’expérience avec Debian…

Un analyseur de spectre avec un Raspberry Pi

C’est quoi un analyseur de spectre ?

Un analyseur de spectre est un instrument de mesure destiné à afficher les différentes fréquences contenues dans un signal ainsi que leurs amplitudes respectives. Les signaux peuvent être de natures diverses : électrique, optique, sonore, radioélectrique. (wikipedia)

https://commons.wikimedia.org/wiki/File:SpectrumAnalyzerDisplay.png

Source Wikipedia

Les analyseurs de spectre sont des appareils autonomes coûtant de quelques centaines à quelques milliers (glups !) d’euros. C’est pourtant un appareil très utile (sinon indispensable) quand on travaille dans le domaine des radiocommunications.
Le premier modèle proposé par Adafruit avait été réalisé sur une base de Raspberry Pi model B, il était tentant de profiter de la disponibilité du Raspberry Pi 2 avec ses 4 cœurs  pour améliorer (peut-être) cette réalisation.

La problématique

  • L’analyseur de spectre (scanner) a été initialement réalisé sur un RasPi model B sous Wheezy.
  • Les réponses sur le forum Adafruit renvoient généralement les questionneurs dans leurs buts quand l’écran utilisé n’est pas celui pour lequel le « scanner » a été développé.
  • Ça tombe bien (comme disait le père La Chaise) l’écran adapté au Pi2 est le modèle Adafruit 2441 (3,5 pouces PiTFT Plus) alors que le scanner a été réalisé avec le modèle 2097 (3,5 pouces PiTFT…). Donc s’il y a des problèmes… dém… toi 🙁
  • Même si on n’est pas en présence d’un « vrai » appareil de mesure, les clés USB DVB-T que j’ai utilisées jusqu’alors présentent un certain nombre de défauts (on va pas chipoter pour un récepteur à 15€…)

Les choix

Après moult réflexion, lecture de docs (RTFM) et d’articles parus sur des blogs, étude des caractéristiques… il fallait se décider ! Voici donc les choix que j’ai arrêtés pour ce projet :

  • Utiliser un Raspberry Pi 2 sous Jessie
  • Utiliser un écran Adafruit PiTFT Plus 3,5 pouces (ref. 2441)
  • Utiliser une clé DVB-T RTL-DSR de dernière génération (et un peu plus cher 🙂 )
  • Lancer l’analyseur automatiquement au démarrage du RasPi
  • Rendre l’appareil autonome (par la suite)

Réalisation de l’analyseur logique / scanner

Choix et installation du système

Il y a deux possibilités :

Vous ferez bien comme vous voulez… Pour ma part la solution consistant à utiliser une distribution toute faite me convient particulièrement bien 🙂 et c’est celle que je vous propose.

Téléchargez la version de Jessie préparée pour gérer l’écran PiTFT 3.5″. Téléchargez les 1,5 Go de cette version et rangez le fichier 2015-09-24-raspbian-jessie-pitft35r.zip dans un dossier de votre PC. Extrayez l’image contenue dans l’archive .zip : 2015-09-24-raspbian-jessie-pitft35r.img (4,2 Go).

Si vous êtes sous Windows, insérez votre carte micro SD dans le lecteur de carte. Repérez soigneusement la lettre identifiant votre carte, toute erreur effacera irrémédiablement les données à l’endroit où vous transférerez l’image !!! freqshow_win32diskimager

Lancez Win32DiskImager (en tant qu’admin), choisissez la lettre de la carte micro SD de destination (voir ci-dessus) et démarrez l’écriture de l’image sur la carte…

freqshow_win32diskimager2A la fin de l’opération vous avez entre les mains une carte prête à être utilisée avec le Raspberry Pi 2 et l’écran PiTFT 3,5″.

Avant de mettre la carte en service et d’appliquer la tension d’alimentation, regardons les composants que nous allons utiliser.

Le Raspberry Pi 2

freqshow_raspberrypi2_600pxBon, ici pas de surprise. c’est un Raspberry Pi 2 classique. Ne faites pas attention aux pattes tordues sur le GPIO (ah, zut, vous n’aviez pas remarqué ?) c’est arrivé en enlevant l’écran à la main, c’est parti d’un coup et d’un côté… La prochaine fois ce sera tournevis plat et démontage précautionneux 😉
Remarquez l’adhésif sur le dessus des prises. L’écran n’a pas de contacts dans cette zone, sauf… 1 et c’est par précaution que j’ai appliqué cette protection. Pour le reste c’est un Raspberry Pi 2 tout ce qu’il y a de plus banal (processeur 4 cœurs 900MHz ARM Cortex-A7 CPU, 1 Go de RAM, 4 ports USB, un port Ethernet, sortie HDMI et audio/vidéo analogique…)

L’écran PiTFT Plus 3,5″

freqshow_ecran_3p5_dessus_600pxLivré tout monté et prêt à l’emploi, l’écran PiTFT Plus 3,5″ Adafruit est destiné aux modèles A+, B+ et Pi2 du fait de la présence d’un connecteur 40 points. Ce modèle 2441 utilise les même ports que son prédécesseur à 26 points (modèle 2097) : Le bus SPI (SCLK, MISO, MOSI) ainsi que les ports GPIO 25 et 24. C’est ce qui m’a fait espérer une compatibilité entre les deux modèles.

freqshow_raspberrypi2_ecran_600pxL’écran s’adapte parfaitement sur le Raspberry Pi 2. Il dispose de 4 « oreilles » qui permettront de le fixer (sur une façade d’appareil par exemple). Le Raspberry Pi est fermement maintenu uniquement par le connecteur 40 points.

freqshow_raspberrypi2_ecran2_600pxCet écran tactile de 3,5 pouces (ça fait presque 9 cm de diagonale) offre une résolution de  480×320 pixels avec une profondeur de couleur de 16 bits (65536 couleurs). Le dessus de l’écran comporte une couche résistive qui le rend sensible à la pression du doigt. On peut l’utiliser comme consolefenêtre graphique, affichage d’images ou de vidéo, etc. Sa qualité est suffisante pour assurer un usage normal.

freqshow_ecran_3p5_dessous_600pxUn connecteur (à droite sur la photo ci-dessus) donne accès aux ports du GPIO si c’est nécessaire. Les informations techniques (implantation et schéma) sont disponibles en ligne.
Avec le backplane à fond (éclairage à l’arrière de l’écran) la consommation est de 100 mA environ.

Récepteur RTL-SDR.com

Par rapport aux modèles existant sur le marché, ce nouveau modèle est amélioré ce qui explique un prix de vente (un peu) supérieur aux modèles qu’on trouve sur les sites d’enchère en ligne : 19.95$ pour le récepteur seul ou 24.95$ avec 2 antennes télescopiques. La plus petite va de 6 cm à 20 cm, et la plus grande va de 20 cm à 1,5 m. L’embase de l’antenne est également plus grande avec un diamètre de 4,5 cm, à comparer aux embases miniatures livrées avec la plupart des modèles. Cela permet une meilleure stabilité lors de l’utilisation de l’antenne la plus grande.

rtl-sdr_05

Ces deux antennes peuvent s’accorder sur presque toute la gamme de réception de la clé. Pour un bon fonctionnement, l’antenne sera placée à l’extérieur et aussi haut que possible pour obtenir le meilleur rendement. freqshow_Rx6_600pxColler l’embase magnétique sur une surface métallique peut également aider à améliorer le fonctionnement de l’antenne en lui fournissant un plan de masse. Lorsqu’elle est entièrement rentrée, la petite antenne fonctionne à 1090 MHz pour la réception des fréquences ADS-B.

rtl-sdr_01

Le récepteur a reçu les améliorations suivantes :

  • Oscillateur compensé en température précision 1 ppm (TCXO) – La fréquence est précise et la dérive en fonction de la température pratiquement nulle (2 ppm de décalage initial, 1 ppm de dérive en température). L’oscillateur à quartz 28,8 MHz utilisée dans la plupart des clés DVB-T est peu précis. Cela signifie que lorsque vous voulez recevoir une fréquence connue, elle sera probablement décalée de quelques kHz. rtl-sdr_03Habituellement, la compensation prévue sur les clés DBV-T est de l’ordre de 30 à 150 ppm. En outre, lorsque les composants se réchauffent, la fréquence va encore dériver jusqu’à 20 ppm ou plus, jusqu’à ce que la température se stabilise. Le TCXO est un oscillateur à compensation thermique qui offre un réglage précis avec un décalage initial de 2 ppm maxi et une dérive de température de 1 ppm au fil du temps. Cela signifie qu’un signal connu apparaîtra là où il doit être sur le spectre de fréquences et ne dérivera pas en fréquence de manière significative lorsque la clé se réchauffera.
  • Prise d’antenne SMA femelle – La plupart des clés DVB-T utilisent un connecteur MCX ou PAL moins répandus. freqshow_Rx5_600pxLe connecteur SMA utilisé ici est beaucoup plus commun et de nombreuses antennes ou adaptateurs sont disponibles dans ce format. freqshow_Rx4_600pxIl a également une longévité plus grande et a des pertes d’insertion inférieures.
  • Tuner R820T2 – Plus sensible / bruit plus faible que le tuner R820T plus. 100% compatible avec les logiciels écrits pour le R820T. rtl-sdr_04Cette version améliore le fonctionnement aussi bien en HF qu’aux environs de 1,5 GHz.
  • Amélioration des tolérances de tous les composants – Permet au dongle RTL-SDR de travailler beaucoup mieux sur toutes les fréquences.
  • Expérimental : Alimentation USB 4.5V pour préampli – Peut être activée en reliant deux pastilles du circuit par une soudure. bias_tee_instructions_600pxCela permet au RTL-SDR d’alimenter un LNA (amplificateur à faible bruit)comme le LNA4ALL et HABAMP, ou des antennes actives via le câble coaxial.
  • Expérimental : Possibilité d’utiliser l’échantillonnage directbreakoutpads_instructions_600pxDeux pastilles à souder donnent accès aux broches 4 et 5 du circuit intégré RTL2832U pour permettre l’échantillonnage direct. L’accès direct à l’échantillonnage est une modification matérielle qui vous permet de syntoniser des fréquences HF avec un dongle RTL-SDR.

rtl-sdr_02

  • Boîtier en aluminium et refroidissement passif – les modèles les plus récents sont montés dans un boîtier en aluminium. pad_thermiqueIls bénéficient d’un refroidissement passif via un pad thermique…

freqshow_Rx_600px freqshow_Rx2_600px freqshow_Rx3_600px

Premier test

Comme toujours le test de chaque étape est important. Trop souvent on voit des messages (sur les blogs ou les forums) du style : « Ouais, tuto de m… je l’ai suivi et ça marche pas ! » Sauf qu’aucune des étapes intermédiaires n’a été testée… Alors si à la fin du tutoriel il y a un souci, c’est très difficile de déterminer d’où vient le problème.

Alors ici on va procéder calmement, par étape. D’abord mettez l’écran PiTFT en place sur le Raspberry Pi 2. La clé RTL-SDR peut encore attendre un peu… laissez la de côté pour le moment. Reliez le Raspberry Pi au réseau Ethernet, Insérez la carte microSD que vous avez préparée précédemment avec Win32DiskImager. L’heure est venue du premier test. Branchez l’alimentation micro USB sur le Raspberry Pi 2. L’écran doit s’illuminer (le backlight s’allume) puis le texte habituel défile.

freqshow_demarrage1_600pxEnsuite l’écran PiTFT s’éteint et après une attente (qui parait bien longue), l’écran affiche le bureau de Raspbian :

freqshow_demarrage2_600pxLa première étape est franchie… testez le fonctionnement du menu. La liste des items est plus longue que l’écran. Une petite flèche en bas du menu permet de faire défiler le menu (j’ai du appuyer avec l’ongle pour la faire fonctionner…). Si vous avez du mal vous pouvez brancher une souris, elle fonctionne.

Le Raspian  Wheezy installé est en anglais. Il va falloir le passer en français si vous voulez l’utiliser avec un clavier. Ici comme on a une utilisation dédiée, je l’ai laissé en anglais. Je me suis connecté en SSH avec Putty pour intervenir sur le système et finalement je suis passé par le bon vieux raspi-config pour passer en français 😉

Voyons déjà quelle place il reste sur la partition créée par l’image d’Adafruit :

500 Mo restant. Un peu juste mais pour le moment je ne touche à rien…

Blacklister les modules d’origine

Lorsqu’il détecte une clé TNT (DVB-T) Raspbian charge un module destiné à géré le matériel. Comme nous voulons gérer la clé DVB-T à notre façon, il faut empêcher le noyau de charger le(s) module(s) correspondant(s).

Ouvrez le fichier /etc/modprobe.d/raspi-blacklist.conf avec nano

et ajoutez lui les lignes suivantes :

Ceci garantit que le dongle DVB-T sera bien géré par la bibliothèque qui nous intéresse.

Installer les dépendances

Avant d’installer le logiciel il va falloir installer quelques dépendances (bin oui quoi, on est sous Linux : ) ). Pour cette installation le Raspberry Pi doit impérativement pouvoir accéder à Internet.
Connectez-vous au Raspberry Pi et exécutez les commandes suivantes pour installer les dépendances :

Ne vous inquiétez pas si vous obtenez des messages indiquant que la dernière version est déjà installé et continuez. (Si ce sont d’autres messages trouvez ce qui cloche !)

Maintenant il va falloir télécharger, compiler et installer la librairie RTL-DSR d’osmocom :

Lorsque la librairie est en place, on peut installer le wraper Python qui va  permettre de faire la liaison entre la librairie et les applications en Python.

Tout est (presque) en place pour l’utilisation du programme freqshow.py.

Redémarrez le Raspberry Pi pour mettre tout ça proprement en place.

Test du dongle RTL-SDR

Allez le moment que vous attendiez est enfin arrivé ! Vous pouvez connecter la clé RTL-SDR sur un port USB, et l’antenne sur la prise SMA…

freqshow_raspberrypi2_ecran_Rx_600pxVérifions déjà que la clé USB est bien reconnue :

Oui, le Device 006 est un RTL2838 DVB-T : impeccable !

Est-ce que ça fonctionne ?

C’est rassurant la clé DVB-T est reconnue et le test fonctionne. Nous allons pouvoir installer le programme freqshow.py.

Le message PLL not locked! semble être habituel et ne pas perturber le fonctionnement des programmes … A priori cette info est affichée lorsqu’il n’y a pas d’émission sur la fréquence de réception. A vérifier.

Installation du programme analyseur de spectre / scanner

L’installation du logiciel est on ne peut plus simple, puisqu’elle consiste à télécharger le programme Pyton sur votre Raspberry Pi…

Lancez les commandes suivantes pour télécharger freqshow.py :

Respectez bien la casse (les majuscules et les minuscules) !
Et… c’est tout. Le programme est prêt à être utilisé ! On y va ?

Premier essai de l’analyseur de spectre

Vérifiez que vous travaillez bien dans le répertoire ~/FreqShow et lancez le programme :

Vous devriez voir apparaître l’écran d’accueil de freqshow :

freqshow_logo_600pxet quelques instants après l’analyseur de spectre :

freqshow_comment_600px

Photo Adafruit

Cette image d’Adafruit montre le résultat sur l’écran PiTFT. En bas figurent les fréquences couvertes par l’affichage. A gauche les niveaux mini et maxi du signal. Par défaut le réglage est automatique. J’ai souvent été amené à modifier le niveau mini manuellement pour obtenir une courbe exploitable.

Utilisation de freqshow.py

La partie haute de l’écran est occupée par un menu. QUIT ferme le programme, SWITCH MODE passe l’affichage en mode waterfall (bleu = niveau mini / rouge = niveau maxi) :

freqshow_waterfall_600px

Photo Adafruit

CONFIG donne accès au menu de configuration (comme on s’en serait douté 🙂 )

freqshow_config_600pxOn peut régler la fréquence centrale, celle d’échantillonnage, le gain et les niveaux maxi et mini de l’affichage du signal.

Lorsqu’on veut saisir une valeur numérique, l’écran passe dans un mode de saisie numérique :

freqshow_clavier_600pxPar exemple ici vous pouvez modifier la fréquence centrale, en saisissant la valeur sur l’écran tactile. Appuyez sur la touche CLEAR pour effacer complètement la valeur actuelle de la fréquence centrale, et saisissez la nouvelle valeur en tapant sur les chiffres. Pour supprimer le dernier chiffre saisi appuyez sur DELETE.

Une fois que vous avez entré la nouvelle valeur vous pouvez appuyer sur ACCEPT pour changer la fréquence centrale. Si finalement vous ne voulez pas changer la fréquence appuyez sur CANCEL  pour fermer la boîte de dialogue sans modifier la valeur.

Essayez de changer la fréquence centrale pour celle d’une station de radio FM de votre région. Appuyez sur BACK en bas à gauche de l’écran de configuration pour revenir à l’affichage graphique de fréquence. Vérifiez sur l’écran graphique que la fréquence centrale a été modifiée.

freqshow_fullscreen_600pxDepuis l’écran graphique, si vous tapez au centre de l’écran vous passez en mode Plein Écran comme ci-dessus. Tapez à nouveau vers le centre de l’écran pour revenir à l’affichage normal.

Démarrage automatique du programme

Le mieux serait qu’à la mise sous tension du Raspberry Pi, le programme freqshow.py soit lancé automatiquement. Pour un appareil dédié ça semble logique…
Comme nous sommes sous Jessie, il va falloir créer un lanceur qui va s’intégrer à systemd.

freqshow_lancement_progCréation du script de lancement

Avec nano créez un script /home/pi/scanner.sh

Dans ce script ajoutez les lignes suivantes :

Rendez le script exécutable

Testez le script pour vérifier son fonctionnement :

Si tout va bien, vous devez voir apparaitre l’analyseur de spectre sur le Raspberry Pi. (vous pouvez interrompre le programme avec CTRL C ci vous êtes à distance avec Putty).

Création du fichier service

Il faut maintenant indiquer à systemd qu’il doit lancer le service :

Créez le fichier /lib/systemd/system/scanner.service avec nano :

Ajoutez les lignes suivantes dans le fichier :

Faites prendre en compte votre service par systemd :

Bon… Normalement on n’est pas loin du but 🙂

On se fait un test de démarrage ? Chiche !

Et là…. Miracle de la technologie moderne, vous voyez le texte défiler sur l’écran, puis le bureau de Raspbian et enfin devant vos yeux emplis de larmes, l’analyseur de spectre se met en route !

freqshow_demarrage3_600pxBon, si vous avez autant de chance que moi, la bande FM est muette autour de 90.3 MHz… Qu’à cela ne tienne, je vais changer la fréquence avec le menu Config… Euh… tiens, ça marche pas… Et Switch Mode ? pas plus que QUIT ! Damned, c’est quoi ce tuto de m…. Ils l’avaient pourtant bien dit que ça marchait juste avec le clavier 2097… Pourquoi t’a été prendre celui-là ? tsss

Trouver la panne

Ne vous en faites pas c’est comme ça très souvent… C’est ce qui apprend à être patient, à ne pas aller trop vite, à lire la doc, à faire des recherches…

Allez on commence. Pourquoi donc le clavier tactile serait-il inerte ?

Après quelques recherches d’abord en français, sans succès, puis en anglais (ça sert quand même la langue de Shakespeare) je me retrouve sur un document Adafruit (décidément !) :

adafruit_touchscreen_01

Cliquez pour accéder au PDF

Et tout à la fin du document cette phrase sybilline :

adafruit_touchscreen_02

Et là un doute m’étreint (comme on dit à la SNCF) et si freqshow utilisait pygame ? Vite je regarde le début du programme avec un cat freqshow | less :

Bingo ! Effectivement le programme utilise pygame 🙂

Donc le problème pourrait venir d’une incompatibilité d’humeur entre pygame et la librairie SDL utilisée.

Un ps pour trouver le PID de freqshow.py et me voici sur la liste des librairies utilisées :

Il y a bien du SDL là dedans. La solution est proposée dans le document d’Adafruit (merci Lady ADA) : Il faut réinstaller l’ancienne version de SDL, la 1.2. Comme elle se trouve sur le dépôt Wheezy il faut rajouter celui-ci à la sources.list. C’est ce que fait très bien le script inclus dans le pdf 🙂

Créez un fichier installsdl.sh dans /home/pi

Ajoutez y les lignes suivantes :

Rendez le script exécutable :

puis exécutez le :

Après exécution du script votre écran devient sensible à la pression de vos doigts ! C’est pas beau ?

Changer la fréquence d’origine

Le démarrage de l’analyseur logique ne me convient pas trop. La fréquence de 90.3 MHz sur laquelle l’affichage est centré n’est pas occupée par un émetteur FM.

Pour montrer le fonctionnement du RTL-DSR, j’ai choisi de régler la fréquence centrale sur… RTL soit 105.5 MHz 🙂 Mais il doit y avoir moyen de modifier ça dans le programme pour que l’analyseur se cale sur RTL à chaque démarrage, non ?

Quelques cat plus loin je trouve :

C’est donc là que ça se tient ! Modifiez la fréquence de départ en fonction de ce que vous voulez avoir au démarrage. Après avoir modifié comme suit :

freqshow_RTL_600px

Le programme se lance avec la fréquence centrale choisie. Il y a certainement moyen de modifier d’autres informations au lancement (le gain, les mini et maxi…) mais bon, vous allez peut-être chercher un peu, non ?

Et la consommation ?

Si vous envisagez de réaliser un appareil autonome, il est important d’avoir une idée de la consommation pour dimensionner la batterie qui va alimenter l’ensemble RasPi + écran + clé TNT…

Avec l’analyseur en fonctionnement on est au dessus de 700 ma ! Quand même… Il faudra peut-être prévoir de jongler avec l’éclairage de l’écran (PWM prot GPIO 18) pour abaisser la consommation.

freqshow_conso_600px

Consommation indiqué par l’analyseur USB

La vidéo

Pour le Raspberry Pi 3

Mi 2018, Robert (merci F1TZU) a souhaité réaliser cet analyseur de spectre et a rencontré quelques soucis avec le Pi3. Il a donc cherché et trouvé une solution qu’il m’a gentiment communiquée :

Bonjour François,

J’ai télécharger l’image et pu décompacter sans problème.

Le hic, cette image ne fonctionne plus sur Pi 3 B que j’utilise. Pas de boot.

Du coup sur le site Adafruit, j’ai trouvé la solution, merci Lady Ada:

Tuto de Lady Ada

1. Télécharger la version Raspbian du 14 mars 2018. (Install Raspbian on an SD Card)

2. Télécharger le script qui va permettre de configurer le Pi pour l’écran. (Installer script)

3. Suivre le tuto à la lettre, ça fonctionne. On peut même choisir le mode de fonctionnement de  l’écran.

Note: En bas de cette page, on retrouve toutes les images intégrant l’utilisation des différents écrans Adafruit jusqu’en septembre 2016.

Une fois le Pi configuré, j’ai suivi ton tuto à la lettre sauf installsdl.sh dont j’ai modifié une ligne:

echo « Package: libsdl1.2debian
Pin: release n=stretch
Pin-Priority: -10
Package: libsdl1.2debian
Pin: release n=wheezy
Pin-Priority: 900

Si l’on fait ensuite sudo apt-get update puis sudo apt-get upgrade comme moi, il faudra relancer
le script installsdl.sh pour prendre à nouveau en compte libsdl1.2

Je me suit interessé également à Gqrx et ai trouvé ceci:

Installation Gqrx

Bon la fenêtre Gqrx obtenue est un peu tronquée le spectre audio surtout mais le reste fonctionne. Là un stylet ou une souris s’impose.

Attention tout fois à équiper CPU, GPU etc de radiateurs et même un petit ventilo s’impose.
Ceinture et bretelles, comme dirait Pierre F5XG.

Sinon, au bout de quelques minutes, un petit thermomètre rouge apparait à l’écran (Overheat).

Conclusion

Pour une centaine d’euros vous avez à portée de main un analyseur de spectre. Sans être un vrai appareil de mesure, il pourra donner de précieuses indications à tous ceux qui gravitent autour des radiocommunications.

Le programme ne décode pas les signaux et ne sort donc pas le signal démodulé sur la prise HP du Raspberry Pi. Ce sera peut-être une évolution de cette application.

Le même matériel peut être utilisé avec gnu-radio. GNU Radio est une boîte à outils logicielle open-source qui fournit des blocs de traitement des signaux pour mettre en œuvre des radios logicielles (SDR). Il est largement utilisé dans les environnements amateur, universitaires et commerciaux pour mener à la fois des recherches sur les communications sans fil et sur les systèmes de radio réels. J’espère avoir l’occasion de vous le présenter dans un futur article.

Sources

How To Autorun A Python Script On Boot Using systemd

APRS Rx-only IGate with Raspberry Pi and DVB-T dongle

 

 

Share Button

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

31 réflexions au sujet de « Réalisez un analyseur de spectre avec le Raspberry Pi 2 »

    1. François MOCQ Auteur de l’article

      Bonsoir Isnogoud
      il me semble fait pour un écran Tontec qui n’a pas d’oreilles de fixation comme celui d’Adafruit…
      et l’écran Tontec ce n’est pas garanti qu’il fonctionne ici…
      bonne journée
      cordialement
      François

      Répondre
  1. Eric

    Bonjour,
    Nouveau dans le monde du raspberry, je suis tombé sur votre site super intéressant qui m’a appris beaucoup de choses.
    Petite question suite à ce tuto , est il possible de réaliser quelque chose de similaire pour aider à pointer les satellites ?

    Eric

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Eric
      à tester
      un LNB sort entre 950 et 2150 Mhz
      1- voir si la clé TNT couvre cette plage
      2- alimenter le LNB avec un système adapté
      mais sur le bas de la gamme c’est certainement possible
      cordialement
      François

      Répondre
      1. S.POURRE

        Bonjour

        J’ai un gros doute sur la faisabilité pour les stellites TV.
        Un transpondeur occupe une bande passante de plusieures dizaines de Mhz. En analogique, 1 transpondeur = 1 programme TV (plus des canaux son).
        En numérique, quasi généralisé, un transpondeur est occupé par un multiplex qui groupe plusieurs chaînes.
        Cette bande passante me semble être un obstacle sérieux au traitement numérique pour afficher le spectre ou le waterfall (typique des SDR).
        En effet, le traitement est effectué par la carte son et une valeur typique de la bande passante traitée est de 2 Mhz (il y a des cartes son de
        compétition qui dépasse cette valeur). Ceci semble d’ailleurs confirmé par les captures d’écran qui illustrent l’article.
        de toute manière, il faut alimenter le LNB et le montage le plus pratique est d’utiliser le récepteur satellite dont on dispose, surtout que ce
        ux-ci sont équipés d’un S-mètre bien pratique pour peaufiner le calage. L’avantage manifeste du Raspberry est sa petite taille pour l’emporter sur le toit. Comme dit François, il faut tester (en faisant attention de ne pas détruire le dongle RTL-SDR en ramenat la tension d’alimentation
        du LNB dessus).

        Cordiales salutations – Sylvain

        Répondre
        1. François MOCQ Auteur de l’article

          bonsoir Sylvain
          je n avais pas pensé à cet aspect d’occupation de bande des chaines sat.
          effectivement les 2.4 MHz permis par la clé DVB-T risquent d’être un peu « short »
          73’s
          François

          Répondre
  2. régis

    Bonjour
    une petite question : pour rendre l’écran tactile, je suis votre procédure, qui me donne cette erreur , u lancement du script :
    E: La valeur « stable » n’est pas valable pour APT::Default-Release car cette version ne fait pas partie des sources disponibles.
    Normal ? que dois je faire ?
    en tout cas, merci pour ce bel article détaillé , c’est complet et pédagogique
    Bien à vous
    Régis P

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Regis
      je ne sais pas trop
      ça a fonctionné du premier coup sur 2 cartes SD différentes…
      …?
      il n y a pas eu d’autre message d’erreur ?
      vous êtes bien connecté à Internet ?

      Répondre
  3. S.POURRE

    Bonjour François,

    Réponse rédigée sous VI ;-))

    Très bon article (as usual).
    Comme vous le signalez fort honnêtement, il s’agit plus d’un récepteur panoramique que d’un instrument de mesure (on ne peut que rêver devant l
    a capture d’écran d’un Agilent).
    Comme tel, il peut permettre de vérifier le fonctionnement d’une télécommande, de veiller une bande de fréquence ..
    On attend donc la suite logique qui est la démodulation du signal; Comment se comporte la Framboise aux 4 coeurs ? reste-t-il du CPU disponiblepour faire tourner les blocs de traitement de GNU-radio ?
    Nota: Je suis tout de même surpris par la forte dépendance à un type d’afficheur, ça va certainement limiter la portabilité.
    Cordiales 73 – Sylvain de F1MYZ.

    Répondre
    1. François MOCQ Auteur de l’article

      bonjour Sylvain
      ok pour Vi 🙂
      comme je n ai pas pu tester d’autre écran j en suis resté à ce que j’ai trouvé sur les forums Adafruit
      mais c’est sur qu ils vont pas dire que ça marche avec les concurrents
      je verifierai pour l occupation CPU
      pour info le Raspi tourne depusi 3 jours non stop en affichant la frequence d’RTL…
      73’s
      François

      Répondre
  4. Ping : Réalisez un analyseur de spectre avec le...

  5. Ping : Réalisez un analyseur de spectre avec le...

  6. Ping : Réalisez un analyseur de spectre avec le Raspberry Pi 2 – Radioamateur France

  7. f1abr Michel

    Bonjour
    Probleme avec Freqshow.py
    Il Y a t’il une version pour fonctionner avec la sourie ?
    Je hub usb est ok.
    Sinon je il fonctionne mais je ne peut riens en faire et ni l’arreter!

    J’ai essayé d’installer Gqrx mais pas moyen de le faire fonctionner!
    il ya des tutos mais pas trouvé ce qui convient.
    Merci

    Michel

    Répondre
  8. f1abr Michel

    onjour
    Une précision, pour que le scanner utilise la sourie :
    Dans: /freqshow/freqshow.py à la ligne pygame,mouse,set_visible (False)
    remplacer (False) par (True)
    Dommage qu’il n’y a pas de sons !

    Répondre
  9. FEVRAT

    Bonjour,

    Tout d’abord merci pour ce tuto très bien expliqué et documenté.
    Vivant dans un petit village du centre de la France, je souhaiterai savoir si cette analyseur peut observer les fréquences GSM pour ainsi connaitre le meilleur opérateur téléphonique (ras le bol de la mauvaise réception).

    Je vous remercie par avance.

    Cordialement Jérémy

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Jérémy
      il ne fait qu’afficher les signaux qu’il reçoit… en plus ce n’est pas un appareil de mesure, les fréquence ne sont pas hyper précises….
      comment comptez vous identifier les différents fournisseurs ?
      cordialement
      François

      Répondre
      1. FEVRAT

        Bonjour François,

        Effectivement, ce n’est pas un appareil de mesure mais les fréquences des fournisseurs sont données sur un site en relation avec l’ARCEP. Je me dis donc que si on peut observer des pics de fréquences dans des zones spécifiques (pour SFR entre 904.90 et 914.90 MHz en upload par exemple), je saurai le meilleur fournisseur en fonction de la puissance du signal la plus importante dans une plage donnée.

        CDL Jérémy

        Pour les fréquences le liens ci-dessous :
        http://www.lowcostmobile.com/actualite/1495-lots-frequences-operateur-technologie-gsm-umts-lte

        Répondre
  10. FEVRAT

    Bonjour François,
    j’ai un problème au niveau de l’écran tactile une fois le programme de l’analyseur lancé et je souhaiterais savoir s’il y’a un moyen de le calibrer.
    Je n’ai cependant aucun soucis lorsque je suis sur l’écran de base de raspbian.
    Merci pour la réponse que vous pourrez me donner.

    Cordialement

    Répondre
  11. Ping : Une interface web pour un émetteur FM avec le Raspberry Pi | Framboise 314, le Raspberry Pi à la sauce française….

  12. Ping : Une interface web pour un émetteur FM avec Raspberry Pi | Radioamateur France

  13. Alexidreaming

    Bonjour, je suis un habitué de ce superbe site internet et j’ai mis l’os sur la carte mais le tactile de l’écran ne fonctionne pas et ayant un serveur NAS et cloud dessus je n’aimerais pas reformater la carte.
    Merci
    Cordialement

    Répondre
  14. BERNARD

    Bonjour,
    Bravo pour votre remarquable tutoriel !
    Mais comment faire tourner l’analyseur de spectre sans Utiliser un écran Adafruit PiTFT Plus 3,5 pouces (ref. 2441) ?
    J’utilise mon raspberry pi2 à distance avec un dongle WIFI et je le pilote avec mon PC Wndows sous tightVNC.
    Peut-on renvoyer les signaux sur l’écran du PC déporté, (en fait sur l’interface windows du Raspi que je récupère avec VNC) ?
    Par ailleurs impossible d’installer Gqrx (2050 Illegal instruction gqrx $1 $2) qui aurait pu remplacer .
    Merci d’avance pour vos conseils toujours éclairants
    Bernard

    Répondre
  15. François MOCQ Auteur de l’article

    Bonjour Bernard
    de mémoire car ça date d’un an, je pense que le programme attaque directement le framebuffer
    je ne pense pas qu’on puisse facilement envoyer les images sur un PC
    pour GQRX difficile de savoir d’où ça vient
    j’allais vous conseiller de poser la question sur … https://groups.google.com/forum/#!topic/gqrx/pP3nwiy_wxQ
    mais c’est déjà fait
    ici il a tourné sans problème sur Pi 3 avec un RTL-SDR
    cordialement
    François

    Répondre
  16. Jacques

    Bonjour François,
    J’ai pour ambition de réaliser un récepteur décamétrique (ayant été OM) utilisant des technologies récentes ( la partie HF ne me pose pas de pb,c’était mon métier). Je ne sais si j’irais au bout du projet mais je cherche des idées coté gestion des commandes et affichage plus performant que qu’un LCD déja utilisé. Donc j’ai le sentiment que Raspberry pourrait être une solution intéressante vis à vis de mes ambitions. Mais je ne connais strictement rien dans ce domaine! Mes recherches m’ont amenées sur votre sîte qui me parait très clair et à la portée d’un débutant dans le domaine.
    Mon idée serai déjà de réaliser votre analyseur pour me « faire la main ». Mes questions seraient les suivantes.
    – peut on utiliser aujourd’hui Raspberry Pi 3 au lieu du Raspberry Pi 2, compatibilité avec l’afficheur?
    – peut on faire lire un (des) potentiomètres incrémentaux?
    – Y a t’il des entrées analogiques (potentiomètres)?
    -sorties analogiques?
    -Sinon peut on discuter avec un PIC par exemple?
    Beaucoup de questoins merci par avance

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Jacques
      Il n’y a pas de problème pour remplacer le Pi 2 par un Pi 3. LEs 2 sont compatibles.
      Si vous entendez par « potentiomètres incrémentaux » un « codeur incrémental » c’est faisable
      https://www.modmypi.com/blog/how-to-use-a-rotary-encoder-with-the-raspberry-pi
      Non pas d’entrées analogiques juste de entrées / sorties en 3,3v
      attention sous 5v ça crame !
      et oui on peut dialoguer avec un pic ou autre
      vous avez des bus I2C, SPI mais aussi un port série …
      cordialement
      François

      Répondre
  17. Eccoyo

    super tuto tres detaillé du super boulot !
    tout c’est tres bien deroulé jusqu’au lancement de freqshow avec la commande sudo python freqshow.py
    j’ai comme reponse :
    Traceback (most recent call last):
    File « freqshow.py », line 89, in
    pygame.display.init()
    pygame.error: Unable to open mouse

    que faire ? merci de votre aide.

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      Apparemment un souci avec pygame
      Les versions ont evolue depuis cet article
      Essayez avec la version existante lors de l ecriture de l article
      Cordialement
      Francois

      Répondre
  18. Eccoyo

    c’est bon ! il faut cibler le bon ecran dans freqshow.py en changeant par SDL_MOUSEDEV’ , ‘/dev/input/mouse0’

    freqshow se lance, ca c’est fait ! mais je n’arrive pas a recuperer le tactile (surrement le meme probleme mais ailleur)

    pour info l’ecran piTFT est difficile a trouver sur le net donc jutilise un ecran quimat 3.5″ qui fonctionne bien mais les drivers différes un peu.

    Répondre
  19. Robert HAUERSPERGER

    Bonjour,
    Merci pour ce tuto très bien documenté.
    Mon problème se situe au niveau de l’archive à télécharger, 2015-09-24-raspbian-jessie-pitft35r.
    J’ai bien suivi le lien mais au décompactage un message apparait me disant que le zip est corrompu.
    Si vous possédé encore le zip ou l’image .img pourriez vous me la transmettre ?
    Cordialement
    Robert F1TZU

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

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