Inicie o DAB multiplex em casa

Oi Geektimes.

A transmissão digital está sendo introduzida gradualmente em vários países. Na Europa e na Austrália, é o padrão DAB / DAB + , nos EUA HD Radio , na China CDR (China Digital Radio). Das vantagens para o usuário, o som é mais limpo devido ao fluxo digital, serviços adicionais (por exemplo, o nome da música e o nome do artista na tela do receptor) e, no caso de DAB, um número maior de estações em comparação com FM. Os receptores de rádio digital agora são relativamente baratos, com preços a partir de US $ 40.

A Rússia ainda não aderiu oficialmente a nenhum dos padrões, mas se isso acontecer, provavelmente será o DAB. Sua operação de teste já foi realizada em Moscou, e os receptores de mercado europeus para a Federação Russa são geograficamente mais acessíveis que os americanos. Os carros europeus novos (dos quais, novamente, mais do que os americanos) já estão frequentemente equipados com um receptor DAB. Enquanto isso, para fins de teste, qualquer pessoa pode iniciar o DAB em casa, com um transceptor SDR.


(Fonte da imagem / Getty)

Detalhes sob o corte (com cuidado, muitas configurações longas e chatas).

Como isso funciona


Infelizmente, diferentes padrões são incompatíveis entre si.

O DAB europeu é um fluxo MP2 ou AAC transmitido usando ODFM em canais com frequências de 174 a 239 MHz. Tanto quanto possível, mais de 30 canais , cada um com cerca de 1,5 MHz de largura, várias estações podem ser transmitidas simultaneamente em um canal. Segundo a Wikipedia , o uso de DAB ao usar uma taxa de bits de 192kbps é 3 vezes mais eficaz em termos de número de estações que o FM convencional.

O espectro de um canal DAB na tela SDR é assim:



Para comparação, na mesma escala, as estações FM se parecem com:



No HD Radio americano , eles seguiram um caminho diferente - canais digitais adicionados "ao lado" às estações de FM existentes. Isso nos permitiu não alocar novas frequências e deixar compatibilidade com receptores antigos. A desvantagem é que, nas grandes cidades, a transmissão FM já está tomada. Por outro lado, até o número máximo de 50 estações para FM é bastante bom, provavelmente os ouvintes não precisam.

O espectro do HD Radio é semelhante a este (captura de tela do youtube):



O CDR chinês decidiu copiar a abordagem americana , infelizmente, meu conhecimento zero de chinês não é suficiente para encontrar informações mais detalhadas sobre ela.

Quanto aos receptores, o preço na Amazon varia de US $ 30 para os modelos mais simples, até US $ 100 para os mais avançados com tela sensível ao toque, Wifi ou tela colorida.



Mas “Chukchi não é um leitor”, então lançaremos o rádio de teste no formato DAB / DAB +. Infelizmente, o HD Radio não funciona, o formato está fechado e não há codificadores disponíveis.

Execute DAB / DAB +


Na verdade, o processo não é complicado, mas é muito trabalhoso em termos de criação das configurações necessárias. Para o teste, precisamos do Linux e SDR com a capacidade de transferir, por exemplo, HackRF ou USRP.

1. Compilação do projeto


O Linux é necessário para compilar o codificador. Eu usei o Ubunty, a imagem final do VirtualBox foi baixada em http://www.osboxes.org/ubuntu/ .

Compilando ODR-AudioEnc
Primeiro, você precisa compilar o codificador de áudio DAB / DAB +, pode encontrá-lo na página 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 

Compilando ODR-DabMux
ODR-DabMux combina fluxos digitais em um multiplex. Saiba mais em github.com/Opendigitalradio/ODR-DabMux .

 git clone https://github.com/Opendigitalradio/ODR-DabMux.git cd ODR-DabMux/ ./bootstrap.sh ./configure make sudo make install 

Compilando ODR-DabMod
Este é um modulador que realmente envia dados para o transmissor. O princípio de montagem é o mesmo, o comando para fazer o download:

 git clone https://github.com/Opendigitalradio/ODR-DabMod.git 

Se durante a montagem alguma biblioteca não for suficiente, ela deverá ser instalada usando o apt-get.

Agora todas as partes do projeto estão montadas e , com tudo isso, tentaremos decolar .

2. Configuração


Infelizmente, o USRP não funcionou em uma máquina virtual e colocar o Linux completo no disco foi muito preguiçoso. Portanto, não considerei o modo de transmissão por streaming - o multiplex foi compilado a partir de arquivos mp3 pré-preparados e o arquivo IQ resultante foi iniciado no Windows. Sim, em geral, a transmissão de streaming não é necessária para a casa, não havia a tarefa de criar uma "estação pirata".

Várias configurações são descritas em mais detalhes aqui: http://opendigitalradio.imtqy.com/mmbtools-doc/mmbtools.pdf .

Preparação de dados
Haverá 2 canais em nosso multiplex, para os quais baixei 2 arquivos mp3 do youtube e os nomeei (quem diria) sound01.mp3 e sound02.mp3, respectivamente.

Converta arquivos para WAV com uma taxa de bits de 48000:
ffmpeg -i sound01.mp3 -ar 48000 sound01.wav
ffmpeg -i sound02.mp3 -ar 48000 sound02.wav

Converta-os para o formato DAB:
odr-audioenc --dab -b 128 -i sound01.wav -o prog1.mp2
odr-audioenc --dab -b 128 -i sound02.wav -o prog2.mp2

A saída deve ser 2 arquivos prog1.mp2 e prog2.mp2.

Criação Multiplex

Primeiro você precisa criar um arquivo que descreva a configuração da nossa "estação de rádio". Deixe-me lembrá-lo de que em um canal DAB pode haver muitas estações, cada uma com seus próprios parâmetros.

Crie o arquivo "config.mux" com o seguinte texto:

 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" } 

A configuração descreve os canais que estarão no multiplex e suas fontes de dados. O parâmetro nbframes especifica quantos quadros criar; 2000 quadros correspondem a aproximadamente um minuto de reprodução.

Quando o arquivo é salvo, crie um multiplex:

 odr-dabmux config.mux 

A saída deve ser o arquivo output.eti , no meu caso, seu tamanho era de 12MB.

Transferir

Existem duas possibilidades. No Linux "real", o odr-dabmod pode transmitir dados diretamente para o transceptor, mas não funcionou na VM. Portanto, como parâmetro de saída, especifiquei um arquivo bruto que conterá dados compatíveis com o Gnu Radio.

Crie o arquivo 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 

Aqui, o ponto principal é o formato de saída e seu tipo. Para USRP, eu uso o formato complexf_normalized, para HackRF, em teoria, um s8 de 8 bits é adequado.

Salve a configuração, inicie a conversão:

 odr-dabmod config1.ini 

Isso é tudo! A saída deve ser config.iq, no meu caso, com cerca de 700 MB de tamanho por um minuto de gravação (formato flutuante IQ). Nós o copiamos para o computador "principal" e o Linux pode ser fechado.

3. Teste


Como disse anteriormente, não tenho receptor DAB, não ouço Chukchi, não ouço rádio :) Para testar, usei o apito RTL-SDR e o programa gratuito Welle.io .

Primeiro, conecte o receptor, execute o Welle.io e encontre um canal gratuito. No meu caso, 12B os afetou:



Lembramos a frequência e criamos o gráfico mais simples para transmissão ao Gnu Radio:



Começamos, esperamos alguns segundos e ... ouvimos a música gravada através do welle.io.



Garantimos que o número de canais e seus nomes correspondam aos especificados na configuração.

Sim, todo o "complexo de transmissão" fica assim:



Conclusão


Não são os deuses que queimam os potes, e é possível tocar em tecnologias modernas em casa sem sair da área de trabalho.

A antena, é claro, não foi sintonizada na frequência desejada (e eu não tenho um analisador de antenas), a potência máxima do USB3 provavelmente não passa de 1W e, mesmo assim, é distribuída por uma banda de 1,5 MHz. Portanto, o alcance máximo de transmissão é de cerca de 0,5 m.

Se alguém quiser repetir os experimentos com maior potência, uma pesquisa no ebay pela palavra "RF Power Amplifier" fornece muitos links úteis (oficialmente, você precisa de uma licença para transmitir, é claro, certifique-se de que outros serviços não sejam interferidos).

Source: https://habr.com/ru/post/pt408971/


All Articles