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

Radio FM

Komponen dan persediaan

SparkFun FM Tuner Pemecahan Dasar - Si4703
× 1
SparkFun Speaker - 0,5 Watt (8 Ohm)
Speaker yang bagus untuk proyek radio kecil
× 1
Adafruit Monochrome 0.96" 128x64 OLED tampilan grafis
Tampilan kecil yang keren dengan kontras yang sangat baik
× 1
Instrumen Texas LM386 - Amplifier Audio - DIP-8
Op-amp terkenal untuk proyek audio kecil yang digerakkan oleh baterai
× 1
Arduino Nano R3
× 1
Keypad 1x4 Membran Adafruit
× 2
Konverter level logika bi-directional I2C 4-channel I2C dua arah
Saya belum pernah menggunakan yang itu tapi seharusnya bisa
× 1
Antena teleskopik FM untuk konektor F
× 1
mengaktifkan sekrup tipe F pemasangan Panel
× 1

Tentang proyek ini

Sebagai seorang anak, saya biasa membuat radio AM tetapi tidak pernah berhasil membuat radio FM. Mereka terlalu rumit. Saat ini, Anda bisa mendapatkan tuner radio FM lengkap dalam satu chip, tetapi chip ini adalah komponen yang dipasang di permukaan dan sulit untuk dikerjakan oleh seorang penghobi. Untungnya, Sparkfun membuat terobosan untuk chip tuner radio Silicon Laboratories Si4703 FM (lembar data), yang memecah semua pin. Saya akan menunjukkan kepada Anda bagaimana Anda dapat membangun 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 membuatnya mudah untuk diprogram.

Pada saat yang sama, saya menambahkan layar OLED kecil yang keren ke proyek dengan kontras yang sangat tinggi dan konsumsi daya yang sangat rendah. Last but not least, saya akan menunjukkan kepada Anda bagaimana Anda dapat membangun amplifier audio mono yang terdengar hebat dari bagian minimum. Radio yang sudah selesai beroperasi dengan tiga baterai AA selama berjam-jam.

Sparkfun FM Tuner Breakout Dasar dan bus serial I2C

Breakout dasar mudah untuk dikerjakan. Solder dulu pada male header untuk bisa menggunakan breakout dengan breadboard. Lihat tata letak pin di bawah ini. Solder pada satu meter kabel tipis berfungsi sebagai antena untuk ANT untuk saat ini.

  • LOUT dan ROUT adalah saluran keluaran kiri dan kanan yang akan kita sambungkan ke amplifier kita.

(Jika Anda tidak ingin membuat amplifier sendiri, Anda dapat membeli papan Evaluasi, yang dapat Anda gunakan langsung dengan headphone Anda).

  • Tegangan suplai Vcc adalah +3,3 Volt.
  • GND di-ground atau 0 Volt.

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

  • Jalur Data Serial (SDA) dan
  • Jalur Jam Serial (SCL).
  • Selain itu muncul garis Reset (RST).

Dalam 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 layar Si4703 dan OLED bertindak sebagai budak.

Tegangan bus I2C dan pilihan Arduino

Tegangan yang digunakan pada Si4703 dan tampilan OLED pada bus I2C adalah 3,3 Volt. Untuk alasan itu, Sparkfun menyarankan dalam panduan hookup mereka untuk menggunakan Arduino 3,3 Volt. Ini berarti menggunakan Arduino Pro Mini yang sedikit lebih sulit untuk diprogram karena tidak memiliki konektor USB dan harus diprogram dengan breakout FTDI. Tapi ada masalah lain:Arduino Pro Mini berjalan pada 8 MHz, setengah kecepatan Arduino Uno atau Nano. Pengujian saya menunjukkan bahwa ini terlalu lambat untuk menggerakkan layar OLED. Karena saya sangat ingin mempertahankan tampilan, saya memutuskan untuk menggunakan Arduino Nano (16 MHz) yang memiliki level sinyal 5 Volt pada bus I2C dan menggunakan Konverter Level Logika I2C dua arah (I2C-shifter) untuk terhubung ke sinyal bus 3,3 Volt dari layar dan chip radio. Saya memiliki beberapa pemindah I2C dengan masing-masing dua sinyal yang saya gunakan dalam proyek. Kita perlu mengubah level total tiga sinyal:SDA, SCL dan RST. Saya harus menggunakan dua pemindah I2C. (Saya menautkan dalam deskripsi di atas ke shifter I2C dengan 4 sinyal yang dapat membantu Anda menghemat beberapa kabel).

