Penganalisa-visualisator spektrum audio berbasis Arduino



Menurut Anda apa yang dilakukan gadis-gadis ketika mereka berkumpul? Pergi berbelanja, berfoto, pergi ke salon kecantikan? Ya, tapi tidak semua orang melakukannya. Artikel ini akan membahas bagaimana dua gadis memutuskan untuk merakit perangkat elektronik dengan tangan mereka sendiri.

Mengapa tepatnya penganalisis spektrum-visualisasi?


Bagaimanapun, ada cukup banyak solusi perangkat lunak untuk masalah ini, dan ada juga banyak opsi untuk implementasi perangkat keras. Pertama, saya benar-benar ingin bekerja dengan sejumlah besar LED (karena kami sudah mengumpulkan kubus yang dipimpin, masing-masing untuk diri kita sendiri, tetapi dalam ukuran kecil), dan kedua, mempraktikkan pengetahuan yang diperoleh dalam pemrosesan sinyal digital dan, dalam ketiga, sekali lagi berlatih bekerja dengan besi solder.

Pengembangan Perangkat


Karena mengambil solusi yang sudah jadi dan melakukannya dengan ketat sesuai dengan instruksi itu membosankan dan tidak menarik, jadi kami memutuskan untuk mengembangkan sirkuit sendiri, hanya mengandalkan sedikit pada perangkat yang sudah dibuat.

Sebagai tampilan, kami memilih matriks LED 8x32. Dimungkinkan untuk menggunakan matriks 8x8 yang sudah jadi dan merakitnya, tetapi kami memutuskan untuk tidak menyangkal kesenangan duduk di malam hari dengan besi solder, dan oleh karena itu memasang display sendiri dari LED.

Untuk mengontrol tampilan, kami tidak menemukan sepeda dan menggunakan sirkuit kontrol dengan indikasi dinamis. Yaitu kami memilih satu kolom, menyalakannya, kolom yang tersisa pada saat itu padam, lalu kami memilih berikutnya, menyalakannya, sisanya padam, dll. Karena fakta bahwa mata manusia tidak sempurna, kita dapat mengamati gambar statis pada layar.
Mengikuti jalan yang paling tidak resistan, diputuskan bahwa akan bijaksana untuk mentransfer semua perhitungan ke pengontrol Arduino.

Dimasukkannya baris dalam kolom dilakukan dengan membuka kunci yang sesuai. Untuk mengurangi jumlah pin output controller, kolom dipilih melalui decoder (dengan demikian, kita dapat mengurangi jumlah garis kontrol menjadi 5).


Sebagai antarmuka untuk menghubungkan ke komputer (atau perangkat lain yang mampu mengirimkan sinyal audio), konektor TRS (mini-jack 3,5 mm) dipilih.

Perakitan perangkat


Kami memulai perakitan perangkat dengan membuat model panel depan perangkat.



Bahan untuk panel depan dipilih plastik hitam setebal 5 mm (karena diameter lensa dioda juga 5 mm). Kami menandainya sesuai dengan tata letak yang dikembangkan, memotong panel depan dengan ukuran yang diperlukan dan mengebor lubang pada plastik untuk LED.





Dengan demikian kita mendapatkan panel depan yang sudah jadi tempat Anda sudah bisa memasang display.



Sebagai LED untuk matriks, digunakan dua warna (merah-hijau) dengan katoda umum GNL-5019UEUGC. Sebelum memulai perakitan matriks, dipandu oleh aturan "kontrol ekstra tidak akan merusak" semua LED, yaitu 270 pcs. (diambil dengan margin untuk berjaga-jaga), diuji untuk operabilitas (untuk ini perangkat pengujian dirakit, termasuk konektor, resistor 200 Ohm dan catu daya 5V).



Selanjutnya, kami memperluas LED sebagai berikut. Anoda dioda merah dan hijau ditekuk ke satu sisi (ke kanan), katoda ditekuk ke sisi lain, sambil memastikan bahwa katoda lebih rendah dari anoda. Dan kemudian pada 90 ° kita menekuk katoda.



