Daftar Isi:

Memutar Lagu (MP3) Dengan Arduino Menggunakan PWM pada Speaker atau Flyback Transformer: 6 Langkah (dengan Gambar)
Memutar Lagu (MP3) Dengan Arduino Menggunakan PWM pada Speaker atau Flyback Transformer: 6 Langkah (dengan Gambar)

Video: Memutar Lagu (MP3) Dengan Arduino Menggunakan PWM pada Speaker atau Flyback Transformer: 6 Langkah (dengan Gambar)

Video: Memutar Lagu (MP3) Dengan Arduino Menggunakan PWM pada Speaker atau Flyback Transformer: 6 Langkah (dengan Gambar)
Video: MP3 module dengan Arduino, isi dan play suara MP3 module dengan arduino 2024, Juli
Anonim
Putar Lagu (MP3) Dengan Arduino Menggunakan PWM di Speaker atau Flyback Transformer
Putar Lagu (MP3) Dengan Arduino Menggunakan PWM di Speaker atau Flyback Transformer
Putar Lagu (MP3) Dengan Arduino Menggunakan PWM di Speaker atau Flyback Transformer
Putar Lagu (MP3) Dengan Arduino Menggunakan PWM di Speaker atau Flyback Transformer
Putar Lagu (MP3) Dengan Arduino Menggunakan PWM di Speaker atau Flyback Transformer
Putar Lagu (MP3) Dengan Arduino Menggunakan PWM di Speaker atau Flyback Transformer
Putar Lagu (MP3) Dengan Arduino Menggunakan PWM di Speaker atau Flyback Transformer
Putar Lagu (MP3) Dengan Arduino Menggunakan PWM di Speaker atau Flyback Transformer

Hallo teman-teman, Ini adalah instruksi pertama saya, saya harap Anda menyukainya!!

Pada dasarnya, Dalam Proyek ini saya telah menggunakan Komunikasi Serial antara Arduino saya dan Laptop saya, untuk mengirimkan data musik dari laptop saya ke Arduino. Dan menggunakan TIMER Arduino untuk memutar data sebagai sinyal PWM.

Saya ingin menyebutkan bahwa, proyek ini bukan untuk Pemula!!!.

Sebenarnya, proyek ini adalah salah satu proyek yang paling lama, karena kami harus melakukan banyak hal untuk membuatnya bekerja.

PERHATIAN

Saya telah membuat bagian kedua dari instruksi ini, yang jauh lebih mudah dan membutuhkan sedikit masalah untuk bekerja

Tautan ke Bagian Kedua (yang termudah).

Langkah 1: Hal-hal yang Kami Butuhkan untuk Proyek Ini(Persyaratan)

1. Papan Arduino (kita dapat menggunakan Papan apa saja (328, 2560) yaitu Mega, Uno, Mini, dll tetapi dengan pin tertentu yang berbeda)

2. PC atau Laptop dengan Linux (Saya telah menggunakan Fedora 29) Atau Live USB dengan Linux

3. Breadboard atau Perfboard

4. Menghubungkan Kabel

5. TC4420 (driver MOSFET atau semacamnya)

6. Power MOSFET (saluran N atau P, harap sambungkan dengan benar) (Saya telah menggunakan saluran N)

7. Speaker atau Flyback Transformer (Ya Anda membacanya dengan benar!!)

8. Catu Daya yang Sesuai (0-12V) (Saya telah menggunakan Catu Daya ATX saya sendiri)

9. Heat Sink (Saya telah menyelamatkan dari PC lama saya)

10. PC dengan Windows dan pen drive.

Untuk mengetahui detail kerja setiap komponen dan proyek ini, silakan baca langkah selanjutnya.

Saya telah membuat bagian kedua dari instruksi ini, yang jauh lebih mudah dan membutuhkan sedikit masalah untuk bekerja. Tautan ke Bagian Kedua (yang termudah).

Langkah 2: Memahami Prinsip Kerja

Ahhh!! bagian terpanjang dari instruksi, membaca dan menulis bagian ini sama-sama membosankan.

Pertama-tama, kita perlu mendapatkan Ikhtisar, bagaimana sebenarnya hal ini bekerja.

yang kita lakukan disini adalah pertama, kita mengubah lagu MP3 kita menjadi File WAV dan file ini menjadi file header C dengan menggunakan software yang ada di link. Kode C ini sebenarnya berisi sampel data 8-bit (mengapa 8-bit?? baca lebih lanjut) yang perlu kita mainkan menggunakan Arduino kita pada kecepatan atau kecepatan tetap, yang ditentukan sesuai dengan Sampling Rate kita.

Teori Sinyal Audio.

Bagi yang belum tahu apa itu Sampling Rate atau Bit Rate:-

Sampling Rate didefinisikan sebagai jumlah Sampel, kita bermain dalam satu detik (biasanya diukur dalam Hz atau KHz).

Untuk mengetahui lebih detail:-Klik Di Sini

Tingkat Sampling Standar adalah 44100 Hz (kualitas terbaik), 32000 Hz, 22050 Hz, dll

yang berarti bahwa 44100 Sampel digunakan dalam satu detik untuk menghasilkan gelombang yang sesuai.

yaitu Setiap Sampel harus dimainkan pada interval tetap 1/44100=22,67 uS.

Kemudian muncullah Kedalaman Bit dari Sinyal Audio, yang biasanya merupakan ukuran seberapa tepat suara direpresentasikan dalam audio digital. Semakin tinggi kedalaman bit, semakin akurat suara digital.

Tetapi dengan Arduino atau Micro-controller lainnya dengan clock 16Mhz memungkinkan kita untuk menggunakan kita hingga 8-bit saja. Saya akan menjelaskannya mengapa.

Ada rumus di halaman no.102 di datasheet 328p:- Datasheet

Saya tidak akan menjelaskan secara detail, mengapa saya menggunakan rumus ini.

frekuensi Sinyal = Sinyal Jam / N x (1+TOP)

Sinyal Jam = 16Mhz (papan Arduino)

N=prescaler (1 adalah nilai untuk proyek kami)

TOP=nilai 0 hingga 2^16(Untuk penghitung waktu 16-bit) (255=2^8 (8-bit) untuk proyek kami)

kita mendapatkan nilai frekuensi Sinyal = 62,5 kHz

Ini berarti frekuensi gelombang pembawa tergantung pada Kedalaman Bit.

Misalkan, jika kita menggunakan nilai TOP = 2^16=65536 (yaitu kedalaman bit 16-bit)

kemudian kita mendapatkan nilai frekuensi Signal = 244 Hz (yang tidak bisa kita gunakan)

OKK… Jadi cukup sekian teori tentang Cara Kerja Sinyal Audio, Jadi kembali ke Proyek.

Kode C yang dihasilkan untuk sebuah Lagu dapat disalin ke Arduino dan dapat dimainkan, tetapi kami membatasi pemutaran audio hingga 3 detik dengan laju pengambilan sampel 8000 Hz. Karena kode C ini adalah file teks dan karenanya tidak dikompresi, bukan didekompresi. Dan itu membutuhkan terlalu banyak ruang. (misalnya file kode C dengan audio 43 detik dengan sampel 44, 1 KHz membutuhkan ruang hingga 23 MB). Dan Arduino Mega memberi kami ruang sekitar 256 Kb.

Jadi bagaimana kita akan memutar lagu menggunakan Arduino. Itu tidak mungkin. Instruksi ini palsu. Jangan khawatir pembaca, Itu sebabnya kita perlu menggunakan semacam komunikasi antara Arduino dengan kecepatan sangat tinggi (hingga 1 Mb/s) untuk mengirim data Audio ke Arduino.

Tapi Berapa kecepatan sebenarnya yang kita butuhkan, untuk melakukan ini??

Jawabannya adalah 44000 byte per detik yang berarti kecepatan lebih dari 44000*8=325,000 Bits/s.

