สารบัญ:

DIY ควบคุม RGB LED สีผ่าน Bluetooth: 5 ขั้นตอน
DIY ควบคุม RGB LED สีผ่าน Bluetooth: 5 ขั้นตอน

วีดีโอ: DIY ควบคุม RGB LED สีผ่าน Bluetooth: 5 ขั้นตอน

วีดีโอ: DIY ควบคุม RGB LED สีผ่าน Bluetooth: 5 ขั้นตอน
วีดีโอ: รีวิว​ USB RGB LED strip 5เมตร​ ควบคุมผ่าน​ Bluetooth | JAKK DIY 2024, กรกฎาคม
Anonim
DIY ควบคุม RGB LED สีผ่าน Bluetooth
DIY ควบคุม RGB LED สีผ่าน Bluetooth

หลอดไฟอัจฉริยะได้รับความนิยมเพิ่มขึ้นเมื่อเร็วๆ นี้ และกำลังกลายเป็นส่วนสำคัญของชุดเครื่องมือบ้านอัจฉริยะอย่างต่อเนื่อง หลอดไฟอัจฉริยะช่วยให้ผู้ใช้ควบคุมแสงผ่านแอปพลิเคชันพิเศษบนสมาร์ทโฟนของผู้ใช้ สามารถเปิดและปิดหลอดไฟและเปลี่ยนสีได้จากอินเทอร์เฟซของแอปพลิเคชัน ในโครงการนี้ เราได้สร้างตัวควบคุมหลอดไฟอัจฉริยะที่สามารถควบคุมได้จากปุ่มแบบแมนนวลหรือแอปพลิเคชันมือถือผ่านบลูทูธ เพื่อเพิ่มความมีไหวพริบให้กับโครงการนี้ เราได้เพิ่มคุณสมบัติบางอย่างที่อนุญาตให้ผู้ใช้เลือกสีแสงจากรายการสีที่รวมอยู่ในอินเทอร์เฟซของแอปพลิเคชัน นอกจากนี้ยังสามารถเปิดใช้งาน "มิกซ์อัตโนมัติ" เพื่อสร้างเอฟเฟกต์สีและเปลี่ยนแสงทุกครึ่งวินาที ผู้ใช้สามารถสร้างการผสมสีของตนเองได้โดยใช้คุณสมบัติ PWM ซึ่งสามารถใช้เป็นเครื่องหรี่สำหรับสีพื้นฐานสามสี (แดง เขียว น้ำเงิน) นอกจากนี้เรายังเพิ่มปุ่มภายนอกให้กับวงจรเพื่อให้ผู้ใช้สามารถสลับไปยังโหมดแมนนวลและเปลี่ยนสีของแสงจากปุ่มภายนอกได้

คำแนะนำนี้ประกอบด้วยสองส่วน การออกแบบ GreenPAK™ และการออกแบบแอป Android การออกแบบ GreenPAK ใช้อินเทอร์เฟซ UART สำหรับการสื่อสาร เลือก UART เนื่องจากได้รับการสนับสนุนโดยโมดูล Bluetooth ส่วนใหญ่ และอุปกรณ์ต่อพ่วงอื่นๆ ส่วนใหญ่ เช่น โมดูล WIFI ดังนั้น การออกแบบ GreenPAK จึงสามารถใช้ได้กับการเชื่อมต่อหลายประเภท

ในการสร้างโครงการนี้ เราจะใช้ SLG46620 CMIC โมดูล Bluetooth และ RGB LED GreenPAK IC จะเป็นแกนควบคุมของโครงการนี้ รับข้อมูลจากโมดูล Bluetooth และ/หรือปุ่มภายนอก จากนั้นจึงเริ่มขั้นตอนที่จำเป็นเพื่อแสดงแสงที่ถูกต้อง นอกจากนี้ยังสร้างสัญญาณ PWM และส่งออกไปยัง LED รูปที่ 1 ด้านล่างแสดงแผนภาพบล็อก

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

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

คุณสามารถทำตามขั้นตอนทั้งหมดเพื่อทำความเข้าใจว่าชิป GreenPAK ได้รับการตั้งโปรแกรมให้ควบคุม RGB LED Color ผ่าน Bluetooth ได้อย่างไร อย่างไรก็ตาม หากคุณต้องการตั้งโปรแกรม IC ง่ายๆ โดยไม่เข้าใจวงจรภายในทั้งหมด ให้ดาวน์โหลดซอฟต์แวร์ GreenPAK เพื่อดูไฟล์การออกแบบ GreenPAK ที่เสร็จสมบูรณ์แล้ว เสียบ GreenPAK Development Kit เข้ากับคอมพิวเตอร์ของคุณและกดโปรแกรมเพื่อสร้าง IC แบบกำหนดเองเพื่อควบคุม RGB LED Color ผ่าน Bluetooth

การออกแบบ GreenPAK ประกอบด้วยเครื่องรับ UART หน่วย PWM และชุดควบคุมที่อธิบายไว้ในขั้นตอนด้านล่าง

ขั้นตอนที่ 1: ตัวรับ UART

ตัวรับ UART
ตัวรับ UART

ขั้นแรก เราต้องตั้งค่าโมดูล Bluetooth วงจรรวม Bluetooth ส่วนใหญ่รองรับโปรโตคอล UART สำหรับการสื่อสาร UART ย่อมาจาก Universal Asynchronous Receiver / Transmitter UART สามารถแปลงข้อมูลไปมาระหว่างรูปแบบขนานและอนุกรม ประกอบด้วยตัวรับซีเรียลถึงขนานและคอนเวอร์เตอร์ขนานกับซีเรียลซึ่งทั้งสองโอเวอร์คล็อกแยกจากกัน

ข้อมูลที่ได้รับในโมดูล Bluetooth จะถูกส่งไปยังอุปกรณ์ GreenPAK ของเรา สถานะไม่ได้ใช้งานสำหรับ Pin10 นั้นสูง ทุกตัวอักษรที่ส่งเริ่มต้นด้วยลอจิก LOW start bit ตามด้วยจำนวนบิตข้อมูลที่กำหนดค่าได้และลอจิก HIGH stop bits อย่างน้อยหนึ่งตัว

ตัวส่งสัญญาณ UART ส่ง 1 บิต START, 8 บิตข้อมูล และหนึ่งบิต STOP โดยปกติ อัตราการส่งข้อมูลเริ่มต้นสำหรับโมดูล UART Bluetooth คือ 9600 เราจะส่งไบต์ข้อมูลจาก Bluetooth IC ไปยังบล็อก SPI ของ GreenPAK™ SLG46620

เนื่องจากบล็อก GreenPAK SPI ไม่มีการควบคุมบิต START หรือ STOP เราจะใช้บิตเหล่านั้นแทนเพื่อเปิดใช้งานและปิดใช้งานสัญญาณนาฬิกา SPI (SCLK) เมื่อ Pin10 มีค่าต่ำ เรารู้ว่าเราได้รับบิตเริ่มต้น ดังนั้นเราจึงใช้ตัวตรวจจับขอบตก PDLY เพื่อระบุการเริ่มต้นของการสื่อสาร เครื่องตรวจจับขอบตกนั้นนาฬิกา DFF0 ซึ่งทำให้สัญญาณ SCLK สามารถนาฬิกาบล็อก SPI

อัตราบอดของเราคือ 9600 บิตต่อวินาที ดังนั้นช่วง SCLK ของเราต้องเท่ากับ 1/9600 = 104 μs ดังนั้นเราจึงตั้งค่าความถี่ OSC เป็น 2MHz และใช้ CNT0 เป็นตัวแบ่งความถี่

2 MHz-1 = 0.5 μs

(104 μs / 0.5 μs) - 1 = 207

ดังนั้นเราจึงต้องการให้ค่าตัวนับ CNT0 เป็น 207 เพื่อให้แน่ใจว่าเราจะไม่พลาดข้อมูลใด ๆ เราจำเป็นต้องหน่วงเวลานาฬิกา SPI ครึ่งรอบสัญญาณนาฬิกาเพื่อให้บล็อก SPI ถูกตอกบัตรในเวลาที่เหมาะสม เราทำสิ่งนี้สำเร็จโดยใช้ CNT6, 2-bit LUT1 และนาฬิกาภายนอกของบล็อก OSC เอาต์พุตของ CNT6 ไม่สูงถึง 52 μs หลังจากที่ DFF0 โอเวอร์คล็อก ซึ่งเป็นครึ่งหนึ่งของช่วง SCLK 104 μs ของเรา เมื่อ CNT6 สูง เกต LUT1 AND 2 บิตจะยอมให้สัญญาณ OSC 2MHz ผ่านเข้าสู่ EXT อินพุต CLK0 ซึ่งเอาต์พุตเชื่อมต่อกับ CNT0

ขั้นตอนที่ 2: หน่วย PWM

หน่วย PWM
หน่วย PWM

สัญญาณ PWM ถูกสร้างขึ้นโดยใช้ PWM0 และเครื่องกำเนิดสัญญาณนาฬิกาที่เกี่ยวข้อง (CNT8/DLY8) เนื่องจากความกว้างพัลส์สามารถควบคุมได้โดยผู้ใช้ เราจึงใช้ FSM0 (ซึ่งสามารถเชื่อมต่อกับ PWM0) เพื่อนับข้อมูลผู้ใช้

ใน SLG46620 สามารถใช้ FSM1 8 บิตกับ PWM1 และ PWM2 ได้ ต้องเชื่อมต่อโมดูล Bluetooth ซึ่งหมายความว่าต้องใช้เอาต์พุตแบบขนาน SPI บิตเอาต์พุตแบบขนาน SPI 0 ถึง 7 ถูก muxed กับ DCMP1, DMCP2 และ LF OSC CLK's OUT1 และ OUT0 PWM0 รับเอาต์พุตจาก FSM0 16 บิต ไม่เปลี่ยนแปลงซึ่งจะทำให้ความกว้างพัลส์โอเวอร์โหลด ในการจำกัดค่าตัวนับที่ 8 บิต ให้เพิ่ม FSM อื่น FSM1 ใช้เป็นตัวชี้เพื่อทราบเมื่อตัวนับถึง 0 หรือ 255 FSM0 ใช้เพื่อสร้างพัลส์ PWM ต้องซิงโครไนซ์ FSM0 และ FSM1 เนื่องจาก FSM ทั้งสองมีตัวเลือกนาฬิกาที่ตั้งไว้ล่วงหน้า CNT1 และ CNT3 จึงถูกใช้เป็นตัวกลางในการส่ง CLK ไปยัง FSM ทั้งสอง ตัวนับทั้งสองถูกตั้งค่าเป็นค่าเดียวกัน ซึ่งเท่ากับ 25 สำหรับคำแนะนำนี้ เราสามารถเปลี่ยนอัตราการเปลี่ยนแปลงของค่า PWM ได้โดยการเปลี่ยนค่าตัวนับเหล่านี้

ค่าของ FSM จะเพิ่มขึ้นและลดลงโดยสัญญาณ '+' และ '-' ซึ่งมาจาก SPI Parallel Output

ขั้นตอนที่ 3: หน่วยควบคุม

หน่วยควบคุม
หน่วยควบคุม

ภายในหน่วยควบคุม ไบต์ที่ได้รับจะถูกนำมาจากโมดูล Bluetooth ไปยัง SPI Parallel Output จากนั้นจึงส่งผ่านไปยังฟังก์ชันที่เกี่ยวข้อง ในตอนแรก เอาต์พุต PWM CS1 และ PWM CS2 จะถูกตรวจสอบเพื่อดูว่ารูปแบบ PWM ถูกเปิดใช้งานหรือไม่ หากเปิดใช้งาน มันจะกำหนดว่าช่องใดที่จะส่งออก PWM ผ่าน LUT4, LUT6 และ LUT7

