Isi kandungan:
- Langkah 1: Perkara yang Kami Perlu untuk Projek ini (Keperluan)
- Langkah 2: Memahami Prinsip Kerja
- Langkah 3: Skematik
- Langkah 4: Tukar MP3 ke Fail WAV Menggunakan Audacity
- Langkah 5: WAV ke C-Code
- Langkah 6: Buat Fail Akhir dan Jalankan Linux Anda
Video: Mainkan Lagu (MP3) Dengan Arduino Menggunakan PWM pada Speaker atau Flyback Transformer: 6 Steps (with Pictures)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Apa khabar semua, Ini adalah arahan pertama saya, saya harap anda akan Menyukainya !!
Pada dasarnya, dalam Projek ini saya telah menggunakan Komunikasi Bersiri antara Arduino dan Laptop saya, untuk menghantar data muzik dari komputer riba ke Arduino. Dan menggunakan PEMANDU Arduino untuk memainkan data sebagai isyarat PWM.
Saya ingin menyatakan bahawa, projek ini bukan untuk Pemula !!!.
Sebenarnya, projek ini adalah salah satu projek terpanjang, kerana kita harus melakukan banyak perkara untuk membuatnya berfungsi.
PERHATIAN
Saya telah membuat bahagian kedua dari arahan ini, yang jauh lebih mudah dan memerlukan sedikit masalah untuk berfungsi
Pautan ke Bahagian Kedua (yang paling mudah).
Langkah 1: Perkara yang Kami Perlu untuk Projek ini (Keperluan)
1. Arduino Board (kita dapat menggunakan Board apa pun (328, 2560) iaitu Mega, Uno, Mini, dll tetapi dengan pin yang berbeza)
2. PC atau Laptop dengan Linux (saya telah menggunakan Fedora 29) Atau USB Live dengan Linux
3. Breadboard atau Perfboard
4. Menyambung Wayar
5. TC4420 (Pemandu Mosfet atau sebagainya)
6. Power Mosfet (saluran N atau P, sila pasangkan dengan betul) (Saya telah menggunakan saluran N)
7. Pembesar suara atau Transformer Flyback (Ya, anda membacanya betul !!)
8. Bekalan Kuasa yang Sesuai (0-12V) (Saya telah menggunakan Bekalan Kuasa ATX saya sendiri)
9. Heat Sink (saya telah menyelamatkan dari PC lama saya)
10. PC dengan Windows dan pemacu pen.
Untuk mengetahui kaedah terperinci setiap komponen dan projek ini, sila baca langkah seterusnya.
Saya telah membuat bahagian kedua dari arahan ini, yang jauh lebih mudah dan memerlukan sedikit masalah untuk berfungsi. Pautan ke Bahagian Kedua (yang paling mudah).
Langkah 2: Memahami Prinsip Kerja
Ahhh !! bahagian terpanjang dalam pengajaran, membaca dan menulis bahagian ini membosankan.
Pertama sekali, kita perlu mendapatkan Gambaran Keseluruhan, bagaimana sebenarnya perkara ini berfungsi.
apa yang kita lakukan di sini ialah pertama, kita menukar lagu MP3 kita menjadi File WAV dan fail ini menjadi fail header C dengan menggunakan perisian, yang ada di pautan. Kod C ini sebenarnya mengandungi sampel data 8-bit (mengapa 8-bit ?? baca lebih lanjut) yang perlu kita mainkan menggunakan Arduino kita pada kadar atau kelajuan tetap, yang ditentukan mengikut Kadar Persampelan kita.
Teori Isyarat Audio.
Bagi mereka yang tidak tahu apa itu Sampling Rate atau Bit Rate: -
Kadar Persampelan didefinisikan sebagai jumlah Sampel, kita bermain dalam satu saat (biasanya diukur dalam Hz atau KHz).
Untuk mengetahui lebih lanjut dengan terperinci: -Klik Di Sini
Kadar Persampelan Piawai ialah 44100 Hz (kualiti terbaik), 32000 Hz, 22050 Hz, dll
yang bermaksud bahawa 44100 Sampel digunakan dalam satu saat untuk menghasilkan gelombang dengan sewajarnya.
i.e Setiap Sampel wajib dimainkan pada selang waktu tetap 1/44100 = 22.67 uS.
Kemudian muncul Kedalaman Bit Isyarat Audio, yang biasanya merupakan ukuran seberapa tepat suatu suara ditunjukkan dalam audio digital. Semakin tinggi kedalaman bit, suara digital lebih tepat.
Tetapi dengan Arduino atau pengawal Mikro lain dengan jam 16Mhz membolehkan kita menggunakan kita sehingga 8-bit sahaja. Saya akan menerangkannya mengapa.
Terdapat formula di halaman no.102 dalam lembar data 328p: - Lembar Data
Saya tidak akan menjelaskan secara terperinci, mengapa saya menggunakan formula ini.
kekerapan Isyarat = Isyarat Jam / N x (1 + TOP)
Isyarat Jam = 16Mhz (papan Arduino)
N = prescaler (1 adalah nilai untuk projek kami)
TOP = nilai 0 hingga 2 ^ 16 (Untuk kaunter pemasa 16-bit) (255 = 2 ^ 8 (8-bit) untuk projek kami)
kita mendapat nilai frekuensi Isyarat = 62.5 kHz
Ini bermaksud frekuensi gelombang pembawa bergantung pada Bit Depth.
Katakan, jika kita menggunakan nilai TOP = 2 ^ 16 = 65536 (iaitu kedalaman bit 16-bit)
maka kita mendapat nilai frekuensi Signal = 244 Hz (yang tidak dapat kita gunakan)
OKK… Jadi teori ini mengenai Cara Isyarat Audio berfungsi cukup, Jadi kembali ke Projek.
Kod C yang dihasilkan untuk Lagu dapat disalin ke Arduino dan dapat dimainkan, tetapi kami dibatasi sehingga pemutaran audio 3 saat dengan kadar pengambilan sampel 8000 Hz. Kerana kod C ini adalah fail teks dan oleh itu tidak dikompresi agak mampatan. Dan memerlukan terlalu banyak ruang. (mis. fail kod C dengan audio 43 saat dengan sampel 44, 1 KHz memerlukan ruang hingga 23 MB). Dan Arduino Mega kami memberi kami ruang sekitar 256 Kb.
Jadi bagaimana kita akan memainkan lagu menggunakan Arduino. Tidak mungkin. Instructable ini adalah palsu. Jangan risau pembaca, Itulah sebabnya kita perlu menggunakan beberapa jenis komunikasi antara Arduino pada kecepatan yang sangat tinggi (hingga 1 Mb / s) untuk menghantar data Audio ke Arduino.
Tetapi berapa banyak kelajuan yang kita perlukan, untuk melakukan ini ??
Jawapannya ialah 44000 bait sesaat yang bermaksud kelajuan melebihi 44000 * 8 = 325, 000 Bits / s.
Kami memerlukan periferal lain dengan simpanan besar untuk menghantar data ini ke Arduino kami. Dan itu akan menjadi PC kita dengan Linux (mengapa PC dengan Linux ??? sila baca lebih lanjut untuk mengetahui lebih lanjut mengenainya.)
Ahaa … Ini bermaksud kita boleh menggunakan Komunikasi Bersiri … Tetapi tunggu … siri boleh dilakukan pada kecepatan hanya hingga 115200 Bits / s yang berarti (325000/115200 = 3) itu, tiga kali lebih lambat daripada yang diperlukan.
Tidak, kawan saya, tidak. Kami akan menggunakan kelajuan atau Kecepatan Baud 500, 000 bit / s dengan kabel maksimum 20-30 cm, yang 1.5 kali lebih cepat daripada yang diperlukan.
Mengapa Linux, bukan Windows ???
Oleh itu, kita perlu menghantar sampel pada selang waktu (juga dinyatakan di atas) 1/44100 = 22.67 uS dengan PC kita.
Jadi bagaimana kita boleh memprogramnya untuk melakukannya ??
Kita dapat menggunakan C ++ untuk mengirim byte data melalui Serial pada selang waktu menggunakan semacam fungsi tidur
seperti nanosleep, Chrono, dll, dll …
untuk (int x = 0; x
hantarData (x);
nanosleep (22000); // 22uS
}
TETAPI TIDAK BERFUNGSI DI WINDOWS juga tidak berfungsi dengan cara ini di Linux (tetapi saya menjumpai cara lain yang dapat anda lihat dalam Kod saya yang dilampirkan.)
Kerana kita tidak dapat mencapai butiran seperti menggunakan windows. Anda memerlukan Linux untuk mencapai perincian tersebut.
Masalah yang saya dapati walaupun dengan Linux …
kita dapat mencapai perincian seperti menggunakan Linux, tetapi saya tidak menemui fungsi seperti itu untuk mematikan program saya selama 22uS.
Fungsi seperti nanosleep, Chrono nanosleep, dll, dan lain-lain. Juga tidak berfungsi, kerana ia hanya dapat tidur lebih dari 100 uS. Tetapi saya memerlukan tepat, tepatnya 22 uS. Saya telah meneliti setiap halaman di google dan bereksperimen dengan semua kemungkinan fungsi yang terdapat di C / C ++ tetapi tidak ada yang berkesan untuk saya. Kemudian saya membuat fungsi saya sendiri, yang berfungsi untuk saya sebagai daya tarikan sebenar.
Dan kod saya sekarang menyediakan tidur tepat 1uS atau lebih tinggi !!!
Oleh itu, kami telah menanggung bahagian yang sukar dan selebihnya mudah…
Dan kami ingin menghasilkan isyarat PWM menggunakan Arduino dengan frekuensi tertentu dan juga frekuensi gelombang pembawa. (62.5KHz (seperti yang dikira di atas) untuk kekebalan isyarat yang baik).
Oleh itu, Kita perlu menggunakan TIMER Arduino yang disebut untuk membuat PWM. Ngomong-ngomong, saya tidak akan membahasnya dengan lebih terperinci, kerana anda akan menjumpai banyak tutorial mengenai topik TIMER, tetapi jika anda tidak menjumpainya, maka komen di bawah saya akan membuatnya.
Saya telah menggunakan pemacu Mosfet TC4420, untuk menyelamatkan Arduino Pin kami, kerana kadangkala mereka tidak dapat memberikan arus yang banyak untuk menggerakkan MOSFET.
Jadi, itulah teori hampir projek ini, kita dapat melihat gambarajah litar sekarang.
PERHATIAN PERHATIAN
Sebenarnya, projek ini sukar dibuat secara sengaja (saya akan nyatakan mengapa), ada kaedah lain yang memerlukan noPC hanya Arduino dan pembicara di sebelah saya yang dapat disusun. Pautan ada di sini.
* Tujuan utama projek ini adalah untuk menggunakan Komunikasi Bersiri dan mengetahui kehebatannya dan untuk mengetahui bagaimana kita dapat memprogram PC kita untuk melakukan tugas dengan tepat pada selang waktu yang sangat baik. *
Langkah 3: Skematik
Sambungkan semua Komponen seperti yang ditunjukkan dalam skema. Oleh itu, anda mempunyai dua pilihan: -
1. Sambungkan Pembesar Suara (Bersambung dengan 5V)
2. Sambungkan Flyback Transformer (Bersambung dengan 12V)
Saya telah mencuba kedua-duanya. Dan kedua-duanya berfungsi dengan baik.
Penafian: -
* Saya cadangkan menggunakan Flyback Transformer with Precaution kerana boleh membahayakan kerana menghasilkan Voltan Tinggi. Dan saya tidak akan bertanggungjawab ke atas kerosakan. *
Langkah 4: Tukar MP3 ke Fail WAV Menggunakan Audacity
Jadi, Pertama sekali, muat turun perisian
1. Keberanian, carian dan muat turun dari Google
2. Untuk menukar Fail WAV menjadi C-Code, muat turun aplikasi tetingkap, bernama WAVToCode
Anda boleh belajar bagaimana menggunakan perisian WAVToCode dari pautan ini dan memuat turunnya dari pautan ini.
Saya juga akan memberikan langkah terperinci mengenai cara menggunakan kedua-dua perisian tersebut.
Sila lihat gambar yang dihubungkan dengan arahan ini.
Dalam langkah ini, kita akan menukar MP3 ke Wav. (Ikuti foto, Kadar projek mestilah 44100Hz)
Pada langkah seterusnya, kita akan menukar fail wav menjadi C Code.
Langkah 5: WAV ke C-Code
Ikuti gambarnya.
Lihat dua gambar terakhir, perubahan mesti sama persis, Huruf besar harus menjadi huruf besar dan huruf kecil harus lebih kecil, Atau anda akan mendapat ralat sintaks semasa menyusun.
(Anda dapat melihat bahawa lagu 1min 41s mengambil ruang 23mb.)
Tukar nama dan panjang lagu masing-masing dengan nama dan tempoh lagu anda.
Dan simpan fail C Code.
Lakukan ini untuk semua Lagu yang anda mahu mainkan dengan Arduino
Langkah 6: Buat Fail Akhir dan Jalankan Linux Anda
Tambahkan semua lagu anda yang ditukar ke dalam Fail yang disediakan dalam pautan ini.
Dan ikuti gambarnya.
Muat naik kod ke dalam Arduino, yang telah saya lampirkan.
Ingat nama fail C Code. (Misalnya gaya hidup, dolar, weare), kerana kita harus menyebutkan nama yang sama tepat ke dalam kod kita dengan peka huruf besar kecil.
Pada akhirnya jalankan Fedora Live USB atau yang lain dan pasang kompilator gcc dan kemudian gunakan arahan penyusun dari folder menyusun program dan jalankan.
Pada akhirnya, anda akan dapat mendengar lagu dari Speaker atau Flyback.
Terima kasih kerana membaca arahan ini dan sila beri komen jika anda menyukainya.
PERHATIAN saya telah membuat bahagian kedua dari instruksi ini, yang jauh lebih mudah dan memerlukan sedikit masalah untuk berfungsi. Pautan ke Bahagian Kedua (yang paling mudah)
Disyorkan:
PWM Dengan ESP32 - LED Peredupan Dengan PWM pada ESP 32 Dengan Arduino IDE: 6 Langkah
PWM Dengan ESP32 | LED Peredupan Dengan PWM pada ESP 32 Dengan Arduino IDE: Dalam arahan ini kita akan melihat bagaimana menghasilkan isyarat PWM dengan ESP32 menggunakan Arduino IDE & PWM pada dasarnya digunakan untuk menghasilkan output analog dari mana-mana MCU dan output analog itu boleh menjadi antara 0V hingga 3.3V (dalam kes esp32) & dari
Mainkan Lagu Dengan Arduino Menggunakan ADC to PWM pada Flyback Transformer atau Speaker: 4 Langkah
Mainkan Lagu Dengan Arduino Menggunakan ADC ke PWM pada Flyback Transformer atau Speaker: Hello Guys, Ini adalah bahagian kedua dari arahan saya yang lain (yang sangat sukar), Pada dasarnya, Dalam Projek ini, saya telah menggunakan ADC dan TIMER pada Arduino saya untuk menukar Audio Signal menjadi PWM Signal. Ini jauh lebih mudah daripada Instructa saya sebelumnya
Mainkan Lagu Menggunakan Stepper Motor !!: 11 Langkah (dengan Gambar)
Mainkan Lagu Menggunakan Stepper Motor !!: Projek ini adalah untuk merancang antara muka dinamik yang mudah, yang memungkinkan untuk berinteraksi dengan motor stepper dengan dua cara yang berbeza. Antaramuka pertama akan mengawal arah dan kelajuan motor stepper melalui penggunaan GUI sederhana, yang
Cara Dapatkan Lagu atau Bahan Lain dari DVD Sebagai MP3: 4 Langkah
Cara Mendapatkan Lagu atau Bahan Lain dari DVD Sebagai MP3: Sekiranya anda mempunyai DualDisc dengan lagu di dalamnya yang ingin anda dengarkan di Ipod, atau DVD biasa dengan mungkin trek komen yang ingin anda dengarkan Ipod, baca selebihnya untuk melakukannya. Item yang diperlukan-Komputer, tangan, otak, DVD, Ipod
Mainkan Mp3 pada Pemain Rekod Berumur 70 Tahun-tiada Perubahan Tetap: 3 Langkah
Mainkan Mp3 pada Pemain Rekod Berusia 70 Tahun-Tiada Perubahan Tetap: Apa yang saya lakukan pada dasarnya adalah membuat sambungan mono antara sumber MP3 atau Media pilihan anda, komputer anda, kaset esk, walkie-talkie, dan langsung menggunakan kabel kepada pembesar suara melalui penjepit buaya. Seperti biasa, video tutorial / demo: SILA