
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:00

Ini adalah projek saya untuk salah satu kelas universiti saya yang dipanggil SMP. Semasa kami menggunakan papan pengembangan STM32F103RB, saya membuat projek saya berdasarkan ini, bermula dari meter VU sederhana. Saya kemudian menambahkan beberapa ciri tambahan seperti sokongan Bluetooth untuk menyiarkan nilai dari ADC ke aplikasi Android untuk membuat carta dB ringkas.
Langkah 1: Komponen yang Digunakan
- Papan pengembangan STM32F103RB
- Modul bluetooth HC-05 zs040
- Panel meter VU analog (pautan)
- Mikrofon electret
- LM324N quad op-amp
- 2 transistor TIP120
- 3 1N4148 dioda
- Pelbagai kapasitor dan perintang
Walaupun anda boleh mengeluarkan litar ini dari rel 5V papan, saya juga menggunakan bekalan kuasa 5V luaran.
Langkah 2: Pengikut Sampul


Bahagian utama reka bentuk ini adalah pengikut sampul yang mengambil isyarat dari mikrofon electret dan mengeluarkan voltan yang setara dengan amplitud isyarat mikrofon.
Isyarat mentah dari mikrofon pertama kali dilewatkan melalui penguat dengan keuntungan 150.
Sinyal kemudian dihantar melalui pengikut sampul sebenar yang hanya mengeluarkan bahagian isyarat positif.
Bahagian terakhir adalah mengurangkan voltan offset 1.65V dari output pengikut sampul untuk memberikan isyarat 0 V tanpa suara, 1,65 V untuk suara sederhana dan 3,3 V untuk bunyi kuat yang harus serasi dengan yang terpasang ADC dewan.
Pengikut sampul surat ini dilaksanakan dari jawapan StackExchange yang hebat ini.
Langkah 3: PWM untuk Analog Meter
Untuk mendapatkan jarum tolok, saya telah mengkonfigurasi pemasa TIM4 papan mikrokontroler dengan frekuensi sekitar 500 Hz.
Dengan berturut-turut mencuba kitaran tugas yang berbeza, saya telah menyelesaikan beberapa nilai yang cukup untuk membuat jarum meningkat dari 0 hingga 100.
Saya akan memperincikan proses memaparkan nilai tepat pada langkah seterusnya dengan menerapkan beberapa matematik.
Langkah 4: Penentukuran Mikrofon


Setelah pengikut sampul selesai, saya kemudian menulis beberapa kod mudah untuk menggunakan ADC dan mengesahkan bahawa nilai baca sememangnya berubah sesuai dengan ketegaran di dalam bilik.
Untuk "menterjemahkan" nilai ini menjadi bacaan dB sebenar, saya telah menggunakan penjana nada dalam talian dengan frekuensi 550 Hz dan Android saya untuk memberikan bacaan rujukan.
Saya telah memplot nilai-nilai tersebut dan menggunakan MatLAB's Curve Fit Tool untuk mendapatkan fungsi yang memetakan bacaan ADC dengan anggaran sebenar tahap dB (atau sekurang-kurangnya cukup dekat dengan bacaan telefon saya).
Kita dapat melihat bahawa ini mengikuti skala logaritma mikrofon.
Saya juga melakukan perkara yang sama untuk memetakan kedudukan jarum ke nilai PWM. Saya mengumpulkan nilai-nilai tersebut dengan menambahkan nilai PWM sebanyak 10 berturut-turut sehingga keperluan membaca pada skala.
Menggabungkan 2 fungsi tersebut, saya mendapat cara mudah untuk memaparkan bacaan dari ADC hingga nilai sebenar pada penunjuk tolok.
Langkah 5: Aplikasi Android
Aplikasi ini menggunakan perpustakaan keren ini untuk berkomunikasi melalui siri Bluetooth untuk bertukar maklumat bait.
Peringatan utama sistem ini ialah panjang perkataan maksimum yang dihantar melalui Bluetooth adalah 8 bit dan nilai ADC dinyatakan sebagai 12 bit. Untuk mengatasi masalah ini, saya membahagikan satu nilai ADC menjadi 2 nilai 6 bit yang terpisah (MSB dan LSB) dengan baki 2 bit yang digunakan untuk mengenal pasti jenis mesej (MSB, LSB, CHK).
Oleh itu, untuk satu nilai ADC yang ingin disiarkan, kami membahagikan nilai sebenar menjadi 2 mesej. Untuk memeriksa integriti mesej tersebut, saya menghantar mesej ketiga dengan XOR dari 2 mesej pertama.
Setelah nilai integriti diperiksa, kita dapat menerapkan fungsi yang sama untuk mendapatkan tahap dB dan memplotnya ke carta langsung kita.
Langkah 6: Ringkasan

Walaupun bahagian mikro pengawal projek ini berfungsi dengan cukup baik untuk menunjukkan ketegaran di dalam bilik, saya menghadapi beberapa masalah semasa menghantar data melalui Bluetooth kerana kehilangan paket.
Kod sumber untuk projek ini boleh didapati di sini:
- Aplikasi pendamping Android - repo
- Kod mikrokontroler - repo
Jangan ragu untuk menyumbang sekiranya anda merasakan ini berguna dengan cara apa pun.
Disyorkan:
Baca Meteran Elektrik dan Gas (Belgian / Belanda) dan Muat Naik ke Thingspeak: 5 Langkah

Baca Meteran Elektrik dan Gas (Belgian / Belanda) dan Muat Naik ke Thingspeak: Sekiranya anda bimbang tentang penggunaan tenaga anda atau hanya sedikit kutu buku, anda mungkin ingin melihat data dari meter digital baru anda yang menarik pada telefon pintar anda. projek kami akan memperoleh data semasa dari elektrik digital Belgia atau Belanda
Meteran Mikro Baru untuk Kamera Voigtländer Lama (vito Clr): 5 Langkah

Meteran Mikro Cahaya Baru untuk Kamera Voigtländer Lama (vito Clr): Bagi semua orang, yang bersemangat untuk kamera analog lama dengan meter cahaya binaan, terdapat satu masalah. Oleh kerana kebanyakan kamera ini dibina pada tahun 70-an / 80-an, sensor foto yang digunakan sudah sangat tua dan mungkin berhenti berfungsi dengan betul. Dalam
Cara Membaca Pelbagai Nilai Analog Menggunakan Satu Pin Analog: 6 Langkah (dengan Gambar)

Cara Membaca Beberapa Nilai Analog Menggunakan Satu Pin Analog: Dalam tutorial ini, saya akan menunjukkan kepada anda cara membaca pelbagai nilai analog dengan hanya menggunakan satu pin input analog
Arduino Analog Nilai Analog: 4 Langkah

Arduino Analog Value Plotter: Beberapa ketika yang lalu, saya fikir sangat berguna untuk mempunyai grafik untuk output analog saya. Ini akan membantu menyahpepijat keluaran saya, memberi saya idea umum mengenai had sensor dan yang lainnya, dan malah menjadi antara muka yang cukup keren untuk sensor apa pun
Litar Raspberry Pi GPIO: Menggunakan Sensor Analog LDR Tanpa ADC (Penukar Analog ke Digital): 4 Langkah

Litar GPIO Raspberry Pi: Menggunakan Sensor Analog LDR Tanpa ADC (Analog ke Penukar Digital): Dalam Instruksional terdahulu kami, kami telah menunjukkan kepada anda bagaimana anda boleh menghubungkan pin GPIO Raspberry Pi anda ke LED dan suis dan bagaimana pin GPIO boleh Tinggi atau Rendah. Tetapi bagaimana jika anda ingin menggunakan Raspberry Pi anda dengan sensor analog? Sekiranya kami ingin menggunakan