สารบัญ:

ไลท์มีอัพ! การควบคุม LED Strip แบบข้ามแพลตฟอร์มแบบเรียลไทม์: 5 ขั้นตอน (พร้อมรูปภาพ)
ไลท์มีอัพ! การควบคุม LED Strip แบบข้ามแพลตฟอร์มแบบเรียลไทม์: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ไลท์มีอัพ! การควบคุม LED Strip แบบข้ามแพลตฟอร์มแบบเรียลไทม์: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ไลท์มีอัพ! การควบคุม LED Strip แบบข้ามแพลตฟอร์มแบบเรียลไทม์: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: อะไรเอ่ย #สิว #สิวอุดตัน #สิวอักเสบ #สิวเห่อ #รอยสิว #รักษาสิว #เล็บเท้า #satisfying 2024, พฤศจิกายน
Anonim
ไลท์มีอัพ! ระบบควบคุม LED Strip แบบข้ามแพลตฟอร์มแบบเรียลไทม์
ไลท์มีอัพ! ระบบควบคุม LED Strip แบบข้ามแพลตฟอร์มแบบเรียลไทม์
ไลท์มีอัพ! ระบบควบคุม LED Strip แบบข้ามแพลตฟอร์มแบบเรียลไทม์
ไลท์มีอัพ! ระบบควบคุม LED Strip แบบข้ามแพลตฟอร์มแบบเรียลไทม์
ไลท์มีอัพ! ระบบควบคุม LED Strip แบบข้ามแพลตฟอร์มแบบเรียลไทม์
ไลท์มีอัพ! ระบบควบคุม LED Strip แบบข้ามแพลตฟอร์มแบบเรียลไทม์

ไลท์มีอัพ! เป็นระบบที่ฉันคิดค้นเพื่อควบคุม RGB LED-Strip แบบเรียลไทม์ โดยรักษาต้นทุนให้ต่ำและประสิทธิภาพสูง

เซิร์ฟเวอร์เขียนด้วย Node.js และสามารถข้ามแพลตฟอร์มได้

ในตัวอย่างของฉัน ฉันใช้ Raspberry Pi 3B สำหรับการใช้งานในระยะยาว แต่พีซีที่ใช้ Windows ของฉันเพื่อการสาธิตและการดีบัก

แถบ 4 พินถูกควบคุมโดยบอร์ดประเภท Arduino Nano ซึ่งรันคำสั่งที่ได้รับตามลำดับเพื่อส่งสัญญาณ PWM ไปยังทรานซิสเตอร์สามตัวที่สลับ +12VDC เป็นพินสีที่สอดคล้องกันของแถบ

ไลท์มีอัพ! ระบบยังตรวจสอบอุณหภูมิของตัวเองด้วย เมื่ออุณหภูมิสูงกว่า 60°C (140°F) ระบบจะเปิดพัดลมคอมพิวเตอร์ 12VDC สองตัวที่ติดตั้งไว้ในเคส เพื่อทำให้ตัวเองเย็นลงเพื่อปรับปรุงอายุการใช้งานของวงจร

คุณสมบัติอื่นของ LightMeUp! คือการส่องสว่างขวด Bombay-Sapphire Gin แต่นั่นไม่ใช่จุดสนใจของคำแนะนำนี้

สนุกกับการอ่าน:)

