Isi kandungan:

Sequencer LED RGB yang boleh diprogramkan (menggunakan Arduino dan Adafruit Trellis): 7 Langkah (dengan Gambar)
Sequencer LED RGB yang boleh diprogramkan (menggunakan Arduino dan Adafruit Trellis): 7 Langkah (dengan Gambar)

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

Video: Sequencer LED RGB yang boleh diprogramkan (menggunakan Arduino dan Adafruit Trellis): 7 Langkah (dengan Gambar)
Video: RGB LED Strip Sequencer using Arduino and Adafruit Trellis 2024, Julai
Anonim
Image
Image
Wire Up Papan Pemandu
Wire Up Papan Pemandu

Anak lelaki saya mahukan jalur LED berwarna untuk menyalakan meja mereka, dan saya tidak mahu menggunakan pengawal jalur RGB dalam tin, kerana saya tahu mereka akan bosan dengan corak tetap yang dimiliki pengawal ini. Saya juga berpendapat bahawa ini adalah peluang yang baik untuk membuat alat pengajaran untuk mereka yang dapat mereka gunakan untuk mempertajam kemahiran pengaturcaraan dan elektronik yang saya ajarkan kepada mereka. Inilah hasilnya.

Saya akan menunjukkan kepada anda cara membina pengawal jalur LED RGB yang mudah diprogramkan ini menggunakan Arduino Uno (atau Nano), Adafruit Trellis, dan sebilangan kecil bahagian lain.

Adafruit Trellis adalah salah satu mainan baru kegemaran saya dari Lady Ada dan kru. Pertama sekali, harganya hanya $ 9,95 untuk papan, dan $ 4,95 lagi untuk pad butang elastomer silikon (harga pada tulisan ini). Itu bagus untuk matriks 4x4 16 butang dengan keupayaan LED. Ia tidak dilengkapi dengan LED yang dipasang, anda perlu memasangnya, tetapi itu memberi anda fleksibiliti untuk memilih warna yang anda mahukan (dan mengurangkan kos dan kerumitan berbanding membina LED yang dapat diatasi). Untuk membina projek ini seperti projek saya, anda memerlukan segelintir LED 3mm. Saya menggunakan 2 warna merah, 2 hijau, 2 biru, 4 kuning, dan 6 putih.

Trellis menggunakan I2C untuk berkomunikasi, jadi hanya memerlukan dua pin I / O (data dan jam) untuk mengawal 16 butang dan 16 LED.

Anda boleh melakukan bahagian perkakasan projek ini di papan proto kecil, seperti itulah saya membuat prototaip saya. Saya dengan cepat menyedari bahawa saya memerlukan sesuatu yang lebih kemas dan lebih banyak terkandung di meja mereka (Arduino yang kosong dan papan proto yang tergeletak akan terlalu rapuh), jadi saya membuat perisai saya sendiri untuk menggerakkan jalur LED. Arahan dan fail untuk membina perisai disertakan dalam langkah terakhir.

Pemandu menggunakan tiga IRLB8721 MOSFET dan tiga perintang. Dan tentu saja, anda memerlukan jalur LED untuk memandu; hampir semua jalur LED RGB 12V biasa akan dilakukan. Ini adalah LED sederhana, seperti SMD 5050s, tidak mewah yang boleh ditangani secara individu (tidak ada NeoPixels, dll.) - itu adalah projek lain! Anda juga memerlukan bekalan kuasa 12V yang cukup besar untuk mendorong jumlah LED yang ingin anda gunakan.

