Érase una vez, cuando los árboles eran grandes, había un tirador de Half-Life, cuya continuación aún se espera, esto ya es un sinónimo.
Hubo oponentes como Combines (Combine Soldiers), personas cambiadas por los invasores.
Durante el juego, podías escuchar sus conversaciones en la radio, y soñé con una estación de radio que haría que la voz se pareciera a ellos y tuviera el mismo sonido cuando terminara la transmisión.
Después de mucho tiempo, todavía decidí cumplir mi sueño.
Las negociaciones fueron así:
En ese momento, realmente soñaba con hacer que mi estación de radio tuviera al menos el mismo pitido de Roger que en estas negociaciones. Quién no sabe qué es un pitido de Roger: una señal para finalizar la transmisión, la que suena al final de cada mensaje.
En el juego, su tono cambia dependiendo del soldado, aquí hay algo intermedio:
Entonces fue difícil para mí hacer esto, pero el desarrollo de microprocesadores hoy en día ha hecho posible no solo repetir esto fácilmente, sino también ralentizar la voz para que sea aún más similar a lo que estaba en el juego.
El corazón de este esquema fue el procesador de la compañía ATMEL - ATTINY85.
Y sí, el procesamiento de audio en tiempo real en el pequeño ATTINY85 es bastante posible :)
El resultado del trabajo sobre el ejemplo de la voz de Geralt de Rivia
Sonido original
Sonido modificado
Live no suena tan sordo y más claro. Aquí, debido a las muchas transformaciones y transcodificaciones, esto sucedió, pero la imagen general, creo, es comprensible.
Podemos decir que todo esto es "solo por diversión", pero si elimina la transformación de voz, entonces el esquema le permite agregar el pitido de Roger a cualquier estación de radio si tiene un conector para accesorios como "Kenwood" (el mismo conector doble).
Lo probé en Baofeng-888 y simplemente no tiene un pitido roger, por lo que la capacidad de hacer esto, o, por ejemplo, la codificación, es bastante divertida.¿Cómo funciona el firmware?
De hecho, no hay nada complicado allí.
Se utiliza un modo periférico de baja velocidad (a través de PLLCSR); en este caso, ATTINY puede alimentarse desde 2,7 voltios y esto proporciona una frecuencia de muestreo de aproximadamente 9 kHz.
Era posible usar el modo de alta velocidad, que daría una frecuencia de aproximadamente 18 kHz, pero luego sería necesario usar un voltaje de suministro de 4.5 voltios, y hubo problemas con esto.
Cuando presiona el botón de transmisión en la tangente, se genera una interrupción y ATTINY se despierta, activa el modo de transmisión a las estaciones de radio y usa ADC a una frecuencia de aproximadamente 8.9kHz para digitalizar la voz del micrófono en un búfer cíclico:

Cuando se ingresa el siguiente valor en el búfer, se mezcla con el anterior: se encuentra el promedio, es decir la fórmula es:
.
Esto nos da la oportunidad de experimentar el caso cuando el antiguo significado aún no se ha entregado, y uno nuevo ya ha ocupado su lugar. Y esto sucederá tarde o temprano, porque las velocidades de lectura y escritura son diferentes.
Los punteros al búfer aumentan después de cada operación, cuando alcanzan el máximo, se restablecen a cero, es decir al comienzo del búfer, por eso se llama circular.
ATTINY no tiene mucha memoria: solo 500 bytes, en este caso se utilizarán 450 bytes bajo el búfer en anillo, porque También se necesita memoria para las variables y la pila.
El búfer tiene dos punteros: uno son datos escritos, el otro es leído y la proporción de este solo establece la velocidad de lectura en relación con la velocidad de escritura.
Cuando la lectura de datos se transmite a través de PWM y después de un filtro de suavizado, se convierte en sonido, que entra en la ruta del micrófono de la estación de radio.
Por cierto, a través de PWM resulta de muy buena calidad y se puede usar en cualquier lugar donde necesite reproducir algún tipo de sonido (cajas de música, regalos, etc.), y ATTINY tiene suficientes conclusiones para conectar incluso SD, y luego puede incluso composiciones enteras para tocar.
Pero volvamos a nuestro esquema: cuando suelta el botón, ATTINY aún mantiene el modo de transmisión, deja de digitalizar y emite el sonido digitalizado del pitido de Roger a través de PWM, luego apaga el modo de transmisión y se pone en suspensión para reducir el consumo de energía.
Sonido, porque ocupa mucho espacio, aproximadamente 5 kilobytes, ocupa parte de la memoria del programa, porque esta memoria es suficiente para el código; esto resuelve el problema de la falta de memoria.
En cuanto al grado de desaceleración o aceleración de la voz, el coeficiente deseado debe registrarse en la dirección 0 de EEPROM ATTINY y, en consecuencia, puede cambiarse en el rango de 0 a 255.
Ejemplos de valores:30 voces aceleradas
55 sin cambios
75 ralentización de voz
Esquema
El dispositivo en sí será una tangente (o más bien, un manipulador) a la estación de radio y funcionará con él a través del conector de accesorios estándar de Kenwood.
El esquema es muy, muy simple, fácil de montar "en la rodilla".
Pedí el módulo amplificador de micrófono en Aliexpress, y recomiendo este tipo de módulo, que está aquí en la foto. Está alimentado por 3-5v, el costo es de aproximadamente $ 2.
Un altavoz necesita alrededor de 8 ohmios, 0.5-1 vatios.
Botón - cualquiera, trabajando en el circuito. Cualquier LED con la capacidad de trabajar desde 3 voltios, bien, o con una resistencia adecuada.

Hay una característica que no se incluyó en este circuito: la fuente de alimentación de 5 voltios de los accesorios se proporciona en el conector de accesorios, pero específicamente, en el Baofeng-888, algo que los chinos hicieron mal. No solo hay 3 voltios, también cae a 0.7 voltios bajo carga y, por supuesto, el circuito no funciona.
Para evitar esto, se agregó un pequeño convertidor DC-DC de 1.2 a 3.3 voltios con Aliexpress y un conector externo para conectar cualquier batería AA.
Y por defecto, cuando no se inserta nada en el conector, el circuito intentará ser alimentado por la estación de radio.
¿Cómo se ve el conjunto del circuito?

Culpable de la celebración:

Cómo hacer un doble enchufe (conector KENWOOD) para una estación de radio:

Dos enchufes 3.5 y 2.5, enrollados con cinta aislante, mucho sin él.
Vivienda
Aquí no hay nada particularmente complicado, lo único con lo que tuve que jugar es con una ventana en forma de lambda. Resultó bastante torcido, pero un poco como :)
Hizo un dremel, luego lo pegó con cinta adhesiva en la parte frontal y vertió pegamento de la pistola de pegamento en el lado opuesto, ahogó el LED, que se ilumina cuando la transmisión está en progreso.
Todavía no hay un conector de alimentación externo.
Afuera:

Dentro:

Todos juntos:

Resumen
En general, cumplí el sueño de mi infancia y, aunque fue irracional, su cumplimiento calienta mi alma adulta. Espero que alguien experimente sentimientos similares. :)
Firmware
FUSIBLES para ATTINY85 (8Mhz, potencia> = 2.7v):
0xE2 BAJO
0xDD ALTO
0xFF EXTENDIDO
Descargar archivos de firmwareEn un futuro próximo intentaré peinar y exponer las fuentes de todo esto.
Nota
Como mi hermano no trabajaba con los ovnis, decidí publicar este artículo sobre Habré en mi propio nombre. Cuando lo coleccioné, ya sabes, era feliz cuando era niño. Y pensé que ella era digna de la atención de la sociedad.
Ella vive conmigo con la estación de radio YAESU, y funciona bien, alimentada por la estación misma.
Se pueden encontrar nuevas versiones de firmware y archivos relacionados con él en el blog de mi hermano protocoder.ru .
Bueno, como participé directamente en el desarrollo y preparé lo mismo, intentaré responder cualquier pregunta al respecto.