Helm Pengubah Suara Spartan: 14 Langkah (dengan Gambar)
Helm Pengubah Suara Spartan: 14 Langkah (dengan Gambar)
Anonim
Helm Pengubah Suara Spartan
Helm Pengubah Suara Spartan
Helm Pengubah Suara Spartan
Helm Pengubah Suara Spartan

Halo! Kami adalah tim yang terdiri dari 4 siswa dari sekolah Politeknik Universitas Sorbonne:

  • Louis Buchert
  • Bilal Melehi
  • Bao Tinh Piot
  • Marco Longépe

Proyek ini direalisasikan sebagai bagian dari studi kami, dan bertujuan untuk menggunakan sejumlah alat, serta menunjukkan pencapaian teoretis kami.

Objek terkenal itu berupa helm yang mirip dengan pahlawan video game tertentu yang namanya akan hilang. Untuk sisi desain juga kami memiliki layar yang menampilkan transformasi Fourier dari sinyal audio yang keluar dari speaker. Tujuan dari headset ini adalah untuk mengubah suara operator secara real time menggunakan sejumlah efek yang dapat dipilih.

Tujuan pendidikan:

  • Tangkap suara dari mikrofon
  • Memperkuat, menyaring, mendigitalkan sinyal
  • Sadarilah FFT dari sebuah sinyal
  • Tampilkan FFT ini di layar
  • Sintesis sinyal
  • Keluarkan suara dari speaker
  • Sadari efek pada suara audio (gema, gema, dll …)

Sekarang kita telah meletakkan latar belakang dan mempresentasikan proyek, saatnya untuk mendapatkannya!

Langkah 1: Persyaratan 1/3 - Perangkat Keras

Persyaratan 1/3 - Perangkat Keras
Persyaratan 1/3 - Perangkat Keras

Agar berhasil membuat helm Anda, kami memerlukan beberapa perangkat keras untuk menjalankan perangkat.

  • DE0-Nano-SoC Development Board oleh Terasic + Layar LCD TFT Adafruit (Arduino)
  • Akses ke printer 3D untuk membuat helm (Jika Anda seorang mahasiswa pindah lebih dekat ke universitas Anda, beberapa memiliki lab yang dapat diakses oleh siswa)
  • Komputer dengan koneksi internet dan konektivitas minimum (USB, Ethernet). Komputer Anda juga harus memiliki prosesor yang kuat karena kompilasi program di Qsys membutuhkan banyak waktu.
  • (Tidak wajib) Printer yang membuat Printed Circuit Boards (PCB) dari file Gerber untuk mengecilkan ukuran sirkuit + solder untuk meletakkan komponen pada PCB.
  • (Sangat Direkomendasikan): Kopi yang enak untuk menikmati pekerjaan Anda dengan Instruksi kami:)

Langkah 2: Persyaratan 2/3 - Komponen untuk Sirkuit Anda

Persyaratan 2/3 - Komponen untuk Sirkuit Anda
Persyaratan 2/3 - Komponen untuk Sirkuit Anda
Persyaratan 2/3 - Komponen untuk Sirkuit Anda
Persyaratan 2/3 - Komponen untuk Sirkuit Anda
Persyaratan 2/3 - Komponen untuk Sirkuit Anda
Persyaratan 2/3 - Komponen untuk Sirkuit Anda

Berikut adalah komponen yang dibutuhkan untuk sirkuit Anda:

  • Texas Instrument LM386 AB penguat audio kelas
  • Papan tempat memotong roti
  • Set kabel Pria-Pria, Pria-Wanita
  • LM358P Konverter Digital-ke-Analoh (DAC)
  • Pembicara
  • Mikrofon kecil yang digunakan dalam rangkaian analog
  • Satu set resistor permainan dari 1kOhm hingga 220kOhm
  • Kapasitor 1.5nF
  • Kapasitor 50nF
  • Kapasitor 100nF
  • Kapasitor 100uF
  • Kapasitor 220uF
  • x4 Kapasitor 10uF

Langkah 3: Persyaratan 3/3 - Perangkat Lunak

Persyaratan 3/3 - Perangkat Lunak
Persyaratan 3/3 - Perangkat Lunak
Persyaratan 3/3 - Perangkat Lunak
Persyaratan 3/3 - Perangkat Lunak

Last but not least, Anda akan membutuhkan perangkat lunak:

  • Quartus 15.1: Versi Lite
  • Kompiler C (gcc misalnya)
  • Altium untuk Desain PCB
  • Suite tertanam SoC Altera untuk berkomunikasi dengan peta SoC

  • Dempul