เสบียง

  • Arduino Nano (หรือไมโครคอนโทรลเลอร์ ATmega328 / สูงกว่า)
  • Raspberry Pi 3 Model B ที่ติดตั้ง Node.js (หรือคอมพิวเตอร์เครื่องอื่น)
  • แถบ LED RGB 4 พิน 12V RGB
  • แหล่งจ่ายไฟ 12V 3A
  • สายจัมเปอร์ (ตัวผู้-ตัวผู้ ถ้าคุณใช้เขียงหั่นขนมแน่นอน)
  • เขียงหั่นขนม (ไม่จำเป็น)
  • พัดลมคอมพิวเตอร์ DC 12V 2 ตัว (อุปกรณ์เสริม)
  • 3x TIP120 Darlington Transistor พร้อมฮีทซิงค์ (4 หากคุณต้องการรวมพัดลมระบายความร้อน)
  • ไฟ LED แสดงสถานะ 2 ดวงสีแดงและสีเขียว (อุปกรณ์เสริม)
  • 6, 7K ตัวต้านทานตามอุณหภูมิ NTC + ตัวต้านทาน 6, 7K (อุปกรณ์เสริม)
  • สายเคเบิลข้อมูล USB-Mini เป็น USB 2.0 (สำหรับ Raspberry Pi เพื่อสื่อสารกับ Arduino)
  • USB-Hub ที่ใช้พลังงานจากภายนอก (อุปกรณ์เสริม สำหรับ Raspberry Pi เท่านั้น)

ขั้นตอนที่ 1: ทำความเข้าใจระบบ

เข้าใจระบบ
เข้าใจระบบ

ไลท์มีอัพ! ขึ้นอยู่กับวงจรอิเล็กทรอนิกส์ที่ง่ายมาก

เรามีคอมพิวเตอร์บางประเภท (ในกรณีนี้คือ Raspberry Pi) ซึ่งสื่อสารแบบอนุกรมกับบอร์ดไมโครคอนโทรลเลอร์ของเรา บอร์ดนี้จะรันคำสั่งซีเรียลเฉพาะเช่น "RGB(255, 255, 255)" ซึ่งจะทำให้ LED-Strip ของเราเปลี่ยนเป็นสีขาว

เมื่อเราได้ค่าสามค่าสำหรับ RED, GREEN และ BLUE ที่จำเป็นสำหรับ 4pin LED-Strip ของเราแล้ว เราจะดำเนินการ analogWrite (พิน, ค่า) เพื่อจัดหาทรานซิสเตอร์ TIP120 ของเราด้วยสัญญาณ PWM

สัญญาณ PWM นี้ช่วยให้ทรานซิสเตอร์สลับพินสีที่สอดคล้องกันซึ่งตัวสะสมเชื่อมต่อกับกราวด์ ในระดับที่กำหนดหรือเปิด/ปิดโดยสมบูรณ์ ใช่ "ถึง" มากมาย:)

ด้วยการผสมเอาท์พุตทรานซิสเตอร์สามตัวเข้ากับพินสีของแถบ LED เราสามารถสร้างสีใดก็ได้ที่เราต้องการ!

ด้วยความเข้าใจนี้ เราสามารถโจมตีความท้าทายที่ใหญ่ที่สุดของโครงการนี้ เว็บซ็อกเก็ตเซิร์ฟเวอร์ และการเชื่อมต่อแบบอนุกรมกับ Arduino ของเรา

ขั้นตอนที่ 2: การเขียน WebSocketServer

การเขียน WebSocketServer
การเขียน WebSocketServer

ตอนนี้ เราต้องสร้างเว็บเซิร์ฟเวอร์บางประเภท ซึ่งช่วยให้เราถ่ายโอนข้อมูลไปมาโดยไม่ต้องรีเฟรชเพียงครั้งเดียว เพื่อให้ได้การควบคุมแถบ LED แบบเรียลไทม์

โปรดทราบว่าแน่นอนว่าการสื่อสารแบบเรียลไทม์นั้นเป็นไปไม่ได้ จะมีความล่าช้าอย่างน้อยสองสามมิลลิวินาทีเสมอ แต่สำหรับสายตามนุษย์นั้นถือว่าเรียลไทม์มาก

สามารถทำได้โดยง่ายโดยใช้ไลบรารี socket.io หากคุณใช้ Node.js เหมือนที่ฉันทำ อย่างไรก็ตาม คุณสามารถใช้ภาษาโปรแกรมที่คุณชื่นชอบได้เสมอ

