Nostalgia for Half Life - menciptakan kotak dekoder untuk stasiun radio untuk menerima suara dan mengakhiri suara dalam gaya menggabungkan


Sekali waktu, ketika pohon-pohon besar, ada penembak Half-Life, yang kelanjutannya masih ditunggu - ini sudah menjadi buah bibir.

Ada lawan seperti Combine (Combine Soldiers) - orang berubah oleh penjajah.
Selama permainan, Anda bisa mendengar percakapan mereka di radio - dan saya hanya memimpikan stasiun radio yang akan membuat suara terlihat seperti mereka dan memiliki suara yang sama ketika siaran berakhir.

Setelah banyak waktu, saya masih memutuskan untuk memenuhi impian saya.

Negosiasi seperti ini:


Pada saat itu, saya benar-benar bermimpi membuat stasiun radio saya memiliki setidaknya bunyi roger yang sama seperti dalam negosiasi ini. Siapa yang tidak tahu apa itu roger beep - sinyal untuk mengakhiri transmisi, yang terdengar di akhir setiap pesan.

Dalam permainan, nadanya berubah tergantung pada prajurit, di sini ada sesuatu di antaranya:


Maka sulit bagi saya untuk melakukan ini, tetapi pengembangan mikroprosesor saat ini telah memungkinkan tidak hanya untuk dengan mudah mengulangi ini, tetapi juga untuk memperlambat suara sehingga bahkan lebih mirip dengan apa yang ada dalam permainan.

Inti dari skema ini adalah prosesor dari perusahaan ATMEL - ATTINY85.

Dan ya - pemrosesan audio real time pada ATTINY85 kecil - sangat mungkin :)

Hasil karya pada contoh suara Geralt of Rivia


Suara asli


Suara yang dimodifikasi


Hidup tidak terdengar begitu tuli dan lebih jelas. Di sini, karena banyak transformasi dan transcoding, ini terjadi, tetapi gambaran keseluruhan, saya pikir, dapat dimengerti.

Kita dapat mengatakan bahwa ini semua "hanya untuk bersenang-senang", tetapi jika Anda menghapus transformasi suara, maka skema ini memungkinkan Anda untuk menambahkan bip roger ke stasiun radio mana pun jika memiliki konektor untuk aksesori seperti "kenwood" (konektor ganda yang sama).

Saya mengujinya pada Baofeng-888s, dan tidak memiliki bunyi bip roger - pada dasarnya, kemampuan untuk melakukan ini, atau, misalnya, berebut, tidak hanya menyenangkan untuk dirinya sendiri.

Bagaimana cara kerja firmware?


Padahal, tidak ada yang rumit di sana.

Mode periferal kecepatan rendah digunakan (melalui PLLCSR) - dalam hal ini, ATTINY dapat diaktifkan dari 2,7 volt dan ini memberikan frekuensi sampling sekitar 9kHz.

Itu mungkin untuk menggunakan mode kecepatan tinggi, yang akan memberikan frekuensi sekitar 18kHz, tetapi kemudian akan diperlukan untuk menggunakan tegangan suplai 4,5 volt, dan ada masalah dengan ini.

Ketika Anda menekan tombol transmisi pada garis singgung, interupsi dihasilkan dan ATTINY bangun, menyalakan mode transmisi ke stasiun radio dan menggunakan ADC pada frekuensi sekitar 8,9 kHz untuk mendigitalkan suara dari mikrofon ke dalam buffer siklik:



Ketika nilai berikutnya dimasukkan ke dalam buffer, itu dicampur dengan yang sebelumnya - rata-rata ditemukan, mis. rumusnya adalah: (oldValue+newValue)/2.

Ini memberi kita kesempatan untuk mengalami kasus ketika makna lama belum menyerah, dan yang baru telah menggantikannya. Dan ini akan terjadi cepat atau lambat, karena kecepatan baca dan tulis berbeda.
Pointer ke buffer meningkat setelah setiap operasi seperti itu, ketika mereka mencapai maksimum, mereka direset ke nol - yaitu. ke awal buffer - itu sebabnya ini disebut melingkar.

ATTINY tidak memiliki banyak memori - hanya 500 byte, dalam hal ini 450 byte akan digunakan di bawah buffer cincin, karena memori juga diperlukan untuk variabel dan stack.

Buffer memiliki dua pointer - satu adalah data tertulis, yang lain dibaca dan rasio ini hanya mengatur kecepatan baca relatif terhadap kecepatan tulis.

Ketika membaca data ditransmisikan melalui PWM dan setelah filter penghalusan, itu berubah menjadi suara, yang masuk ke jalur mikrofon stasiun radio.

By the way, melalui PWM ternyata kualitas yang sangat baik dan dapat digunakan untuk tempat di mana Anda perlu memainkan beberapa jenis suara (kotak musik, hadiah, dll.), Dan ATTINY memiliki kesimpulan yang cukup untuk menghubungkan bahkan SD - dan kemudian Anda bahkan dapat seluruh komposisi untuk dimainkan.

Tetapi kembali ke skema kami: ketika Anda melepaskan tombol, ATTINY masih memegang mode transmisi, menghentikan digitalisasi, dan memberikan suara digital bip roger melalui PWM, kemudian mematikan mode transmisi dan tidur untuk mengurangi konsumsi daya.

Suara, karena membutuhkan banyak ruang - sekitar 5 kilobyte - memakan sebagian memori untuk program - karena memori ini cukup untuk kode - ini memecahkan masalah kurangnya memori.

Sedangkan untuk tingkat pelambatan atau akselerasi suara, koefisien yang diinginkan harus direkam dalam alamat 0 EEPROM ATTINY, dan, karenanya, dapat diubah dalam kisaran dari 0 hingga 255.

Contoh nilai:
30 mempercepat suara
55 tidak berubah
75 suara melambat

Skema


Perangkat itu sendiri akan menjadi tangen (atau lebih tepatnya, manipulator) ke stasiun radio dan akan bekerja dengannya melalui konektor aksesori Kenwood standar.

Skema ini sangat, sangat sederhana, mudah dipasang "di lutut".

Saya memesan modul penguat mikrofon di Aliexpress, dan saya sarankan hanya jenis modul ini, yang ada di sini di foto. Ini didukung oleh 3-5v, biayanya sekitar $ 2.

Seorang pembicara membutuhkan sekitar 8 ohm, 0,5-1 watt.

Tombol - apa saja, bekerja di sirkuit. LED apa pun dengan kemampuan untuk bekerja mulai 3 volt, baik, atau dengan resistor yang sesuai.



Ada satu fitur yang tidak termasuk dalam rangkaian ini - catu daya 5 volt untuk aksesori disediakan di konektor untuk aksesori, tetapi secara khusus, di Baofeng-888, sesuatu yang dilakukan orang Cina salah. Tidak hanya ada 3 volt, tetapi juga turun menjadi 0,7 volt di bawah beban dan, tentu saja, sirkuit tidak berfungsi.

Untuk menyiasatinya, konverter DC-DC mungil dari 1,2 hingga 3,3 volt dengan Aliexpress dan konektor eksternal untuk menghubungkan baterai-AA ditambahkan.

Dan secara default, ketika tidak ada yang dimasukkan ke dalam konektor, sirkuit akan mencoba untuk ditenagai oleh stasiun radio.

Seperti apa rakitan rangkaian:



Pelakunya perayaan:



Cara membuat colokan ganda (konektor KENWOOD) untuk stasiun radio:



Dua colokan 3.5 dan 2.5, luka bersama dengan pita listrik - banyak tanpa itu.

Perumahan


Tidak ada yang rumit di sini, satu-satunya hal yang harus kupikirkan adalah jendela dalam bentuk lambda. Ternyata cukup bengkok, tapi sedikit seperti :)

Dia membuat dremel, lalu menempelkannya dengan pita perekat di sisi depan, dan menuangkan lem dari lem di sisi yang berlawanan, menenggelamkan LED ke dalamnya, yang menyala ketika transmisi sedang berlangsung.

Belum ada konektor daya eksternal.

Di luar:



Di dalam:



Bersama-sama:



Ringkasan


Secara umum, saya memenuhi impian masa kecil saya dan meskipun itu tidak rasional, pemenuhannya menghangatkan jiwa dewasa saya. Saya harap seseorang mengalami perasaan yang sama. :)

Firmware


FUSE bits untuk ATTINY85 (8Mhz, power> = 2.7v):

0xE2 RENDAH
0xDD TINGGI
0xFF DIPERPANJANG

Unduh file firmware
Dalam waktu dekat saya akan mencoba menyisir dan menata sumber semua ini.



Catatan


Karena kakak saya tidak berolahraga dengan UFO, saya memutuskan untuk menerbitkan artikel ini di Habré atas nama saya sendiri. Ketika saya mengumpulkannya - Anda tahu - saya senang sebagai seorang anak. Dan saya berpikir bahwa dia layak mendapatkan perhatian dari masyarakat adat.

Dia tinggal bersama saya dengan stasiun radio YAESU, dan bekerja dengan baik, didukung oleh stasiun itu sendiri.

Versi firmware baru dan file yang terkait dengannya dapat ditemukan di blog protocoder.ru milik kakak saya.

Ya, karena saya terlibat langsung dalam pengembangan dan mengumpulkan hal yang sama sendiri, saya akan mencoba menjawab pertanyaan tentang itu.

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


All Articles