Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino

Komponen dan Perlengkapan

Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino
SparkFun FM Tuner Basic Breakout - Si4703
×1
SparkFun Speaker - 0,5 Watt (8 Ohm)
Speaker berkualitas untuk proyek radio kecil
×1
Adafruit Monochrome 0,96" 128x64 OLED graphic display
Layar kecil dengan kontras yang sangat baik
×1
Texas Instruments LM386 - Audio Amplifier - DIP-8
Op-amp terkenal untuk proyek audio baterai kecil
×1
Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino
Arduino Nano R3
×1
Adafruit Membrane 1x4 Keypad
×2
Adafruit 4-channel I2C bi-directional logic level converter
Saya belum mencobanya tetapi seharusnya berfungsi
×1
Antena teleskop FM untuk konektor F
×1
kenable Panel mount F type screw
×1

Tentang Proyek Ini

Saat kecil, saya biasa membuat radio AM tetapi tidak pernah berhasil membuat radio FM. Mereka terlalu rumit. Sekarang, Anda bisa mendapatkan tuner radio FM lengkap pada satu chip, namun chip-chip ini merupakan komponen permukaan yang sulit bagi hobi untuk digunakan. Untungnya, SparkFun menyediakan breakout untuk chip tuner radio FM Silicon Laboratories Si4703 (datasheet), yang membuka semua pin. Saya akan menunjukkan kepada Anda cara membuat radio FM lengkap di sekitar breakout ini dan menggunakan Arduino untuk mengontrol fungsi tuner melalui antarmuka kontrol dua kabel bawaan. SparkFun menyediakan perpustakaan lengkap yang memudahkan pemrograman.

Pada saat yang sama, saya menambahkan layar OLED kecil yang keren ke proyek ini dengan kontras sangat tinggi dan konsumsi daya sangat rendah. Terakhir, saya akan menunjukkan kepada Anda cara membuat pemandu audio mono yang berkualitas dengan sejumlah komponen minimum. Radio selesai berjalan dengan tiga baterai AA selama berjam-jam.

SparkFun FM Tuner Basic Breakout dan Bus Serial I2C

Breakout dasar mudah digunakan. Pertama, pasang header pasang agar breakout dapat digunakan dengan breadboard. Lihat tata letak pin di bawahnya. Pasang satu kawat tipis berukuran satu meter sebagai antena ke ANT untuk sementara.

Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino
Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino

(Jika Anda tidak ingin membuat pemandu sendiri, Anda bisa membeli papan evaluasi sebagai gantinya, yang dapat digunakan langsung dengan headset Anda).

Si4703 memiliki antarmuka dua kabel, yaitu bus serial yang memungkinkan pengendalian tuner dari Arduino melalui komunikasi serial. Lebih tepatnya, bus ini disebut I2C (Inter-integrated circuit; diucapkan I-squared-C atau I-two-C) dan hanya menggunakan dua garis dua arah:

Pada Si4703, SDA disebut SDIO dan SCL disebut SCLK. Semua Arduino memiliki I2C bawaan. Jika Anda ingin mempelajari lebih lanjut tentang bus I2C, Tom Igoe dan Jeff Feddersen telah membuat video yang bagus. Pada bus I2C kami, Arduino bertindak sebagai master sementara Si4703 dan layar OLED bertindak sebagai slave.

Tegangan Bus I2C dan Pemilihan Arduino

Tegangan yang digunakan oleh Si4703 dan layar OLED pada bus I2C adalah 3,3 Volt. Karena alasan itu, SparkFun menyarankan dalam panduan pemasangannya untuk menggunakan Arduino 3,3 Volt. Ini berarti menggunakan Arduino Pro Mini yang sedikit lebih sulit diprogram karena tidak memiliki konektor USB dan harus diprogram dengan FTDI breakout. Namun ada masalah lain: Arduino Pro Mini berjalan pada 8 MHz, setengah kecepatan Arduino Uno atau Nano. Pengujian saya menunjukkan bahwa ini terlalu lambat untuk mengemudikan layar OLED. Karena saya sangat ingin tetap mempertahankan layar, saya memutuskan untuk menggunakan Arduino Nano (16 MHz) yang memiliki tingkat sinyal 5 Volt pada bus I2C dan menggunakan I2C Logic Level Converters dua arah (I2C-shifters) untuk terhubung ke sinyal bus 3,3 Volt dari layar dan chip radio. Saya memiliki beberapa I2C-shifter dengan dua sinyal yang saya gunakan dalam proyek ini. Kami perlu menggeser level total tiga sinyal: SDA, SCL dan RST. Saya harus menggunakan dua I2C-shifter. (Saya menautkan di deskripsi di atas ke I2C-shifter dengan 4 sinyal yang dapat membantu Anda menghemat beberapa kabeling).

