Isi kandungan:

LightMeUp! Kawalan Jalur LED Cross-platformed Realtime: 5 Langkah (dengan Gambar)
LightMeUp! Kawalan Jalur LED Cross-platformed Realtime: 5 Langkah (dengan Gambar)

Video: LightMeUp! Kawalan Jalur LED Cross-platformed Realtime: 5 Langkah (dengan Gambar)

Video: LightMeUp! Kawalan Jalur LED Cross-platformed Realtime: 5 Langkah (dengan Gambar)
Video: ⚖️【斗罗大陆】EP01-EP130, Full Version |Soul Land |MULTI SUB |Chinese Animation |Donghua 2024, November
Anonim
LightMeUp! Kawalan Jalur LED Cross-platformed Realtime
LightMeUp! Kawalan Jalur LED Cross-platformed Realtime
LightMeUp! Kawalan Jalur LED Cross-platformed Realtime
LightMeUp! Kawalan Jalur LED Cross-platformed Realtime
LightMeUp! Kawalan Jalur LED Cross-platformed Realtime
LightMeUp! Kawalan Jalur LED Cross-platformed Realtime

LightMeUp! adalah sistem yang saya cipta untuk mengendalikan Jalur LED RGB dalam masa nyata, sambil mengekalkan kos dan prestasi yang tinggi.

Pelayan ditulis dalam Node.js dan untuk itu platform-lintas.

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

Jalur 4pin dikendalikan oleh papan jenis Arduino Nano, yang melaksanakan perintah yang diberi secara bersiri untuk menghantar isyarat PWM kepada tiga transistor yang menukar + 12VDC ke pin warna yang sesuai.

LightMeUp! sistem juga memeriksa suhunya sendiri, setelah berada di atas 60 ° C (140 ° F) ia menghidupkan dua kipas komputer 12VDC yang dibina di dalam selongsong, untuk menyejukkan diri untuk meningkatkan jangka hayat litar.

Satu lagi ciri LightMeUp! adalah untuk menerangi sebotol Bombay-Sapphire Gin, tetapi itu bukan fokus dari Instructable ini.

Selamat membaca:)

Bekalan

  • Arduino Nano (atau mikrokontroler ATmega328 / berasaskan lain)
  • Raspberry Pi 3 Model B dengan Node.js dipasang (atau komputer lain)
  • Jalur LED 4-Pin 12V RGB
  • Bekalan kuasa 12V 3A
  • Kabel pelompat (tentu saja lelaki-lelaki jika anda menggunakan papan roti)
  • Papan roti (pilihan)
  • 2 kipas komputer 12V DC (pilihan)
  • 3x TIP120 Darlington Transistor w / heatsink (4 jika anda mahu memasukkan kipas penyejuk)
  • 2 LED status merah dan hijau (pilihan)
  • 6, 7K NTC perintang berasaskan suhu + 6, 7K perintang (pilihan)
  • Kabel data USB-Mini ke USB 2.0 (untuk Raspberry Pi berkomunikasi dengan Arduino)
  • USB-Hub berkuasa luaran (pilihan, hanya untuk Raspberry Pi)

Langkah 1: Fahami Sistem

Fahami Sistem
Fahami Sistem

LightMeUp! didasarkan pada litar elektronik yang sangat sederhana.

Kami mempunyai beberapa jenis komputer (dalam hal ini Raspberry Pi) yang berkomunikasi secara bersiri dengan papan mikrokontroler kami. Papan ini kemudian melaksanakan perintah bersiri tertentu seperti "RGB (255, 255, 255)" yang akan menjadikan LED-Strip putih kita.

Sebaik sahaja kami mendapat tiga nilai untuk MERAH, HIJAU dan BIRU yang diperlukan untuk Jalur LED 4pin, kami melaksanakan analogWrite (pin, value) untuk membekalkan transistor TIP120 kami dengan isyarat PWM.

Isyarat PWM ini membolehkan transistor menukar pin warna yang sesuai yang pengumpulnya disambungkan ke tanah, ke tahap tertentu atau hidup / mati sepenuhnya. Ya, banyak "hingga" s:)

Dengan mencampurkan ketiga-tiga output transistor ke pin warna jalur LED, kita boleh membuat warna apa pun yang kita mahukan!

Sekarang dengan pemahaman ini, kita dapat menyerang cabaran terbesar dari projek ini, pelayan laman web dan sambungan bersirinya ke Arduino kami.

Langkah 2: Menulis WebSocketServer

Menulis WebSocketServer
Menulis WebSocketServer

Sekarang, kita harus membuat jenis pelayan web tertentu, yang membolehkan kita memindahkan data berulang-ulang tanpa menyegarkan sekali untuk mencapai kawalan jalur LED masa nyata.

Harap maklum, bahawa komunikasi masa nyata tentunya mustahil, selalunya akan ada beberapa milisaat kelewatan yang terlibat, tetapi bagi mata manusia itu dianggap sebagai masa nyata.

Ini dapat dicapai dengan mudah dengan menggunakan perpustakaan socket.io jika anda menggunakan Node.js seperti yang saya gunakan. Walau bagaimanapun, anda selalu boleh mengikuti bahasa pengaturcaraan kegemaran anda.

Kami akan berurusan dengan sambungan soket web yang membolehkan kami memindahkan data input seperti warna yang anda mahu tetapkan jalur LED, atau data status seperti "LED ON" secara dua arah tanpa menyegarkan.

Ciri lain yang sangat penting yang harus dimiliki pelayan tetapi tidak perlu ialah log masuk yang mudah. Saya menggunakan log masuk dari medan nama pengguna dan kata laluan yang mudah. Maklumat ini kemudian diposkan ke / log masuk pelayan, yang kemudian membandingkan nama pengguna dengan senarai pengguna (fail.txt) dan kata laluannya yang sesuai dalam bentuknya yang dienkripsi SHA256. Anda tidak mahu jiran anda bermain-main dengan jalur LED anda sambil menikmati minuman kegemaran anda di tempat duduk paling selesa, bukan?

Sekarang muncul jantung pelayan, komunikasi bersiri.

Pelayan anda mesti dapat berkomunikasi secara bersiri - dalam Node.js ini dapat dicapai dengan membuka port menggunakan perpustakaan "serialport". Tetapi tentukan terlebih dahulu nama port arduino anda di komputer anda yang mengehoskan pelayan. Bergantung pada sistem operasi anda, port akan mempunyai nama yang berbeza, mis. pada Windows port ini dinamakan port "COMx", sedangkan pada linux mereka bernama "/ dev / ttyUSBx", di mana x adalah bilangan port USB.

Langkah 3: Menetapkan Protokol Perintah Bersiri

Menetapkan Protokol Perintah Bersiri
Menetapkan Protokol Perintah Bersiri

Dalam gambar di atas, anda melihat kod Arduino IDE sebenar yang bertanggungjawab untuk kawalan RGB. Matlamat langkah ini adalah, untuk menjadikan pelayan yang ditulis sendiri dan papan Arduino anda saling bercakap dengan jayanya.

Setelah berjaya membuka port bersiri anda, anda perlu dapat menghantar arahan ke papan yang memenuhi kehendak anda. Sebagai contoh, jika kita menarik jari di atas pemilih warna di laman web HTML, kod RGB harus dihantar ke pelayan yang kemudian mengirimkannya ke Arduino anda sehingga memproses nilai yang ditetapkan.

Saya menggunakan jscolor, mereka memiliki implementasi yang baik dari elemen pemilihan warna yang berkualiti tinggi, yang memiliki acara yang disebut "onFineChange" yang memungkinkan data proses anda dari pemilih warna segera setelah nilai berubah.

Disyorkan: