VHF et UHF NBFM Transceiver
RTL-SDR est une solution de récepteur à bas coût, couvrant les VHF / UHF et utilisant la technologie SDR (radio logicielle). SA818 est une solution également à bas coût, d’émetteur / récepteur NBFM en VHF et UHF. Pourquoi ne pas marier les 2 pour créer un émetteur / récepteur s’apparentant à un SDR géré par un nano-ordinateur ou SBC (Single Board Computer). La visualisation et l’écoute se faisant à distance via un navigateur Web sur PC, tablette ou smartphone à l’aide de l’application « Remote SDR ».
Caractéristiques
Récepteur
- Matériel : RTL-SDR ( exemple : NESDR SMArt de Nooelec)
- Fréquence : 30 MHz à 1.7 GHz
- Bande spectrale traitée : 2 MHz
- Audio : 1 voie
- Démodulation : NBFM, WBFM, AM et SSB
Émetteur
- Matériel : SA818 de G-NiceRF(Aliexpress)
- Fréquence : VHF bande amateur des 2 m et UHF bande des 70 cm
- Puissance : 1 W
- Audio : 1 voie
- Modulation : NBFM
Traitement
- Matériel : Orange Pi Zero 2
- Logiciel : Remote SDR (version v3 minimum)
- Liaison : Ethernet cablé ou WIFI
- Affichage et Audio : page WEB sur PC, tablette ou smartphone
Synoptique
Chaîne de réception
Le signal d’antenne passe par une commutation à diodes pin, pour rejoindre le récepteur RTL-SDR. Différents modèles existent sur le marché, celui de Nooelec est plus soigné coté quartz, avec un TCXO permettant d’avoir un peu de précision et stabilité en fréquence. Cela reste un simple SDR codant les signaux sur 8 bits, ce qui limite la dynamique des signaux traités. Mais il est suffisant pour un simple transceiver. La sortie se fait par l’USB directement connecté à l’Orange Pi Zero 2 qui se charge du traitement du signal et permet de numériser une bande de 2 MHz de large, ce qui est parfait pour couvrir d’un œil toute la bande des 2 m et surveiller les différents OM ou relais. De plus, les détections WBFM et AM permettent d’écouter de la musique ou les bandes aviation.
Chaîne d’émission
Pour ce projet, on utilise uniquement la partie d’émission de deux modules SA818 de G-NiceRF. Le SA818-V pour couvrir les VHF et le SA818-U pour couvrir les UHF. Pour moins de 20€, on peut en acheter un minimum de 2 chez Aliexpress.
Les SA818 sont connectés à l’Orange Pi Zero 2 qui leur fournit la fréquence de travail souhaitée par l’intermédiaire d’un bus série. La sortie analogique ‘Line-Out’ de l’Orange Pi Zero est connectée à l’entrée micro des SA818 . La sortie antenne de chaque SA818 est connectée au relais de commutation d’antenne à base de diodes pin pour sélectionner le module en émission.
Réalisation
Dans un article précédent, il était traité une configuration simple avec un seul émetteur en VHF ou UHF. Ici la chaîne démission est doublée pour traiter les VHF et UHF. L’utilisation de 2 modules SA818 nécessite la commutation de quelques signaux par diodes, car on ne peut simplement les mettre en parallèle lorsque l’un travaille et l’autre est en veille.
Le récepteur
La clé RTL-SDR reçoit les signaux de l’antenne, les numérise dans la bande choisie et passe les échantillons au processeur de traitement, l’Orange Pi Zero 2. C’est un processeur de fabrication chinoise, tournant sous Linux/Armbian et similaire au bien connu Raspberry PI, mais pour une QSJ plus faible. La clé est branchée sur le port USB de l’Orange Pi Zero-2. La couverture de 30 MHz à 1.7 GHz permet l’écoute de nombreuses émissions à l’aide du logiciel Remote SDR. Le signal audio en sortie de démodulation et le spectre de l’ensemble de la bande écoutée sont envoyés au navigateur web (Chrome ou Edge) pour l’affichage et le contrôle.
Les émetteurs
Le signal audio pour attaquer les entrées microphone des émetteurs est disponible sur la sortie Line-Out de l’Orange Pi zéro. Des résistances des 640 kΩ permettent d’ajuster le niveau en entrée. La fréquence d’émission est fournie par une liaison série UART5_TX et UART5_RX. Un circuit de diodes permet d’échanger les informations avec le module SA818 actif et de s’isoler de celui inactif. Il n’est pas possible de changer de fréquence pendant la phase d’émission. C’est l’Orange Pi, avec les sorties sur les pins 16 et 18 qui active et désactive les SA818 en utilisant leur entrée ‘Power Down’. La sortie HF se fait sur la pin 12 du SA818.
Commande d’émission
La commande de passage en émission ne se fait pas par un simple changement d’état d’une sortie du GPIO de l’Orange Pi pour des raisons de sécurité. En cas de crash du processeur, on ne contrôle pas l’état de la sortie et l’émetteur risquerait d’être bloqué en émission.
Le client web envoi un signal audio du microphone échantillonné à 10 kHz et codé sur 2 octets. Ces 2*10000 échantillons, par seconde, sont envoyés par paquet de 512. Cela fait environ 40 paquets par seconde envoyés uniquement en phase d’émission. À chaque arrivée d’un paquet, la pin 26 change d’état. Cela va nous générer un signal carré de 20Hz ou d’une période de 50ms. Ce signal attaque un monostable (CD4538) qui sera actif aussi longtemps que des échantillons audio arrivent du navigateur. Il attaque l’entrée PTT du SA818. En cas d’arrêt ou de crash du processeur, le monostable retombe et l’émission s’arrête.
Processeur de Traitement
Un Orange Pi Zero 2 se charge du traitement du signal à la réception et l’émission. C’est un processeur 4 cœurs de 64 bits avec des entrées/sorties analogiques audio et une connexion Ethernet par câble ou Wifi. Il exécute l’application Remote SDR (version V3 minimum), commune à d’autres SDR. Un serveur Web fourni la page de visualisation, la sortie audio au casque ou hautparleur et l’entrée micro sur un PC, une tablette ou un smartphone.
La réception des données I et Q du RTL-SDR échantillonné à 2.4 MHz se fait par le port USB de l’Orange Pi.
Pour s’isoler du bruit électrique, généré par l’Orange Pi, pensez à bien découpler l’alimentation avec des condensateurs de plus de 100 μF et des condensateurs de 10 nF pour absorber la HF et les pics de tension. Un mauvais découplage se retrouve en bruit de fond sur l’audio de l’émetteur.
En cas de surchauffe de l’Orange Pi Zero 2, un petit ventilateur alimenté par du 5V se met en route si la température dépasse 65°C. La pin 7 du GPIO passe à 1 et attaque un 2n2222 servant de commutateur.
Branchement du SA818
Les 2 modèles, le VHF ou l’UHF ont le même branchement.
Le SA818 a tendance à chauffer, surtout si on l’alimente en 5V. Il accepte des tensions plus faibles comme proposé ici avec une diode 1n4007 qui baisse la tension (VDC) autour de 4.5v . Sur la partie dorée du SA818, près de l’antenne, on peut rajouter un radiateur.
Filtrage et commutation HF.
Les SA818 sortent directement un signal à la fréquence voulue autour de 1w. Une analyse spectrale montre quelques résidus d’harmoniques 2 et 3. Afin d’avoir un signal plus propre, chaque module est suivi d’un filtre passe-bas à 2 selfs et 3 condensateurs ajustables.
- 144 MHz
- selfs : 3 spires sur diamètre 6 mm en fil de cuivre électricien 1.3mm de diamètre
- condensateurs ajustables : 30pF
- 432 MHz
- selfs : 1 spire sur diamètre 6 mm en fil de cuivre électricien 1.3mm de diamètre
- condensateurs ajustables : 10pF
Trois diodes pin permettent de connecter l’antenne vers le récepteur ou l’un des deux émetteurs. Des transistors PNP de commutation (BC327 ou autre ), établissent la logique pour envoyer le courant à la diode pin qui doit laisser le passage de la HF. Le courant max est fixé par la résistance de 120 Ω qui passe à travers des diodes LED qui permettent de contrôler le bon fonctionnement en RX, TX VHF ou TX UHF. Des selfs en ferrite, type ‘VK200’, permettent de séparer le courant continu et la HF. Les ordres de commutation proviennent du monostable CD4538 et de l’Orange Pi Zero 2. C’est une logique négative, avec des 0v qui ouvrent les transistors.
Application Remote SDR pour SA818
L’application « Remote SDR » traite différents SDR en émission comme le HackRF ou l’Adalm Pluto. Dans le cas du SA818, il y a quelques spécificités pour s’adapter à ses interfaces.
Programmation fréquence d’émission
C’est une liaison série à 9600 baud, connecté sur le port Uart5 de l’Orange Pi Zero 2. Un programme python reçoit l’ordre de fréquence du client web par la technologie websocket. Cet ordre est adapté au format nécessaire au SA818. L’application python utilise la bibliothèque pyserial-asyncio installable par les commandes:
apt install python3-pip
pip3 install pyserial-asyncio
Les ports série disponibles sur la carte sont donnés par:
dmesg | grep tty
que l’on retrouve dans /dev/ttys5 …
Code CTCSS
Le code CTCSS utile à l’ouverture de certains relais, est généré par le SA818 qui reçoit, par le port série, un numéro de canal entre 1 et 38 qui correspond à la fréquence rentrée dans le tableau de configurationTX.js. Ce code CTCSS n’est pas généré directement dans le signal audio au niveau du client web comme pour les autres SDR, car le SA818 coupe tous les signaux sous 300Hz.
Modulation par le signal audio du microphone
Le signal du microphone est numérisé au niveau du PC par le navigateur Web, puis envoyé à l’Orange Pi qui le remet sous forme analogique sur les 2 sorties Line Out. Un programme en python construit avec l’application Gnu Radio Companion effectue la conversion digital vers analogique. Le niveau de sortie analogique est défini par le mélangeur audio du système. Son niveau est défini à chaque lancement de l’application dans le fichier asound.state dans le dossier PY. Si l’on souhaite modifier le niveau de modulation, il faut ouvrir dans une fenêtre terminal, le mélangeur audio avec :
alsamixer
Ajuster à l’aide des flèches le niveau de sortie ‘Line Out’ pour ajuster le taux de modulation en NBFM. Une fois le bon réglage trouvé, le sauvegardé dans le fichier asound.state avec la commande :
alsactl --file /var/www/html/PY/asound.state store
Si l’on souhaite tester la sortie audio avec un fichier wav:
aplay -D hw:0,0 test.wav
Remote SDR
Remote SDR, s’installe sur l’Orange Pi Zero 2. L’application comprend le traitement du signal et le serveur web qui fourni la page au navigateur web de contrôle de l’émetteur/récepteur. L’installation la plus simple consiste à télécharger sur Github, l’image de Remote SDR (au minimum version 3) pour Orange Pi Zero 2 qui comprend l’OS Armbian Bullseye et toutes les bibliothèques nécessaires.
Attention la capacité à piloter un SA818 n’est disponible que pour les Orange Pi Zero 2. A ne pas confondre avec l’Orange Pi Zero qui est un processeur 32 bits. Les Raspberry PI 4, utilisés avec d’autres SDR, n’ayant pas directement une sortie analogique, ne peuvent pas s’interfacer au SA818.
Programmation GPIO
Pour actionner les sortie GPIO pin 16 et 18, il faut rentrer des paramètres dans le fichier configurationTX.js de Remote SDR
TX_GPIO.push([150000001,500000000,79,0,true,true]); //VHF Off
TX_GPIO.push([0,430000000,78,0,true,true]); //UHF Off
TX_GPIO.push([0,150000000,79,1,true,true]); //VHF On
TX_GPIO.push([430000001,500000000,78,1,true,true]); //UHF On
Pin 16 correspond au GPIO 79, pin 18 au GPIO 78 pour un Orange Pi Zero 2.
Amplification du TX
La sortie du SA818 fourni environ 1 w de signal. Si l’on souhaite plus de puissance, il existe des amplificateurs sur le marché. N’oubliez pas un filtrage passe bande pour s’affranchir de tout signal parasite qui pourrait se trouver en sortie du SA818.
Articles sur l’Orange Pi Zéro 2
- Remote SDR V5 – Installation image Raspberry 4B ou Orange Pi
- Remote SDR v5 – Installation manuelle
- Remote SDR v5
- Watchdog (chien de garde)
- Positionnement sorties GPIO
- Refroidissement CPU
- Configurations
- Caractéristiques
- VHF et UHF NBFM Transceiver
- Remote SDR v4
- Remote SDR V4 – Installation image Raspberry 4B ou Orange Pi
- Remote SDR v4 – Installation manuelle
- SA818 / RTL-SDR
- Mise en route Orange Pi Zero 2 – Armbian Bullseye
- Remote SDR V2 – Architecture Logiciel
- GPIO de l’Orange PI Zero 2 H616
- Mise en route Orange Pi Zero 2 – Debian Buster
- Remote SDR v2 – Installation image Orange Pi One Plus ou Orange Pi Zero 2
- Remote SDR v2 – Installation manuelle
- Remote SDR v2
- Remote SDR V1 – Approvisionnements
- Emetteur BLU distant
Commentaires récents