Dessiner dans le spectre radio

Image illustrant l'article : Dessiner dans le spectre radio

Dessiner dans le spectre radio

par Korben -

L’ingénieur logiciel Gokberk Yaltirakli, actuellement basé au Royaume-Uni a eu une idée qui devrait plaire aux radios amateurs qui lisent cet article.

Si vous avez déjà utilisé un logiciel SDR (Software Defined Radio), vous êtes forcement tombé sur la vue spectrogramme qui ressemble à ceci :

![Schéma du spectre radio montrant les différentes gammes de fréquences](30105972096_5447126eb2_c-1.webp)
Le spectrogramme affiche l'amplitude des fréquences au fil du temps, ce qui a donné l'idée à Gokberk de jouer avec plusieurs fréquences pour dessiner le spectrogramme à partir d'[un simple émetteur radio (HackRF)](https://amzn.to/3k1LDdn?source=korben.info) et un peu de code Python.

Voici ce que ça donne dans le logiciel gqrx :

Voici son script pour ceux qui veulent se lancer :

#!/usr/bin/env python3 import struct import os from PIL import Image import sys import math dsp = os.fdopen(1, "wb") def write(i, q): i = int(i * 127) q = int(q * 127) data = struct.pack("bb", i, q) dsp.write(data) RATE = 4_000_000 # 4M sample rate TRANSMIT_TIME = 2 # 2 Seconds FREQ_DEV = 15_000 # 15 KHz im = Image.open(sys.argv[1]) im.convert("1") # 1 means 1-bit image t = 0 for y in range(im.height)[::-1]: target = t + TRANSMIT_TIME / im.height line = [im.getpixel((x, y)) for x in range(im.width)] while t < target: i = 0 q = 0 for x, pix in enumerate(line): if not pix: continue offs = x / im.width offs *= FREQ_DEV i += math.cos(2 * math.pi * offs * t) * 0.01 q += math.sin(2 * math.pi * offs * t) * 0.01 write(i, q) t += 1.0 / RATE 

Bravo Gokberk !