Langkah 4: Sirkuit Masukan

Sirkuit Masukan
Sirkuit Masukan
Sirkuit Masukan
Sirkuit Masukan
Sirkuit Masukan
Sirkuit Masukan
Sirkuit Masukan
Sirkuit Masukan

Mari kita membangun sirkuit. Gunakan gambar sirkuit di atas untuk merakitnya di papan tempat memotong roti Anda. Anda juga akan melihat gambar BreadBoard dan sirkuit di dalamnya untuk melihat bagaimana pin terhubung. Seluruh rangkaian ditenagai dengan Arus Langsung 5V (DC). Untuk ini, Anda dapat menggunakan baterai 5V dengan konverter USB-B atau generator fungsi.

Beberapa pengingat:

  • Catu daya 5V dan ground terhubung pada garis horizontal terpisah dari papan tempat memotong roti
  • Jika Anda ingin menghubungkan 2 komponen secara paralel, letakkan di garis yang sama pada papan tempat memotong roti
  • Jika Anda ingin menghubungkan 2 komponen serial, komponen harus hanya satu pin di jalur umum papan tempat memotong roti.

Jangan ragu untuk menonton tutorial khusus tentang cara menggunakan papan tempat memotong roti dan membuat sirkuit di atasnya. Jangan lupa juga untuk membaca dengan seksama posisi pin Audio Amplifier LM358P (lihat gambar diatas)

Langkah 5: Sirkuit Output

Sirkuit Keluaran
Sirkuit Keluaran
Sirkuit Keluaran
Sirkuit Keluaran
Sirkuit Keluaran
Sirkuit Keluaran
Sirkuit Keluaran
Sirkuit Keluaran

Instruksi yang sama seperti Langkah 4. Empat input: SDI, bukan CS, SCK, bukan LDAC berasal dari DE0-Nano-Soc Board Anda. Kita akan melihat nanti bagaimana cara menghasilkannya.

Jangan lupa baca baik-baik posisi pin Audio Amplifier LM386 (lihat gambar di atas)

Langkah 6: [OPSIONAL] Membuat Printed Circuit Borad dan Komponen Solder

[OPSIONAL] Membuat Komponen Borad dan Solder Sirkuit Tercetak
[OPSIONAL] Membuat Komponen Borad dan Solder Sirkuit Tercetak
[OPSIONAL] Membuat Komponen Borad dan Solder Sirkuit Tercetak
[OPSIONAL] Membuat Komponen Borad dan Solder Sirkuit Tercetak
[OPSIONAL] Membuat Komponen Borad dan Solder Sirkuit Tercetak
[OPSIONAL] Membuat Komponen Borad dan Solder Sirkuit Tercetak

Jika Anda cukup beruntung untuk memiliki Printer Papan Sirkuit atau dapat menggunakannya, kami akan membuat Papan Sirkuit Tercetak (PCB) kami sendiri. Perhatikan bahwa langkah ini opsional. Langkah ini hanya terdiri untuk memindahkan sirkuit Anda dari papan tempat memotong roti ke PCB.

Anda akan membutuhkan 2 file GERBER ini.

File-file ini dibuat di Altium. Gunakan pada perangkat lunak printer PCB Anda untuk mencetak PCB Anda. Setelah Anda mendapatkan PCB, pastikan PCB Anda bersih dan trek tercetak dengan benar.

Sekarang inilah real deal: Solder. 2 gambar diatas adalah peta rangkaian pada PCB. Setiap komponen memiliki nama (R6, C4, MK1 dll). Gambar pada Langkah 4 dan 5 menunjukkan parameter komponen (Resistansi, konduktansi..). Tempatkan setiap komponen dari papan tempat memotong roti Anda ke PCB sesuai dengan namanya.

Setelah Anda menyolder semuanya dengan besi solder Anda, uji setiap komponen dengan voltmeter untuk memeriksa apakah ada korsleting.

Langkah 7: Pengaturan SoC

Pengaturan SoC
Pengaturan SoC
Pengaturan SoC
Pengaturan SoC

Mengenai pengaturan SoC, Anda perlu menjalankan beberapa perintah dan skrip yang disertakan dalam rangkaian tertanam SoC di dalam terminal. Untuk melakukan ini, Anda perlu menambahkan beberapa $PATH. PATH digunakan di dalam terminal untuk mengatakan mencari file di direktori yang diberikan oleh jalur saat Anda menjalankan perintah. Untuk melakukannya, ketik baris perintah berikut:

