O programa experimental DIGSSTV de VK4AES
Por PY4ZBZ
( DIGSSTV Versão beta 04/DEC/02 )
1 - Principio de funcionamento
Mostrarei a seguir de forma bem resumida, o principio de funcionamento do programa DIGSSTV. Como está na fase experimental, não apresenta a funcionalidade de um programa depurado até uma versão final. O próprio Erik diz que o programa é apenas para corajosos !...
O coração do programa consiste basicamente de cinco programas criados por Barry KB9VAK para transmissão digital de arquivos em um canal de radio via ondas curtas.
Um canal assim é sujeito a uma serie de distorções provocadas por desvanecimento seletivo, propagação multi caminhos, retardos de fase aleatórios, ruídos e interferências de todo tipo, e ainda outros efeitos. Para tanto foi preciso adaptar um tipo de modulação e de codificação adequados especificamente a este canal. Foi escolhido a modulação diferencial de fase (DPSK) com 9 variações de fase possíveis, em oito portadoras de audio separadas por 230 Hz, de 570 a 2180 Hz, para caber dentro da banda passante de um radio de SSB.
A figura seguinte mostra o espectro ocupado por esta forma de modulação:
A figura seguinte é o espectrograma (vermelho) e a forma de onda (envoltório verde) dos 13 segundos iniciais de uma transmissão digital:
No segundo 3 e durante 1/3 de segundo, é feita uma varredura de freqüência (chirp), com três tons, para que o programa de recepção possa conhecer e corrigir a não linearidade da resposta amplitude versus freqüência do canal.
Depois, de 3,333s ate o segundo 4, são enviadas 12 portadoras, sendo 8 maiores e 4 menores, como se vê no espectro seguinte, também como forma de verificar a linearidade de amplitude do conjunto placa de som TX, TX, RX e placa de som RX:
A transmissão/recepção do arquivo digital é baseada em cinco programas, que rodam em "Win32 Console Application", ou seja, DOS 32 bits, (e de forma transparente) e que fazem de forma resumida as seguintes operações :
Lado TX:
- o Bin2sym.exe transforma o arquivo binário que queremos transmitir (no caso, o Temp.jpg) em símbolos (um símbolo contem vários bits), e efetua uma dupla e complicada codificação Reed-Solomon, que consiste em calcular informação redundante que somada a informação em si, permitirá corrigir na recepção, os erros introduzidos pelo canal.
- o Modpm.exe pega o arquivo criado pelo bin2sym e gera as 8 portadoras, moduladas em fase.
- o Flt2wav.exe pega o arquivo gerado pelo Modpm e o transforma em um arquivo de audio, o transmit.wav, que será transmitido pela placa de som ao TX, quando apertamos a tecla TX do DIGSSTV.
Lado RX :
Após o final da recepção de audio, apertamos novamente a tecla RX, o que causa o seguinte:
- o Vssrc32.exe pega o arquivo Received.vaw gerado pela placa de som na recepção (num formato por ex. de 8 bits), transformando-o em outro arquivo de audio, o Receive.wav, no formato 16 bits e 11025 amostras por segundo.
- o Wav2bin.exe
pega o receive.wav e faz a complicada tarefa de demodular o sinal, corrigindo
as distorções, gerando os símbolos correspondentes,
para em seguida fazer a detecção e correção
de erros, dentro do limite matemático possível, entregando
em seguida, o arquivo binário exatamente igual ao que foi transmitido,
no caso, o Temp.jpg, ou se a taxa de erros estiver acima do limite,
um simples aviso de que não foi possível decodificar nada...
2 - Uso do programa DIGSSTV
Depois de fazer o download do arquivo zipado, é só criar uma nova pasta chamada por exemplo HDSSTV, e "unzipar" todos os arquivos nela. Depois é só rodar o DIGSSTV.exe. Aparecerá a tela seguinte (nesta já foi carregada uma imagem para TX):
1 - No setup, escolha a porta Com para acionamento do PTT, e o sinal correto usado na sua interface: RTS ou DTR. (na dúvida, marque os dois)
2 - Depois (no setup) escolha o grau de redundância do código corretor de erros, de 10 até 70%: quanto maior o QRM, maior deve ser a redundância, mas o tempo de TX fica maior também....
3 - Depois (no setup) escolha a qualidade da imagem : quanto melhor, mais vai demorar !... Isto porque o DIGSSTV transforma o formato da sua imagem para .jpg, para ficar com tamanho menor. Este arquivo será o Temp.jpg (disponível na pasta do DIGSSTV) e é o arquivo binário que vai ser transmitido.
4 - Depois, é preciso (uma vez apenas) verificar a linearidade da transmissão, (nível do sinal de audio versus potência de saída) usando um bom wattimetro de RF. É só ligar o "Send Tuning Tones (12s)" no setup, e ajustar o nível de saída da placa de som (na tela controle de volume). Este sinal dura 12 segundos, com os 2 primeiros em potência máxima, os dois segundos seguintes com meia potência (-3dB) e mais dois segundos com um quarto de potência (-6dB). Depois, repete a mesma seqüência, começando com um aumento de 6dB (potência máxima) e duas reduções, até completar os 12 segundos. Sugiro ajustar o nível de saída da placa de som par que a potência máxima seja de 50 W RF, a média de 25 W e a menor de 12,5 Watts, isto para transmissores de 100 Watts. Não tendo um wattimetro de RF confiável, use alguma indicação de potência do próprio TX, ou então o bom ouvido de um colega que, recebendo este sinal de teste, consegue ouvir nitidamente as mudanças da potência dos sinais de audio, que tambem deve ser visível no S-meter. A imagem seguinte mostra a forma de onda(na verdade, a sua envoltória) do sinal de teste:
5 - Ligue o Scope no setup, para poder verificar a sintonia do receptor. (Show Scope)
6 - Para transmitir uma imagem no DIGSSTV, clique em Files, Load picture, e escolha uma imagem. Cuidado com o tamanho!. Imediatamente, o programa vai fazer uma serie de contas relacionadas acima (os 3 programas lado TX), que podem demorar vários minutos (aparece a mensagem: making Wave File). Quando estiver pronto, aparece na tela embaixo da imagem TX, o tempo que o arquivo levará para ser transmitido. Pode se então apertar a tecla TX.
7 - Na mesma hora,
o correspondente, assim que ouvir os tons iniciais, aperta a tecla
RX, e espera a transmissão terminar, quando então
aperta novamente a tecla RX para que sejam feitas as operações
já explicadas anteriormente para o lado RX, o que vai demorar até
alguns minutos também.
Se estiver tudo OK,
aparecerá a imagem na tela RX (e o arquivo Temp.jpg, cópia
fiel e sem erro do arquivo Temp.jpg transmitido, estará disponível
na pasta onde esta o DIGSSTV). Se não foi possível corrigir
todos os erros, aparecerá uma mensagem de erro. Em caso de erro,
pode ser que o nível de RX deva ser ajustado (considerando que o
TX já foi ajustado de acordo com o item 4 anterior), usando o cursor
que fica ao lado do Scope, e observando o Scope durante uma transmissão
digital, de tal forma a ficar parecido com a imagem seguinte, (sem as raias
encostarem na parte superior da telinha do Scope) (o controle de gravação
evidentemente também deve ser ajustado, normalmente line-in, na
tela de controle de gravação):
Importante : agora não tem perdão para aqueles que não sintonizam corretamente o RX, e NÃO se pode retocar a sintonia durante a recepção. Os rádios devem ter alta estabilidade de freqüência . (portanto, esqueça o velho Deltão !... HI HI) O computador também deve ser de no mínimo 1GHz, porque senão os cálculos de decodificação na recepção serão bem demorados...
Como fazer a correta sintonia do RX ?. Se a voz estiver OK em SSB, a sintonia está OK, mas tem gente que não tem um bom ouvido... Para estes, o Erik colocou o recurso de dupla finalidade: o "Send Tuning Tones (12s)" no setup. A primeira finalidade é verificar a linearidade de TX, já explicada, e a outra é fazer a correta sintonia do RX, com ajuda do "Scope". A imagem seguinte mostra uma correta sintonia. (alguém transmite o "tuning tone" e quem vai receber ajusta a sintonia do receptor para que os dois picos azuis coincidam com as marcas brancas) :
Para terminar, veja
na tabela seguinte a relação entre os diversos parametros,
usando como imagem original um arquivo GIF de 25kB:
R = redundância em %
Q = qualidade da imagem (arquivo Temp.jpg)
tc = tempo para os calculos do lado TX em segundos (para um Celeron 800MHz)
ttx = tempo necessário para a transmissão em segundos (não
depende da CPU)
Ta = tamanho do arquivo binário, Temp.jpg
Tw = tamanho do arquivo de audio transmitido, Transmit.wav
R (%) | Q | tc (seg) | ttx (seg) | Ta (kB) | Tw (kB) |
10 | Very low | 13 | 22 | 2 | 480 |
70 | Very low | 20 | 54 | 2 | 1200 |
10 | Medium | 18 | 47 | 5 | 1000 |
70 | Medium | 45 | 130 | 5 | 2800 |
BUG no DIGSSTV : para receber imagens, o scope deve estar desligado ! Portanto, use-o apenas para a sintonia do receptor.
Enquanto o Barry quebra a cabeça para tornar os seus programas mais eficientes e rápidos, e o Erik melhora o DIGSSTV, bom divertimento...
Veja aqui o resultado de teste de tranferência digital de arquivo binário.
73´s, Roland PY4ZBZ.
Artigo
criado em 06/12/2002, atualizado em 11/12/2002.