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é

Ham Radio - Home automation - Photovoltaic

Cet article a 11 commentaires

  1. F4BAD

    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

    1. F1ATB André

      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

      1. F4BAD

        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

    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

    1. F1ATB André

      Jacques
      Bonne suggestion, je met cela dans ma liste. Je pense que ce sera OK pour la prochaine version.

      73
      F1ATB
      André

    2. F1ATB André

      Le bouton Shutdown est disponible dans la nouvelle version 2.5

  3. JACQUES SCHERER

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

  4. jeanmarc

    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

    1. F1ATB André

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

  5. jeanmarc

    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 …

    1. F1ATB André

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

Les commentaires sont fermés.