ekspor PATH=/cygdrive/c/altera_lite/15.1/quartus/sopc_builder/bin:$PATH

Kemudian ketik baris perintah untuk menghasilkan header dari file sof. Anda mendapatkan file sof dengan mengkompilasi proyek Anda di Quartus. Untuk melakukannya, ketik:./generate_header.

Langkah 8: Pemrograman C HPS

Pemrograman C HPS
Pemrograman C HPS

Kita perlu menyadari 2 hal di bagian ini, yaitu membaca membaca nilai ADC dan menuliskannya di SPI.

1. Baca nilai ADC

Alamat memori yang berisi ADC tidak dapat diakses secara langsung, bahkan sistem linux yang ada pada kartu mengatur abstraksi memori. Untuk benar-benar mengakses alamat ADC kita akan menggunakan fungsi mmap.

"h2p_lw_spi_addr=virtual_base + ((unsigned long)(ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (unsigned long)(HW_REGS_MASK));"

Instruksi ini memungkinkan offset untuk ditambahkan di awal alamat dasar untuk mencapai alamat memori yang dialokasikan untuk ADC, dan untuk melakukan pada alamat yang dihasilkan logika DAN untuk memperhitungkan masking.

Setelah itu, hanya perlu melakukan dereferensi pointer dalam program untuk mendapatkan nilainya.

2. Tulis nilai ADC di SPI

Manipulasinya identik, kali ini kami memberikan mmap offset untuk mendarat di alamat yang dialokasikan oleh SPI. Saat menulis di SPI, dokumentasi teknis menetapkan bahwa Anda harus menulis ke alamat +1 nilai adc.

"*(h2p_lw_spi_addr+1) = ((0x1 << 12) | *h2p_lw_adc_addr);"

Instruksi ini memungkinkan Anda untuk menulis ke SPI. Memang bit 4, jadi 1<<12, adalah bit yang memungkinkan untuk mengaktifkan SPI. Dengan OR logis, karena itu kami memberikan bit aktivasi dan nilai ADC ke SPI.

Langkah 9: Akuisisi Digital ADC Dari Kartu

Akuisisi Digital ADC Dari Kartu
Akuisisi Digital ADC Dari Kartu
Akuisisi Digital ADC Dari Kartu
Akuisisi Digital ADC Dari Kartu
Akuisisi Digital ADC Dari Kartu
Akuisisi Digital ADC Dari Kartu
Akuisisi Digital ADC Dari Kartu
Akuisisi Digital ADC Dari Kartu

Pertama-tama, Anda harus mengatur alamat IP Ethernet komputer Anda melalui Control Panel -> Network -> Card Parmesals. Pilih antarmuka ethernet kartu, properti, alamat ipv4 dan masukkan IP tetap, topeng dll …

Selanjutnya, sambungkan kartu dari sisi colokan listrik dengan kabel micro USB. Buka pemrogram Quartus dan luncurkan ekspor. Manipulasi ini akan diulang setelah setiap kartu dimatikan.

Ganti kabel colokan micro USB, untuk kali ini sambungkan ke jack Ethernet. Sekarang, dengan Putty, Anda perlu menghubungkan kartu melalui tautan serial. Konfigurasi terlihat di foto, idenya adalah mengganti COM5 dengan COM diikuti dengan nomor yang dapat Anda temukan di pengelola perangkat Anda (klik kanan pada logo windows untuk membukanya).

Tekan enter, Anda terhubung.

Info untuk memulai kembali proyek: - Perbaiki ip ethernet yang sesuai dengan kartu - Nyalakan kartu, setiap kali Anda menghidupkan daya, perlu untuk meletakkan "program" di bawah kuartus proyek yang dikompilasi dalam kartu. Hal ini dilakukan melalui port micro-USB - Untuk dapat menampilkan hasil program kami menggunakan lebih banyak micro USB tetapi UART - Dengan dempul yang dikonfigurasi untuk serial COM5 (atau 6 jam tangan gestinnaire periph) Hubungkan ke kartu. - Tetapkan kata sandi (passwd) - Atur alamat IP ifconfig ethxx IPchoice (IP tidak jauh dari itu untuk eth PC) - Hasilkan header menurut Qsys dengan terminal tertanam (ekspor PATH) - make - scp l exec di peta - jalankan di bawah dempul prog

Langkah 10: Perhitungan FFT

Perhitungan FFT
Perhitungan FFT

