coseru.id - Coding asik & Seru

🔍 Cari Materi & Kelas

Elektronika Tingkat: Pemula Estimasi: 30 Menit 4 x dilihat

Cara Menggunakan Remote IR dan LED WS2812 dengan Arduino

Cara Menggunakan Remote IR dan LED WS2812 dengan Arduino

Ringkasan Proyek

Pelajari cara mengendalikan LED strip WS2812 menggunakan remote infrared dan Arduino Nano. Proyek ini menghadirkan berbagai mode animasi cahaya, pengaturan warna, dan tingkat kecerahan melalui tombol remote. Kamu juga akan mengenal penggunaan library IRremote dan Adafruit NeoPixel serta memahami tantangan pengaturan timing ketika menggabungkan sinyal infrared dengan LED addressable.

Bahan & Komponen

Daftar perangkat keras, modul, dan tools yang dibutuhkan untuk merakit proyek ini.

Daftar Komponen & Perangkat Keras

  • 1x Arduino Nano R3 (Mikrokontroler untuk membaca perintah remote IR dan mengendalikan LED strip).
  • 1x DFRobot WS2812 180 LED 3m (LED strip addressable yang setiap LED-nya dapat dikendalikan secara individual).
  • 1x DFRobot IR Remote Kit for Arduino (Perangkat remote infrared dan penerima sinyal untuk mengontrol proyek).
  • 1x Jumper Wires (Generic) (Kabel penghubung antar komponen).
  • 1x Resistor 330Ω (Dipasang pada jalur data LED untuk membantu mengurangi noise dan mencegah flickering atau pixel yang terlewat).

Catu Daya Tambahan

  • 1x Power Supply 5V DC (Catu daya eksternal untuk LED strip. Penulis menjelaskan bahwa strip 180 LED dapat membutuhkan arus hingga sekitar 10,8A ketika seluruh LED menyala putih dengan kecerahan penuh).

Software dan Library

  • Arduino IDE 2.0.13 (Lingkungan pengembangan yang digunakan penulis untuk menulis dan mengunggah program).
  • IRremote Library (Library untuk menerima dan membaca sinyal dari remote infrared).
  • Adafruit NeoPixel Library (Library untuk mengontrol warna, kecerahan, dan animasi LED WS2812).
  • WS2812IR dan WS2812IR_NB (Library buatan penulis yang tersedia di repository GitHub. Versi NB menggunakan pendekatan non-blocking).

Catatan: Daftar hardware asli mencantumkan LED strip, IR Remote Kit, Arduino Nano, jumper wires, dan resistor 330Ω. Power supply 5V merupakan kebutuhan tambahan yang dijelaskan pada bagian Power dalam artikel.

Langkah Pembuatan

Khusus Member

Panduan perakitan tahap demi tahap dan catatan proses pengerjaan.

Proyek ini menunjukkan cara menggabungkan remote infrared dengan LED strip WS2812 menggunakan Arduino Nano. LED WS2812 merupakan LED addressable, sehingga setiap pixel dapat memiliki warna dan tingkat kecerahan yang berbeda. Remote IR digunakan untuk mengubah warna, kecerahan, dan mode animasi.

Proyek penggunaan remote IR dan LED WS2812 dengan Arduino
Proyek How to Use IR Remote and WS2812 LEDs with Arduino oleh K Gray.

Langkah 1: Memahami LED WS2812

WS2812 adalah jenis LED addressable yang memungkinkan setiap LED pada satu strip dikendalikan secara individual. Setiap pixel memiliki tiga komponen warna, yaitu Red, Green, dan Blue (RGB). Dengan mengatur intensitas ketiga warna tersebut, kita dapat menghasilkan berbagai warna, termasuk putih.

Berbeda dengan LED biasa, WS2812 membutuhkan pengiriman data dengan timing yang sangat presisi agar warna dan animasi dapat ditampilkan dengan benar.

Langkah 2: Memahami Cara Kerja Remote Infrared