Jadi, untuk merakam, berikut adalah keperluan perkakasan asas untuk projek ini:

  • One Arduino Uno atau Nano (arahan ini untuk Uno dengan header wanita dipasang, tetapi Nano di papan roti berfungsi dengan baik) (Adafruit, Amazon, Mouser);
  • Satu papan Adellruit Trellis dan pad butang silikon (Adafruit);
  • Tiga MOSFET Saluran N IRLB8721 (Adafruit, Amazon, Mouser);
  • Tiga perintang 1K (Amazon, Mouser);
  • Tiga perintang 220 ohm (Amazon, Mouser)
  • Satu papan proto kecil (yang pertama saya adalah ukuran 1/4 - pilih saiz yang boleh anda gunakan dengan selesa) (Adafruit, Amazon);
  • Jalur LED 12V RGB (SMD 5050) (Adafruit, Amazon);
  • Bekalan kuasa 12V - pilih watt yang sesuai dengan bilangan LED yang anda rancangkan untuk memandu.

Penafian yang diperlukan: pautan di atas disediakan untuk kemudahan anda dan bukan sokongan daripada produk atau vendor; saya juga tidak mendapat keuntungan dari sebarang pembelian yang dibuat di pautan ini. Sekiranya anda mempunyai vendor yang anda sukai, semestinya menyokong mereka!

Mari kita mulakan…

Langkah 1: Wire Up Papan Pemandu

Wire Up Papan Pemandu
Wire Up Papan Pemandu

Inilah litar pemacu LED. Ia sangat mudah. Ia menggunakan IRBLxxx N-channel MOSFET untuk setiap saluran pada jalur LED. Jalur LED adalah anod biasa, yang bermaksud + 12V dihantar ke jalur LED, dan saluran LED merah, hijau, dan biru dikendalikan dengan menyediakan tanah pada sambungan masing-masing ke jalur. Oleh itu, kami akan menghubungkan saluran MOSFET ke saluran warna LED, dan sumber ke tanah. Gerbang akan disambungkan ke output digital Arduino, dan perintang memberikan pull-down yang memastikan setiap MOSFET menghidupkan atau mematikan sepenuhnya seperti yang diperlukan.

Arduino menawarkan modulasi lebar denyut pada beberapa output digitalnya, jadi kami akan menggunakan output tersebut (khususnya D9, D10, D11) sehingga intensiti setiap saluran warna dapat dikendalikan.

Sekiranya anda keliru tentang apa yang hendak dihubungkan di MOSFET IRLB8721, pegang satu di tangan anda dengan bahagian depan menghadap anda seperti yang ditunjukkan dalam foto di atas. Pin di sebelah kiri (pin 1) adalah pintu gerbang, dan akan disambungkan ke pin output digital Arduino dan perintang (hujung perintang yang lain harus bersambung ke tanah). Pin di tengah (pin 2) adalah longkang, dan menghubungkan ke saluran warna jalur LED. Pin di sebelah kanan (pin 3) adalah sumbernya, dan dihubungkan ke tanah. Pastikan anda mengikuti transistor mana yang disambungkan ke saluran warna LED mana.

Saya tidak akan membahas perincian cara menyusun papan proto. Secara jujur, saya membencinya, dan saya tidak pandai. Tetapi untuk lebih baik atau lebih buruk, ia berfungsi, dan ini adalah cara cepat dan kotor untuk mendapatkan prototaip yang kukuh atau sekali sahaja. Papan pertama saya ditunjukkan di sini.

Anda juga boleh membuat papan roti ini. Ia pastinya lebih cepat daripada menyolder semuanya pada papan proto, tetapi tidak kekal.

Setelah pemandu anda disambungkan, sambungkan input gerbang MOSFET ke pin output digital Arduino: D9 untuk saluran hijau, D10 untuk saluran merah, dan D11 untuk saluran biru. Sambungkan jalur LED ke papan proto anda juga.

Juga, pastikan papan pemandu anda mempunyai sambungan yang terpisah dari landasannya ke salah satu pin ground Arduino.

Akhirnya, untuk kuasa LED, sambungkan plag negatif (ground) dari bekalan 12V ke aras pada papan pemacu anda. Kemudian sambungkan plumbum positif bekalan 12V ke plumbum anod jalur LED anda (ini adalah wayar hitam pada kabel saya yang ditunjukkan dalam gambar).

Akhirnya, saya akhirnya merancang pelindung papan PC yang dipasang di Uno, dan juga mempunyai sokongan pemasangan untuk Trellis. Ini memberikan produk akhir yang jauh lebih siap. Sekiranya anda mahu melakukannya, anda mungkin melangkau menggunakan papan proto seperti yang dijelaskan di sini dan hanya membuat papan pelindung dibuat. Itu semua dijelaskan pada langkah terakhir.

Langkah 2: Pasang LED pada Teralis

Pasang LED pada Teralis
Pasang LED pada Teralis

Papan Trellis mempunyai pad kosong untuk LED 3mm yang perlu kita isi. Perhatikan simbol di pad dengan teliti - terdapat "+" yang sangat halus di sebelah pad untuk menentukan sisi anod. Sekiranya anda memegang papan sehingga teks berada di sebelah kanan atas, ada juga notasi di bahagian atas dan bawah papan yang menasihatkan bahawa anod LED berada di sebelah kiri.

Pasangkan LED 3mm anda ke papan. Melihat bahagian depan papan, teks sebelah kanan atas, suis kiri atas / kedudukan LED adalah # 1, kanan atas adalah # 4, kiri bawah adalah # 13, dan kanan bawah adalah # 16. Berikut adalah warna yang saya gunakan di setiap kedudukan (dan ada sebabnya, jadi saya menasihatkan anda mengikuti corak saya sekurang-kurangnya 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 lesen Creative Commons - Attribution / ShareAlike.

Langkah 3: Sambungkan Trellis ke Arduino

Sambungkan Trellis ke Arduino
Sambungkan Trellis ke Arduino

Trellis mempunyai lima pad pendawaian, tetapi hanya empat yang digunakan dalam projek ini. Trellis memerlukan SDA dan SCL untuk berkomunikasi dengan Arduino (menggunakan I2C), dan 5V dan GND untuk mendapatkan kuasa. Pad terakhir, INT, tidak digunakan. Pad Trellis muncul di keempat-empat tepi papan. Anda boleh menggunakan set pad yang anda mahukan.

Pateri wayar sambungan yang kukuh ke pad 5V, GND, SDA dan SCL. Kemudian, sambungkan wayar 5V ke pin 5V di Arduino, GND ke pin ground, wayar SDA ke A4, dan wayar SCL ke A5.

Seterusnya, kita akan menaikkan Arduino dan memuat naik lakaran kepadanya. Sekarang adalah masa yang tepat untuk meletakkan pad butang silikon di papan Trellis. Ia hanya duduk di papan (perhatikan "nubs" di bahagian bawah pad yang sesuai dengan lubang di papan), jadi anda mungkin ingin menggunakan beberapa kepingan pita untuk memegang tepi pad ke papan untuk sekarang.

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

Langkah 4: Muat turun Sketsa Projek dan Muat Naik ke Arduino

Anda boleh memuat turun lakaran dari repo Github saya untuk projek ini.

Setelah anda mendapatkannya, buka di Arduino IDE, sambungkan Arduino menggunakan kabel USB, dan muat naik lakaran ke Arduino.

Sekiranya lakaran dimuat dan Trellis disambungkan dengan betul, mana-mana butang pada Trellis akan berkelip dengan cepat tiga kali apabila ditekan. Ini menunjukkan bahawa anda telah menekan butang yang tidak sah, kerana sistem muncul dalam keadaan "mati", jadi satu-satunya penekanan kekunci yang sah adalah yang diperlukan untuk menghidupkannya.