เราจะจัดการกับการเชื่อมต่อ websocket ซึ่งช่วยให้เราถ่ายโอนข้อมูลอินพุต เช่น สีที่คุณต้องการตั้งค่าแถบ LED หรือข้อมูลสถานะเช่น "LED ON" แบบสองทิศทางโดยไม่ต้องรีเฟรช

คุณลักษณะที่สำคัญอีกอย่างหนึ่งที่เซิร์ฟเวอร์ควรมี แต่ไม่จำเป็นก็คือการเข้าสู่ระบบอย่างง่าย ฉันเข้าสู่ระบบโดยใช้ชื่อผู้ใช้และรหัสผ่านอย่างง่าย ข้อมูลเหล่านี้จะถูกโพสต์ไปยังเส้นทาง /login ของเซิร์ฟเวอร์ ซึ่งจะเปรียบเทียบชื่อผู้ใช้กับรายชื่อผู้ใช้ (ไฟล์.txt) และรหัสผ่านที่เกี่ยวข้องในรูปแบบที่เข้ารหัส SHA256 คุณคงไม่อยากให้เพื่อนบ้านยุ่งกับแถบไฟ LED ในขณะที่คุณเพลิดเพลินกับเครื่องดื่มแก้วโปรดบนที่นั่งที่สบายที่สุดใช่ไหม

ตอนนี้หัวใจของเซิร์ฟเวอร์คือการสื่อสารแบบอนุกรม

เซิร์ฟเวอร์ของคุณต้องสามารถสื่อสารแบบอนุกรม - ใน Node.js สามารถทำได้โดยการเปิดพอร์ตโดยใช้ไลบรารี "พอร์ตอนุกรม" แต่ก่อนอื่นให้กำหนดชื่อพอร์ต Arduino ของคุณบนคอมพิวเตอร์ที่โฮสต์เซิร์ฟเวอร์ ขึ้นอยู่กับระบบปฏิบัติการของคุณ พอร์ตจะมีชื่อต่างกัน กล่าวคือ บน Windows พอร์ตเหล่านี้มีชื่อว่าพอร์ต "COMx" ในขณะที่บน linux จะมีชื่อว่า "/dev/ttyUSBx" โดยที่ x คือหมายเลขพอร์ต USB

ขั้นตอนที่ 3: สร้างโปรโตคอลของคำสั่งแบบอนุกรม

สร้างโปรโตคอลของคำสั่งอนุกรม
สร้างโปรโตคอลของคำสั่งอนุกรม

ในภาพด้านบน คุณจะเห็นโค้ด Arduino IDE จริงที่รับผิดชอบการควบคุม RGB เป้าหมายของขั้นตอนนี้คือการทำให้เซิร์ฟเวอร์ที่เขียนเองและบอร์ด Arduino คุยกันได้สำเร็จ

เมื่อคุณเปิดพอร์ตซีเรียลสำเร็จแล้ว คุณจะต้องสามารถส่งคำสั่งไปยังบอร์ดที่จะดูแลความต้องการของคุณ ตัวอย่างเช่น หากเราวาดนิ้วเหนือตัวเลือกสีบนหน้าเว็บ HTML โค้ด RGB ควรถูกส่งไปยังเซิร์ฟเวอร์ จากนั้นจึงส่งไปยัง Arduino ของคุณเพื่อประมวลผลชุดค่าต่างๆ

ฉันใช้ jscolor พวกเขามีการนำองค์ประกอบการเลือกสีคุณภาพสูงมาใช้อย่างยอดเยี่ยม ซึ่งเป็นเจ้าของเหตุการณ์ที่เรียกว่า "onFineChange" ซึ่งช่วยให้ข้อมูลกระบวนการของคุณจากตัวเลือกสีทันทีที่ค่ามีการเปลี่ยนแปลง

แนะนำ: