Remote SDR V2 – Architecture Logiciel

Remote SDR V2 est un ensemble hardware et software pour réaliser un émetteur / récepteur radio à base de SDR (Software Design Radio) pilotable à distance par le web. Pour une introduction à Remote SDR V2 voir ici.

Remote SDR V2, tourne pour la partie traitement du signal sur un Orange Pi (voir un Raspberry Pi) et sur un ordinateur classique (PC, Mac etc..) pour la visualisation dans une page Web. Les technologies employées sont diverses comme :
– DEBIAN ou ARMBIAN pour le système
– Python / GNURADIO pour la partie traitement du signal amont
– HTML / Javascript pour le traitement du signal aval et la visualisation.

Le récepteur

Schéma fonctionnel du récepteur radio

L’Orange PI pilote le SDR et effectue sur les signaux I et Q fourni par lui, une transformée de Fourier (FFT) pour analyser le spectre sur 2048 points autour de la fréquence centrale de réception. En parallèle dans la bande de réception du SDR (1 ou 2 MHz), on extrait une voie audio démodulée en AM, NBFM, WBFM ou SSB. Le spectre sur 2048 points est envoyé 5 fois par seconde à l’ordinateur en charge de la visualisation à distance dans une page web. La voie audio échantillonnée à 10kHz (ce qui est suffisant pour de la voix) est envoyé au mème ordinateur pour diffusion en analogique. Le traitement du signal dans l’Orange Pi est modélisé à l’aide de l’outil graphique très puissant GNU-Radio Companion 3.7 qui génère automatiquement le code C et Python 2.

Pour avoir du détail sur le traitement du signal, lisez l’article suivant:
https://f1atb.fr/index.php/fr/2020/06/20/recepteur-blu-distant/

L’émetteur

Schéma fonctionnel de l’émetteur radio

Depuis la page web de l’ordinateur distant, on définit la fréquence d’émission, le type et le taux de modulation (NBFM, USB, LSB). Le signal du microphone est échantillonné à 10 kHz puis envoyé à l’Orange Pi en charge de l’émission qui passe le signal modulé au SDR.

Pour avoir du détail sur le traitement du signal, lisez l’article suivant:
https://f1atb.fr/index.php/fr/2020/06/23/emetteur-blu-distant/

Le Réseau

L’échange entre le ou les Orange Pi et l’ordinateur de visualisation distant s’effectue par le réseau local ethernet ou WIFI, voire internet. Cette architecture avec la partie principale du traitement effectué au bas de l’antenne permet de réduire par 100 environ le débit. Le débit en entrée / sortie d’un SDR est de l’ordre de 10 Mo/s. Le débit en entrée/sortie des Oranges Pi est inférieur à 100Ko /s . Ce qui facilite le transport jusqu’à l’ordinateur distant qui n’a besoin d’aucune installation logiciel dédiée.

L’Ordinateur Distant

L’ordinateur distant pour piloter l’émetteur / récepteur n’utilise qu’un navigateur web comme Chrome ou Edge. Il effectue un peu de traitement du signal en Javascript (filtrage et FFT sur l’audio) et de la visualisation en temps réel. Une seule contrainte, comme on utilise le micro et que l’on ne travaille pas en mode sécurisé https, il faut paramétrer dans le navigateur l’autorisation d’accès (voir les procédures d’installation de Remote SDR V2).

Les fichiers

L’ensemble des fichiers et dossiers se trouvent dans le dossier du serveur Apache /var/www/html. Si l’on utilise 2 Oranges Pi, la structure est la même et l’on s’adresse à l’un des Oranges Pi à l’adresse : http://<ip orange-pi>

3D et build
Dossiers où se trouvent les fichiers de la modélisation 3D du pingouin linux de la page d’accueil.

cgi-bin
Fichiers appelés par le serveur apache pour les pages dynamiques comme la selection de la demodulation du récepteur, la modulation de l’émetteur, le test de la pin26 (pin 10 pour un orange pi zero 2) de l’orange pi one plus (voir protection émission).

css
Fichiers de style des pages web

JS
Fichiers javascript importants comme remote_sdr.js qui gère principalement la réception , remote_TX.js qui gère l’émission et tools.js qui gère les fonctions outillages de la page tools.

log
Quelques logs que l’on retrouve dans la page tools.

PY
Tous les fichiers source et python 2 du traitement de signal. Chaque type de modulation a un fichier GNU Radio correspondant qui est lancé suivant la modulation choisie.

configurationRX.js
On peut voir son contenu dans la page tools mais il faut l’adapter avec un éditeur de texte à sa propre configuration du système et ses préférences.

configurationTX.js
Préférences pour l’émetteur à adapter.

index.html
Page d’accueil avec le pingouin TUX.

remote_sdr.html
Page principale de Remote SDR

start_radio_manager_at_boot.py
Fichier lancé au boot de l’orange pi qui gère le lancement des différents scripts python propre à chaque modulation. Il est appelé par une tâche cron. Dans un terminal faire : crontab -e et mettre la ligne suivante en bas de fichier.

@reboot python3 /var/www/html/start_radio_manager_at_boot.py

tools.html
Fichier donnant accès à différents outils pour contrôler le bon fonctionnement.

Articles sur Remote SDR v2