Kami memulai perakitan matriks dari sudut kanan bawah, perakitan dilakukan dalam kolom.





Mengingat aturan "kontrol ekstra tidak akan merugikan", setelah satu atau dua kolom bergabung, kami memeriksa kinerjanya.



Matriks yang telah selesai adalah sebagai berikut.



Tampak belakang:



Menurut skema yang dikembangkan, kami menyolder skema manajemen baris dan kolom, melepas kabel dan tempat di bawah Arduino.



Diputuskan juga untuk mendapatkan tidak hanya frekuensi amplitudo, tetapi juga spektrum fase-frekuensi, serta memilih jumlah sampel untuk ditampilkan (32,16,8,4). Untuk ini, 4 sakelar ditambahkan: satu untuk memilih jenis spektrum, dua untuk memilih jumlah sampel, dan satu untuk menghidupkan dan mematikan perangkat.

Menulis program


Sekali lagi, kami dipandu oleh aturan kami dan memastikan bahwa tampilan kami sepenuhnya operasional. Untuk melakukan ini, kami menulis program sederhana yang benar-benar menerangi semua LED pada layar. Secara alami, menurut hukum Murphy, beberapa LED tidak memiliki arus, dan perlu diganti.



Setelah memastikan bahwa semuanya berfungsi, kami mulai menulis kode program utama. Ini terdiri dari tiga bagian: menginisialisasi variabel yang diperlukan dan membaca data, memperoleh spektrum sinyal menggunakan transformasi Fourier cepat, mengeluarkan spektrum yang diperoleh dengan format yang diperlukan untuk tampilan.

Akhiri perakitan perangkat


Pada akhirnya, kami memiliki panel depan, dan di bawahnya ada banyak kabel yang perlu ditutup dengan sesuatu, dan sakelar perlu diperbaiki pada sesuatu. Sebelum itu, ada pemikiran untuk membuat kasing dari sisa-sisa plastik, tetapi kami tidak cukup membayangkan bagaimana kelihatannya secara spesifik dan bagaimana melakukannya. Solusi untuk masalah ini datang secara tak terduga. Berjalan di sekitar toko perangkat keras, kami menemukan pot bunga plastik yang ternyata sangat sempurna ukurannya.



Masalahnya tetap kecil, tandai lubang untuk konektor, kabel dan sakelar, serta potong kedua panel samping dari plastik.



Hasilnya, setelah mengumpulkan semuanya, menghubungkan perangkat ke komputer, kami mendapatkan yang berikut:

Respons frekuensi (32 sampel):



Respons frekuensi (16 sampel):



Respons frekuensi (8 sampel):



Respons frekuensi (4 sampel):



Fase-frekuensi spektrum:



Tampak belakang:



Video pengoperasian perangkat


Untuk kejelasan, videonya diambil dalam gelap. Perangkat menampilkan spektrum frekuensi amplitudo pada video, dan kemudian pada 7 detik kami beralih ke mode spektrum frekuensi-fase.



Daftar barang yang dibutuhkan


  1. GNL-5019UEUGC LED - 256 pcs. (Untuk tampilan)
  2. Transistor npn KT863A - 8 pcs. (Untuk manajemen string)
  3. Transistor pnp 32740 - 32 pcs. (Untuk mengelola kolom)
  4. 1kΩ Resistor - 32 pcs. (Untuk membatasi arus basis transistor pnp)
  5. Decoder 3/8 IN74AC138 - 4 pcs. (Untuk memilih kolom)
  6. Decoder 2/4 IN74AC139 - 1 pc. (Untuk pengurai cascading)
  7. Piring pemasangan 5x10cm - 2 pcs.
  8. Loop
  9. Arduino Pro micro - 1 pc.
  10. Mini-jack 3.5mm - 1 pc.
  11. Ganti - 4 pcs.
  12. Plastik hitam 720 * 490 * 5 mm - 1 lembar. (Untuk panel depan)
  13. Pot bunga hitam 550 * 200 * 150 mm - 1 pc. (Untuk perumahan)

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


All Articles