Remote IR mengirimkan perintah menggunakan pulsa cahaya infrared yang tidak terlihat oleh mata manusia. IR receiver menangkap pulsa tersebut dan mengubahnya menjadi data yang dapat dibaca Arduino.

Proses penerimaan sinyal IR juga membutuhkan timing yang presisi. Inilah tantangan utama proyek ini karena WS2812 dan remote IR sama-sama membutuhkan pengaturan timing yang akurat.

Langkah 3: Memahami Tantangan Penggabungan IR dan WS2812

Penulis menemukan bahwa ketika Arduino sedang memperbarui tampilan LED WS2812, sinyal dari remote IR terkadang tidak dapat dibaca dengan benar. Hal ini terjadi karena kedua perangkat membutuhkan timing yang presisi.

Pada pendekatan awal, penulis menggunakan metode menerima kode IR sebagai interupsi untuk menghentikan atau mengubah tampilan LED. Metode ini memiliki keterbatasan, misalnya remote lain juga dapat mematikan tampilan dan perintah tidak dapat digunakan untuk memperbarui tampilan selama animasi berjalan.

Penulis kemudian mengembangkan pendekatan lain menggunakan non-blocking code. Pendekatan ini memungkinkan program memeriksa input remote dan memperbarui animasi tanpa harus terus-menerus menunggu proses tertentu selesai.

Langkah 4: Menyiapkan Catu Daya LED Strip

LED WS2812 membutuhkan daya yang cukup besar, terutama ketika seluruh pixel menyala putih. Setiap pixel dapat menggunakan sekitar 60mA ketika ketiga kanal RGB menyala dengan intensitas penuh.

Untuk LED strip yang terdiri dari 180 pixel, perkiraan kebutuhan arus maksimalnya adalah:

180 × 0,06A = 10,8A

Gunakan power supply 5V DC yang mampu menyediakan arus sesuai kebutuhan LED strip. Penulis menyarankan penggunaan caged AC to DC converter. Untuk jumlah LED yang lebih sedikit, kebutuhan arus juga lebih rendah.

Ilustrasi proyek LED WS2812 dan remote IR
Ilustrasi proyek LED WS2812 yang dikendalikan menggunakan Arduino.

Langkah 5: Merangkai LED WS2812 dan Arduino

Siapkan Arduino Nano dan LED strip WS2812. Hubungkan jalur data LED ke pin digital 2 Arduino melalui resistor 330Ω. Resistor pada jalur data digunakan untuk membantu mengurangi noise, flickering, dan pixel yang terlewat.

Hubungkan jalur 5V LED strip ke power supply 5V eksternal dan hubungkan GND LED strip dengan GND power supply serta GND Arduino. Pastikan seluruh ground terhubung bersama agar sinyal data memiliki referensi tegangan yang sama.

Hubungkan IR receiver dari DFRobot IR Remote Kit ke Arduino sesuai pinout modul. Dalam kode yang disediakan, pin penerima IR ditentukan sebagai pin digital 3.

Catatan: Artikel meminjam diagram rangkaian WS2812 dari HowToMechatronics. Nomor pin data LED dan IR receiver mengikuti kode program yang disediakan penulis.

Diagram skematik koneksi LED WS2812 dengan Arduino
Diagram skematik WS2812 yang digunakan sebagai referensi perakitan dan dikreditkan kepada HowToMechatronics.

Langkah 6: Memasang Library Arduino

Buka Arduino IDE dan siapkan library yang dibutuhkan oleh program:

  • IRremote: digunakan untuk membaca perintah yang dikirimkan oleh remote infrared.
  • Adafruit NeoPixel: digunakan untuk mengendalikan pixel LED WS2812, termasuk warna, kecerahan, dan animasi.

Penulis juga menyediakan library WS2812IR dan WS2812IR_NB melalui repository GitHub. Program yang disertakan dalam dokumentasi ini menggunakan pendekatan non-blocking dan memanggil IRremote serta Adafruit NeoPixel secara langsung.

Langkah 7: Mengatur Pin dan Jumlah LED

Program menggunakan konfigurasi berikut:

  • RECV_PIN = 3: pin penerima sinyal remote IR.
  • PIN = 2: pin data LED WS2812.
  • NUMPIXELS = 180: jumlah pixel LED pada strip.
  • modeAmount = 5: jumlah mode animasi yang tersedia.

Pastikan konfigurasi tersebut sesuai dengan rangkaian fisik yang dibuat.

Langkah 8: Mengunggah dan Menguji Program

Buka file WS2812IR_No_Blocking_with_Modes.ino dari repository penulis. Pilih board Arduino Nano dan port yang sesuai di Arduino IDE, kemudian unggah program.

Setelah program berjalan, arahkan remote ke IR receiver dan gunakan tombol berikut:

  • POWER: menyalakan atau mematikan tampilan LED.
  • VOL+: meningkatkan kecerahan LED.
  • VOL-: mengurangi kecerahan LED.
  • FUNC.: mengaktifkan atau menonaktifkan mode animasi.
  • BACK: memilih mode sebelumnya atau mengubah warna ke arah sebelumnya.
  • NEXT: memilih mode berikutnya atau mengubah warna ke arah berikutnya.

Perhatikan perubahan tampilan LED setiap kali tombol remote ditekan.

Langkah 9: Mengenal Lima Mode Animasi

Program menyediakan lima mode animasi yang dapat dipilih menggunakan tombol BACK dan NEXT ketika mode animasi aktif.

  • Mode 1: dua kelompok cahaya bergerak secara bergantian sepanjang LED strip.
  • Mode 2: cahaya bergerak melintasi LED strip secara bertahap dengan posisi pixel yang bergeser.
  • Mode 3: pixel menyala putih secara acak dengan jeda dan durasi yang berubah-ubah.
  • Mode 4: efek warna berjalan dengan perubahan hue secara bertahap sepanjang strip.
  • Mode 5: efek cahaya yang muncul dan meredup secara bertahap pada posisi pixel acak.

Langkah 10: Memahami Pengaturan Warna dan Kecerahan

Ketika mode animasi tidak aktif, tombol BACK dan NEXT digunakan untuk mengubah nilai hue sehingga warna LED dapat berganti. Tombol VOL+ dan VOL- mengatur tingkat kecerahan melalui variabel bright.

Nilai kecerahan dibatasi antara 0 sampai 255. Program memperbarui tampilan LED dengan fungsi setBrightness() dari Adafruit NeoPixel.

Langkah 11: Memahami Non-Blocking Code

Program menggunakan fungsi millis() untuk mengukur waktu tanpa menghentikan keseluruhan program. Dengan cara ini, Arduino dapat memeriksa perintah remote dan memperbarui animasi LED secara bergantian.

Fungsi listenIR() memeriksa sinyal infrared, sedangkan takeStep() memperbarui animasi LED. Pemisahan tugas ini membantu program tetap responsif selama LED strip menampilkan efek cahaya.

Langkah 12: Menyelesaikan Proyek

Setelah seluruh fungsi berjalan, coba berbagai tombol remote dan amati lima mode animasi yang tersedia. Ubah warna serta tingkat kecerahan untuk mengeksplorasi berbagai tampilan cahaya.

Pastikan power supply mampu menyediakan arus yang cukup untuk jumlah LED yang digunakan. Jangan mengambil seluruh daya LED strip dari pin 5V Arduino Nano karena kebutuhan arus LED dapat jauh lebih besar daripada kemampuan pin tersebut.

🔒
Akses Gratis Khusus Member

Buka Seluruh Panduan, Skema & Source Code

Dapatkan akses penuh ke langkah perakitan detail, diagram sirkuit lengkap, dan source code siap pakai. Gratis selamanya!

✓ Akses Gratis Selamanya
✓ Copy-Paste Source Code
✓ Kembali Otomatis ke Proyek

Petualangan Belajar di coseru

💡 Saksikan keseruan anak-anak belajar merakit robot dan coding! Daftar Kelas Uji Coba →