Untuk menghidupkan sistem, tekan dan tahan butang kiri bawah (# 13) sekurang-kurangnya satu saat. Apabila anda melepaskan butang, semua LED akan menyala sebentar, dan kemudian dua baris bawah akan padam, kecuali untuk # 13 (kiri bawah). Sistem ini kini dalam keadaan dihidupkan dan tidak berfungsi.

Anda boleh mencuba menggunakan dua baris teratas untuk mencerahkan dan meredupkan saluran LED sebagai ujian pertama. Sekiranya berjaya, anda boleh teruskan ke langkah seterusnya. Sekiranya tidak, periksa:

  1. Bekalan kuasa LED disambungkan dan dihidupkan;
  2. Papan pemandu MOSFET disambung dengan betul. Sekiranya anda menggunakan IRLB8721 yang sama dengan yang saya gunakan, periksa:

    • Input isyarat papan pemacu (pintu MOSFET, IRLB8721 pin 1) disambungkan ke Arduino D9 = hijau, D10 = merah, D11 = biru (lihat nota di bawah);
    • Jalur LED disambungkan ke papan pemacu dan saluran warna LED disambungkan ke longkang MOSFET (IRLB8721 pin 2);
    • Pin sumber MOSFET (IRLB8721 pin 3) disambungkan ke tanah pada papan pemacu;
  3. Sambungan tanah antara papan pemacu dan pin tanah Arduino.

Pada langkah seterusnya, kita akan bermain dengan beberapa fungsi antara muka pengguna pad butang.

CATATAN: Jika alat kawalan anda berfungsi tetapi butang intensiti tidak mengawal warna yang betul, jangan risau dan jangan kawat semula! Cukup masuk ke Sketsa di Arduino IDE dan ubah definisi pin MERAH, HIJAU, dan BIRU berhampiran bahagian atas fail.

Langkah 5: Fungsi Kawalan Asas

Fungsi Kawalan Asas
Fungsi Kawalan Asas

Sekarang sistem dihidupkan, kita dapat bermain dengan beberapa butang dan membuatnya berfungsi.

Seperti yang saya katakan pada langkah sebelumnya, ketika dihidupkan, sistem akan muncul dalam keadaan "siaga". Dalam keadaan ini, anda boleh menggunakan butang pada dua baris teratas untuk menambah dan mengurangkan intensiti warna setiap saluran LED merah, hijau, dan biru. Sekiranya anda menggunakan butang kenaikan / penurunan putih, sistem akan meningkatkan atau menurunkan intensiti ketiga-tiga saluran itu sama dan pada tahap yang sama.

Dua baris bawah digunakan untuk memainkan semula corak pratetap. Corak ini disimpan di EEPROM Arduino. Semasa lakaran berjalan untuk pertama kalinya, ia melihat bahawa EEPROM tidak mempunyai corak apa pun yang tersimpan, dan menyimpan sekumpulan corak lalai. Selepas itu, anda boleh mengubah corak ini, dan perubahan anda disimpan di EEPROM Arduino, menggantikan corak yang telah ditetapkan. Ini memastikan bahawa corak anda bertahan daya terputus. Fungsi penyuntingan dijelaskan pada langkah seterusnya.

Buat masa ini, tekan sebentar mana-mana butang pratetap (lapan butang di dua baris bawah) untuk menjalankan corak yang disimpan untuk butang itu. Butang berkelip semasa corak berjalan. Untuk menghentikan corak, tekan butang corak sebentar lagi. Semasa corak berjalan, butang putih ke atas / bawah di baris atas dapat digunakan untuk mengubah kadar corak.

Sekiranya anda membiarkan projek itu bersendirian selama beberapa saat tanpa menyentuh butang apa pun, anda akan melihat LED redup. Ini baik untuk penjimatan tenaga dan untuk mengelakkan Trellis menerangi "mood" LED yang cuba dibuat. Menyentuh butang pada Trellis akan mengaktifkannya semula.

Untuk mematikan sistem, tekan dan tahan butang kiri bawah (# 13) selama satu atau lebih saat dan lepaskan. Jalur Trellis dan LED akan menjadi gelap.

Langkah 6: Mengedit Corak pada Pad Kekunci

Menyunting Corak pada Pad Kekunci
Menyunting Corak pada Pad Kekunci

Seperti yang saya katakan pada langkah sebelumnya, lakaran menyimpan lapan corak lalai di EEPROM pada kali pertama ia dijalankan. Anda boleh menukar 7 corak ini kepada yang lain jika anda mahu menggunakan mod penyuntingan corak pada pad butang.

Untuk memasuki mod penyuntingan corak, tentukan terlebih dahulu butang mana yang ingin anda edit coraknya. Anda boleh memilih butang apa pun selain butang kiri bawah. Masuk ke mod penyuntingan corak dengan menekan lama (tahan lebih dari satu saat) pada butang corak yang anda pilih. Apabila dilepaskan, butang akan menyala padat, dan dua baris atas akan mula berkelip. Ini menunjukkan bahawa anda berada dalam mod penyuntingan.

Mod penyuntingan bermula pada langkah pertama corak dan berterusan sehingga anda keluar dari penyuntingan atau selesai mengedit langkah ke-16 (maksimum 16 langkah setiap corak). Pada setiap langkah, gunakan butang intensiti saluran di dua baris teratas untuk memilih warna yang anda inginkan untuk langkah itu. Kemudian tekan pendek butang pratetap corak untuk menyimpan warna itu dan teruskan ke langkah seterusnya. Pada langkah terakhir anda, bukannya menekan pendek, tekan lama untuk keluar dari penyuntingan.

Selepas anda keluar dari penyuntingan corak, corak akan dimainkan secara automatik.

Itu sahaja! Anda kini mempunyai pengawal LED RGB yang akan menyusun corak yang dapat anda atur melalui papan kekunci. Anda boleh berhenti di sini, atau jika anda ingin membina versi projek yang lebih formal, teruskan langkah-langkah selanjutnya.

Langkah 7: Perkakasan yang Lebih Baik: Perisai dan Kandang Pemandu LED RGB

Image
Image
Perkakasan yang Lebih Baik: RGB LED Shield dan Enclosure
Perkakasan yang Lebih Baik: RGB LED Shield dan Enclosure
Perkakasan yang Lebih Baik: RGB LED Shield dan Enclosure
Perkakasan yang Lebih Baik: RGB LED Shield dan Enclosure

Sebaik sahaja saya mempunyai prototaip yang berfungsi, saya tahu bahawa saya tidak boleh meninggalkan papan Arduino dan proto yang kosong di meja anak-anak saya sebagai penyelesaian tetap. Saya memerlukan kandang untuk projek itu. Saya juga memutuskan bahawa saya akan membuat papan pemandu yang lebih baik, dan saya fikir ia adalah peluang yang tepat untuk membuat perisai saya sendiri.

Saya membersihkan skema kertas saya dengan memasukkannya ke dalam ExpressSCH, alat percuma yang ditawarkan oleh ExpressPCB, pembuat fabrik yang menawarkan jangka pendek papan PC kecil yang murah. Saya telah menggunakan ExpressPCB selama lebih dari satu dekad untuk projek, tetapi gunakan apa sahaja alat dan perancang yang anda sukai, dengan segala cara.

Saya menambahkan beberapa ciri kecil pada skema asas sehingga berfungsi dengan baik sebagai perisai untuk projek ini. Saya menambah pad pendawaian untuk menyambungkan Trellis, soket kuasa, lampu juruterbang, dan penyambung untuk jalur LED. Saya juga menambah tempat untuk kapasitor melintasi bekalan kuasa. Litar akhir ditunjukkan di sini.

Saya memutuskan bahawa kekuatan untuk projek itu harus datang dari perisai. 12V yang dibekalkan ke perisai memberi kuasa pada jalur LED dan Arduino. Kuasa ke Arduino disediakan dengan menyambungkan input bekalan ke pin VIN Arduino, yang bersifat dua arah (anda boleh membekalkan kuasa ke Arduino pada pin ini, atau jika anda menyambungkan kuasa ke Arduino di tempat lain, ia akan memberi anda bekalan kuasa pada pin ini). Diod perlindungan D1 menghalang sebarang kuasa yang disambungkan terus ke Arduino (mis. USB) daripada cuba menyalakan LED.

Mengapa tidak menggunakan soket kuasa Arduino dan hanya menyambungkan 12V di sana? Walaupun saya dapat membekalkan 12V ke soket kuasa Arduino dan menggunakan pin VIN untuk merebut kuasa itu untuk perisai, saya bimbang bahawa dioda dan jejak Arduino D1 tidak akan sampai ke arus tinggi yang mungkin dalam memandu LED helai. Oleh itu, saya memutuskan bahawa perisai saya akan mengambil alih input kuasa dan membekalkan kuasa ke Arduino sebagai gantinya. Saya juga memerlukan 5V untuk Trellis, tetapi peraturan kuasa di atas kapal Arduino membekalkan 5V pada beberapa pin, jadi saya menggunakan salah satunya untuk Teralis. Itu menyelamatkan saya meletakkan litar pengatur di perisai.

Saya kemudian membentangkan PCB. Saya menggunakan beberapa sumber yang saya dapati untuk mendapatkan ukuran yang tepat untuk penempatan pin untuk memenuhi tajuk di Arduino Uno. Kesungguhan sedikit dan ia sesuai dengan percubaan pertama. Litar perisai tidak banyak, jadi saya mempunyai banyak ruang. Saya meletakkan jejak yang luas untuk beban LED, jadi terdapat banyak daya bawa arus untuk keperluan saya. Saya menetapkan MOSFET di mana mereka boleh dipasang rata, dengan atau tanpa pendingin. Setakat ini, saya tidak memerlukan pendingin untuk jumlah LED yang saya gunakan, tetapi ruangnya ada jika diperlukan.

Saya juga menambah lubang yang sesuai dengan lubang pemasangan pada Trellis, sehingga saya dapat menggunakan stand-off untuk memasang Trellis ke pelindung saya. Dengan perisai terpasang ke Arduino, dan Trellis digantung dalam keadaan berdiri di atas perisai, semuanya harus baik dan kukuh.

Saya kemudian mencetak susun atur papan dan menempelkannya pada sekeping inti busa, dan memasukkan bahagian saya untuk memastikan semuanya sesuai. Semua baik, jadi saya menghantar pesanan.

Saya kemudian mula mengusahakan kandang. Dengan menggunakan Fusion 360, saya merancang kandang sederhana untuk memuatkan tiga papan (Arduino Uno, perisai, dan Trellis). Lubang di kandang membolehkan sambungan ke port USB Arduino, dan tentu saja, akses ke sambungan jalur LED dan soket kuasa perisai. Soket kuasa Arduino dilindungi oleh kandang, untuk memastikan ia tidak digunakan. Selepas beberapa prototaip untuk pemasangan ujian, saya akhirnya mempunyai reka bentuk yang saya puas. Saya telah menghantar fail STL untuk lampiran ke Thingiverse.

Pada masa akan datang, saya akan membuat versi papan yang boleh disambungkan oleh Nano secara langsung, Ini akan menjadikan projek ini lebih padat. Sehingga itu, anda juga boleh menggunakan penyesuai pelindung Nano to Uno seperti ini.

Sekiranya anda akan melakukan pelindung, inilah yang anda perlukan selain bahagian yang disebutkan dalam langkah 1:

  • Papan PC RGB LED Driver Shield (dari ExpressPCB atau yang lain; anda boleh memuat turun fail dari repo Github saya untuk projek tersebut);
  • Diod 1N4002;
  • Kapasitor elektrolitik radial 100uF 25V (gunakan 220uF atau 470uF jika beban LED besar);
  • Power jack, PJ202-AH (model dinilai 5A).

Bahagian berikut adalah pilihan:

  • LED 3mm - warna apa pun, untuk lampu perintis (mungkin dihilangkan)
  • Perintang 1500 ohm - hanya diperlukan jika menggunakan lampu perintis LED

Disyorkan: