Nostalgia for Half Life - criando um prefixo para uma estação de rádio receber a voz e o som do final no estilo de combinações


Era uma vez, quando as árvores eram grandes, havia um atirador de Half-Life, cuja continuação ainda é aguardada - isso já é um sinônimo.

Havia oponentes como Combines (Combine Soldiers) - pessoas trocadas pelos invasores.
Durante o jogo, era possível ouvir as conversas no rádio - e eu apenas sonhei com uma estação de rádio que faria a voz parecer com eles e ter o mesmo som quando a transmissão terminasse.

Depois de muito tempo, ainda decidi realizar meu sonho.

As negociações foram assim:


Naquele momento, eu realmente sonhava em fazer com que minha estação de rádio tivesse pelo menos o mesmo sinal sonoro de Roger que nessas negociações. Quem não sabe o que é um sinal sonoro de Roger - um sinal para terminar a transmissão, o que soa no final de cada mensagem.

No jogo, seu tom muda de acordo com o soldado, e aqui está algo entre:


Foi difícil para mim fazê-lo, mas o desenvolvimento dos microprocessadores hoje tornou possível não apenas repeti-lo facilmente, mas também diminuir a velocidade da voz, para que fique ainda mais semelhante ao que estava no jogo.

O coração desse esquema foi o processador da empresa ATMEL - ATTINY85.

E sim - processamento de áudio em tempo real no minúsculo ATTINY85 - é bem possível :)

O resultado do trabalho no exemplo da voz de Geralt de Rivia


Som original


Som modificado


Live não parece tão surdo e mais claro. Aqui, devido às muitas transformações e transcodificações, isso aconteceu, mas acho que o quadro geral é compreensível.

Podemos dizer que tudo isso é "apenas por diversão", mas se você remover a transformação de voz, o esquema permitirá adicionar o sinal sonoro de Roger a qualquer estação de rádio se houver um conector para acessórios como "kenwood" (o mesmo conector duplo).

Eu testei no Baofeng-888s e ele simplesmente não tem um sinal sonoro de Roger - basicamente, a capacidade de fazer isso, ou, por exemplo, embaralhar, não é apenas divertida.

Como o firmware funciona?


De fato, não há nada complicado lá.

É usado um modo periférico de baixa velocidade (via PLLCSR) - nesse caso, o ATTINY pode ser alimentado a partir de 2,7 volts e isso fornece uma frequência de amostragem de cerca de 9kHz.

Era possível usar o modo de alta velocidade, o que daria uma frequência de cerca de 18kHz, mas você teria que usar uma tensão de alimentação de 4,5 volts, e havia problemas com isso.

Quando você pressiona o botão de transmissão na tangente, uma interrupção é gerada e ATTINY acorda, ativa o modo de transmissão para as estações de rádio e usa o ADC a uma frequência de cerca de 8,9kHz para digitalizar a voz do microfone em um buffer cíclico:



Quando o próximo valor é inserido no buffer, ele é misturado com o anterior - a média é encontrada, ou seja, a fórmula é: (oldValue+newValue)/2.

Isso nos dá a oportunidade de experimentar o caso em que o antigo significado ainda não foi renunciado e um novo já tomou seu lugar. E isso vai acontecer mais cedo ou mais tarde, porque as velocidades de leitura e gravação são diferentes.
Os ponteiros para o buffer aumentam após cada operação, quando atingem o máximo, são redefinidos para zero - ou seja, para o início do buffer - é por isso que é chamado circular.

ATTINY não tem muita memória - apenas 500 bytes; nesse caso, 450 bytes serão usados ​​no buffer de anel, porque memória também é necessária para variáveis ​​e pilha.

O buffer possui dois ponteiros - um é um dado gravado, o outro é lido e a proporção disso apenas define a velocidade de leitura em relação à velocidade de gravação.

Quando a leitura de dados é transmitida através de PWM e após um filtro de suavização, ela se transforma em som, que entra no caminho do microfone da estação de rádio.

