Nostalgia for Half Life - création d'un décodeur pour une station de radio pour recevoir la voix et le son final dans le style des moissonneuses-batteuses


Il était une fois, lorsque les arbres étaient grands, il y avait un tel jeu de tir Half-Life, dont la poursuite est toujours attendue - c'est déjà un synonyme.

Il y avait des adversaires tels que Combine (Combine Soldiers) - des gens changés par les envahisseurs.
Pendant le jeu, vous pouviez entendre leurs conversations à la radio - et je rêvais juste d'une telle station de radio qui ferait ressembler la voix à eux et aurait le même son à la fin de l'émission.

Après beaucoup de temps, j'ai quand même décidé de réaliser mon rêve.

Les négociations étaient comme ça:


A cette époque, je rêvais vraiment de faire émettre au moins le même bip roger à ma radio que dans ces négociations. Qui ne sait pas ce qu'est un bip roger - un signal pour mettre fin à la transmission, celui qui retentit à la fin de chaque message.

Dans le jeu, son ton change en fonction du soldat, voici quelque chose entre les deux:


Ensuite, il m'a été difficile de le faire, mais le développement des microprocesseurs aujourd'hui a permis non seulement de le répéter facilement, mais aussi de ralentir la voix pour qu'elle soit encore plus similaire à ce qui était dans le jeu.

Le cœur de ce schéma était le processeur de la société ATMEL - ATTINY85.

Et oui - traitement audio en temps réel sur le minuscule ATTINY85 - c'est tout à fait possible :)

Le résultat du travail sur l'exemple de la voix de Geralt de Rivia


Son original


Son modifié


Le live ne semble pas si sourd et plus clair. Ici, en raison des nombreuses transformations et transcodages, cela s'est produit, mais l'image globale, je pense, est compréhensible.

Nous pouvons dire que tout cela est «juste pour le plaisir», mais si vous supprimez la transformation vocale, le schéma vous permet d'ajouter un bip roger à n'importe quelle station de radio si elle a un connecteur pour des accessoires comme «kenwood» (le même double connecteur).

Je l'ai testé sur des Baofeng-888, et il n'a tout simplement pas de bip roger, donc la possibilité de le faire, ou, par exemple, de brouiller, est assez amusante.

Comment fonctionne le firmware?


En fait, il n'y a rien de compliqué là-bas.

Un mode périphérique à basse vitesse est utilisé (via PLLCSR) - dans ce cas, ATTINY peut être alimenté à partir de 2,7 volts, ce qui donne une fréquence d'échantillonnage d'environ 9 kHz.

Il était possible d'utiliser le mode haute vitesse, ce qui donnerait une fréquence d'environ 18 kHz, mais il faudrait alors utiliser une tension d'alimentation de 4,5 volts, et cela posait des problèmes.

Lorsque vous appuyez sur le bouton de transmission de la tangente, une interruption est générée et ATTINY se réveille, active le mode de transmission vers les stations de radio et utilise l'ADC à une fréquence d'environ 8,9 kHz pour numériser la voix du microphone dans un tampon cyclique:



Lorsque la valeur suivante est entrée dans le tampon, elle est mélangée avec la précédente - la moyenne est trouvée, c'est-à-dire la formule est: (ancienneValeur+nouvelleValeur)/2.

Cela nous donne l'occasion de découvrir le cas où l'ancien sens n'a pas encore été abandonné, et un nouveau a déjà pris sa place. Et cela arrivera tôt ou tard, car les vitesses de lecture et d'écriture sont différentes.
Les pointeurs vers le tampon augmentent après chacune de ces opérations, lorsqu'ils atteignent le maximum, ils sont remis à zéro - c'est-à-dire au début du tampon - c'est pourquoi il est appelé circulaire.

ATTINY n'a pas beaucoup de mémoire - seulement 500 octets, dans ce cas 450 octets seront utilisés sous le tampon en anneau, car la mémoire est également nécessaire pour les variables et la pile.

Le tampon a deux pointeurs - l'un est des données écrites, l'autre est lu et le rapport de ceci définit juste la vitesse de lecture par rapport à la vitesse d'écriture.

Lorsque les données de lecture sont transmises via PWM et après un filtre de lissage, elles se transforment en son, qui va dans le chemin du microphone de la station de radio.

Soit dit en passant, grâce à PWM, il s'avère de très bonne qualité et il peut être utilisé pour n'importe quel endroit où vous devez jouer une sorte de son (boîtes à musique, cadeaux, etc.), et ATTINY a suffisamment de conclusions pour connecter même SD - et alors vous pouvez même compositions entières à jouer.

Mais revenons à notre schéma: lorsque vous relâchez le bouton, ATTINY maintient toujours le mode de transmission, arrête la numérisation et donne le son numérique du roger par PWM, puis désactive le mode de transmission et se met en veille pour réduire la consommation d'énergie.

Du son, car prend beaucoup d'espace - environ 5 kilo-octets - occupe une partie de la mémoire du programme - parce que cette mémoire est suffisante pour le code - cela résout le problème du manque de mémoire.

En ce qui concerne le degré de ralentissement ou d'accélération de la voix, le coefficient souhaité doit être enregistré dans l'adresse 0 EEPROM ATTINY et, en conséquence, il peut être modifié dans la plage de 0 à 255.

Exemples de valeurs:
30 accélérations de voix
55 inchangé
75 ralentissement de la voix

Schéma


L'appareil lui-même sera une tangente (ou plus correctement - un manipulateur) à la station de radio et fonctionnera avec elle via le connecteur d'accessoires Kenwood standard.

Le schéma est très, très simple, facile à assembler «sur le genou».

J'ai commandé le module amplificateur de microphone sur Aliexpress, et je recommande juste ce type de module, qui est ici sur la photo. Il est alimenté par 3-5v, le coût est d'environ 2 $.

Un haut-parleur a besoin d'environ 8 ohms, 0,5-1 watts.

Bouton - tout, travaillant sur le circuit. Toute LED capable de fonctionner à partir de 3 volts, ou avec une résistance appropriée.



Il y a une caractéristique qui n'est pas tombée dans ce circuit - une alimentation de 5 volts pour les accessoires est fournie dans le connecteur pour accessoires, mais spécifiquement, dans les Baofeng-888, quelque chose que les Chinois ont fait de mal. Non seulement il y a 3 volts, il tombe également à 0,7 volts sous charge et, bien sûr, le circuit ne fonctionne pas.

Afin de contourner cela, un minuscule convertisseur DC-DC de 1,2 à 3,3 volts avec Aliexpress et un connecteur externe pour connecter n'importe quelle batterie AA ont été ajoutés.

Et par défaut, lorsque rien n'est inséré dans le connecteur, le circuit essaie d'être alimenté par la station radio.

À quoi ressemble le circuit:



Coupable de la célébration:



Comment faire une double prise (connecteur KENWOOD) pour une station de radio:



Deux fiches 3,5 et 2,5, enroulées ensemble avec du ruban électrique - bien sans elle.

Logement


Il n'y a rien de particulièrement compliqué ici, la seule chose que j'ai eu à bricoler est une fenêtre en forme de lambda. Il s'est avéré assez tortueux, mais un peu comme :)

Il a fait un dremel, puis l'a collé avec du ruban adhésif sur le côté avant, et a versé de la colle du pistolet à colle sur le côté opposé, a noyé la LED dedans, qui s'allume lorsque la transmission est en cours.

Il n'y a pas encore de connecteur d'alimentation externe.

À l'extérieur:



À l'intérieur:



Tous ensemble:



Résumé


En général, j'ai réalisé mon rêve d'enfance et bien qu'il soit irrationnel, son accomplissement réchauffe mon âme adulte. J'espère que quelqu'un éprouve des sentiments similaires. :)

Firmware


Bits FUSE pour ATTINY85 (8Mhz, puissance> = 2.7v):

0xE2 LOW
0xDD HIGH
0xFF EXTENDED

Télécharger les fichiers du firmware
Dans un proche avenir, j'essaierai de peigner et de définir les sources de tout cela.



Remarque


Puisque mon frère n'a pas travaillé avec les OVNIS, j'ai décidé de publier cet article sur Habré en mon nom propre. Quand je l'ai récupéré - vous savez - j'étais heureux quand j'étais enfant. Et je pensais qu'elle méritait l'attention de la habrasociety.

Elle vit avec moi avec la station de radio YAESU et fonctionne très bien, alimentée par la station elle-même.

Les nouvelles versions du firmware et les fichiers qui s'y rapportent peuvent être trouvés sur le blog de mon frère, protocoloder.ru .

Eh bien, puisque j'ai été directement impliqué dans le développement et que j'ai monté la même chose moi-même, je vais essayer de répondre à toutes les questions à ce sujet.

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


All Articles