LUT9, LUT11 และ LUT14 มีหน้าที่ตรวจสอบสถานะของ LED อีกสองดวง LUT10, LUT12 และ LUT13 ตรวจสอบว่าปุ่ม Manual เปิดใช้งานอยู่หรือไม่ หากโหมดปรับเองเปิดใช้งานอยู่ เอาต์พุต RGB จะทำงานตามสถานะเอาต์พุต D0, D1, D2 ซึ่งจะเปลี่ยนไปทุกครั้งที่กดปุ่มสี มันเปลี่ยนไปตามขอบที่เพิ่มขึ้นที่มาจาก CNT9 ซึ่งใช้เป็น debouncer ขอบที่เพิ่มขึ้น

Pin 20 ได้รับการกำหนดค่าเป็นอินพุตและใช้เพื่อสลับระหว่างการควบคุมแบบแมนนวลและแบบบลูทูธ

หากปิดใช้งานโหมดแมนนวลและเปิดใช้งานโหมดผสมอัตโนมัติ สีจะเปลี่ยนทุก ๆ 500 มิลลิวินาทีโดยขอบที่เพิ่มขึ้นมาจาก CNT7 LUT1 4 บิตใช้เพื่อป้องกันสถานะ '000' สำหรับ D0 D1 D2 เนื่องจากสถานะนี้ทำให้ไฟดับระหว่างโหมดเครื่องผสมอัตโนมัติ

หากโหมดแมนนวล โหมด PWM และโหมดมิกเซอร์อัตโนมัติไม่เปิดใช้งาน คำสั่ง SPI สีแดง สีเขียว และสีน้ำเงินจะไหลไปที่พิน 12, 13 และ 14 ซึ่งกำหนดค่าเป็นเอาต์พุตและเชื่อมต่อกับ LED RGB ภายนอก

DFF1, DFF2 และ DFF3 ใช้เพื่อสร้างตัวนับไบนารี 3 บิต ค่าตัวนับจะเพิ่มขึ้นด้วยพัลส์ CNT7 ที่ผ่าน P14 ในโหมดตัวผสมอัตโนมัติ หรือจากสัญญาณที่มาจากปุ่มสี (PIN3) ในโหมดปรับเอง

ขั้นตอนที่ 4: แอปพลิเคชัน Android

แอปพลิเคชัน Android
แอปพลิเคชัน Android
แอปพลิเคชัน Android
แอปพลิเคชัน Android
แอปพลิเคชัน Android
แอปพลิเคชัน Android
แอปพลิเคชัน Android
แอปพลิเคชัน Android

ในส่วนนี้ เราจะสร้างแอปพลิเคชัน Android ที่จะตรวจสอบและแสดงการเลือกการควบคุมของผู้ใช้ อินเทอร์เฟซประกอบด้วยสองส่วน: ส่วนแรกประกอบด้วยชุดของปุ่มที่มีสีที่กำหนดไว้ล่วงหน้า ดังนั้นเมื่อกดปุ่มใดๆ เหล่านี้ ไฟ LED ที่มีสีเดียวกันจะสว่างขึ้น ส่วนที่สอง (สี่เหลี่ยม MIX) สร้างสีผสมสำหรับผู้ใช้

ในส่วนแรก ผู้ใช้เลือกพิน LED ที่ต้องการให้สัญญาณ PWM ผ่าน; สัญญาณ PWM สามารถส่งผ่านได้ครั้งละหนึ่งพินเท่านั้น รายการด้านล่างจะควบคุมการเปิด/ปิดอีกสองสีอย่างมีเหตุผลระหว่างโหมด PWM

ปุ่มผสมอัตโนมัติมีหน้าที่เรียกใช้รูปแบบการเปลี่ยนแสงอัตโนมัติโดยที่แสงจะเปลี่ยนทุกครึ่งวินาที ส่วน MIX ประกอบด้วยรายการช่องทำเครื่องหมายสองรายการ เพื่อให้ผู้ใช้สามารถตัดสินใจว่าจะผสมสีสองสีใดเข้าด้วยกัน