A propósito, através do PWM, a qualidade é muito boa e pode ser usada em qualquer lugar em que você precise reproduzir algum tipo de som (caixas de música, presentes etc.), e o ATTINY tem conclusões suficientes para conectar até o SD - e então você pode até composições inteiras para tocar.

Mas voltando ao nosso esquema: quando você solta o botão, ATTINY ainda mantém o modo de transmissão, interrompe a digitalização e emite o som digital do bip de Roger através do PWM, depois desliga o modo de transmissão e entra no modo de suspensão para reduzir o consumo de energia.

Som, porque ocupa muito espaço - cerca de 5 kilobytes - ocupa parte da memória do programa - porque essa memória é suficiente para o código - isso resolve o problema da falta de memória.

Quanto ao grau de desaceleração ou aceleração da voz, o coeficiente desejado deve ser gravado no endereço 0 EEPROM ATTINY e, portanto, pode ser alterado no intervalo de 0 a 255.

Exemplos de valores:
30 acelerando vozes
55 inalterado
75 desaceleração de voz

Esquema


O dispositivo em si será uma tangente (ou melhor, um manipulador) à estação de rádio e funcionará com ele através do conector de acessórios padrão da Kenwood.

O esquema é muito, muito simples, fácil de montar "no joelho".

Encomendei o módulo amplificador de microfone no Aliexpress e recomendo apenas esse tipo de módulo, que está aqui na foto. É alimentado por 3-5v, o custo é de cerca de US $ 2.

Um alto-falante precisa de cerca de 8 ohms, 0,5-1 watts.

Botão - qualquer, trabalhando no circuito. Qualquer LED com capacidade de trabalhar a partir de 3 volts, ou com um resistor apropriado.



Há um recurso que não caiu nesse circuito - a fonte de alimentação de 5 volts dos acessórios é fornecida no conector do acessório, mas especificamente, no Baofeng-888s, algo que os chineses fizeram de errado. Não apenas existem 3 volts, mas também cai para 0,7 volts sob carga e, é claro, o circuito não funciona.

Para contornar isso, um pequeno conversor DC-DC de 1,2 a 3,3 volts com Aliexpress e um conector externo para conectar qualquer bateria AA foram adicionados.

E, por padrão, quando nada é inserido no conector, o circuito tenta ser alimentado pela estação de rádio.

Como é a montagem do circuito:



Culpado da celebração:



Como fazer um plugue duplo (conector KENWOOD) para uma estação de rádio:



Dois plugues 3.5 e 2.5, enrolados com fita isolante - muito sem ele.

Habitação


Não há nada particularmente complicado aqui, a única coisa com a qual tive que mexer é uma janela na forma de uma lambda. Acabou muito torto, mas um pouco como :)

Ele fez um dremel, colou-o com fita adesiva na parte da frente e derramou cola da pistola de cola no lado oposto, afogou o LED nele, que acende quando a transmissão está em andamento.

Ainda não há um conector de energia externo.

Fora:



Dentro:



Todos juntos:



Sumário


Em geral, realizei meu sonho de infância e, embora fosse irracional, sua realização aquece minha alma adulta. Espero que alguém tenha sentimentos semelhantes. :)

Firmware


Bits FUSE para ATTINY85 (8Mhz, potência> = 2.7v):

0xE2 LOW
0xDD ALTO
0xFF ESTENDIDO

Baixar arquivos de firmware
Num futuro próximo, tentarei pentear e apresentar as fontes de tudo isso.



Nota


Como meu irmão não trabalhou com OVNIs, decidi publicar este artigo em Habré em meu próprio nome. Quando eu coletei - você sabe - eu era feliz quando criança. E eu pensei que ela merecia a atenção da harasociedade.

Ela mora comigo na estação de rádio YAESU e funciona bem, alimentada pela própria estação.

Novas versões de firmware e arquivos relacionados a ele podem ser encontrados no blog protocoder.ru do meu irmão.

Bem, como estive diretamente envolvido no desenvolvimento e montei a mesma coisa, tentarei responder a qualquer pergunta sobre isso.

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


All Articles