Voici un article plutôt destiné à la communauté radioamateur, mais comme il met en œuvre un Raspberry Pi, profitez-en pour découvrir l’utilisation inhabituelle qu’on peut en faire.
C’est Anton (ZR6AIC) un radioamateur sud-africain qui est à l’origine de ce projet décrit sur son blog.
Il utilise rpitx un logiciel d’émission amateur créé par Évariste (F5OEO), un radio-amateur français.
Anton a autorisé la traduction des articles de son blog pour les lecteurs français de framboise314 🙂 Merci Anton !
[stextbox id= »alert » caption= »Attention à la réglementation »]La mise en œuvre de ce répéteur en France nécessite que l’expérimentateur soit titulaire d’une licence radio-amateur. Ceci permet d’assurer un fonctionnement du montage respectant la réglementation en vigueur. Pour les autres pays consultez la réglementation locale. framboise314 ne pourra être tenu pour responsable si vous utilisez ce montage sans en avoir le droit ;)[/stextbox]
==========> Traduction d’un article d’Anton ZR6AIC <==========
Au sommaire :
- 1 Un répéteur 70 cm / 2 mètres avec un Raspberry Pi et un dongle RTL-SDR
- 1.1 70 cm… 2 mètres ? kézako ?
- 1.2 Un répéteur… kézako ?
- 1.3 Le shéma synoptique
- 1.4 Schéma détaillé
- 1.5 Configuration du répéteur
- 1.6 Installation de rpitx
- 1.7 VFO
- 1.8 Faire démarrer automatiquement le répéteur au boot du Raspberry Pi
- 1.9 Vidéo des tests du répéteur
- 1.10 Creating APRS transmitter
- 1.11 Application GnuRadio équivalente à la version ligne de commande.
- 1.12 Le filtre de sortie
- 2 Conclusion
- 3 Remerciements
- 4 Sources
Un répéteur 70 cm / 2 mètres avec un Raspberry Pi et un dongle RTL-SDR
70 cm… 2 mètres ? kézako ?
Pour la première (70 cm) Il s’agit d’une bande de fréquences allouée (en partage) aux radio-amateurs. Elle correspond aux fréquences comprises entre 430 et 440 MHz. On y trouve également des applications sans fil, télécommandes, télémesures, transmissions d’alarme, ainsi que les portatifs LPD (Low Power Devices). Pourquoi 70 cm ? La longueur d’onde est égale à la vitesse de la lumière (c ~ 300000 km/s) divisée par la fréquence (f=435 MHz). Ce qui donne dans ce cas 300/435 = 0,68 m. Le compte est bon !
La seconde (2 mètres) est la bande de fréquences comprise entre 144 et 146 MHz. On calcule la longueur d’onde de la même façon : 300/144 = 2,08 mètres…
Un répéteur… kézako ?
Décidément il faut tout vous expliquer… Mais nan, je rigole, on est là pour ça 😀
Un répéteur est un appareil qui reçoit les signaux radio sur une bande et les retransmets sur une autre. Ce genre d’appareils permet du trafic radio inter-bandes et est couramment utilisé en radio-amateur.
Le shéma synoptique
Voilà c’est simple non ? Le signal présent sur la bande des 70 cm est capté par l’antenne et dirigé vers un récepteur : une clé USB RTL-SDR. Celle-ci est chargée de transformer le signal reçu et de le fournir à l’entrée d’un émetteur qui travaille en 2m et retransmet le signal sur cette bande. C’est le Raspberry Pi qui joue ce rôle.
Schéma détaillé
On voit sur ce shéma les constituants de ce montage. L’auteur a ajouté un filtre passe-bas sur lequel nous reviendrons un peu plus loin. Comme le Raspberry Pi recrée le signal 144 MHz avec un signal carré, il génère également de nombreux signaux harmoniques (coucou Fourier !) qu’il convient de supprimer au mieux pour ne pas « polluer » les fréquences correspondantes.
Configuration du répéteur
Pour cette configuration, votre Raspberry Pi devra être connecté à Internet.
La configuration a été faite avec le dernier OS Raspbian pour Raspberry Pi téléchargé à partir du site de la Fondation. Anton a utilisé un Raspberry Pi B + et a testé cette configuration également sur un Banana Pi car il avait besoin d’un disque dur pour compiler gnuradio pour une utilisation ultérieure en SDR (Sofware Defined Radio).
C’est un dongle RTL qui est chargé de recevoir le signal d’entrée sur la bande des 70cm, mais c’est configurable sur la bande amateur 2m ou sur 70cm. Le signal du récepteur sera ensuite démodulé et retransmis avec une bibliothèque DSP simulant un signal FM et utilisant une broche GPIO du Raspberry Pi comme émetteur.
Mettez votre Raspberry Pi à jour.
sudo apt-get update sudo apt-get upgrade
Allez chercher du café car ça peut prendre …… un certain temps 😉
Installez l’application SDR en ligne de commande pour accéder au dongle RTL USB. Cette bibliothèque RTL vous permet de démoduler les signaux FM et SSB (Single Side Band ) BLU.
sudo apt-get install rtl-sdr-0.5.3-3 mplayer octave gnuplot gnuplot-x11
Téléchargez le logiciel émetteur FM à partir de github.
Rpitx est le logiciel principal chargé de l’émission. Il permet de transmettre à partir de :
- fichiers IQ * .iq (pouvant être générés par un logiciel externe comme GNU Radio).
- Fichiers Fréquence/temps * .ft (généralement utilisés pour implémenter facilement les modes numériques)
Installation de rpitx
git clone https://github.com/F5OEO/rpitx cd rpitx # assurez-vous d'avoir accès à Internet pour télécharger les paquets # ou télécharger-les et installez-les manuellement (libsndfile1-dev et imagemagick) ./install.sh
Bon, créons des fichiers IQ qui seront utilisés pour tester l’émetteur.
Emetteur SSB
./pissb sampleaudio.wav ssbIQ.wav
Un exemple de script testssb.sh est inclus.
Modulation FM
pifm convertit un fichier audio (wav, 48KHz, 1 canal, codec pcm_s16le) en FM bande étroite (excursion de 12.5khz) et enregistre le résultat dans un fichier .ft. Si on suppose que votre fichier audio est dans votre répertoire de travail courant
./pifm sampleaudio.wav fm.ft
Connectez une antenne à la broche 4 (un fil long de 40 cm ou plus en fonction de la valeur du quart de la longueur d’onde.
Vous pouvez ensuite transmettre sur 100MHz (attention de définir une fréquence correcte pour être dans la légalité)
sudo ./rpitx -m RF -i fm.ft -f 100000 -l -c1
Un exemple de script: testfm.sh est inclus. Ajoutez -c1 dans le fichier pour transmettre sur la broche 4 du GPIO.
VFO
Un mode VFO est fourni pour permettre un réglage de fréquence précis. Par exemple, pour définir une porteuse sur 100MHz (veuillez définir une fréquence correcte pour être légale)
sudo ./rpitx -m VFO -f 100000 -c1
Nous avons maintenant un émetteur qui fonctionne.
Maintenant au tour du dongle RTL.
Suivez ce tutoriel http://zr6aic.blogspot.co.za/2013/02/setting-up-my-raspberry-pi-as-sdr-server.html
Lorsque vous avez terminé l’installation de RTL_SDR et que vous l’avez testé avec rtl_test -t, vous pouvez vérifier de quels périphériques audio votre Raspberry Pi dispose.
sudo aplay -l **** List of PLAYBACK Hardware Devices **** card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] Subdevices: 8/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 Subdevice #4: subdevice #4 Subdevice #5: subdevice #5 Subdevice #6: subdevice #6 Subdevice #7: subdevice #7 card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] Subdevices: 1/1 Subdevice #0: subdevice #0
Maintenant, il faut installer quelques programmes utilitaires audio pour convertir les signaux audio :
sudo apt-get installe sox libsox-fmt-all
Testons pour voir s’il est possible de recevoir une émission de la bande des 2m.
Réglez le dongle RTL sur une fréquence de 145.500Mhz et transmettez un signal de test.
sudo rtl_fm -f 145500000 -M fm</span>
Transmettez un enregistrement de fichier mp3
sox -t mp3 zr6aic_CQ_mono.mp3 -t wav -r 48000 -c 1 - | sudo ./pifm - 145.5 -c1
Installation de ffmpeg
# Créer et installer x264
git clone --depth 1 git: //git.videolan.org/x264 cd x264 ./configure --host = arm-unknown-linux-gnueabi --enable-static --disable-opencl make -j 4 sudo make install
# Build et make de ffmpeg
git clone --depth = 1 git: //source.ffmpeg.org/ffmpeg.git cd ffmpeg ./configure --arch = armel --target-os = linux --enable-gpl --enable-libx264 --enable-nonfree make -j4 sudo make install
Installez les utilitaires suivants pour faciliter la manipulation audio :
sudo apt-get install libav-outils sox oggfwd libsndfile1-dev sudo apt-get installe fftw3 libfftw3-dev
Installer csdr
clone git https://github.com/simonyiszk/csdr.git cd csdr git fetch git checkout dev make && sudo make install
Test de l’émetteur avec un fichier audio
(while true; do cat speech48000.raw; done) | csdr convert_i16_f | csdr gain_ff 700 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 145000 -c1
Mettre l’émetteur rpitx en mode d’écoute TCP (remplacer l’adresse IP -en gras- par celle de votre Raspberry Pi)
Envoi de l’audio à partir de l’ordinateur distant. (En utilisant le micro de l’ordinateur sous Linux)
arecord -fS16_LE -r48000 -c1 - | nc <strong>192.168.10.128</strong> 8011
Test de RTL_fm (remplacer l’adresse IP -en gras- par celle de votre Raspberry Pi)
sudo rtl_fm -M wbfm -f 98000000 | play -t raw -r 24k -es -b 16 -c 1 -V1 - sudo rtl_fm -M wbfm -f 98000000 | nc <strong>192.168.10.128</strong> 8011 -
Envoyer la sortie du dongle RTL à l’émetteur (remplacer l’adresse IP -en gras- par celle de votre Raspberry Pi)
sudo rtl_sdr -s 250000 -f 144300000 -p 0 - | nc -vv <strong>192.168.10.128</strong> 8011 sudo rtl_sdr -s 4800 -f 144300000 -p 0 - | nc -vv <strong>192.168.10.128</strong> 8011
Récepteur avec dongle RTL
sudo nc -l 8011 | csdr convert_i16_f | csdr gain_ff 8000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 145300 -c1
Emission sur la pin 4 du GPIO
sudo rtl_fm -s48000 -g 49.6 -l 0 -M fm -f 434400000 |nc 192.168.10.128 8011 -
Vous disposez d’un répéteur sans squelch…
Faire démarrer automatiquement le répéteur au boot du Raspberry Pi
Créez un fichier et éditez-le :
sudo vi /etc/init.d/Repeater
Ajoutez les lignes suivantes dans le fichier et enregistrez-le :
#! /bin/sh # /home/pi/sh/run_repeater.sh ### BEGIN INIT INFO # Provides: SDR repater start script # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Simple script to start a program at boot # Description: A simple script from www.stuffaboutcode.com which will start / stop a program a boot / shutdown. ### END INIT INFO # If you want a command to always run, put it here # Carry out specific functions when asked to by the system case "$1" in start) echo "Starting SDR_repeater" # run application you want to start /home/pi/sh/run_repeater.sh ;; stop) echo "Stopping SDR_Repeater" # kill application you want to stop killall rtl_fm killall rpitx ;; *) echo "Usage: /etc/init.d/Repeater {start|stop}" exit 1 ;; esac
Rendez le fichier exécutable
sudo chmod 755 /etc/init.d/Repeater
Créez un fichier /home/pi/sh/run_repeater.sh
vi /home/pi/sh/run_repeater.sh
Ajoutez le script Repeater vu ci-dessus dans le fichier pour qu’il puisse être démarré lors du boot.
sudo rtl_fm -p 38 -s48000 -g 0 -l 3 -M fm -f 434400000 |csdr convert_i16_f | csdr gain_ff 12000 | csdr convert_f_samplerf 20330 | sudo rpitx -i- -m RF -f 145293 -c1&
Test the start and stop script.
Démarrer le répéteur
sudo /etc/init.d/Repeater start
Arrêter le répéteur
sudo /etc/init.d/Repeater start
Vidéo des tests du répéteur
Creating APRS transmitter
[stextbox id= »alert » caption= »Attention ! »]Dans son implémentation d’origine APRX n’est pas conforme à la réglementation française. La réglementation française stipule que toutes les stations répétitrices doivent être identifiables dans le chemin des données. Voyez cet article de F4FXL.[/stextbox]
Répéteur APRX avec le Raspberry Pi
aprs --callsign --output - "" | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo rpitx -m RF -i - -f 144800
Repeater configured in a single line
sudo rtl_fm -p 38 -s48000 -g 0 -l 0 -M fm -f 434400000 |csdr convert_i16_f | csdr gain_ff 12000 | csdr convert_f_samplerf 20330 | sudo rpitx -i- -m RF -f 145293 -c1
Application GnuRadio équivalente à la version ligne de commande.
1) Lancer rpitx pour qu’il écoute sur la sortie TCP de GnuRadio sur le port 8011
while true; do (nc -l 8011; dd if=/dev/zero bs=4096 count=30); done | sudo rpitx -i- -m IQFLOAT -f 145259 -c1
2) Lancer Gnuradio-companion
gnuradio-companion
3) Chargez ce fichier GRC pour envoyer le fichier audio wav vers l’émetteur sur le port 8011
Vous pouvez télécharger ce fichier GnuRadio qui envoie le fichier audio sur le port 8011.
Le filtre de sortie
Ce répéteur, si vous le mettez en service sans prévoir de filtrage à la sortie, génère des signaux sur une large plage de fréquence. En effet le port GPIO passe de 0 à 1 (0v – 3,3v) et la forme carrée du signal génère de nombreuses harmoniques.
Ces harmoniques ne sont pas autorisés par la réglementation et il faut donc utiliser un filtre passe-bas pour éliminer les harmoniques. Voici le filtre construit par Anton pour se débarrasser des harmoniques. Il avait été décrit sur le blog F8BXI fin octobre.
Anton a testé ce filtre avec son analyseur de spectre NWT500, le niveau des harmoniques devrait normalement être abaissé d’environ 25 db.
Voici quelques photos du filtre qui a servi pour les tests. Il est monté sur une carte Veroboard. Anton prévoit de réaliser un CI pour le Raspberry Pi, avec un petit ampli de 10db.
Il est aussi possible de tester le montage avec un filtre passe-bande :
Outils utilisés
Simulateur
http://www.electroschematics.com/835/rfsim99-download/
Conception du filtre
http://tonnesoftware.com/svcfilter.html
Sélection des tores
http://kitsandparts.com/tcalc.html
RFSim99
http: //www.electroschematics.com/835/rfsim99-download/
Conclusion
Plutôt réservé à la communauté radio-amateur, ce montage montre une fois de plus la flexibilité d’emploi du Raspberry Pi. L’utilisation exclusive de la ligne de commande sous Linux pour réaliser les fonctions de ce répéteur prouve la puissance de ce mode texte 🙂
Cet article est une traduction d’un article d’Anton ZR6IAC. Pour toute question ou complément à ce sujet, merci de vous référer à l’article d’origine.
L’article comporte des scripts qui pourront éventuellement servir à ceux qui veulent tester l’utilisation du Raspberry Pi en émetteur FM (toujours dans le respect de la réglementation).
Remerciements
Merci à Pascal F1ULT qui m’a signalé le filtre passe-bas, à Michel F5OZF pour l’info sur le répéteur et à Anton ZR6AIC qui a autorisé la traduction de ses articles pour les lecteurs de framboise314 et a gentiment répondu à mes questions via Hangout !
bonsoir ,
moi je debute avec la framboise et je souhaiterais lui adjoindre une cle rtl et un logiciel SDR ,mais je ne sais comment faire et je n’ai pas trouvé beaucoup de renseignement la dessus …
avez vous un « tuyau »
merci
claude
Bonjour Claude
il y a plusieurs articles avec les SDR sur framboise314
commencez par recevoir la radio et les avions…https://www.framboise314.fr/?s=SDR
après vous pourrez passer à l’analyseur de spectre ou autre…
cordialement
François
merci ,j’y cours!!
Bonsoir,
Article très copieux qu’il va falloir lire et relire (en suivant les liens) pour en tirer la substantifique moelle.
Néanmoins, voici 3 ou 4 remarques à chaud finalement, il y en a 5):
1) la stabilité du Tx avec pour seule référence le caillou du Raspberry.
2) La pureté spectrale, même avec le filtre dont la réalisation est, AMHA, un peu bâclée. Vu le nombre et le niveau des raies parasites, il me semble que réaliser le filtre en copperclad avec des cloisons entre étages, ne serait pas un luxe (on peut même complètement fermer. Un de mes anciens me recommandait de faire étanche à l’eau.
3) la rigueur et la bêtise des programmes, même de simulation. Où peut-on trouver une capacité de x.yyyy pF à +-5% ? ça n’existe pas et le programme n’est même pas capable (prévu) pour choisir une valeur dans une série de Renard adaptée. Il faut prévoir des ajustables pour pallier la dispersion des valeurs (et tenir compte des capacités parasites non simulées).
4) L’auteur souligne bien un des défauts du Raspberry, l’absence de port sata dédié à u HD et l’obligation de compiler sur une plateforme concurrente mieux dotée.
5) N’ayant pas de banane sous la main, je suis inquiet sur le bon déroulement de l’installation et des nombreux programmes et bibliothèques nécessaire. Il y a pas mal d’appel à des git différents et à des ./install. C’est certainement la meilleure façon de ruiner une configuration par manque de gestion des dépendances et d’abréger la vie d’une SD carte (la compile génère beaucoup d’écritures et de fichier temporaires).
Ne jetons pas le bébé avec l’eau du bain. Cela reste un très beau projet pour aborder le traitement numérique du signal. Merci au traducteur 😉
73’s F1MYZ Sylvain
Bonjour Sylvain
comme d’habitude les remarques sont judicieuses 😉
C’est pour ça que j’ai mis le niveau « CONFIRMÉ » en tête d’article…
Je pense que ça démontre la faisabilité du projet et j’ai trouvé que les lignes de commande qui permettent de traiter le signal puis de l’envoyer vers l’émetteur étaient intéressantes.
Pour les condos, bin oui le logiciel donne les valeurs qu’il calcule, après l’OM se prend par la main et adapte, soit aux valeurs rondes, soit avec des ajustables. S’il n’est pas capable de s’en sortir, c’est pas un OM 😉
73’s
François / F1GYT
Bonjour François
avant toute chose, merci et bravo pour votre webzine, travail sérieux et toujours aussi agréable à lire.
Ce « proof of concept » est amusant et instructif, je vous rejoint totalement sur ce point. Reste que le résultat sera sans l’ombre d’un doute décevant en termes de dynamique et sensibilité (une clef RTL n’est pas et ne sera jamais un foudre de guerre) et les performances de l’émetteur en termes de stabilité sont loin d’être satisfaisantes. Bref, « a hack for fun and profit, no more ».
Je m’inquièterais de la précision des valeurs des condensateurs comme de ma première couche-culotte. Il s’agit d’un passe-bas, chargé de couper F2 et F3, donc avoir une transition quelque part, (si l’on choisi la fréquence la plus basse, la bande 2 mètres) entre 150 et 280 MHz… on n’est pas franchement à 1 pf près.
En outre, le temps est bien loin ou l’on utilisait des programmes donnant des valeurs normalisée. La taille des cms nous permet de tomber généralement à 2% près d’une valeur théorique avec une, ou au pire 3 composants en parallèle. Les grincheux ajouteront un trimmer et passeront leur filtre à l’analyseur vectoriel.
A noter que RFSim99, qui illustre cet article, est un soft vieux de plus de 17 ans, dangereux et perclus de failles de sécurité-et qui ne fonctionne plus sur les plateformes contemporaines… il peut être aisément remplacé par des programmes plus performants et tout aussi gratuits. QUCS (spice généraliste open source), ou le remarquable Elsie de Tonne Software (spice spécialisé filtres LC). Voir LTSpice de Linear Technology.
pour ceux qui souhaiteraient utiliser leur Framboise comme client Quisk (pas assez de puissance pour faire tourner un CuSDR), je pencherais plutôt sur un
http://www.hermeslite.com
Cordialement
Marc 6itu
Bonjour Marc
merci pour toutes ces précisions
73’s
François
Bonsoir
Est t’il possible de lire les signaux RF 433 de ma clim dans un fichier .iq
et de le réémettre depuis le pi avec RPITX pour allumer ou eteindre la clim ?
Meric