Kami membutuhkan perangkat lain dengan penyimpanan besar untuk mengirim data ini ke Arduino kami. Dan itu akan menjadi PC kami dengan Linux (mengapa PC dengan Linux ??? silakan baca lebih lanjut untuk mengetahui lebih banyak tentangnya.)

Ahaa…Itu artinya kita bisa menggunakan Komunikasi Serial…Tapi tunggu…serial itu mungkin hanya dengan kecepatan hingga 115200 Bits/s yang berarti (325000/115200=3) itu, tiga kali lebih lambat dari yang dibutuhkan.

Tidak, teman-teman, tidak. Kami akan menggunakan kecepatan atau Baud Rate kecepatan 500.000 Bits/s dengan kabel hingga maksimal 20-30 cm, yaitu 1,5 kali lebih cepat dari yang dibutuhkan.

Mengapa Linux, bukan Windows ???

Jadi, kita perlu mengirim sampel pada interval (juga ditentukan di atas) 1/44100=22,67 uS dengan PC kita.

Jadi bagaimana kita bisa memprogramnya untuk melakukannya??

Kita dapat menggunakan C++ untuk mengirim byte data melalui Serial pada interval menggunakan semacam fungsi tidur

seperti nanosleep, Chrono, dll, dll ….

untuk(int x=0;x

kirimData(x);

nanosleep(22000);// 22uS

}

TAPI TIDAK ITU TIDAK BEKERJA DI WINDOWS juga tidak berfungsi dengan cara ini di Linux (tetapi saya menemukan cara lain yang dapat Anda lihat di Kode saya terlampir.)

Karena kami tidak dapat mencapai perincian seperti itu menggunakan windows. Anda membutuhkan Linux untuk mencapai perincian seperti itu.

Masalah yang saya temukan bahkan dengan Linux…

kami dapat mencapai perincian seperti itu menggunakan Linux, tetapi saya tidak menemukan fungsi seperti itu untuk menidurkan program saya untuk 22uS.

Fungsi seperti nanosleep, Chrono nanosleep, dll, dll. juga tidak berfungsi, karena hanya menyediakan tidur lebih dari 100 uS. Tapi saya butuh persis, tepatnya 22 AS. Saya telah meneliti setiap halaman di google dan bereksperimen dengan semua kemungkinan fungsi yang tersedia di C/C++ tetapi tidak ada yang berhasil untuk saya. Kemudian saya datang dengan fungsi saya sendiri, yang bekerja untuk saya sebagai pesona nyata.

Dan kode saya sekarang memberikan tidur yang tepat dan tepat 1uS atau lebih !!!

Jadi kami telah membahas bagian yang sulit dan sisanya mudah …

Dan kami ingin menghasilkan sinyal PWM menggunakan Arduino dengan frekuensi tertentu juga frekuensi gelombang pembawa. (62.5KHz (seperti yang dihitung di atas) untuk kekebalan Sinyal yang baik).

Jadi, Kita perlu menggunakan apa yang disebut TIMER Arduino untuk membuat PWM. Omong-omong, saya tidak akan membahasnya secara detail, karena Anda akan menemukan banyak tutorial tentang TIMER, tetapi jika Anda tidak menemukannya, beri komentar di bawah ini, saya akan membuatnya.

Saya telah menggunakan driver TC4420 Mosfet, untuk menyimpan Pin Arduino kami, karena mereka kadang-kadang tidak dapat memberikan begitu banyak arus untuk menggerakkan MOSFET.

Begitulah kira-kira teori dari proyek ini, sekarang kita bisa melihat diagram rangkaiannya.

PERHATIAN PERHATIAN PERHATIAN

Sebenarnya, proyek ini dibuat lebih sulit dengan sengaja (saya akan memberi tahu alasannya), ada metode lain yang membutuhkan noPC hanya Arduino dan speaker di instruksi saya berikutnya. Tautan ada di sini.

*Tujuan utama dari proyek ini adalah untuk menggunakan Komunikasi Serial dan untuk mengetahui kekuatannya dan untuk mempelajari bagaimana kita dapat memprogram PC kita untuk melakukan tugas dengan tepat pada interval yang sangat baik.*

Langkah 3: Skema

Skema
Skema

Hubungkan semua Komponen seperti yang ditunjukkan pada skema. Jadi Anda memiliki dua opsi di sini: -

1. Hubungkan Speaker (Terhubung dengan 5V)

2. Hubungkan Transformator Flyback (Terhubung dengan 12V)

Saya telah mencoba keduanya. Dan keduanya bekerja dengan cukup baik.

Penafian:-

*Saya sarankan menggunakan Trafo Flyback dengan Hati-hati karena bisa berbahaya karena menghasilkan Tegangan Tinggi. Dan saya tidak bertanggung jawab atas kerusakan apa pun.*

Langkah 4: Konversi File MP3 ke WAV Menggunakan Audacity

Konversi File MP3 ke WAV Menggunakan Audacity
Konversi File MP3 ke WAV Menggunakan Audacity
Konversi File MP3 ke WAV Menggunakan Audacity
Konversi File MP3 ke WAV Menggunakan Audacity
Konversi File MP3 ke WAV Menggunakan Audacity
Konversi File MP3 ke WAV Menggunakan Audacity

Jadi, Pertama-tama, unduh perangkat lunaknya

1. Audacity, cari dan unduh dari Google

2. Untuk mengonversi File WAV ke C-Code, unduh aplikasi jendela, bernama WAVToCode

Anda dapat mempelajari cara menggunakan perangkat lunak WAVToCode dari tautan ini dan mengunduhnya dari tautan ini.

Saya juga akan memberikan langkah-langkah rinci tentang cara menggunakan kedua perangkat lunak.

Silakan Lihat foto-foto yang ditautkan dengan instruksi ini.

Pada langkah ini, kita akan mengonversi MP3 ke Wav. (Ikuti foto, Tingkat proyek harus 44100Hz)

Pada langkah selanjutnya, kita akan mengonversi file wav ke C Code.

Langkah 5: WAV ke C-Code

WAV ke C-Code
WAV ke C-Code
WAV ke C-Code
WAV ke C-Code
WAV ke C-Code
WAV ke C-Code

Ikuti foto-fotonya.

Lihat dua gambar terakhir, perubahannya harus sama persis, Huruf kapital harus kapital dan huruf kecil harus lebih kecil, Atau Anda akan mendapatkan kesalahan sintaks saat kompilasi.

(Anda dapat melihat bahwa lagu 1 menit 41s membutuhkan ruang 23mb.)

Ubah nama dan panjang lagu dengan nama dan durasi lagu Anda masing-masing.

Dan Simpan file Kode C.

Lakukan ini untuk semua Lagu yang ingin Anda mainkan dengan Arduino

Langkah 6: Buat File Final dan Jalankan Linux Anda

Buat File Final dan Jalankan Linux Anda
Buat File Final dan Jalankan Linux Anda
Buat File Final dan Jalankan Linux Anda
Buat File Final dan Jalankan Linux Anda
Buat File Final dan Jalankan Linux Anda
Buat File Final dan Jalankan Linux Anda

Tambahkan semua lagu Anda yang dikonversi ke dalam File yang disediakan di tautan ini.

Dan ikuti gambarnya.

Unggah kodenya ke Arduino, yang telah saya lampirkan.

Ingat nama file Kode C. (misalnya lifestyle, dollar, weare), karena kita harus menyebutkan nama yang sama persis ke dalam kode kita dengan case-sensitive.

Pada akhirnya jalankan Fedora Live USB Anda atau yang lain dan instal kompiler gcc dan kemudian gunakan instruksi kompilasi dari folder kompilasi program dan jalankan.

Pada akhirnya, Anda dapat mendengarkan lagu dari Speaker atau Flyback.

Terima kasih telah membaca instruksi ini dan beri komentar jika Anda menyukainya.

PERHATIAN Saya telah membuat bagian kedua dari instruksi ini, yang jauh lebih mudah dan membutuhkan sedikit masalah untuk bekerja. Tautan ke Bagian Kedua (yang termudah)

Direkomendasikan: