สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ฉันไม่ใช่คนแรกที่ทำการเปลี่ยนสีแสงตามสถานะของบัญชี Skype for Business ของคุณ แต่ฉันคิดว่าฉันเป็นคนแรกที่เขียนบทช่วยสอนโดยใช้แถบ LED WS2812 ที่สามารถระบุตำแหน่งได้ ฉันชอบไฟเหล่านี้มากกว่าเพราะว่าด้วยฮาร์ดแวร์เพียงเล็กน้อย (แถบไฟ กำลังไฟ/ข้อมูล/กราวด์) คุณสามารถมีไฟ LED จำนวนมากได้ คุณไม่จำเป็นต้องบัดกรีตัวต้านทาน ทรานซิสเตอร์กำลัง หรือแม้แต่สายไฟแยกสำหรับสีแดง/เขียว/น้ำเงิน พวกเขาสามารถทำได้มากกว่าการแสดงสีคงที่เดียวที่ใช้ในโครงการนี้
ขอแสดงความชื่นชมอย่างมากต่อ Hackster สำหรับบทช่วยสอนและโค้ดที่ฉันใช้เป็นพื้นฐานของฉัน - ลองดูสิ พวกเขาน่าจะเขียนได้ดีกว่าฉัน: https://www.hackster.io/matheus-fenner/skype-statu …
โครงการ github ของพวกเขา:
โดยทั่วไปฉันใช้โครงการของพวกเขาและเพิ่มคุณสมบัติเพิ่มเติม มีคำแนะนำอื่นที่นี่ที่ใช้โปรแกรมตรวจสอบที่แตกต่างกันและมีฟังก์ชันแสงจาง ๆ ฉันคิดว่าแอนิเมชั่นดูดี แต่ตัดสินใจว่าสำหรับโต๊ะที่มีแสงน้อยเหมือนของฉัน แสงที่จางลงจะทำให้ทุกคนในสำนักงานเสียสมาธิมากเกินไป
ขั้นตอนที่ 1: วัสดุและเครื่องมือ
ซอฟต์แวร์
- ดาวน์โหลด Arduino Sketch และ.exe ล่าสุดบน github ของฉัน:
- คุณจะต้องใช้ Arduino IDE เพื่ออัปโหลดไปยังไมโครคอนโทรลเลอร์ของคุณ
- หากคุณต้องการแก้ไขโครงการด้วยตัวเอง คุณจะต้องมี Visual Studio
ฮาร์ดแวร์
- WS2812B แถบ LED - สามารถใช้ชื่อ WS2811/WS2812/WS2812B - เหมือนกันหมด เพียงใส่ใจกับแรงดันไฟฟ้าของแถบ (หรือพิกเซล) [การค้นหา eBay] [การค้นหา Amazon]
- แม่แรง DC แบบบาร์เรล (ตัวเมีย) พร้อมขั้วสกรู - ไฟต้องการพลังงานมากกว่า USB 2.0 หรือ Arduino Uno สามารถจ่ายไฟได้ ดังนั้นฉันจึงจ่ายไฟให้กับแหล่งจ่ายไฟ 12V สำรอง แม่แรงแบบลำกล้องเหล่านี้เป็นวิธีที่ยอดเยี่ยมในการเชื่อมต่อกับแหล่งจ่ายไฟ DC โดยไม่ต้องตัดแหล่งจ่ายใดๆ ที่จำเป็น [อีเบย์]
- แหล่งจ่ายไฟ 12V อย่างน้อย 1A ควรใช้ 2A-5A LED เหล่านี้สามารถดึงกระแสไฟได้มากที่ความสว่างเต็มที่ เครื่องคิดเลขออนไลน์ส่วนใหญ่จะบอกว่าคุณต้องการแหล่งจ่ายไฟอย่างน้อย 3.3A สำหรับทุก ๆ 1 เมตรของแถบ 60led/m ซึ่งค่อนข้างรุนแรง แต่ใช้แหล่งจ่ายไฟแยกทางเดียวหรือ อื่น. หรือแหล่งจ่ายไฟ 5V หากคุณใช้แถบ LED 5V
- สายเชื่อมต่อ - ฉันใช้สายแข็ง 22AWG [eBay] ฉันแนะนำ Remmington Industries
- Arduino Uno (หรือไมโครคอนโทรลเลอร์อื่น ๆ ที่ไลบรารี FastLED ใช้งานได้)
- แม่เหล็ก - สำหรับติดไว้ใต้โต๊ะ หากโต๊ะทำงานของคุณไม่ใช่โลหะ คุณควรใช้ Velcro
เครื่องมือ
- ปืนกาวร้อน
- หัวแร้ง
- คีมปอกสายไฟ
- พีซีที่ใช้ Windows
- มีด XActo หรือเครื่องตัดกล่องเพื่อตัดกระดาษแข็ง / แผ่นโฟมของคุณให้มีขนาด
- เจ้านายที่ไม่หวาดระแวงเกี่ยวกับเรื่องบังเอิญที่แอบดูคุณ
ขั้นตอนที่ 2: ข้อมูลพื้นหลัง WS2811/WS2812/b
WS2811 เป็นชื่อของแถบ LED ที่สามารถระบุตำแหน่งได้ราคาถูกและทั่วไป ไฟแต่ละดวงบนแถบนั้นเป็น LED RGB และคุณสามารถควบคุมสีของแต่ละดวงแยกกันได้ จริง ๆ แล้ว WS2811 ไม่ใช่ LED แต่เป็นชิปวงจรรวมที่ใช้โปรโตคอลข้อมูลบางอย่าง [เอกสารข้อมูล] ชิป WS2811 ทุกตัวจะช่วยเพิ่มสัญญาณข้อมูลจนถึงระดับแรงดันไฟที่ใช้งาน คุณจึงไม่ต้องกังวลว่าสัญญาณจะลดลง คุณสามารถขับมากกว่า 1,000 LEDS ที่ 20fps ด้วยโปรโตคอล WS2811
ฉันชอบที่จะใช้แถบ LED เหล่านี้เพราะการเดินสายเป็นเรื่องง่ายสำหรับพวกเขา ให้พลัง กราวด์ และข้อมูล คุณไม่จำเป็นต้องใช้ทรานซิสเตอร์กำลังเหมือนที่คุณทำกับแถบ RGB แบบ 4 สายมาตรฐาน และคุณไม่จำเป็นต้องต่อสายไฟกับไมโครคอนโทรลเลอร์สำหรับไฟแต่ละดวงหรือแต่ละช่องสัญญาณ คุณเพียงแค่ให้พลังงานและสัญญาณข้อมูล คุณก็พร้อมแล้ว
ข้อเสียของแถบเหล่านี้คือพวกเขาต้องการไมโครคอนโทรลเลอร์เพื่อให้สัญญาณเมื่อเปิดเครื่อง คุณไม่สามารถให้พลังงานและไม่มีสัญญาณและคาดหวังให้ใช้งานได้ หลังจากที่คุณเขียนลวดลายสีลงไป แถบจะเก็บลวดลายนั้นไว้จนกว่าคุณจะอัปเดตหรือไฟดับ ข้อเสียอีกประการหนึ่งคือรูปแบบเวลาของรูปแบบนั้นแม่นยำและพิถีพิถันมาก ดังนั้นคุณอาจต้องปิดใช้งานการขัดจังหวะบนไมโครคอนโทรลเลอร์เพื่อให้ไลบรารี FastLED มีลำดับความสำคัญเมื่อเขียนไปยัง LED ซึ่งอาจส่งผลให้เกิดความไม่เสถียรของ wifi และต้องใช้โครงสร้างโค้ดพิเศษบางอย่าง
เมื่อเราพูดถึงเรื่องนี้แล้ว คุณไม่จำเป็นต้องจัดการกับข้อมูลเวลาที่แม่นยำด้วยตัวคุณเอง!! ห้องสมุด FastLED ทำเพื่อคุณ!! นั่นเป็นเหตุผลที่ใช้งานง่าย
หมายเหตุ - คำศัพท์ WS2811/WS2812/WS2812b ใช้แทนกันได้ทั้งหมด ตามหน้านี้ WS2811 คือ IC ไดรเวอร์ LED และ WS2812 คือ WS2811 ที่วางอยู่ภายในแพ็คเกจ LED 5050 โดยทั่วไปแล้ว WS2811 คือ 12V และสามารถระบุตำแหน่งได้ทุกๆ 3 LED เท่านั้น WS2812 คือ 5V และสามารถระบุตำแหน่ง LED ทุกดวงได้
ขั้นตอนที่ 3: แผนภาพการเดินสายไฟและการประกอบฮาร์ดแวร์
เพียงผูกสายดินไว้ด้วยกันระหว่าง ARDUINO และแหล่งจ่ายไฟ DC ของคุณ อย่าผูก +5V หรือ +12V เข้าด้วยกัน จากไมโครคอนโทรลเลอร์ไปยังแถบ LED ควรมีสายไฟเพียงสองเส้นเท่านั้น: Data และ Gnd
ขั้นแรกให้ตัดกระดาษแข็งหรือแผ่นโฟมเพื่อติดแถบไฟ การติดตั้งแถบเมื่อบัดกรีแถบนั้นง่ายกว่าการใช้มือที่สามเพื่อยึดแถบในอากาศ นำแผ่นรองออกจากแถบเพื่อให้เห็นกาวแล้ววางลงบนแผ่นโฟม ดูเหมือนว่าจะติดได้ค่อนข้างดี แต่ถ้าคุณมีปัญหา คุณสามารถใช้กาวร้อนได้เช่นกัน ฉันใช้ตัวเชื่อมต่อ JST แบบ 3 พินที่ปลายแต่ละด้านของแถบเพื่อให้ทุกอย่างเป็นแบบแยกส่วน แต่คุณสามารถประสานทุกอย่างเข้าที่ ดูบนแถบและควรมีลูกศรทุกสองสามไฟหรือแต่ละด้านจะมีป้ายกำกับ "DO" หรือ "DI" - DI คือข้อมูลเข้า DO คือข้อมูลออก คุณต้องต่อสาย [Arduino][DI]----LED ----[DO][DI]------LED -----[DO][DI] เป็นต้น โดยทั่วไปแล้วสายข้อมูลจาก Arduino ไปที่พิน DI หากมีลูกศร ตรวจสอบให้แน่ใจว่าข้อมูลของคุณ "ไหล" ไปในทิศทางของลูกศร โดยส่วนตัวแล้วฉันพบว่าการประสานกำลังและกราวด์ไปที่กึ่งกลางของแถบนั้นง่ายกว่าแทนที่จะใช้พินอินพุต - ไม่สำคัญว่าคุณจะวางไว้ที่ไหนเพราะ +/- ทั้งหมดเชื่อมต่อกันเป็นรางขนาดใหญ่ คุณจะเห็นในภาพหนึ่งว่าสำหรับการเปลี่ยนจากแถบ LED หนึ่งไปยังอีกแถบหนึ่ง ฉันเพียงบัดกรีตัวเชื่อมต่อสำหรับสายดาต้า - ใช้งานได้เพราะฉันให้ +12V และ Gnd ทั้งสองแถบ ไม่ทางใดก็ทางหนึ่ง คุณต้องใช้สายกราวด์ทั้งหมดเพื่อผูกเข้าด้วยกันตลอดทั้งโครงการ ฉันใช้ขั้วต่อแจ็คแบบบาร์เรล DC สำหรับอินพุตจากแหล่งจ่ายไฟที่ผนังของฉัน และ Arduino Uno ใช้พลังงานจากสาย USB ฉันใช้เทปกบสีเขียวติดแม่เหล็กไว้กับกระดานเพราะมันสะดวก เท่าที่โปรแกรม Arduino ดำเนินไป ฉันคิดว่าอันนี้ค่อนข้างตรงไปตรงมา มันตรวจสอบพอร์ตอนุกรมและเมื่อมีข้อมูลใหม่จะอ่านค่าจำนวนเต็มแล้วเขียน RGB นั้นไปที่ไฟ คุณจะต้องใช้ไลบรารี FastLED เพื่อคอมไพล์โค้ด คุณสามารถดาวน์โหลดได้จากตัวจัดการไลบรารีของ Arduino IDE หรือจากเว็บไซต์ FastLED: สิ่งเดียวที่คุณต้องเปลี่ยนคือ PIN และ NUM_LEDS ที่จุดเริ่มต้นของโปรแกรม PIN คือพินดิจิทัลที่คุณเสียบสายดาต้าของไฟ - ฉันใช้พิน 11 NUM_LEDS คือจำนวนไฟ LED ที่กำหนดแอดเดรสได้หรือกลุ่มของไฟ LED ที่มีอยู่ แถบ 12V ของฉันสามารถระบุไฟได้ทุกๆ 3 ดวงเท่านั้น ดังนั้นแม้ว่าจะมี LED แยกกันประมาณ 75 ดวงบนแถบนั้น แต่โค้ด Arduino จะระบุไฟได้เพียง 26 ดวงเท่านั้น (ถ้าผมบอกว่า "เปิด LED 2" ไฟเล็กๆ 3 ดวงจะติดขึ้น) เพียงเปลี่ยน PIN และ NUM_LEDS เพื่อให้ตรงกับการเดินสายของคุณและอัปโหลดรหัสไปยังตัวควบคุม จากนั้นเรียกใช้ LyncPresenceBridge.exe ตามรายละเอียดในขั้นตอนต่อไป… ดาวน์โหลดจากที่นี่: ที่จริงแล้วคุณไม่จำเป็นต้องติดตั้งอะไรเลย เพียงเรียกใช้ LyncPresenceBridge.exe มันจะใส่ไอคอนในถาดของคุณ (มุมขวาล่างของหน้าจอ) ที่ดูเหมือนแฟลชไดรฟ์ USB พร้อมไฟที่ด้านล่าง คลิกขวาที่ไอคอนและเลือก "การตั้งค่า" และตั้งค่าพอร์ตอนุกรมเป็นพอร์ตใดก็ตามที่ Arduino ของคุณเชื่อมต่ออยู่ วิธีที่ง่ายที่สุดในการค้นหาคือเปิด Arduino IDE และไปที่เครื่องมือ > พอร์ต > และดูว่าพอร์ตใดอยู่ในรายการ อีกวิธีในการค้นหาคือการเปิด Device Manager และขยายส่วน "พอร์ต (COM & LPT)" และดูว่ามีอะไรบ้าง Mine แสดงเพียงอันเดียว แต่ถ้ามีหลายอันให้ลองใช้ทั้งหมดจนกว่าคุณจะได้อันที่ใช้งานได้กับซอฟต์แวร์ โปรแกรมจะตรวจสอบสถานะ Skype ของคุณและเมื่อเปลี่ยนสถานะจะเขียนชุดค่า RGB ออกจากพอร์ตอนุกรม คุณจึงเปลี่ยนสถานะจาก "ว่าง" เป็น "ไม่ว่าง" ได้ และไฟควรเปลี่ยนจากสีเขียวเป็นสีแดง คุณสามารถคลิกขวาที่ไอคอนและเลือกการตั้งค่าเพื่อตั้งค่าไฟ เช่น Available, Busy, Away และ Off สิ่งนี้มีประโยชน์หากคุณเบื่อกับไฟเขียว/แดง หรือต้องการปิดไฟโดยสิ้นเชิง ดับเบิลคลิกที่ไอคอนเพื่อเปิด Color Picker ซึ่งคุณสามารถตั้งค่าสีของไฟให้เป็นสีที่กำหนดเองได้ เช่น สีม่วงหรือสีชมพู คุณยังสามารถเข้าถึงสิ่งนี้ได้จากเมนูคลิกขวา เมนูการตั้งค่ายังสามารถใช้เพื่อเปลี่ยนความสว่างของไฟและความเร็วของแอนิเมชั่น คุณสามารถเปลี่ยนสีสำหรับแต่ละสถานะได้โดยการแก้ไขไฟล์โซลูชันใน visual studio ดาวน์โหลดทุกอย่างจากหน้า Github ของฉันและเปิดไฟล์.sln ใน Visual Studio (รุ่นชุมชนใช้งานได้) จากที่นั่น คุณสามารถแก้ไขสีที่จะแสดงผลสำหรับแต่ละสถานะ เพิ่ม/ลบรายการในเมนูบริบท และอื่นๆ อีกมากมาย รูปภาพที่ใช้เป็นไอคอนจะอยู่ใน Resources.resx ภายใต้คุณสมบัติ LyncPresenceBridge หากคุณกำลังแก้ไขหลายอย่าง ฉันแนะนำให้ไปที่ Properties, Settings.settings และเปลี่ยนพอร์ตอนุกรมเริ่มต้นเป็นพอร์ตที่คอนโทรลเลอร์ของคุณเชื่อมต่ออยู่ ทุกครั้งที่คุณสร้างโซลูชัน ระบบจะรีเซ็ตพอร์ตเริ่มต้นเป็นพอร์ตเริ่มต้น และพอร์ตเก่าจะต้องเปลี่ยนการตั้งค่าในแต่ละครั้ง หากใบรับรองมีรหัสผ่าน ให้ลองใช้ "รหัสผ่าน" โดยไม่ใส่เครื่องหมายคำพูด หากมีข้อความระบุว่าลายเซ็นหมดอายุ ให้ลองทำ "สร้างใบรับรองการทดสอบ" และใช้เพื่อลงชื่อเพื่อใช้งานของคุณเอง หากทุกอย่างล้มเหลวแล้วส่งอีเมลถึงฉันขั้นตอนที่ 4: การเขียนโปรแกรม Arduino
ขั้นตอนที่ 5: การติดตั้งและใช้งานซอฟต์แวร์พีซี
ใช้
ขั้นตอนที่ 6: การปรับเปลี่ยนซอฟต์แวร์