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 é:
.
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 firmwareNum 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.