Nano hampir identik dengan Uno tetapi dengan footprint yang jauh lebih kecil. Jika mau, Anda bisa menggunakan Uno sebagai gantinya. Saya melakukan itu untuk pengujian pertama. Keduanya memiliki konektor USB dan mudah digunakan dengan Arduino IDE.

Skema koneksi Arduino ke radio dan layar

Selanjutnya, mari kita lihat pengkabelan di sekitar Nano dan detail koneksi bus I2C. (Jika tidak ada titik, kabel hanya bersilangan).

Seperti yang Anda lihat, proyek ini didukung oleh tiga baterai AA (4,5 Volt). Baterai terhubung langsung ke pin 5 Volt Arduino Nano, melewati pengatur tegangan. Dengan cara ini, Nano akan dengan senang hati menggunakan 3 baterai AA. PERINGATAN! Selalu lepaskan baterai sebelum Anda menghubungkan Nano melalui USB ke komputer Anda! Jika tidak, 5 Volt dari komputer Anda akan mengalami hubungan pendek dengan baterai Anda. Selama fase pengujian pertama, jalankan rangkaian dari catu daya USB tanpa baterai! Jika Anda ingin bermain aman, gunakan enam baterai AA (9 Volt) dan sambungkan kutub plus ke pin VIN (bukan pin 5 Volt) Nano . Dengan begitu, manajemen daya Nano akan otomatis mematikan baterai saat Anda menyambungkan kabel USB. (Anda dapat menggunakan baterai blok 9 Volt, tetapi mungkin hanya bertahan beberapa jam).

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

Hubungkan semua komponen ke output 3,3 Volt Nano dan ke Ground. I2C-shifter selanjutnya membutuhkan 5 Volt pada sisi tegangan tinggi.

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

Penguat Audio Tegangan Rendah LM386

Saya menggunakan chip LM386 untuk membangun amplifier mono. LM386 telah ada sejak tahun tujuh puluhan. Ini adalah penguat daya yang dirancang untuk digunakan dalam aplikasi konsumen tegangan rendah (lembar data). Penguatan secara internal diatur ke 20 untuk menjaga agar jumlah bagian eksternal tetap rendah, tetapi penambahan resistor eksternal dan kapasitor antara pin 1 dan 8 akan meningkatkan penguatan ke nilai apa pun dari 20 hingga 200. Kami akan bekerja dengan penguatan terendah 20, yang lebih dari cukup tinggi jika Anda menggunakan speaker 8 Ohm.

Skema untuk bagian penguat audio dari proyek diberikan berikut ini:

Mari kita lihat Si4703 dulu. 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. Kedua sinyal tersebut kemudian digabungkan menjadi sinyal MONO. Ada kapasitor pada output di papan breakout, jadi kita tidak perlu menambahkannya. R2 dan R3 mendefinisikan pembagi tegangan untuk menurunkan level sinyal input ke amplifier. Anda tentu saja dapat mengganti R2 dan R3 dengan potensiometer dan menggunakannya untuk mengatur volume. Tapi kami ingin mengontrol volume secara digital. Level output Si4703 dapat ditingkatkan melalui I2C bertahap dari 1 hingga 15. Dengan R2 / R3, Anda dapat mencocokkan ini dengan amplifier dengan bereksperimen dengan resistansi yang berbeda. Misalnya, jika Anda meningkatkan R3, volumenya meningkat.

Rangkaian diambil langsung dari datasheet. C2 harus setidaknya 220 F. Nilai yang lebih kecil akan mengurangi respons bass. Jika Anda ingin meningkatkan bass, lihat lembar data. Bangun sirkuit di papan tempat memotong roti dan bereksperimen dengan menambahkan/menghapus komponen:C3 harus ditempatkan dekat dengan chip. C3 dan C1 adalah opsional.

Ada banyak video di youtube tentang proyek LM386 dan banyak yang mengeluh tentang suara yang buruk. Sebagian besar dari mereka mungkin tidak memiliki tata letak tanah yang tepat. Jika Anda melihat skemanya, Anda melihat bagaimana saya memisahkan ground input dari ground output, yang sangat penting. Mereka bertemu di pin 4, pin ground dari chip. Jika Anda ingin mempelajari lebih lanjut tentang ini, tonton video ini dari JohnAudioTech (dan yang ini untuk proyek LM386 lengkap).

LM386N-1 membutuhkan minimal 4 Volt dan menghasilkan beberapa ratus mWatt. Saya menjalankan ini dengan 3 baterai AA (4,5 Volt) dan dapat memvariasikan volume antara 1 dan 10 dan kedengarannya sangat bagus. Namun, untuk tegangan suplai rendah seperti itu, cukup penting untuk menggunakan speaker 8 Ohm (bukan 4 Ohm). Jika saya meningkatkan volume menjadi 15, itu mulai terdengar terdistorsi. Jika Anda ingin memutar radio dengan sangat keras, naikkan tegangan suplai menjadi 9 Volt.

Pembuatan prototipe

Saya sangat menyarankan agar Anda terlebih dahulu membangun seluruh proyek di atas dua papan tempat memotong roti. Jauhkan Arduino, I2C-shifter dan OLED-display bersama-sama di satu breadbord, sementara Anda memiliki breakout Si4703 dan penguat audio berdekatan di breadboard lain untuk menjaga distorsi akustik seminimal mungkin. Dalam prototipe pertama saya, saya menempatkan Si4703 dekat dengan Arduino dengan kabel sinyal panjang ke bagian audio (lihat gambar) dan ini menyebabkan distorsi.

Nyalakan Arduino dari USB dengan output 3,3 Volt yang diatur dari Arduino yang memberi daya pada layar dan chip radio. Nyalakan LM386 dari baterai (4,5 - 9 Volt).

Kode program

Pustaka berikut harus disertakan:

#include  #include  #include  #include  #include   

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

Selanjutnya, kita perlu membuat beberapa definisi:

// Tombol input di 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 Alamat I2C.  

Penggunaan #define adalah cara untuk membuat kode sumber lebih mudah dibaca. Setelah Anda sekali dan untuk semua mendefinisikan bahwa volDown mengacu pada pin 9, Anda menulis volDown setiap kali Anda maksud D9.

Selanjutnya, kita lihat bagian setup:

// Definisi variabel int channel; int volume; void setup() { // Mengatur resistor pull up internal pada input pinMode(volDown, INPUT_PULLUP); pinMode(volUp, INPUT_PULLUP); pinMode(channelUp, INPUT_PULLUP); pinMode(channelDown, INPUT_PULLUP); // Inisialisasi radio radio.powerOn(); saluran =882; radio.setChannel(saluran); volume =4; radio.setVolume(volume); }  

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

Perpustakaan Sparkfun memudahkan untuk mengontrol radio melalui I2C dengan fungsi utama powerOn(), setChannel() dan setVolume().

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

void loop() { // Volume turun if (digitalRead(volDown) ==LOW) { if (volume> 0) volume--; radio.setVolume(volume); Perbarui Tampilan(); penundaan(100); } // Volume naik if (digitalRead(volUp) ==LOW) { if (volume <15) volume++; radio.setVolume(volume); Perbarui Tampilan(); penundaan(100); } // Saluran turun if (digitalRead(channelDown) ==RENDAH) { saluran =radio.seekDown(); Perbarui Tampilan(); penundaan(100); } // Channel up if (digitalRead(channelUp) ==LOW) { channel =radio.seekUp(); Perbarui Tampilan(); penundaan(100); } }  

Silahkan lihat source code lengkapnya di bawah ini. Ini mencakup empat tombol untuk stasiun yang telah ditentukan sebelumnya (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 merujuk Anda ke tutorial Adafruit yang luar biasa, jika Anda ingin belajar tentang perpustakaan SSD1306. Ketahuilah bahwa perpustakaan tidak dapat menentukan ukuran layar tampilan Anda melalui perangkat lunak. Anda harus menentukannya setelah menginstal Adafruit_SSD1306.h. Buka file library, baca instruksi di komentar dan edit file yang sesuai.

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

Dari prototipe papan tempat memotong roti hingga radio jadi

Jika Anda telah sampai sejauh ini, Anda memiliki prototipe yang berfungsi penuh pada dua papan tempat memotong roti. Mari pindahkan sirkuit ke dua perfboard dan masukkan seluruh radio ke dalam kotak proyek yang bagus. Jika Anda belum pernah melakukan ini sebelumnya, jangan takut untuk mencoba. Tidak ada yang benar-benar dapat Anda lakukan salah dan Anda mempelajari keterampilan yang diperlukan saat Anda bergerak. Collin dari Adafruit telah membuat dua video pengantar yang bagus yang dapat Anda tonton:Breadboards&perfboards dan prototipe Perfboard.

Saya memutuskan untuk menggabungkan Nano dengan pemindah I2C (saya harus menggunakan dua pemindah, lihat di atas) pada satu papan perf:

Untuk membuat prototipe perfboard ini, saya mengikuti tutorial, yang saya sarankan untuk dipelajari secara detail:Cara Membuat Prototipe tanpa menggunakan papan sirkuit cetak. Terutama penting adalah Langkah 3:buat rencana pengkabelan Anda! Perencanaan adalah langkah terpenting dan perbedaan antara kegagalan dan kesuksesan. Beberapa tips lebih lanjut:Saya menggunakan kabel hitam 22 AWG, yang terlalu tebal dan sulit untuk dikerjakan seperti yang Anda lihat pada gambar. Dapatkan "Kawat Pembungkus Kawat" tipis (30 AWG) dengan warna berbeda. Dan gunakan perfboard yang lebih besar! Saya membuat pin header dan menggunakan kabel jumper Dupont untuk menghubungkan bagian yang berbeda menjadi satu.

Tempatkan Si4703 dan amplifier audio bersama-sama pada perfboard kedua. Berikut sedikit tutorial amplifier LM386, yang bisa Anda jadikan inspirasi:Dari Skema hingga Veroboard. Namun saya menyarankan agar Anda menggunakan soket IC untuk LM386! Sebagai alternatif, JohnAudioTech telah membuat video yang bagus untuk proyek amplifier LM386 lengkap dengan tata letak yang baik disertakan, yang memiliki landasan daya yang terpisah dari landasan sinyal.

Selanjutnya, Anda memerlukan enklosur proyek yang bagus untuk radio Anda. Sekali lagi, Collin menunjukkan dalam video ini bagaimana melakukannya. Saya menyukai terutama ide dengan selotip untuk menandai tempat untuk mengebor. Saya membeli selotip Painter yang tidak terlalu lengket. Selain selotip dan bor, gunakan pistol lem panas. Cukup rekatkan speaker, perfboard, baterai, dll. ke dalam enklosur dan kemudian sambungkan bagian-bagiannya dengan kabel jumper Dupont. Produk akhir terlihat seperti ini:

Saya terlalu optimis dan membeli kotak proyek yang agak kecil seperti yang Anda lihat. Untuk membuat bukaan persegi untuk tampilan di panel depan, saya memotong dengan pisau Stanley dari dalam (untuk menghindari tanda jelek di luar). Tidak terlalu elegan, tapi itu bekerja dengan baik. Lalu saya merekatkan layar ke lubang dengan lem panas. Saya menandai ukuran speaker di panel depan, membuat banyak lubang 3 mm untuk suara, dan menempelkan speaker dari belakang.

Pada gambar, Anda masih dapat melihat kabel antena. Selanjutnya, saya membeli konektor tipe F panel-mount dan antena FM teleskopik. Meskipun antena hanya sepanjang 50 cm, penerimaannya sangat bagus dan speaker kecilnya terdengar sangat bagus. Namun yang paling menakjubkan adalah kenyataan bahwa saya belum pernah mengganti baterai meskipun saya telah mendengarkan radio kecil saya selama beberapa hari.

Proyek radio lainnya

Saya awalnya terinspirasi untuk melakukan proyek ini ketika saya melihat video Great Scott, yang juga membuat kotak proyek kayu yang bagus untuk radionya di video selanjutnya. Jauh lebih dekat secara detail ke radio saya adalah Si4703 Pocket FM Radio oleh John Owen, karena ia menggunakan breakout Sparkfun dan Anda harus melihat dari dekat deskripsi proyeknya. Saya telah menggunakan kode sumbernya untuk fungsi Mono dan untuk pengukuran tegangan baterai.

Kode

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

Skema

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

Proses manufaktur

  1. Penguat Audio Kelas B
  2. 555 Osilator Histeris
  3. Sirkuit Radio
  4. Prinsip Radio
  5. Radio
  6. Propagasi Radio Darat ke Darat
  7. UnifiedWater v1
  8. Radio Internet Pi-Arduino
  9. Radio FM Kabin Shower Berbasis Arduino
  10. Komunikasi Radio Berbasis Atom