Untuk mendapatkan Transformasi Fourier Cepat dalam program C kami, kami akan menggunakan perpustakaan yang ditulis oleh Mark Borgerding: Kiss FFT. Anda dapat mengunduh perpustakaannya di sini: https://kissfft.sourceforge.net/. Menerapkan FFT pada sinyal diperlukan untuk memodifikasi dan menerapkan efek sinyal. Ini juga dapat berfungsi untuk menampilkan spektrum sinyal.

Langkah pertama dalam program C Anda adalah mengalokasikan memori untuk menyimpan hasil FFT. Ukuran memori tergantung pada jumlah titik yang digunakan untuk menghitung FFT. Semakin banyak Anda memiliki poin, semakin tepat FFT. Namun, program akan berjalan lebih lambat dan akan menggunakan lebih banyak memori. Perhatikan bahwa Anda akan mendapatkan dua array dari fungsi kiss_fft: input dan output dari fungsi (cx_in dan cx_out)

Setelah array kita diisi dengan nilai FFT baru, yaitu ketika r = Win - 1, kita memproses FFT. Mengenai tampilan, kami hanya menampilkan bagian positif dari spektrum, karena ada simetri antara bagian negatif dan bagian positif.

Mengenai sumbu horizontal, kami mengurangi nilai puncak sebesar 100*tinggi/(tinggi²) untuk membedakan puncak frekuensi utama.

Kami menggunakan menggunakan panggilan sistem usleep untuk menentukan frekuensi membaca untuk nilai-nilai ADC. Frekuensi ini saat ini diatur pada 1, 5 Hz.

Langkah 11: Menampilkan FFT

Menampilkan FFT
Menampilkan FFT
Menampilkan FFT
Menampilkan FFT

Berdasarkan contoh yang diberikan pada Layar LCD TFT Adafruit yang tersedia di sini: https://www.terasic.com/downloads/cd-rom/de0-nano-s… kami telah memprogram NIOS Dewan kami sehingga dia dapat membaca nilai ADCnya.

Jadi register ADC dibagi antara NIOS dan HPS karena nilai ADC akan digunakan untuk menampilkan FFT pada layar NIOS, dan nilai yang sama akan ditulis pada SPI untuk dikeluarkan dari papan dan akhirnya dikonversi oleh DAC untuk mendapatkan sinyal analog.

Langkah 12: Perakitan

perakitan
perakitan

Kami hampir selesai! Anda perlu merakit setiap bagian dari projet (sirkuit masuk, sirkuit keluaran, dan papan). Pastikan untuk menghubungkan bagian-bagian ke pin yang benar sesuai dengan Proyek Quartus.

  1. Rangkaian input akan mengirimkan sinyal audio yang ditangkap oleh mikrofon, diperkuat, disaring dan diimbangi.
  2. Program C yang ada pada kartu akan membaca nilai ADC seperti yang telah kita lihat sebelumnya, dan akan menuliskannya pada SPI sehingga kita dapat memulihkan nilai pada GPIO kartu.
  3. Kemudian output GPIO dari SPI akan mengirimkan informasi yang akan di-decode oleh DAC kita dan diperkuat dengan berlari untuk mencapai speaker.

Langkah 13: Efek Suara

Efek suara
Efek suara
Efek suara
Efek suara

Satu-satunya langkah yang tersisa adalah efek suara.

Efek yang tersedia adalah:

  • Filter Frekuensi Tinggi
  • Filter Frekuensi Rendah

Anda dapat beralih di antara efek berkat sebuah tombol. Tombol ini akan mengubah variabel dalam program C kita, sehingga dapat menerapkan efek yang tepat.

Langkah 14: [OPSIONAL] Membuat Helm

[OPSIONAL] Membuat Helm
[OPSIONAL] Membuat Helm
[OPSIONAL] Membuat Helm
[OPSIONAL] Membuat Helm
[OPSIONAL] Membuat Helm
[OPSIONAL] Membuat Helm

Di sini kita berada di langkah proyek yang paling manual:

  1. Pertama, kami merekatkan bagian helm yang dicetak 3D.
  2. Untuk mengisi celah di antara potongan-potongan yang direkatkan, kami menambahkan lapisan akhir menggunakan pena 3D.
  3. Kami memoles celah yang diisi dengan pena dan helm secara lebih umum sehingga lukisan itu bertahan dengan baik setelahnya.
  4. Kami mengecat helm dengan 2 lapisan: Yang pertama dalam warna hitam antrasit, dari dekat, dan yang kedua hijau primer dari jauh untuk memberikan nuansa hijau yang lebih gelap.
  5. Akhirnya kami mencetak logo sekolah kami di sisi Helm