Kedekatan, sakelar optik dengan efek suara pada Arduino





Halo semuanya!



Hari ini adalah artikel tentang proximity switch dengan efek suara, yang saya buat 9 tahun lalu, atau tepatnya Januari 2012.



Sejak itu, saklar tersebut telah bekerja dengan saya sepanjang waktu selama 9 tahun. Yang paling menarik, selama ini tidak gagal bahkan tidak pernah menutup telepon, dan tidak pernah ada false positive. Secara umum, ini telah terbukti dengan baik dan saya yakin dapat merekomendasikannya kepada Anda untuk perakitan sendiri.

Jika Anda tertarik dengan detailnya, silakan, di bawah kucing.



Saya memiliki 7 lampu yang dipasang di koridor.







Dan untuk mendapatkan efek visual yang indah, saya menggunakan peralihan lampu secara berurutan, untuk ini saya perlu meregangkan kabel terpisah dari setiap titik pencahayaan ke papan pengontrol.







Saya menyembunyikan papan itu sendiri di ruang antara drywall dan langit-langit, karena ada lebih dari cukup ruang di sana.







Saya menempatkan penerima IR dan LED di soket. Untuk menghindari alarm palsu, mereka perlu diisolasi satu sama lain, untuk ini saya menggunakan cambric menyusut. Untuk menghubungkan sensor optik ini ke papan pengontrol, saya menggunakan kabel yang tertanam di dinding.







Agar desain sakelar tidak berbeda dari overlay dekoratif yang dipasang lainnya di bagian dalam, saya menggunakan outlet TV dari seri yang sama, dari mana saya membuang semua bagian dalam, dan menempelkan jendela bundar yang dipotong dari akrilik ungu ke dalam lubang.







Semua komponen ditempatkan pada satu papan, di mana konektor sekrup juga dipasang untuk menghubungkan kabel dari lampu.







Saya memberi daya papan ini dengan pengisi daya telepon biasa.







Dasar dari seluruh perangkat adalah pengontrol arduino Nano V.3, tetapi Anda juga dapat menggunakan papan lain dengan mikrokontroler Atmega328.







LED IR dengan fototransistor dapat diambil dari sensor rintangan, tetapi tidak perlu menyoldernya, itu cukup untuk memotong trek ekstra dan menyolder 3 kabel ke sana. Jika Anda sudah memiliki bagian-bagian ini sebelumnya disolder di suatu tempat, maka sebelum menggunakan, lebih baik periksa dulu untuk pengoperasiannya. LED infra merah harus dihubungkan ke tegangan 5 V, melalui resistor pembatas arus 120 Ohm dan melihatnya melalui kamera ponsel, itu harus menyala ungu. Untuk menguji fototransistor, Anda memerlukan penguji apa pun dengan fungsi kontinuitas konduktor. Kami mentransfer penguji ke mode panggilan, dan menghubungkan fototransistor mengarah ke probe penguji. Setelah itu, Anda perlu membawa remote control dari peralatan rumah tangga ke dalamnya dengan erat dan menekan tombol apa saja. Suara mencicit yang terputus-putus akan terdengar sebagai tanggapan.







9 tahun yang lalu saya tidak menemukan solid state relay yang cocok dan saya harus merakitnya sendiri dari komponen radio. Namun saat ini lebih mudah untuk membeli modul solid state relay 8 channel seperti gambar, daripada membuang waktu untuk mencari komponen tersebut.







Saklar berfungsi sebagai berikut



Arduino mengeluarkan sinyal PWM konstan dari keluaran D5 dengan frekuensi sekitar 977 Hz. LED yang memancarkan sinyal dalam jangkauan inframerah dihubungkan ke output ini melalui resistor pembatas arus 82 Ohm. Phototransistor yang terhubung ke input D2 mendeteksi sinyal IR yang dipantulkan dari tangan dan memeriksanya apakah masuk akal, dan jika sinyal dari 20 periode berturut-turut atau lebih sesuai dengan frekuensi 977 Hz, maka pengontrol menyalakan semua 7 lampu secara bergantian dan mulai memainkan efek suara melalui output PWM D11. Semua hal yang sama terjadi saat Anda mematikan.







Memutar suara



Untuk mereproduksi efek suara, format WAVE digunakan tanpa kompresi, dengan frekuensi 16000 Hz dan kedalaman 8 bit, tetapi saat memutar format ini menggunakan PWM, ada desisan dan desisan yang tidak menyenangkan di jalur audio. Oleh karena itu, untuk meningkatkan kualitas pemutaran, saya menggunakan interpolasi linier dalam kode. Di mana, pengambilan sampel terjadi pada frekuensi 62,5 kHz dan di antara sampel asli dimasukkan 3 sampel tambahan, dihitung dengan metode interpolasi linier. Dengan demikian, noise kuantisasi berkurang pada output, siulan menghilang, kualitas suara ditingkatkan dan filter RC tambahan tidak diperlukan untuk pemutaran.







Alih-alih speaker, saya menggunakan speaker komputer tua dan kecil tanpa amplifier bawaan.







Untuk mengonversi file Wave ke kode C, Anda dapat menggunakan konverter online .



Skema



Pada diagram, persegi panjang abu-abu menandai relai solid-state, dan bagi mereka yang ingin bingung, mereka dapat merakit rangkaian sepenuhnya, seperti yang saya lakukan di masa lalu.







Komponen untuk perakitan



1 - Arduino Nano V.3

2 - Sensor rintangan

3 - Modul relai 8 saluran

4 - Resistor 82 Ohm dan 1 kOhm

5 - Speaker 0,5 - 3 W

6 - Semua transistor NPN dengan arus yang diizinkan minimal 500 mA



Kode Arduino



Unduh semua file dalam satu arsip

Kali ini, saya memutuskan untuk menambahkan semua perpustakaan yang digunakan ke folder dengan sketsa, dan dalam sketsa itu sendiri saya mendaftarkan penggunaan lokalnya. Sekarang saya berharap pemula akan memiliki lebih sedikit pertanyaan untuk saya tentang kesalahan yang mereka temui saat menyusun.



Kode tersebut berisi beberapa konstanta yang dapat diubah sebelum di-flash.



Konstanta power_ir bertanggung jawab atas jarak operasi pemutus, yang dapat mengambil nilai dari minimal 20 hingga maksimum 200. Nilai yang Anda butuhkan dapat ditentukan secara eksperimental.



lamp_num - menentukan jumlah lampu yang Anda gunakan. Jumlah minimum lampu tidak boleh kurang dari 1, dan jumlah maksimum tidak boleh lebih dari 7. Jika Anda mengoreksi kode, Anda dapat meningkatkannya menjadi 15.

lamp_delay adalah penundaan antara penyalaan lampu berturut-turut, yang dinyatakan dalam milidetik dan dapat dimulai dari 0 hingga 4 294 967 295 ms. Meskipun saya tidak berpikir bahwa penundaan sebesar itu akan dibutuhkan oleh siapa pun.



Video



Untuk melihat video, klik pada gambar.





Kesimpulan



Sebagai kesimpulan, saya ingin menambahkan bahwa saya sangat terkejut bahwa mikrokontroler tanpa WDT tidak pernah mati selama 9 tahun. Untuk alasan yang sama, saya tidak mengedit kode dan menambahkan WDT ke dalamnya, karena Arduino dengan bootloader lama tidak dapat bekerja dengannya.



Terima kasih telah membaca sampai akhir!



Jika Anda menyukai artikel saya, dukung dengan suka dan berlangganan.



Jika Anda memiliki pertanyaan, Anda dapat menanyakannya di komentar.



All Articles