Daftar Isi:

LightMeUp! a Realtime Cross-platformed LED Strip Control: 5 Langkah (dengan Gambar)
LightMeUp! a Realtime Cross-platformed LED Strip Control: 5 Langkah (dengan Gambar)

Video: LightMeUp! a Realtime Cross-platformed LED Strip Control: 5 Langkah (dengan Gambar)

Video: LightMeUp! a Realtime Cross-platformed LED Strip Control: 5 Langkah (dengan Gambar)
Video: How do you install LED lights on stairs - Smart Bright LEDs 2024, November
Anonim
LightMeUp! Kontrol Jalur LED Lintas Platform Waktu Nyata
LightMeUp! Kontrol Jalur LED Lintas Platform Waktu Nyata
LightMeUp! Kontrol Jalur LED Lintas Platform Waktu Nyata
LightMeUp! Kontrol Jalur LED Lintas Platform Waktu Nyata
LightMeUp! Kontrol Jalur LED Lintas Platform Waktu Nyata
LightMeUp! Kontrol Jalur LED Lintas Platform Waktu Nyata

LightMeUp! adalah sistem yang saya ciptakan untuk mengendalikan RGB LED-Strip secara realtime, sambil menjaga biaya tetap rendah dan kinerja tinggi.

Server ditulis dalam Node.js dan karenanya dapat lintas platform.

Dalam contoh saya, saya menggunakan Raspberry Pi 3B untuk penggunaan jangka panjang, tetapi PC Windows saya untuk demonstrasi dan debugging.

Strip 4pin dikendalikan oleh papan tipe Arduino Nano, yang mengeksekusi perintah yang diberikan secara serial untuk mengirim sinyal PWM ke tiga transistor yang mengalihkan +12VDC ke pin warna strip yang sesuai.

LightMeUp! sistem juga memeriksa suhunya sendiri, setelah suhu di atas 60°C (140°F), sistem akan menyalakan dua kipas komputer 12VDC yang terpasang di dalam casing, untuk mendinginkan diri guna meningkatkan masa pakai sirkuit.

Fitur lain dari LightMeUp! adalah untuk menerangi botol Bombay-Sapphire Gin, tapi itu bukan fokus dari Instruksi ini.

Selamat membaca:)

Perlengkapan

  • Arduino Nano (atau mikrokontroler berbasis ATmega328 / lebih tinggi lainnya)
  • Raspberry Pi 3 Model B dengan Node.js diinstal (atau komputer lain)
  • Strip LED 12V RGB 4-Pin
  • Catu daya 12V 3A
  • Kabel jumper (jantan-jantan kalau pakai breadboard tentunya)
  • Papan tempat memotong roti (opsional)
  • 2 kipas komputer 12V DC (opsional)
  • 3x TIP120 Darlington Transistor dengan heatsink (4 jika Anda ingin menyertakan kipas pendingin)
  • 2 LED status merah dan hijau (opsional)
  • 6, resistor berbasis suhu 7K NTC + 6, resistor 7K (opsional)
  • Kabel data USB-Mini ke USB 2.0 (untuk Raspberry Pi untuk berkomunikasi dengan Arduino)
  • USB-Hub yang didukung secara eksternal (opsional, hanya untuk Raspberry Pi)

Langkah 1: Pahami Sistemnya

Pahami Sistemnya
Pahami Sistemnya

LightMeUp! didasarkan pada sirkuit elektronik yang sangat sederhana.

Kami memiliki beberapa jenis komputer (dalam hal ini Raspberry Pi) yang berkomunikasi secara serial dengan papan mikrokontroler kami. Papan ini kemudian menjalankan perintah serial tertentu seperti "RGB(255, 255, 255)" yang akan mengubah LED-Strip menjadi putih.

Setelah kami mendapatkan tiga nilai untuk MERAH, HIJAU dan BIRU yang diperlukan untuk Strip LED 4pin kami, kami menjalankan analogWrite(pin, nilai) untuk memasok transistor TIP120 kami dengan sinyal PWM.

Sinyal PWM ini memungkinkan transistor untuk mengganti pin warna yang sesuai yang kolektornya terhubung ke ground, ke tingkat tertentu atau sepenuhnya on / off. Ya, banyak "ke":)

Dengan mencampur tiga output transistor ke pin warna strip LED, pada dasarnya kita dapat membuat warna apa pun yang kita inginkan!

Sekarang dengan pemahaman ini, kita dapat menyerang tantangan terbesar dari proyek ini, server websocket dan koneksi serialnya ke Arduino kita.

Langkah 2: Menulis WebSocketServer

Menulis Server WebSocket
Menulis Server WebSocket

Sekarang, kita harus membuat jenis server web tertentu, yang memungkinkan kita untuk mentransfer data bolak-balik tanpa menyegarkan sekali untuk mencapai kontrol strip LED waktu nyata.

Harap dicatat, bahwa komunikasi realtime tentu saja tidak mungkin, akan selalu ada setidaknya beberapa milidetik penundaan yang terlibat, tetapi bagi mata manusia itu cukup besar sebagai realtime.

Ini dapat dengan mudah dicapai dengan menggunakan perpustakaan socket.io jika Anda menggunakan Node.js seperti yang saya lakukan. Namun, Anda selalu dapat tetap menggunakan bahasa pemrograman favorit Anda, tentu saja.

Kami akan berurusan dengan koneksi websocket yang memungkinkan kami untuk mentransfer data input seperti warna yang Anda inginkan untuk mengatur strip-LED, atau data status seperti "LED ON" dua arah tanpa menyegarkan.

Fitur lain yang sangat penting yang harus dimiliki server tetapi tidak perlu adalah login sederhana. Saya mendasarkan login saya dari bidang nama pengguna dan kata sandi yang sederhana. Potongan informasi ini kemudian diposting ke rute /login server, yang kemudian membandingkan nama pengguna dengan daftar pengguna (file.txt) dan kata sandi yang sesuai dalam bentuk terenkripsi SHA256. Anda tidak ingin tetangga Anda mengacaukan strip LED Anda saat Anda menikmati minuman favorit Anda di kursi yang paling nyaman, bukan?

Sekarang datang jantung server, komunikasi serial.

Server Anda harus dapat berkomunikasi secara serial - di Node.js ini dapat dicapai dengan membuka port menggunakan pustaka "serialport". Tapi tentukan dulu nama port arduino anda di komputer server hosting anda. Tergantung pada sistem operasi Anda, port akan memiliki nama yang berbeda, mis. di Windows port ini diberi nama port "COMx", sedangkan di linux diberi nama "/ dev/ttyUSBx", di mana x adalah nomor port USB.

Langkah 3: Buat Protokol Perintah Serial

Tetapkan Protokol Perintah Serial
Tetapkan Protokol Perintah Serial

Pada gambar di atas, Anda melihat kode Arduino IDE yang sebenarnya bertanggung jawab untuk kontrol RGB. Tujuan dari langkah ini adalah, untuk membuat server yang Anda tulis sendiri dan papan Arduino berbicara satu sama lain dengan sukses.

Setelah Anda berhasil membuka port serial, Anda harus dapat mengirim perintah ke papan yang memenuhi keinginan Anda. Misalnya, jika kita menggambar jari di atas pemilih warna pada halaman web HTML, kode RGB harus dikirim ke server yang kemudian mengirimkannya ke Arduino Anda sehingga memproses nilai yang ditetapkan.

Saya menggunakan jscolor, mereka memiliki implementasi hebat dari elemen pemilihan warna berkualitas tinggi, yang memiliki acara yang disebut "onFineChange" yang memungkinkan Anda memproses data dari pemilih warna segera setelah nilainya berubah.

Direkomendasikan: