GNU Radio vers client Web
Dans le cadre du projet « Remote SDR« , il est nécessaire d’extraire les données de la voie audio créée par GNU Radio du « Récepteur BLU distant » et de les envoyer vers un client Web.
Parmis les blocs de traitement présent dans GNURADIO-companion, il existe le bloc UDP sink pour sortir les données. Pour entrer un flux de données audio dans une page web, on peut utiliser les websockets. Le programme proposé ci-après en python 3, récupère le flux audio reçu de GNU radio suivant le protocole UDP (port 9001) et passe ces données au client web suivant le protocole websocket (port 8001). On échange des paquets de 1024 octets. Il ne faut pas les faire trop important pour ne pas retarder le signal audio. Ici l’audio est codé sur 2 octets. On envoi ainsi 512 échantillons, sachant que nous sommes échantillonnées à 10kHz, cela fait environ 50ms de signal.
#!/usr/bin/python3 # This is client.py file
#Collect of Audio data from GNU Radio and send to web client
#Recuperation des données audio de GNU_Radio et envoi vers le client web
import socket
import asyncio
import websockets
# create a socket object
s_audio = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# get local machine name
host = 'localhost'
port_audio_Web = 8001
port_audio_GR = 9001
# connection to hostname on the port.
s_audio.bind((host, port_audio_GR))
print ("Passerelle audio Web")
# Receive no more than 1024 bytes audio
async def audio(websocket_a, path):
while True:
# on recupere les data de GNU-RADIO
msg_audio = s_audio.recv(1024)
# print ("audio",len(msg_audio))
# on envoi le message vers le client web distant
await websocket_a.send(msg_audio)
start_server_audio = websockets.serve(audio, "", port_audio_Web)
asyncio.get_event_loop().run_until_complete(start_server_audio)
asyncio.get_event_loop().run_forever()
Pour l’envoi du spectre permettant de créer un waterfall sur la page web, on utilise un autre programme très similaire à celui de l’audio. Sachant qu’un spectre est décrit en sortie de FFT par 1024 points représentés chacun par 2 octets, on enverra des paquets de 2048 octets.
#!/usr/bin/python3 # This is client.py file
#Collect spectral data to be passed to a web client
#Recuperation des données spectre de GNU_Radio et envoi vers le client web
import socket
import asyncio
import websockets
# create a socket object
s_spectre = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# get local machine name
host = 'localhost'
port_spectre_Web = 8002
port_spectre_GR = 9002
# connection to hostname on the port.
s_spectre.bind((host, port_spectre_GR))
print("Passerelle Spectre vers client WEB")
# Reception 2048 bytes du spectre
async def spectre(websocket_s, path):
while True:
# on recupere les data de GNU-RADIO
msg_spectre = s_spectre.recv(2048)
# print ("spectre",len(msg_spectre))
# on envoi le message vers le client web distant
await websocket_s.send(msg_spectre)
start_server_spectre = websockets.serve(spectre, "", port_spectre_Web)
asyncio.get_event_loop().run_until_complete(start_server_spectre)
asyncio.get_event_loop().run_forever()
Articles décrivant Remote-SDR
- Remote SDR V5 – Installation image Raspberry 4B ou Orange Pi
- Remote SDR v5 – Installation manuelle
- Remote SDR v5
- Écoute Satellite QO-100 en direct
- RTTY
- Dépannage
- Émetteur – Récepteur pour QO-100
- SSTV
- WSJT-X – FT8
- Omnirig – Remote SDR
- Ports de communication
- Générateurs de tonalités
- Positionnement sorties GPIO
- Scanning en réception
- Gains et Dynamiques
- Gestion des fréquences
- Lancement de Remote SDR
- Refroidissement CPU
- Autorisation traitement audio et microphone
- Configurations
- Caractéristiques
- Introduction à Remote SDR
- Remote SDR – Canaux Audio
- CW avec Remote SDR
- Bouton Rotatif et Manipulateur Morse pour Remote SDR
- VHF et UHF NBFM Transceiver
- Remote SDR v4
- Gpredict – Remote SDR
- Remote SDR V4 – Installation image Raspberry 4B ou Orange Pi
- Remote SDR v4 – Installation manuelle
- SA818 / RTL-SDR
- Remote SDR – Exemples de Réalisations
- QSO via QO-100 avec un smartphone
- Remote SDR V2 – Architecture Logiciel
- Remote SDR V1 – Approvisionnements
- Remote SDR V1 – Interface Homme Machine
- Remote SDR V1 – Traitement du Signal
- Client Web vers GNU Radio
- GNU Radio vers client Web
- Emetteur BLU distant
- Récepteur BLU distant
- GPIO de l’Orange PI One Plus H6
- Émetteur et récepteur vers Q0-100 avec 2 SDR – Remote SDR V1
- Installation TCXO sur un HackRF
Commentaires récents