Nano hampir identik dengan Uno tetapi pada ukuran yang jauh lebih kecil. Jika Anda ingin, Anda bisa menggunakan Uno sebagai gantinya. Saya melakukannya untuk pengujian pertama. Keduanya memiliki konektor USB dan mudah digunakan dengan Arduino IDE.

Skematik Koneksi Arduino ke Radio dan Layar

Selanjutnya, mari kita lihat kabeling di sekitar Nano dan detail koneksi bus I2C. (Jika tidak ada titik, kawat hanya saling bersilang).

Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino

Seperti yang Anda lihat, proyek ini dipenuhi oleh tiga baterai AA (4,5 Volt). Baterai terhubung langsung ke pin 5 Volt Arduino Nano, melewati regulator tegangan. Dengan cara ini, Nano akan dengan senang hati berjalan dari 3 baterai AA. PERINGATAN! Selalu lepaskan baterai sebelum Anda menghubungkan Nano melalui USB ke komputer Anda! Jika tidak, 5 Volt dari komputer Anda akan kortsir dengan baterai Anda. Selama fase pengujian pertama, jalankan sirkuit dari sumber daya USB tanpa baterai! Jika Anda ingin bermain aman, gunakan enam baterai AA (9 Volt) dan sambungkan kutub positif ke pin VIN (bukan pin 5 Volt) Nano. Dengan cara ini, manajemen daya Nano akan secara otomatis mematikan baterai ketika Anda menghubungkan kabel USB. (Anda dapat menggunakan baterai blok 9 Volt sebagai gantinya tetapi mungkin hanya bertahan beberapa jam).

Arduino SDA (A4) dan SCL (A5) terhubung ke sisi 5 Volt dari I2C-shifter. Selain itu, kita menggunakan D2 sebagai sinyal RST. Pada sisi 3,3 Volt dari I2C-shifter, kita terhubung ke SDIO, SCLK dan RST Si4703. Untuk layar OLED, cukup untuk terhubung ke SDA dan SCL. (Saya membeli layar saya di banggood.com karena berwarna dua: kuning (baris atas) dan biru dan tidak ada pin RST).

Sambungkan semua komponen ke output 3,3 Volt Nano dan ke Ground. I2C-shifter lebih lanjut memerlukan 5 Volt pada sisi tegangan tinggi.

Pin IO D5-D12 terhubung ke dua keypad. Menekan tombol menghubungkan input ke Ground.

Pemandu Audio Tegangan Rendah LM386

Saya menggunakan chip LM386 untuk membuat pemandu mono. LM386 telah ada sejak tahun 1970-an. Ini adalah pemandu daya yang dirancang untuk digunakan dalam aplikasi konsumen tegangan rendah (datasheet). Gainnya secara internal diatur ke 20 untuk menjaga jumlah komponen eksternal rendah, tetapi penambahan resistor dan kapasitor eksternal antara pin 1 dan 8 akan meningkatkan gain ke nilai apa pun dari 20 hingga 200. Kami akan bekerja dengan gain terendah 20, yang lebih dari cukup jika Anda menggunakan speaker 8 Ohm.

Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino

Skematik bagian pemandu audio dari proyek ini diberikan di bawah ini:

Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino

Mari kita lihat Si4703 terlebih dahulu. Di sisi kiri, koneksi sinyal I2C ke Arduino ditunjukkan. Saluran output audio harus dihubungkan sebagai berikut: resistor R4 harus dihubungkan ke LOUT dan R5 ke ROUT. Dua sinyal kemudian digabungkan menjadi sinyal MONO. Ada kapasitor pada output papan breakout, jadi kita tidak perlu menambahkannya. R2 dan R3 mendefinisikan pembagi tegangan untuk menurunkan tingkat sinyal input ke pemandu. Anda tentu dapat mengganti R2 dan R3 dengan potensiometer dan menggunakannya untuk mengatur volume. Tetapi kami ingin mengontrol volume secara digital. Tingkat output Si4703 dapat ditingkatkan melalui I2C secara bertahap dari 1 hingga 15. Dengan R2 / R3, Anda dapat mencocokkannya ke pemandu dengan bereksperimen dengan resistansi yang berbeda. Misalnya, jika Anda meningkatkan R3, volume meningkat.

Sirkuit diambil langsung dari datasheet. C2 harus setidaknya 220 µF. Nilai yang lebih kecil akan meredam respons bass. Jika Anda ingin meningkatkan bass, lihat datasheet. Bangun sirkuit pada breadboard dan bereksperimen dengan menambahkan/menghapus komponen: C3 harus ditempatkan dekat chip. C3 dan C1 opsional.

Ada banyak video di YouTube tentang proyek LM386 dan banyak yang mengeluh tentang suara buruk. Sebagian besar kemungkinan kurang memiliki tata letak ground yang baik. Jika Anda melihat skematik, Anda akan melihat bagaimana saya memisahkan ground input dari ground output, yang sangat penting. Mereka bertemu di pin 4, pin ground chip. Jika Anda ingin mempelajari lebih lanjut, tonton video ini dari JohnAudioTech (dan ini untuk proyek LM386 lengkap).

LM386N-1 membutuhkan minimum 4 Volt dan menghasilkan beberapa ratus mWatt. Saya menjalankannya dengan 3 baterai AA (4,5 Volt) dan dapat memvariasi volume antara 1 dan 10 dan suara benar-benar bagus. Namun, untuk tegangan pasokan yang rendah ini, cukup penting untuk menggunakan speaker 8 Ohm (bukan 4 Ohm). Jika saya meningkatkan volume ke 15, suara mulai terdistorsi. Jika Anda ingin memutar radio Anda sangat keras, tingkatkan tegangan pasokan ke 9 Volt.

Prototipan

Saya sangat menyarankan agar Anda terlebih dahulu membangun seluruh proyek pada dua breadboard. Simpan Arduino, I2C-shifter dan layar OLED bersama pada satu breadboard, sementara Anda memiliki Si4703 breakout dan pemandu audio berdekatan pada breadboard lainnya untuk meminimalkan distorsi akustik. Dalam prototipe pertama saya, saya memiliki Si4703 dekat Arduino dengan kabel sinyal panjang ke bagian audio (lihat gambar) dan ini menyebabkan distorsi.

Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino

Dayakan Arduino dari USB dengan output 3,3 Volt teratur dari daya Arduino yang memenuhi layar dan chip radio. Dayakan LM386 dari baterai (4,5 - 9 Volt).

Kode Program

Berikut perpustakaan yang harus disertakan:

#include <SparkFunSi4703.h> #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> 

Jika Anda tidak tahu cara menginstal perpustakaan, lihat panduan berikut. Perpustakaan SparkFun ditemukan di sini dan menyediakan fungsi tingkat tinggi untuk berkomunikasi dengan Si4703 tanpa harus peduli dengan semua detail kecil. Perpustakaan layar Adafruit dengan tutorial ditemukan di sini.

Selanjutnya, kita perlu membuat beberapa definisi:

// Input buttons on radio #define volDown 9 #define volUp 10 #define channelDown 11 #define channelUp 12 // Si4703 radio chip #define resetPin 2 #define SDIO A4 #define SCLK A5 Si4703_Breakout radio(resetPin, SDIO, SCLK); #define SI4703Address 0x10 // Si4703 I2C Address. 

Penggunaan #define adalah cara untuk membuat kode sumber lebih mudah dibaca. Setelah Anda sekali dan untuk selalu menentukan bahwa volDown merujuk ke pin 9, Anda menulis volDown setiap kali Anda bermaksud D9.

Selanjutnya, kita lihat bagian setup:

// Variables definition int channel; int volume; void setup() { // Set internal pull up resistors on inputs pinMode(volDown, INPUT_PULLUP); pinMode(volUp, INPUT_PULLUP); pinMode(channelUp, INPUT_PULLUP); pinMode(channelDown, INPUT_PULLUP); // Initialise radio radio.powerOn(); channel = 882; radio.setChannel(channel); volume = 4; radio.setVolume(volume); } 

Pin 9-12 didefinisikan sebagai pin input. Parameter INPUT_PULLUP menghubungkan resistor pull-up internal (di dalam chip ATmega) dari +5V ke pin input. Akibatnya, tingkat sinyal pin akan HIGH kecuali Anda menekan tombol (tombol ditekan = LOW).

Perpustakaan SparkFun memudahkan pengendalian radio melalui I2C dengan fungsi utama powerOn(), setChannel() dan setVolume().

Loop utama mendengarkan tombol yang ditekan dan kemudian mengambil tindakan yang sesuai:

void loop() { // Volume down if (digitalRead(volDown) == LOW) { if (volume > 0) volume--; radio.setVolume(volume); UpdateDisplay(); delay(100); } // Volume up if (digitalRead(volUp) == LOW) { if (volume < 15) volume++; radio.setVolume(volume); UpdateDisplay(); delay(100); } // Channel down if (digitalRead(channelDown) == LOW) { channel = radio.seekDown(); UpdateDisplay(); delay(100); } // Channel up if (digitalRead(channelUp) == LOW) { channel = radio.seekUp(); UpdateDisplay(); delay(100); } } 

Lihat kode sumber lengkap di bawah ini. Ini mencakup empat tombol untuk stasiun preset (di mana Anda dapat memasukkan stasiun favorit Anda) dan semua kode yang diperlukan untuk memperbarui layar OLED, yang menggunakan hampir semua RAM yang tersedia. Saya mereferensikan Anda ke tutorial Adafruit yang sangat baik, jika Anda ingin mempelajari perpustakaan SSD1306. Sadari bahwa perpustakaan tidak dapat menentukan ukuran layar layar Anda melalui perangkat lunak. Anda harus menentukan setelah menginstal Adafruit_SSD1306.h. Buka file perpustakaan, baca instruksi dalam komentar dan edit file sesuai kebutuhan.

Ada satu fungsi "lanjutan" dalam kode sumber untuk mengukur tingkat baterai dengan membandingkannya dengan referensi 1,1 Volt internal di dalam chip AVR. Karena kami berjalan pada baterai, kami tidak memiliki tegangan referensi 5 Volt konstan untuk mengukur tegangan baterai. Jika Anda ingin mempelajari lebih lanjut, saya mereferensikan Anda ke artikel berikut: Secret Arduino Voltmeter dan forum Gammon.

Dari Prototipe Breadboard ke Radio Selesai

Jika Anda telah sampai sejauh ini, Anda memiliki prototipe yang berfungsi sepenuhnya pada dua breadboard. Mari kita pindahkan sirkuit ke dua papan perf dan masukkan seluruh radio ke dalam kotak proyek yang bagus. Jika Anda belum pernah melakukan ini sebelumnya, jangan takut untuk mencoba. Tidak ada yang bisa Anda lakukan yang benar-benar salah dan Anda akan mempelajari keterampilan yang diperlukan seiring berjalannya waktu. Collin dari Adafruit telah membuat dua video pengantar yang bagus yang dapat Anda tonton: Breadboards&perfboards dan Perfboard prototyping.

Saya memutuskan untuk menempatkan Nano bersama dengan I2C-shifters (saya harus menggunakan dua shifter, lihat di atas) pada satu papan perf:

Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino
Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino

Untuk membuat papan perf prototipe ini, saya mengikuti tutorial yang saya sarankan untuk dipelajari secara detail: How to Prototype without using printed circuit boards. Langkah 3 sangat penting: buat rencana kabeling Anda! Perencanaan adalah langkah yang paling penting dan perbedaan antara kegagalan dan keberhasilan. Beberapa tips tambahan: Saya menggunakan kawat hitam 22 AWG, yang terlalu tebal dan sulit dikerjakan seperti yang dapat Anda lihat pada gambar. Ambil beberapa kawat "Wire Wrapping Wire" tipis (30 AWG) dalam berbagai warna sebagai gantinya. Dan gunakan papan perf yang lebih besar! Saya membuat header pin dan menggunakan kabel jumper Dupont untuk menghubungkan bagian-bagian yang berbeda bersama-sama.

Tempatkan Si4703 dan pemandu audio bersama pada papan perf kedua. Di sini adalah tutorial kecil untuk pemandu LM386, yang dapat Anda gunakan sebagai inspirasi: From Schematics to Veroboard. Namun saya sarankan agar Anda menggunakan soket IC untuk LM386! Sebagai alternatif, JohnAudioTech telah membuat video yang bagus untuk proyek pemandu LM386 lengkap dengan tata letak yang baik, yang memiliki ground daya terpisah dari ground sinyal.

Selanjutnya, Anda membutuhkan kotak enclosure proyek yang bagus untuk radio Anda. Lagi pula, Collin menunjukkan dalam video ini cara melakukannya. Saya sangat suka ide menggunakan masking tape untuk menandai tempat bor. Saya membeli Painter's tape yang tidak terlalu lengket. Selain masking tape dan bor, gunakan pistolet air panas. Cukup cat speaker, papan perf, paket baterai, dll. ke dalam enclosure dan kemudian sambungkan bagian-bagian dengan kabel jumper Dupont. Produk akhir terlihat seperti ini:

Bangun Radio FM Andalan dengan Komponen SparkFun & Arduino

Saya terlalu optimis dan membeli kotak proyek yang cukup kecil seperti yang dapat Anda lihat. Untuk membuat pembukaan persegi untuk layar di panel depan, saya memotong dengan pisau Stanley dari dalam (untuk menghindari jelek pada luar). Tidak terlalu elegan, tetapi berfungsi dengan baik. Kemudian saya menempelkan layar ke pembukaan dengan air panas. Saya menandai ukuran speaker di panel depan, bor banyak lubang 3 mm untuk suara dan menempelkan speaker dari belakang.

Pada gambar, Anda masih dapat melihat kabel antena. Selanjutnya, saya membeli konektor F jenis panel mount dan antena FM teleskop. Meskipun antena hanya 50 cm panjangnya, penerimaannya sangat bagus dan speaker kecilnya terdengar dengan luar biasa. Yang paling luar biasa adalah fakta bahwa saya belum pernah mengganti baterai sekali pun meskipun saya telah mendengarkan radio kecil saya selama beberapa hari.

Proyek Radio Lainnya

Awalnya saya terinspirasi untuk melakukan proyek ini ketika saya melihat video Great Scott, yang juga membuat kotak proyek kayu yang bagus untuk radio-nya dalam video nanti. Namun lebih dekat dalam detail dengan radio saya adalah Si4703 Pocket FM Radio oleh John Owen, karena ia menggunakan breakout SparkFun dan Anda harus melihat dengan seksama deskripsi proyeknya. Saya menggunakan kode sumbernya untuk fungsi Mono dan untuk pengukuran tegangan baterai.

Kode

FM-radio
Repositori Github dengan kode sumber untuk Arduino Nanohttps://github.com/Notthemarsian/FM-radio

Skematik

Fritzing diagrams FM radio
File Fritzing asli dan gambar / PDFhttps://github.com/Notthemarsian/FM-radio/tree/master/Fritzing%20diagrams

Proses manufaktur

  1. Buat Penguat Audio Push-Pull Kelas B Tinggi dengan Op-Amp TL082
  2. Osilator Histeretik 555 – Bangun RC Multivibrator Klasik
  3. Rangkaian Radio Kristal dan Transistor: Dari Detektor Dasar hingga Penerima AM/FM Terpadu
  4. Dasar Radio: Bagaimana Gelombang Elektromagnetik Dihasilkan dan Ditransmisikan
  5. Evolusi dan Rekayasa Teknologi Radio
  6. Propagasi Radio Tanah ke Tanah: Memahami Dampaknya pada Tautan Nirkabel
  7. UnifiedWater v1 – Kit Lengkap Sensor Kualitas Air Arduino
  8. Bangun Radio Internet Wi-Fi dengan Raspberry Pi dan Arduino: Streaming Stasiun Global
  9. Buat Radio FM Tahan Air untuk Kamar Mandi dengan Arduino Nano, RDA5807, LCD Nokia & PAM8403
  10. Sensor Radio Berbasis Atom Ungkap Arah Sinyal untuk Komunikasi Lebih Jernih