Publié le 9 décembre 2016 - par

[Radioamateur] Un répéteur 70 cm / 2 mètres avec un Raspberry Pi

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 !

Cliquez sur l’image pour avoir de l’info sur les niveaux

 

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 😉

==========> Traduction d’un article d’Anton ZR6AIC <==========

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é

Cliquez pour agrandir

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

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.

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

Cliquez pour agrandir

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.

Cliquez pour agrandir

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.

Cliquez pour agrandir

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.

Cliquez pour agrandir – Filtre 146 MHz réalisé avec des composants CMS

Cliquez pour agrandir – Le filtre monté sur le Raspberry Pi. Il faut encore remplacer les fils par un câble coaxial.

Il est aussi possible de tester le montage avec un filtre passe-bande :

Cliquez pour agrandir

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 !

Sources

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. .

7 réflexions au sujet de « [Radioamateur] Un répéteur 70 cm / 2 mètres avec un Raspberry Pi »

  1. claude

    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

    Répondre
  2. S.POURRE

    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

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

      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

      Répondre
  3. marc

    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

    Répondre

Laisser un commentaire

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

Complétez ce captcha SVP * Time limit is exhausted. Please reload CAPTCHA.