Salut les Geektimes.
La radiodiffusion numérique est progressivement introduite dans divers pays. En Europe et en Australie c'est le standard
DAB / DAB + , aux USA
HD Radio , en Chine
CDR (China Digital Radio). Les avantages pour l'utilisateur sont un son plus propre en raison du flux numérique, des services supplémentaires (par exemple, le nom de la chanson et le nom de l'artiste sur l'écran du récepteur) et, dans le cas de DAB, un plus grand nombre de stations par rapport à FM. Les récepteurs de radio numérique sont maintenant relativement peu coûteux, avec des prix commençant à environ 40 $.
La Russie n'a encore officiellement adhéré à aucune des normes, mais si cela se produit, ce sera probablement DAB. Son opération de test a déjà été réalisée à Moscou et les récepteurs du marché européen pour la Fédération de Russie sont géographiquement plus accessibles que les récepteurs américains. Les nouvelles voitures européennes (dont, encore une fois, plus que les américaines) sont souvent déjà équipées d'un récepteur DAB. En attendant, à des fins de test, tout le monde peut démarrer DAB à la maison, avec un émetteur-récepteur SDR.

(Source de l'image / Getty)
Détails sous la coupe (soigneusement, beaucoup de configurations longues et ennuyeuses).
Comment ça marche
Malheureusement, différentes normes sont incompatibles entre elles.
Le
DAB européen est un flux MP2 ou AAC transmis en utilisant ODFM dans des canaux avec des fréquences de 174 à 239 MHz. Autant
que possible
plus de 30 canaux , chacun d'environ 1,5 MHz de large, plusieurs stations peuvent ĂȘtre transmises simultanĂ©ment dans un canal. Selon
Wikipedia , l'utilisation du DAB lors de l'utilisation d'un débit binaire de 192 kbps est 3 fois plus efficace en termes de nombre de stations que la FM conventionnelle.
Le spectre d'un canal DAB sur l'écran SDR ressemble à ceci:

Ă titre de comparaison, donc Ă la mĂȘme Ă©chelle, les stations FM ressemblent Ă :

Dans American
HD Radio, ils ont pris un chemin diffĂ©rent - les chaĂźnes numĂ©riques ont ajoutĂ© «sur le cĂŽté» aux stations FM existantes. Cela nous a permis de ne pas allouer de nouvelles frĂ©quences et de laisser la compatibilitĂ© avec les anciens rĂ©cepteurs. L'inconvĂ©nient est que dans les grandes villes, la diffusion FM est dĂ©jĂ prise. En revanche, mĂȘme le nombre maximum de 50 stations FM est assez bon, trĂšs probablement les auditeurs n'en ont pas besoin.
Le spectre de la radio HD ressemble à ceci (capture d'écran de YouTube):

Le
CDR chinois a décidé de copier l'
approche américaine , hélas, ma connaissance zéro du chinois ne suffit pas pour y trouver des informations plus détaillées.
Quant aux récepteurs, leur prix sur Amazon varie de 30 $ pour les modÚles les plus simples, jusqu'à > 100 $ pour les plus avancés avec écran tactile, Wifi ou écran couleur.

Mais «les Tchouktches ne sont pas des lecteurs», nous allons donc lancer nous-mĂȘmes la radio test au format DAB / DAB +. HD Radio ne fonctionne pas, hĂ©las, le format est fermĂ© et aucun encodeur n'est disponible.
Exécutez DAB / DAB +
Le processus n'est en fait pas compliqué, mais trÚs laborieux en termes de création des configurations nécessaires. Pour le test, nous avons besoin de Linux et SDR avec la possibilité de transférer, par exemple, HackRF ou USRP.
1. Compilation du projet
Linux est nécessaire pour compiler l'encodeur. J'ai utilisé Ubunty, l'image finale pour VirtualBox a été téléchargée depuis
http://www.osboxes.org/ubuntu/ .
Compilation ODR-AudioEncVous devez d'abord compiler l'encodeur audio DAB / DAB +, vous pouvez le trouver sur la page
github.com/Opendigitalradio/ODR-AudioEnc .
git clone https://github.com/Opendigitalradio/ODR-AudioEnc.git cd ODR-AudioEnc/ ./bootstrap ./configure --enable-alsa --enable-vlc make sudo make install
Compilation ODR-DabMuxODR-DabMux combine les flux numériques en un seul multiplex. En savoir plus sur
github.com/Opendigitalradio/ODR-DabMux .
git clone https://github.com/Opendigitalradio/ODR-DabMux.git cd ODR-DabMux/ ./bootstrap.sh ./configure make sudo make install
Compilation ODR-DabModIl s'agit d'un modulateur qui envoie rĂ©ellement des donnĂ©es Ă l'Ă©metteur. Le principe d'assemblage est le mĂȘme, la commande Ă tĂ©lĂ©charger:
git clone https://github.com/Opendigitalradio/ODR-DabMod.git
Si lors de l'assemblage, les bibliothĂšques ne suffisent pas, elles doivent ĂȘtre installĂ©es Ă l'aide d'apt-get.
Maintenant, toutes les parties du projet sont assemblées,
et avec tout cela, nous allons essayer de décoller .
2. Configuration
Malheureusement, USRP ne fonctionnait pas sur une machine virtuelle, et mettre Linux complet sur le disque était trop paresseux. Par conséquent, je n'ai pas pris en compte le mode de diffusion en continu - le multiplex a été compilé à partir de fichiers mp3 pré-préparés et le fichier IQ résultant a été lancé sous Windows. Oui, en général, la diffusion en streaming n'est pas nécessaire pour la maison, il n'y avait pas de tùche de créer une «station pirate».
Divers paramÚtres sont décrits plus en détail ici:
http://opendigitalradio.imtqy.com/mmbtools-doc/mmbtools.pdf .
Préparation des donnéesIl y aura 2 canaux dans notre multiplex, pour lesquels j'ai téléchargé 2 fichiers mp3 à partir de YouTube et les ai nommés (qui auraient deviné) sound01.mp3 et sound02.mp3, respectivement.
Convertissez des fichiers en WAV avec un débit binaire de 48000:
ffmpeg -i sound01.mp3 -ar 48000 sound01.wav
ffmpeg -i sound02.mp3 -ar 48000 sound02.wav
Convertissez-les au format DAB:
odr-audioenc --dab -b 128 -i sound01.wav -o prog1.mp2
odr-audioenc --dab -b 128 -i sound02.wav -o prog2.mp2
La sortie doit ĂȘtre 2 fichiers prog1.mp2 et prog2.mp2.
Création de multiplexVous devez d'abord créer un fichier décrivant la configuration de notre "station radio". Permettez-moi de vous rappeler que dans un canal DAB, il peut y avoir plusieurs stations, chacune avec ses propres paramÚtres.
Créez le fichier «config.mux» avec le texte suivant:
general { dabmode 1 nbframes 2000 ; Set to true to enable logging to syslog syslog false ; Enable timestamp definition necessary for SFN ; This also enables time encoding using the MNSC. tist false } remotecontrol { telnetport 0 } ensemble { id 0x4fff ecc 0xec ; Extended Country Code local-time-offset auto international-table 1 label "mmbtools" shortlabel "mmbtools" } services { srv-p1 { label "Station1" } srv-p2 { label "Station2" } } subchannels { sub-p1 { type audio inputfile "prog1.mp2" bitrate 128 id 10 protection 4 } sub-p2 { type audio inputfile "prog2.mp2" bitrate 128 id 11 protection 4 } } components { comp-p1 { service srv-p1 subchannel sub-p1 } comp-p2 { service srv-p2 subchannel sub-p2 } } outputs { output1 "file://output.eti?type=raw" }
La configuration décrit les canaux qui seront dans le multiplex et leurs sources de données. Le paramÚtre nbframes spécifie le nombre d'images à créer; 2000 images correspondent à environ une minute de lecture.
Une fois le fichier enregistré, créez un multiplex:
odr-dabmux config.mux
La sortie devrait ĂȘtre le fichier
output.eti , dans mon cas, sa taille était de 12 Mo.
TransfertIl y a deux possibilités. Dans le "vrai" Linux, odr-dabmod peut transmettre directement des données à l'émetteur-récepteur, mais cela ne fonctionnait pas sous la machine virtuelle. Par conséquent, en tant que paramÚtre de sortie, j'ai spécifié un fichier brut qui contiendra des données compatibles avec Gnu Radio.
Créez le fichier config.ini:
[input] transport = file source = output.eti loop=0 [modulator] digital_gain=0.9 rate=2048000 [output] output = file [fileoutput] format = complexf_normalised ;format = s8 filename = output.iq
Ici, le point clé est le format de sortie et son type. Pour USRP, j'utilise le format complexf_normalised, pour HackRF, en théorie, un s8 8 bits convient.
Enregistrez la configuration, lancez la conversion:
odr-dabmod config1.ini
Câest tout! La sortie devrait ĂȘtre config.iq, dans mon cas, environ 700 Mo pour une minute d'enregistrement (format flottant IQ). Nous le copions sur l'ordinateur "principal" et Linux peut ĂȘtre fermĂ©.
3. Test
Comme je l'ai dit plus tÎt, je n'ai pas de récepteur DAB, les Tchouktches ne sont pas des lecteurs, je n'écoute pas du tout la radio :) Pour les tests, j'ai utilisé le "sifflet" RTL-SDR et le programme gratuit
Welle.io .
Tout d'abord, connectez le récepteur, lancez Welle.io et trouvez une chaßne gratuite. Dans mon cas, 12B les a affectés:

Nous nous souvenons de la fréquence et créons le graphique le plus simple pour la transmission à Gnu Radio:

Nous commençons, attendons quelques secondes, et ... nous entendons la musique enregistrée via welle.io.

Nous nous assurons que le nombre de canaux et leurs noms correspondent à ceux spécifiés dans la configuration.
Oui, l'ensemble du «complexe émetteur» ressemble à ceci:

Conclusion
Ce ne sont pas les dieux qui brûlent les pots, et il est tout à fait possible de toucher les technologies modernes à la maison sans quitter le bureau.
L'antenne, bien sĂ»r, n'Ă©tait pas rĂ©glĂ©e sur la frĂ©quence souhaitĂ©e (et je n'ai pas d'analyseur d'antenne), la puissance maximale de l'USB3 n'est probablement pas supĂ©rieure Ă 1 W, et mĂȘme alors, elle est distribuĂ©e sur une bande de 1,5 MHz. La portĂ©e de transmission maximale est donc d'environ 0,5 m.
Si quelqu'un veut répéter les expériences avec plus de puissance, une recherche sur ebay du mot «RF Power Amplifier» fournit de nombreux liens utiles (officiellement, vous avez besoin d'une licence pour la diffusion, bien sûr, vous devez vous assurer que les autres services ne sont pas perturbés).