- Kerja Umum Radio FM
- Komponen Diperlukan
- Penerima RDA5807
- Penguat Audio
- Diagram Sirkuit Penerima FM Arduino
- Penjelasan Kode Radio Arduino FM
- Cara Kerja Radio Arduino FM
Saat ini hampir semua orang menggunakan ponsel mereka untuk mendengarkan musik, berita, podcast, dll. Tetapi belum lama ini kami semua bergantung pada Radio FM lokal untuk mendapatkan berita dan lagu terbaru, perlahan Radio ini kehilangan popularitas tetapi dalam keadaan darurat ketika internet sedang down, radio menempatkan peran penting untuk mengirimkan informasi kepada pengguna. Sinyal radio selalu ada di udara (yang disiarkan oleh stasiun), dan yang kita butuhkan hanyalah rangkaian penerima FM untuk menangkap sinyal radio tersebut dan mentransfernya ke sinyal audio. Dalam tutorial kami sebelumnya, kami juga membuat beberapa Pemancar dan Penerima FM lainnya yang tercantum di bawah ini.
- Pemancar FM Raspberry Pi
- Radio Penerima FM Raspberry Pi
- Sirkuit Pemancar FM
- Rangkaian Pemancar FM tanpa Induktor
Dalam tutorial ini kita akan membuat Penerima FM Arduino, dan menambahkannya ke gudang proyek kita. Kami akan menggunakan IC Penerima FM RDA5807 dengan Arduino dan memprogramnya, putar stasiun radio FM apa pun yang dapat disetel oleh pengguna dengan potensiometer. Kami juga akan menggunakan Audio Amplifier bersama dengan rangkaian untuk mengontrol volume output Radio FM Arduino kami, terdengar menarik bukan? Jadi, mari kita mulai.
Kerja Umum Radio FM
Stasiun Radio mengubah sinyal listrik menjadi sinyal radio, dan sinyal ini harus dimodulasi sebelum dikirim melalui antena. Ada dua metode sinyal dapat dimodulasi yaitu AM dan FM. Sesuai dengan namanya, modulasi amplitudo (AM) memodulasi amplitudo sebelum mentransmisikan sinyal sedangkan, pada modulasi frekuensi (FM), frekuensi sinyal dimodulasi sebelum dipancarkan melalui antena. Di stasiun radio, mereka menggunakan modulasi frekuensi untuk memodulasi sinyal dan kemudian mengirimkan data. Sekarang, yang kita butuhkan untuk membangun adalah penerima yang dapat disetel ke frekuensi tertentu, dan menerima sinyal tersebut, dan kemudian mengubah sinyal listrik ini menjadi sinyal audio. Kami akan menggunakanModul penerima FM RDA5807 dalam proyek ini, yang menyederhanakan sirkuit kami.
Komponen Diperlukan
- Arduino Nano
- Penerima RDA5807
- Penguat Audio
- Menghubungkan kabel
- Pot - 100K
- Papan Perf
Penerima RDA5807
RDA5807 adalah modul tuner radio FM stereo chip tunggal dengan synthesizer terintegrasi penuh. Modul ini mendukung pita frekuensi 50 - 115MHz di seluruh dunia, kontrol volume dan bisu, de-penekanan yang dapat diprogram (50 / 75us), indikator kekuatan sinyal dan SNR, osilator kristal 32,768KHz, kontrol penguatan otomatis digital, dll. Gambar di bawah ini menunjukkan diagram blok dari tuner RDA5807M.
Ini memiliki arsitektur digital-IF rendah dan mengintegrasikan penguat kebisingan rendah (LNA), yang mendukung pita siaran FM (50 hingga 115 MHz), kontrol penguatan yang dapat diprogram (PGA), konverter analog-ke-digital resolusi tinggi, dan konverter digital-ke-analog (DAC) dengan ketelitian tinggi. Pembatas mencegah kelebihan beban dan membatasi jumlah produk intermodulasi yang dibuat oleh saluran yang berdekatan. PGA memperkuat sinyal keluaran mixer dan kemudian mendigitalkan dengan ADC. Inti DSP mengatur pemilihan saluran, demodulasi FM, dekoder MPX stereo, dan sinyal audio keluaran. The RDA5807 pinout diagram untuk IC diberikan di bawah ini.
Modul ini bekerja pada catu daya 1,8 - 3,3V. Ketika berhenti dan antarmuka kontrol dipilih, modul me-reset sendiri saat VIO dalam keadaan Power up, dan juga mendukung soft reset dengan pemicu bit1 dari 0 ke 1 dari alamat 02H. Modul ini menggunakan komunikasi I2C untuk berkomunikasi dengan MCU, dan antarmuka dimulai dengan kondisi start, byte perintah, dan byte data. RDA5807 memiliki 13 register 16-bit, masing-masing menjalankan fungsi tertentu. Alamat register dimulai dengan 00H, yang dialokasikan ke chip ID dan diakhiri dengan 0FH. Di semua 13 register, beberapa bit dicadangkan sementara beberapa R / W. Setiap register melakukan tugas-tugas seperti memvariasikan volume, mengubah saluran, dll tergantung pada bit yang ditugaskan padanya.
Kami tidak dapat langsung menggunakan modul saat menghubungkannya ke sirkuit karena pin ditutup. Jadi, saya menggunakan papan perf dan beberapa pin pria dan menyolder modul masing-masing pin ke setiap pin pria seperti yang ditunjukkan pada gambar di bawah ini.
Penguat Audio
Penguat audio adalah perangkat elektronik, yang memperkuat sinyal audio elektronik berdaya rendah ke tingkat yang cukup tinggi untuk menggerakkan pengeras suara atau headphone. Kami telah membangun penguat audio sederhana menggunakan LM386, rangkaian yang sama ditunjukkan di bawah ini dan Anda juga dapat memeriksa tautan untuk mempelajari lebih lanjut tentang rangkaian ini, juga memeriksa rangkaian penguat audio lainnya.
Diagram Sirkuit Penerima FM Arduino
Kami menggunakan dua potensiometer untuk menyetel band FM dan mengontrol volume penguat audio. Untuk mengubah volume Anda baik dapat bervariasi pot, yang terhubung di antara 1 dan 8 th pin dari LM386 atau pot, yang terhubung pada pin 3 dari LM386. Gambar di bawah ini menunjukkan diagram sirkuit lengkap untuk Radio FM Arduino.
Saya melakukan sedikit perubahan pada amplifier. Alih-alih menggunakan dua potensiometer di amplifier, saya hanya menggunakan satu. Saya menukar pot, yang digunakan untuk mengubah Gain, dengan resistor. Jadi sekarang proyek kami memiliki dua potensiometer, satu untuk disetel, dan satu lagi untuk mengubah volume. Potensiometer yang digunakan untuk menyetel saluran dihubungkan dengan Arduino nano. Pin tengah pot terhubung ke pin A0 dari Arduino nano, dan salah satu dari dua pin yang tersisa terhubung ke 5V dan yang lainnya terhubung ke GND. Panci lain digunakan untuk mengontrol volume radio dan dihubungkan seperti yang ditunjukkan pada gambar di atas.
Pin A4 dan A5 dari Arduino terhubung ke pin SDA dan SCL dari RDA5807M. perlu diingat bahwa modul receiver hanya berfungsi pada 3.3V. Jadi, hubungkan pin 3v3 Nano ke pin VCC modul penerima. Setelah koneksi dibuat, set-up saya terlihat seperti ini
Penjelasan Kode Radio Arduino FM
Kode akan menginisialisasi modul penerima dan kemudian mengatur saluran dengan frekuensi yang telah ditetapkan. Ketika nilai yang dibaca oleh nano pada pin A0 berubah (dengan mengubah pot) frekuensi berubah yang pada gilirannya mengubah saluran. Kode lengkap diberikan di akhir halaman.
Kami memulai program kami dengan menambahkan perpustakaan kabel yang diperlukan untuk berkomunikasi dengan RDA5807. Kemudian, di variabel "channel" kami menetapkan nilai channel. Setiap kali radio mulai, radio akan disetel ke saluran ini secara otomatis.
#include
Selanjutnya, kami akan memuat byte ke setiap register di IC RDA5807 kami untuk mengatur konfigurasi awal kami. Pada titik ini, kami mengatur ulang receiver.
uint8_t boot_config = {/ * register 0x02 * / 0b11000001, 0b00000011, / * register 0x03 * / 0b00000000, 0b00000000, / * register 0x04 * / 0b00001010, 0b00000000, / * register 0x05 * / 0b10001000, 0b0000x11, / * register 0b00000000, 0b00000000, / * register 0x07 * / 0b01000010, 0b00000010,};
Setelah kami mengatur ulang perangkat, kami dapat menyetel perangkat. Untuk menyetel saluran kita hanya perlu memprogram 4 byte pertama. Bagian kode ini akan mengubah saluran ke frekuensi yang diinginkan. Di I2C pada awalnya, kami memulai transmisi, Menulis atau membaca data dan kemudian mengakhiri transmisi. Dalam IC receiver ini, kita tidak perlu menentukan alamat karena lembar data dengan jelas mengatakan bahwa antarmuka I2C memiliki register awal tetap yaitu 0x02h untuk operasi tulis, dan 0x0Ah untuk operasi baca.
uint8_t tune_config = {/ * register 0x02 * / 0b11000000, 0b00000001, / * register 0x03 * / (channel >> 2), ((channel & 0b11) << 6) - 0b00010000};
Dalam pengaturan, kami menginisialisasi konfigurasi boot (reset) dan kemudian menyetel ke saluran dengan menulis tuning konfigurasi byte ke RDA5807M.
void setup () {Serial.begin (9600); pinMode (A0, INPUT); / * Hubungkan ke RDA5807M FM Tuner: * / Wire.begin (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (boot_config, BOOT_CONFIG_LEN); Wire.endTransmission (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (tune_config, TUNE_CONFIG_LEN); Wire.endTransmission (); }
Saat menggunakan pot untuk menyetel ke frekuensi, saya menghadapi masalah. Nilai yang dibaca oleh pin A0 tidak konstan. Ada suara yang dipukul dengan nilai yang diinginkan. Saya menggunakan kapasitor keramik 0.1uF yang terhubung antara A0, dan GND, meskipun kebisingan diminimalkan, itu tidak sampai ke tingkat yang diinginkan. Jadi, saya harus melakukan beberapa perubahan pada kode. Awalnya, saya mencatat bacaan yang dipengaruhi oleh kebisingan. Saya menemukan bahwa nilai maksimum kebisingan adalah 10. Jadi saya menulis program sedemikian rupa sehingga, hanya akan mempertimbangkan nilai baru jika selisih antara nilai baru dan nilai lama dari pin yang sama lebih besar dari 10 dan kemudian mencari saluran yang diinginkan.
void loop () {int channel1 = 187, avg = 0, newA; statis int oldA = 0; hasil int = 0; newA = analogRead (A0); if ((newA - oldA)> 10 - (oldA - newA)> 10) {Serial.println (newA); if (newA! = oldA) {channel = channel1 + (newA / 10); myChangeChannel (saluran); oldA = newA; }}} // perulangan akhir
Fungsi ini digunakan untuk mengatur byte dari larik tune_config dan kemudian mengirimkan data ke IC RDA5807M menggunakan protokol I2C.
void myChangeChannel (int channel) {/ * void jika tidak ada yang dikembalikan int * / tune_config = (channel >> 2); tune_config = ((saluran & 0b11) << 6) - 0b00010000; Wire.begin (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (tune_config, TUNE_CONFIG_LEN); Wire.endTransmission (); }
Cara Kerja Radio Arduino FM
Ketika modul dinyalakan, kode kami me-reset IC RDA5807-M dan mengaturnya ke saluran yang diinginkan pengguna (Catatan: frekuensi ini diambil sebagai frekuensi dasar di mana frekuensi akan bertambah). Dengan mengubah potensiometer (terhubung ke A0), nilai yang dibaca oleh Arduino Nano berubah. Jika perbedaan antara nilai baru dan lama lebih besar dari 10, kode kami akan mempertimbangkan nilai baru ini. Saluran diubah tergantung pada perubahan nilai baru dari nilai lama. Menambah atau mengurangi volume tergantung pada potensiometer yang terhubung di antara pin 3 dan GND.
Di akhir konstruksi dan pengkodean, Anda akan memiliki Radio FM sendiri. Kerja lengkap Radio FM dapat ditemukan dalam video yang ditautkan di bagian bawah halaman ini. Semoga Anda menikmati proyek ini dan mempelajari sesuatu yang bermanfaat. Jika Anda memiliki pertanyaan dalam menjalankan proyek ini, Anda dapat meninggalkannya di bagian komentar atau menggunakan forum kami untuk bantuan teknis lainnya.