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 et sur un Raspberry Pi 4 depuis la version 2.4. La visualisation dans une page web tourne sur un ordinateur classique (PC, Mac etc..). Les technologies employées sont diverses comme :
– DEBIAN, ARMBIAN ou Raspberry PI OS 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/Raspberry 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ée 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

F1ATB André

Radio Amateur - Domotique - Photovoltaïque

Vous aimerez aussi...

11 réponses

  1. F4BAD dit :

    Bonjour. Merci pour ce travail précis et détaillé très instructif. La conception qui me pose le plus de problème est l’affichage d’un spectre , à partir de données actualisées. En navigant dans votre code source, j’ai du mal a comprendre. Quel framework , ou outils clefs, utilisez vous pour afficher le spectre ?
    Merci. F4BAD

    • F1ATB André dit :

      Pour afficher le spectre en amplitude, j’utilise un svg (scalable vector graphic).
      Vers la ligne 420 de remote_sdr.js

      var S=… //SVG type of drawing

      Pour l’affichage du waterfall, j’utilise la technique du canvas , vers la ligne 550.
      Il y en a 2 pour pouvoir faire le défilement vertical.

      73
      F1ATB

      • F4BAD dit :

        Merci André. J’ai localisé la fonction trace spectre, et trace waterfall. je dois creuser encore car ce n’est pas un petit projet. Si besoin de matériel coax, sma, MMIC, à prix OM ou ulta-reduc, avec mesures possibles , me contacter f4bad free fr.
        73

  2. JACQUES SCHERER dit :

    Bonjour André,

    serait-il possible de prévoir un bouton « shutdown » des orange Pi/raspberry dans le menu TOOLS ?
    ce serait bien pratique lorsque que l’on coupe l’alimentation de la station, et ça éviterait d’avoir a reflasher les SD cards en cas de mauvaise manip…
    73’s de Jacques – F1APY

  3. JACQUES SCHERER dit :

    Hi André ,
    super ! merci beaucoup
    73’s dde Jacques – F1APY

  4. jeanmarc dit :

    Bonjour André
    Comment est il possible de rajouter une « authentification basique » sur la version 5 qui a substitué NodeJS à Apache pour le serveur Web (si j’ai bine tout lu !) ?
    73 de Jean Marc

    • F1ATB André dit :

      Excusez-moi, je ne comprends pas bien votre question. Une authentification pourquoi?

  5. jeanmarc dit :

    Un authentification pour ajouter une couche de sécurité à l’accès à Remote SDR. Actuellement seul le code « émission » protège certaines fonctions mais on est déjà dans l’appli donc pas à l’abri de l’utilisation d’une faille par exemple. l’appli a des droits d’éxecution de type admin sur le raspberry, donc on n’est pas à l’abri d’une utilisation malveillante. Mais peut être suis je un peu parano ou n’ai je pas tout compris du fonctionnement de Remote SDR …

    • F1ATB André dit :

      OK, je comprends votre point de vue, mais pour l’instant pas de protection additionnelle.