เราสร้างแอปพลิเคชันโดยใช้เว็บไซต์นักประดิษฐ์แอป MIT เป็นไซต์ที่อนุญาตให้สร้างแอปพลิเคชัน Android โดยไม่ต้องมีประสบการณ์ด้านซอฟต์แวร์มาก่อนโดยใช้บล็อกซอฟต์แวร์แบบกราฟิก

ในตอนแรก เราออกแบบส่วนต่อประสานกราฟิกโดยเพิ่มชุดของปุ่มที่รับผิดชอบในการแสดงสีที่กำหนดไว้ล่วงหน้า เรายังเพิ่มรายการกล่องกาเครื่องหมายสองรายการ และแต่ละรายการมี 3 องค์ประกอบ แต่ละองค์ประกอบจะระบุไว้ในกล่องแต่ละกล่อง ดังแสดงในรูปที่ 5

ปุ่มต่างๆ ภายในอินเทอร์เฟซผู้ใช้จะเชื่อมโยงกับคำสั่งซอฟต์แวร์: คำสั่งทั้งหมดที่แอปจะส่งผ่านบลูทูธจะอยู่ในรูปแบบไบต์ และแต่ละบิตมีหน้าที่รับผิดชอบสำหรับฟังก์ชันเฉพาะ ตารางที่ 1 แสดงรูปแบบของเฟรมคำสั่งที่ส่งไปยัง GreenPAK

สามบิตแรก B0, B1 และ B2 จะเก็บสถานะของไฟ LED RGB ในโหมดการควบคุมโดยตรงโดยใช้ปุ่มของสีที่กำหนดไว้ล่วงหน้า ดังนั้นเมื่อคลิกที่ปุ่มใด ๆ ค่าที่เกี่ยวข้องของปุ่มจะถูกส่งไปดังแสดงในตารางที่ 2

บิต B3 และ B4 ถือคำสั่ง '+' และ '-' ซึ่งมีหน้าที่ในการเพิ่มและลดความกว้างของพัลส์ เมื่อกดปุ่ม ค่าบิตจะเป็น 1 และเมื่อปล่อยปุ่ม ค่าบิตจะเป็น 0

บิต B5 และ B6 มีหน้าที่ในการเลือกพิน (สี) ที่สัญญาณ PWM จะผ่าน: การกำหนดสีของบิตเหล่านี้จะแสดงในตารางที่ 3 บิตสุดท้าย B7 รับผิดชอบในการเปิดใช้งานตัวปรับแต่งเสียงอัตโนมัติ

รูปที่ 6 และรูปที่ 7 สาธิตกระบวนการเชื่อมโยงปุ่มต่างๆ กับบล็อกโปรแกรมมิง ซึ่งมีหน้าที่ในการส่งค่าก่อนหน้า

หากต้องการชมการออกแบบแอปพลิเคชันแบบเต็ม คุณสามารถดาวน์โหลดไฟล์แนบ “.aia” พร้อมไฟล์โครงการและเปิดภายในเว็บไซต์หลัก

รูปที่ 8 ด้านล่างแสดงแผนภาพวงจรระดับบนสุด

ขั้นตอนที่ 5: ผลลัพธ์

ตัวควบคุมได้รับการทดสอบเรียบร้อยแล้ว และพบว่าการผสมสีพร้อมกับคุณสมบัติอื่นๆ นั้นทำงานอย่างเหมาะสม

บทสรุป

ในคำแนะนำนี้ วงจรหลอดไฟอัจฉริยะถูกสร้างขึ้นเพื่อควบคุมแบบไร้สายโดยแอปพลิเคชัน Android GreenPAK CMIC ที่ใช้ในโครงการนี้ยังช่วยลดขนาดและฝังส่วนประกอบที่จำเป็นหลายอย่างสำหรับการควบคุมแสงลงใน IC ขนาดเล็กเพียงตัวเดียว

แนะนำ: