Daftar Isi:

Programmable RGB LED Sequencer (menggunakan Arduino dan Adafruit Trellis): 7 Langkah (dengan Gambar)
Programmable RGB LED Sequencer (menggunakan Arduino dan Adafruit Trellis): 7 Langkah (dengan Gambar)

Video: Programmable RGB LED Sequencer (menggunakan Arduino dan Adafruit Trellis): 7 Langkah (dengan Gambar)

Video: Programmable RGB LED Sequencer (menggunakan Arduino dan Adafruit Trellis): 7 Langkah (dengan Gambar)
Video: Improving the Prototype RGB LED Strip Sequencer 2024, Juli
Anonim
Image
Image
Pasang Papan Pengemudi
Pasang Papan Pengemudi

Anak laki-laki saya menginginkan strip LED warna untuk menerangi meja mereka, dan saya tidak ingin menggunakan pengontrol strip RGB kalengan, karena saya tahu mereka akan bosan dengan pola tetap yang dimiliki pengontrol ini. Saya juga berpikir ini akan menjadi kesempatan bagus untuk membuat alat pengajaran bagi mereka yang dapat mereka gunakan untuk mempertajam keterampilan pemrograman dan elektronik yang telah saya ajarkan kepada mereka. Ini adalah hasilnya.

Saya akan menunjukkan cara membuat pengontrol strip LED RGB sederhana yang dapat diprogram ini menggunakan Arduino Uno (atau Nano), Teralis Adafruit, dan beberapa bagian lainnya.

Teralis Adafruit adalah salah satu mainan baru favorit saya dari Lady Ada dan kru. Pertama-tama, ini hanya $9,95 untuk papan, dan $4,95 lainnya untuk bantalan tombol elastomer silikon (harga pada tulisan ini). Itu sangat bagus untuk matriks 4x4 16 tombol dengan kemampuan LED. Itu tidak datang dengan LED apa pun yang terpasang, Anda perlu menyediakannya, tetapi itu memberi Anda fleksibilitas untuk memilih warna yang Anda inginkan (dan menghemat biaya dan kerumitan vs membangun di LED yang dapat dialamatkan). Untuk membangun proyek ini seperti milik saya, Anda memerlukan beberapa LED 3mm. Saya menggunakan 2 merah, 2 hijau, 2 biru, 4 kuning, dan 6 putih.

Teralis menggunakan I2C untuk berkomunikasi, sehingga hanya membutuhkan dua pin I/O (data dan jam) untuk mengontrol 16 tombol dan 16 LED.

Anda dapat melakukan bagian perangkat keras dari proyek ini pada papan proto kecil, seperti yang saya lakukan pada prototipe saya. Saya segera menyadari bahwa saya membutuhkan sesuatu yang lebih rapi dan lebih banyak terdapat di meja mereka (arduino telanjang dan papan proto yang terbentur akan terlalu rapuh), jadi saya membuat perisai sendiri untuk menggerakkan strip LED. Instruksi dan file untuk membangun perisai disertakan dalam langkah terakhir.

Pengemudi menggunakan tiga MOSFET IRLB8721 dan tiga resistor. Dan tentu saja, Anda memerlukan strip LED untuk mengemudi; hampir semua strip LED RGB 12V biasa bisa digunakan. Ini adalah LED sederhana, seperti SMD 5050, bukan LED yang dapat dialamatkan secara individual (tidak ada NeoPixels, dll.) -- itu proyek lain! Anda juga memerlukan catu daya 12V yang cukup besar untuk menggerakkan jumlah LED yang ingin Anda gunakan.

Jadi, untuk rekap, berikut adalah kebutuhan perangkat keras dasar untuk proyek ini:

  • Satu Arduino Uno atau Nano (petunjuk ini untuk Uno dengan header wanita terpasang, tetapi Nano pada papan tempat memotong roti berfungsi dengan baik) (Adafruit, Amazon, Mouser);
  • Satu papan Teralis Adafruit dan bantalan tombol silikon (Adafruit);
  • Tiga IRLB8721 N-channel MOSFET (Adafruit, Amazon, Mouser);
  • Tiga resistor 1K (Amazon, Mouser);
  • Tiga resistor 220 ohm (Amazon, Mouser)
  • Satu papan proto kecil (yang pertama berukuran 1/4 - pilih ukuran apa pun yang dapat Anda gunakan dengan nyaman) (Adafruit, Amazon);
  • Strip LED 12V RGB (SMD 5050) (Adafruit, Amazon);
  • Catu daya 12V - pilih watt yang sesuai dengan jumlah LED yang Anda rencanakan untuk dikendarai.

Penafian yang diperlukan: tautan di atas disediakan untuk kenyamanan Anda dan bukan merupakan dukungan terhadap produk atau vendor apa pun; saya juga tidak mendapat untung dari pembelian apa pun yang dilakukan di tautan ini. Jika Anda memiliki vendor yang lebih Anda sukai, tentu saja dukung mereka!

Mari kita mulai…

Langkah 1: Pasang Papan Pengemudi

Pasang Papan Pengemudi
Pasang Papan Pengemudi

Berikut rangkaian driver LED. Ini sangat sederhana. Ini menggunakan MOSFET saluran N IRBLxxx untuk setiap saluran pada strip LED. Strip LED adalah anoda umum, artinya +12V dikirim ke strip LED, dan saluran LED merah, hijau, dan biru dikendalikan dengan menyediakan ground pada koneksi masing-masing ke strip. Jadi, kami akan menghubungkan saluran pembuangan MOSFET ke saluran warna LED, dan sumber ke ground. Gerbang akan terhubung ke output digital Arduino, dan resistor menyediakan pull-down yang memastikan setiap MOSFET aktif atau nonaktif sepenuhnya sesuai kebutuhan.

Arduino menawarkan modulasi lebar pulsa pada beberapa keluaran digitalnya, jadi kami akan menggunakan keluaran tersebut (khususnya D9, D10, D11) sehingga intensitas setiap saluran warna dapat dikontrol.

Jika Anda bingung tentang apa yang harus disambungkan di MOSFET IRLB8721, pegang satu di tangan Anda dengan bagian depan menghadap Anda seperti yang ditunjukkan pada foto di atas. Pin di sebelah kiri (pin 1) adalah gerbang, dan akan terhubung ke pin output digital Arduino dan resistor (ujung resistor yang lain harus terhubung ke ground). Pin di tengah (pin 2) adalah saluran pembuangan, dan terhubung ke saluran warna strip LED. Pin di sebelah kanan (pin 3) adalah sumbernya, dan terhubung ke ground. Pastikan Anda melacak transistor mana yang terhubung ke saluran warna LED mana.

Saya tidak akan membahas detail tentang cara menyolder papan proto. Sejujurnya, aku membencinya, dan aku tidak pandai dalam hal itu. Tapi baik atau buruk, itu berhasil, dan ini adalah cara cepat dan kotor untuk menyelesaikan prototipe yang solid atau satu kali saja. Papan pertama saya ditampilkan di sini.

Anda juga bisa membuat papan tempat memotong roti ini. Ini tentu akan lebih cepat daripada menyolder semuanya di papan proto, tetapi kurang permanen.

Setelah driver Anda terhubung, sambungkan input gerbang MOSFET ke pin output digital Arduino: D9 untuk saluran hijau, D10 untuk saluran merah, dan D11 untuk saluran biru. Hubungkan strip LED ke papan proto Anda juga.

Juga, pastikan papan driver Anda memiliki koneksi terpisah dari ground ke salah satu pin ground Arduino.

Terakhir, untuk daya LED, sambungkan kabel negatif (ground) dari suplai 12V ke ground pada papan driver Anda. Kemudian hubungkan ujung positif catu daya 12V ke ujung anoda strip LED Anda (ini adalah kabel hitam pada kabel saya yang ditunjukkan pada gambar).

Pada akhirnya, saya akhirnya merancang pelindung papan PC yang dipasang di Uno, dan juga memiliki dukungan pemasangan untuk Teralis. Ini memberikan produk akhir yang jauh lebih selesai. Jika Anda ingin melakukan itu, Anda dapat melewatkan menggunakan papan proto seperti yang dijelaskan di sini dan hanya membuat papan pelindung. Itu semua dijelaskan pada langkah terakhir.

Langkah 2: Letakkan LED di Teralis

Pasang LED di Teralis
Pasang LED di Teralis

Papan Teralis memiliki bantalan kosong untuk LED 3mm yang harus kita isi. Perhatikan baik-baik simbol pada bantalan--ada "+" yang sangat halus di sebelah bantalan untuk menunjukkan sisi anoda. Jika Anda memegang papan sehingga teksnya menghadap ke atas, ada juga notasi di bagian atas dan bawah papan yang menunjukkan bahwa anoda LED ada di sebelah kiri.

Solder LED 3mm Anda ke papan. Melihat bagian depan papan, teks sisi kanan ke atas, sakelar kiri atas/posisi LED adalah #1, kanan atas adalah #4, kiri bawah adalah #13, dan kanan bawah adalah #16. Berikut adalah warna yang saya gunakan di setiap posisi (dan ada alasan mengapa, jadi saya sarankan Anda mengikuti pola saya setidaknya untuk dua baris teratas):

1 - merah2 - hijau3 - biru4 - putih5 - merah6 - hijau7 - biru8 - putih9 - putih10 - putih11 - kuning12 - kuning13 - putih14 - putih15 - kuning16 - kuning

CC Attribution: Gambar Trellis di atas adalah oleh Adafruit dan digunakan di bawah lisensi Creative Commons -- Attribution/ShareAlike.

Langkah 3: Hubungkan Teralis ke Arduino

Hubungkan Teralis ke Arduino
Hubungkan Teralis ke Arduino

Teralis memiliki lima bantalan kabel, tetapi hanya empat yang digunakan dalam proyek ini. Teralis membutuhkan SDA dan SCL untuk berkomunikasi dengan Arduino (menggunakan I2C), dan 5V dan GND untuk daya. Pad terakhir, INT, tidak digunakan. Bantalan Teralis muncul di keempat tepi papan. Anda dapat menggunakan set bantalan apa pun yang Anda inginkan.

Solder kabel interkoneksi padat ke bantalan 5V, GND, SDA, dan SCL. Kemudian, sambungkan kabel 5V ke pin 5V di Arduino, kabel GND ke ground, kabel SDA ke A4, dan kabel SCL ke A5.

Selanjutnya, kita akan menyalakan Arduino dan mengunggah sketsa ke dalamnya. Sekarang adalah saat yang tepat untuk memasang bantalan tombol silikon di papan Teralis. Itu hanya duduk di papan (perhatikan "nubs" di bagian bawah bantalan yang masuk ke dalam lubang di papan), jadi Anda mungkin ingin menggunakan beberapa potong selotip untuk menahan tepi bantalan ke papan untuk sekarang.

CC Attribution: gambar kabel Trellis di atas adalah versi yang dipotong dari gambar ini oleh Adafruit, dan digunakan di bawah lisensi Creative Commons -- Attribution/ShareAlike.

Langkah 4: Unduh Sketsa Proyek dan Unggah ke Arduino

Anda dapat mengunduh sketsa dari repo Github saya untuk proyek ini.

Setelah Anda mendapatkannya, buka di Arduino IDE, sambungkan Arduino menggunakan kabel USB, dan unggah sketsa ke Arduino.

Jika sketsa diunggah dan Teralis terhubung dengan benar, salah satu tombol pada Teralis akan berkedip cepat tiga kali saat ditekan. Ini merupakan indikasi bahwa Anda telah menekan tombol yang tidak valid, karena sistem muncul dalam keadaan "mati", jadi satu-satunya penekanan tombol yang valid adalah yang diperlukan untuk menyalakannya.

Untuk menghidupkan sistem, tekan dan tahan tombol kiri bawah (#13) setidaknya selama satu detik. Saat Anda melepaskan tombol, semua LED akan menyala sebentar, dan kemudian dua baris bawah akan padam, kecuali untuk #13 (kiri bawah). Sistem sekarang dalam keadaan aktif dan idle.

Anda dapat mencoba menggunakan dua baris teratas untuk mencerahkan dan meredupkan saluran LED sebagai pengujian pertama. Jika berhasil, Anda dapat melanjutkan ke langkah berikutnya. Jika tidak, periksa:

  1. Catu daya LED terhubung dan menyala;
  2. MOSFET papan driver terhubung dengan benar. Jika Anda menggunakan IRLB8721 yang sama dengan yang saya gunakan, periksa:

    • Input sinyal papan driver (gerbang MOSFET, IRLB8721 pin 1) terhubung ke Arduino D9=hijau, D10=merah, D11=biru (lihat catatan di bawah);
    • Strip LED terhubung ke papan driver dan saluran warna LED terhubung ke saluran MOSFET (IRLB8721 pin 2);
    • Pin sumber MOSFET (IRLB8721 pin 3) terhubung ke ground pada papan driver;
  3. Koneksi ground antara papan driver dan pin ground Arduino.

Pada langkah selanjutnya, kita akan bermain dengan beberapa fungsi antarmuka pengguna tombol pad.

CATATAN: Jika pengontrol Anda berfungsi tetapi tombol intensitas tidak mengontrol warna yang tepat, jangan khawatir dan jangan rewire! Masuk saja ke Sketch di Arduino IDE dan ubah definisi pin MERAH, HIJAU, dan BIRU di dekat bagian atas file.

Langkah 5: Fungsi Kontrol Dasar

Fungsi Kontrol Dasar
Fungsi Kontrol Dasar

Sekarang setelah sistem dihidupkan, kita dapat bermain dengan beberapa tombol dan membuatnya melakukan banyak hal.

Seperti yang saya katakan di langkah sebelumnya, ketika dinyalakan, sistem muncul dalam keadaan "idle". Dalam keadaan ini, Anda dapat menggunakan tombol di dua baris atas untuk menambah dan mengurangi intensitas warna setiap saluran LED merah, hijau, dan biru. Jika Anda menggunakan tombol putih naik/turun, sistem akan menambah atau mengurangi intensitas ketiga saluran secara merata dan pada tingkat yang sama.

Dua baris terbawah digunakan untuk memutar ulang pola prasetel. Pola-pola ini disimpan di EEPROM Arduino. Ketika sketsa berjalan untuk pertama kalinya, ia melihat bahwa EEPROM tidak memiliki pola yang disimpan, dan menyimpan satu set pola default. Setelah itu, Anda dapat mengubah pola ini, dan perubahan Anda disimpan di EEPROM Arduino, menggantikan pola yang telah ditetapkan sebelumnya. Ini memastikan bahwa pola Anda bertahan dari pemutusan daya. Fungsi pengeditan dijelaskan pada langkah berikutnya.

Untuk saat ini, tekan sebentar salah satu tombol preset (delapan tombol di dua baris bawah) untuk menjalankan pola yang disimpan untuk tombol itu. Tombol berkedip saat pola berjalan. Untuk menghentikan pola, tekan kembali tombol pola sebentar. Saat sebuah pola sedang berjalan, tombol putih atas/bawah di baris atas dapat digunakan untuk mengubah laju pola.

Jika Anda meninggalkan proyek sendirian selama beberapa detik tanpa menyentuh tombol apa pun, Anda akan melihat LED redup. Ini untuk menghemat daya dan untuk menghindari Teralis terlalu menerangi "suasana hati" apa pun yang coba dibuat oleh LED. Menyentuh tombol pada Teralis akan membangunkannya kembali.

Untuk mematikan sistem, tekan dan tahan tombol kiri bawah (#13) selama satu detik atau lebih dan lepaskan. Teralis dan strip LED akan menjadi gelap.

Langkah 6: Mengedit Pola pada Keypad

Mengedit Pola pada Keypad
Mengedit Pola pada Keypad

Seperti yang saya katakan di langkah sebelumnya, sketsa menyimpan delapan pola default di EEPROM saat pertama kali dijalankan. Anda dapat mengubah 7 pola ini menjadi sesuatu yang lain jika Anda ingin menggunakan mode pengeditan pola pada bantalan tombol.

Untuk masuk ke mode pengeditan pola, pertama-tama tentukan tombol mana yang ingin Anda edit polanya. Anda dapat memilih tombol apa saja selain tombol kiri bawah. Masuk ke mode pengeditan pola dengan menekan lama (tahan lebih dari satu detik) pada tombol pola yang Anda pilih. Saat dilepaskan, tombol akan menyala solid, dan dua baris atas akan mulai berkedip. Ini menunjukkan bahwa Anda berada dalam mode pengeditan.

Mode pengeditan dimulai pada langkah pertama pola dan berlanjut hingga Anda keluar dari pengeditan atau menyelesaikan pengeditan langkah ke-16 (maks 16 langkah per pola). Pada setiap langkah, gunakan tombol intensitas saluran di dua baris teratas untuk memilih warna yang Anda inginkan untuk langkah itu. Kemudian tekan sebentar tombol preset pola untuk menyimpan warna itu dan melanjutkan ke langkah berikutnya. Pada langkah terakhir Anda, alih-alih menekan sebentar, cukup tekan lama untuk keluar dari pengeditan.

Setelah Anda keluar dari pengeditan pola, pola akan diputar secara otomatis.

Itu dia! Anda sekarang memiliki pengontrol LED RGB yang akan mengurutkan pola yang dapat Anda program melalui keypad. Anda dapat berhenti di sini, atau jika Anda ingin membuat versi yang lebih formal dari proyek ini, lanjutkan melalui langkah-langkah selanjutnya.

Langkah 7: Perangkat Keras yang Lebih Baik: Perisai dan Enklosur Driver LED RGB

Image
Image
Perangkat Keras yang Lebih Baik: Perisai dan Enklosur Driver LED RGB
Perangkat Keras yang Lebih Baik: Perisai dan Enklosur Driver LED RGB
Perangkat Keras yang Lebih Baik: Perisai dan Enklosur Driver LED RGB
Perangkat Keras yang Lebih Baik: Perisai dan Enklosur Driver LED RGB

Setelah saya memiliki prototipe yang berfungsi, saya tahu bahwa saya tidak dapat meninggalkan Arduino dan papan proto kosong di meja anak-anak saya sebagai solusi permanen. Saya membutuhkan kandang untuk proyek tersebut. Saya juga memutuskan bahwa saya akan membuat papan driver yang lebih baik, dan saya pikir ini adalah kesempatan sempurna untuk membuat perisai saya sendiri.

Saya membersihkan skema kertas saya dengan memasukkannya ke ExpressSCH, alat gratis yang ditawarkan oleh ExpressPCB, pembuat papan yang menawarkan jangka pendek yang murah untuk papan PC kecil. Saya telah menggunakan ExpressPCB selama lebih dari satu dekade pada proyek, tetapi gunakan alat dan pembuat apa pun yang Anda inginkan, tentu saja.

Saya menambahkan beberapa fitur kecil ke skema dasar sehingga akan berfungsi dengan baik sebagai perisai untuk proyek ini. Saya menambahkan bantalan kabel untuk menghubungkan Teralis, colokan listrik, lampu pilot, dan konektor untuk strip LED. Saya juga menambahkan tempat untuk kapasitor di catu daya. Sirkuit terakhir ditampilkan di sini.

Saya memutuskan bahwa kekuatan untuk proyek harus berasal dari perisai. 12V yang dipasok ke pelindung memberi daya pada strip LED dan Arduino. Daya ke Arduino disediakan dengan menghubungkan input suplai ke pin VIN Arduino, yang bersifat dua arah (Anda dapat memasok daya ke Arduino pada pin ini, atau jika Anda menghubungkan daya ke Arduino di tempat lain, itu akan memberi Anda daya yang disediakan. daya pada pin ini). Dioda perlindungan D1 mencegah daya apa pun yang terhubung langsung ke Arduino (misalnya USB) untuk mencoba memberi daya pada LED.

Mengapa tidak menggunakan colokan listrik Arduino dan hanya menghubungkan 12V di sana? Sementara saya bisa memasok 12V ke colokan listrik Arduino dan menggunakan pin VIN untuk mengambil daya itu untuk perisai, saya khawatir bahwa dioda dan jejak D1 Arduino tidak akan mencapai arus setinggi mungkin dalam menggerakkan LED. strip. Jadi, saya memutuskan bahwa perisai saya akan mengambil alih input daya dan memasok daya ke Arduino sebagai gantinya. Saya juga membutuhkan 5V untuk Teralis, tetapi regulasi daya terpasang Arduino memasok 5V pada beberapa pin, jadi saya menggunakan salah satunya untuk Terali. Itu menyelamatkan saya menempatkan sirkuit regulator pada perisai.

Saya kemudian meletakkan PCB. Saya menggunakan beberapa sumber yang saya temukan untuk mendapatkan pengukuran yang tepat untuk penempatan pin untuk memenuhi header pada Arduino Uno. Sedikit ketekunan dan itu cocok pada percobaan pertama. Tidak banyak di sirkuit perisai itu sendiri, jadi saya punya banyak ruang. Saya meletakkan jejak lebar untuk beban LED, jadi akan ada banyak daya dukung arus untuk kebutuhan saya. Saya mengatur MOSFET di tempat yang bisa dipasang rata, dengan atau tanpa heat sink. Sejauh ini, saya tidak membutuhkan heat sink untuk jumlah LED yang saya gunakan, tetapi ruang tersedia jika diperlukan.

Saya juga menambahkan lubang yang cocok dengan lubang pemasangan pada Teralis, sehingga saya dapat menggunakan penyangga untuk memasang Teralis ke perisai saya. Dengan perisai terpasang ke Arduino, dan Teralis tergantung pada stand-off di atas perisai, semuanya harus bagus dan kokoh.

Saya kemudian mencetak tata letak papan dan menempelkannya ke sepotong inti busa, dan memasukkan bagian saya untuk memastikan semuanya pas. Semua baik, jadi saya mengirim pesanan.

Saya kemudian mulai mengerjakan kandang. Menggunakan Fusion 360, saya merancang penutup sederhana untuk memuat tiga papan (Arduino Uno, perisai, dan Teralis). Lubang di enklosur memungkinkan koneksi ke port USB Arduino, dan tentu saja, akses ke koneksi strip LED dan colokan listrik pelindung. Soket daya Arduino ditutupi oleh penutup, untuk memastikan bahwa itu tidak digunakan. Setelah beberapa prototipe untuk pengujian pas, saya akhirnya memiliki desain yang saya puas. Saya telah memposting file STL untuk enklosur ke Thingiverse.

Di masa depan, saya akan membuat versi papan yang dapat dipasang langsung dengan Nano, Ini akan membuat proyek lebih kompak. Sampai saat itu, Anda juga dapat menggunakan adaptor pelindung Nano ke Uno seperti ini.

Jika Anda akan melakukan perisai, inilah yang Anda perlukan selain bagian yang disebutkan di langkah 1:

  • Papan PC Perisai Driver LED RGB (dari ExpressPCB atau lainnya; Anda dapat mengunduh file dari repo Github saya untuk proyek tersebut);
  • dioda 1N4002;
  • 100uF 25V kapasitor elektrolit radial (gunakan 220uF atau 470uF jika beban LED besar);
  • Soket daya, PJ202-AH (model dengan nilai 5A).

Bagian berikut adalah opsional:

  • LED 3mm -- warna apa saja, untuk lampu pilot (dapat dihilangkan)
  • Resistor 1500 ohm - hanya diperlukan jika menggunakan lampu pilot LED

Direkomendasikan: