สารบัญ:

รุ่นของ Universal Off Switch: 10 ขั้นตอน
รุ่นของ Universal Off Switch: 10 ขั้นตอน

วีดีโอ: รุ่นของ Universal Off Switch: 10 ขั้นตอน

วีดีโอ: รุ่นของ Universal Off Switch: 10 ขั้นตอน
วีดีโอ: วิธีตั้งค่าใช้งาน WiFi Smart Switch TUYA กับแอพ Smartlife (เริ่มต้นใช้งาน Smart Home อย่างง่ายๆ) 2024, กรกฎาคม
Anonim
รุ่นของ Universal Off Switch
รุ่นของ Universal Off Switch

คุณเบื่อที่จะตรวจสอบไฟทุกดวงในบ้านของคุณก่อนเข้านอนหรือไม่? คุณต้องการปิดไฟทุกดวงในคราวเดียวโดยไม่ต้องยุ่งยากหรือไม่? เพื่อเป็นการประหยัดพลังงานและเวลา เราจึงตัดสินใจสร้างระบบที่สามารถปิดบ้านทั้งหลังตามหลักทฤษฎีได้ในคราวเดียว

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

ขั้นตอนที่ 1: นำเข้าไฟล์ VHDL ที่กำหนด

เพื่อให้โมเดลของเราทำงานได้อย่างถูกต้อง คุณจะต้องดาวน์โหลดซอฟต์แวร์ที่ให้คำแนะนำแก่บอร์ด Basys 3

ขั้นแรก คุณจะต้องดาวน์โหลดเครื่องมือการสังเคราะห์เพื่อนำไฟล์ vhdl ไปใช้กับฮาร์ดแวร์ หากคุณต้องการแน่ใจว่าโค้ดทั้งหมดจะจำลองการออกแบบของเราอย่างสมบูรณ์โดยไม่ต้องแก้ไขใดๆ เราขอแนะนำให้คุณใช้ Vivado 2016.2 หลังจากที่คุณติดตั้ง Vivado แล้ว คุณสามารถสร้างโครงการและดาวน์โหลดไฟล์ต้นฉบับของเราได้ เพิ่มเป็นแหล่งที่มาในโครงการของคุณ อย่าลืมเพิ่มไฟล์ข้อจำกัดด้วย!

ต่อไป เราจะอธิบายว่าแต่ละไฟล์ต้นฉบับทำอะไร ข้ามขั้นตอนที่ 2 ถึง 6 หากคุณต้องการไปที่โครงสร้างทางกายภาพของอุปกรณ์

ขั้นตอนที่ 2: รายละเอียดของ VHDL Top Module

รายละเอียดของ VHDL Top Module
รายละเอียดของ VHDL Top Module
รายละเอียดของ VHDL Top Module
รายละเอียดของ VHDL Top Module

โมดูลด้านบนของโครงการคือสิ่งที่เชื่อมต่อโมดูลส่วนประกอบทั้งหมดกับฮาร์ดแวร์ที่ใช้ อย่างที่คุณเห็น เรามีโมดูล killSwitch และ buzzerControl ที่กำหนดเป็นส่วนประกอบที่ด้านบน

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

โมดูลควบคุมออดที่ด้านล่างเปิดใช้งานออดเมื่อกดปุ่มปิดสากล อย่างที่คุณเห็นโมดูลควบคุมออดส่งผ่านนาฬิกาและสัญญาณปุ่มเป็นอินพุต นอกจากนี้ยังส่งผ่านพินเอาต์พุตออดแบบกายภาพเพื่อควบคุมตามนั้น

ขั้นตอนที่ 3: รายละเอียดของโมดูลสวิตช์ VHDL Kill

รายละเอียดของ VHDL Kill Switch Module
รายละเอียดของ VHDL Kill Switch Module
รายละเอียดของ VHDL Kill Switch Module
รายละเอียดของ VHDL Kill Switch Module

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

ในขณะที่โมดูลด้านบนจัดการการเชื่อมต่อฮาร์ดแวร์ทางกายภาพกับซอฟต์แวร์ โมดูล killSwitch จะจัดการกับตรรกะหลักของแต่ละอุปกรณ์ โมดูลรับอินพุตสำหรับสัญญาณนาฬิกา ปุ่มปิดสากล และสวิตช์สลับอุปกรณ์ ในทางกลับกัน มันจะควบคุมสถานะของพินอุปกรณ์ที่เชื่อมต่ออยู่

ในส่วนสถาปัตยกรรมของโค้ด เราจะเห็นว่ามีการพึ่งพาโมดูล dFlipFlop เพื่อจัดเก็บหน่วยความจำ คุณยังสามารถเห็นได้ว่าเราได้ประกาศสัญญาณสี่ตัวที่จะใช้เพื่อเชื่อมต่อฟลิปฟล็อปรวมทั้งใช้คำสั่งทางตรรกะของเรา ภายในส่วนพฤติกรรมของโค้ด เราได้สร้างอินสแตนซ์ของโมดูล dFlipFlop และกำหนดสัญญาณ I/O ของเราให้กับพอร์ต

จากที่นี่ ส่วนหลักของตรรกะของเราอยู่ในค่าสัญญาณสำหรับ invertState และ isDevOn พื้นฐานเชิงตรรกะของเราสำหรับอุปกรณ์มีดังนี้: "ทุกครั้งที่สวิตช์ถูกโยน แสงจะเปลี่ยนสถานะเป็นเปิด/ปิด ทุกครั้งที่กดปุ่ม และ LED เปิดอยู่ ไฟ LED จะสลับสถานะเป็นปิด " จากข้อความทั้งสองนี้ เราสามารถคาดการณ์ได้ว่าสถานะของ LED ควรเป็น XOR ของสวิตช์และองค์ประกอบหน่วยความจำของเรา วิธีนั้นการเปลี่ยนแปลงใน LED จะกลับด้าน สิ่งนี้สามารถเห็นได้ในสัญญาณ isDevOn ไฟ LED ในเงื่อนไขสำหรับองค์ประกอบหน่วยความจำได้รับการจัดการโดยสัญญาณ invertState ของเรา หากไฟ LED ติดสว่างและมีการกดปุ่ม องค์ประกอบหน่วยความจำของเราจะอัปเดตและเปลี่ยนสถานะ สิ่งนี้จะสลับสถานะของ LED ด้วย

ขั้นตอนที่ 4: รายละเอียดของ VHDL Flip Flop Module

รายละเอียดของ VHDL Flip Flop Module
รายละเอียดของ VHDL Flip Flop Module

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

รหัส VHDL ใช้คำสั่ง if และ else เพื่อสร้าง Flip Flop เป็นส่วนประกอบภายในการออกแบบวงจรของเรา ช่วยให้มั่นใจได้ว่าเมื่อสัญญาณนาฬิกาเปลี่ยนจากสถานะต่ำไปสูง เมื่อหลอดไฟเปิดอยู่ และเมื่อกดสวิตช์ปิด เอาต์พุตของรองเท้าแตะจะเขียนทับอินพุต เมื่ออินพุตถูกเขียนทับ ฟลิปฟล็อปจะกลับด้าน

ขั้นตอนที่ 5: รายละเอียดของโมดูล VHDL Piezo Buzzer

รายละเอียดของโมดูล VHDL Piezo Buzzer
รายละเอียดของโมดูล VHDL Piezo Buzzer
รายละเอียดของโมดูล VHDL Piezo Buzzer
รายละเอียดของโมดูล VHDL Piezo Buzzer

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

เมื่อกดปุ่มปิดเสียง Piezo Buzzer จะเล่นเสียงโน้ตสองเสียงซึ่งจะให้เสียงตอบรับแก่ผู้ใช้ว่ามีการกดปุ่มดังกล่าว เราใช้พฤติกรรมนี้ใน VHDL ผ่านชุดคำสั่ง if ในโครงสร้างกระบวนการ เราเริ่มต้นด้วยการสร้างค่าจำนวนเต็มเพื่อติดตามจำนวนการเปลี่ยนแปลงนาฬิกาที่เกิดขึ้น เมื่อกระบวนการเริ่มต้นขึ้น โปรแกรมจะใช้เวลาครึ่งวินาทีแรก (นาฬิกา 0 ถึง 50 ล้านครั้ง) เพื่อแสดงโน้ต A ที่ 440 เฮิรตซ์ ทำได้โดยการแปลงสัญญาณเสียง Piezo Buzzer ทุกๆ ทุกๆ 227272 นาฬิกาติ๊กด้วยฟังก์ชันโมดูโล ตัวเลขนี้เป็นผลจากการหารสัญญาณนาฬิกาของบอร์ด (100 MHz) ด้วยความถี่ที่ต้องการ (400 Hz) ในช่วงครึ่งหลังของวินาที (50 ถึง 100 ล้านนาฬิกาติ๊ก) บอร์ดจะส่งสัญญาณ F note ที่ 349.2 เฮิรตซ์โดยใช้วิธีการเดียวกันกับเมื่อก่อน หลังจากผ่านไปหนึ่งวินาที โปรแกรมจะไม่เพิ่มตัวแปรนาฬิกาอีกต่อไปและหยุดส่งสัญญาณอะไรจากเสียงพายโซ การกดปุ่มปิดสากลอีกครั้งจะรีเซ็ตหมายเลขนี้เป็น 0 เพื่อเริ่มรอบเสียงรบกวนใหม่

ขั้นตอนที่ 6: รายละเอียดของไฟล์ข้อ จำกัด VHDL

ไฟล์ข้อ จำกัด จะบอก Vivado ว่าอุปกรณ์ใดบนบอร์ด Basys 3 ที่เรากำลังใช้ นอกจากนี้ยังให้ชื่อ Vivado ที่เราตั้งให้กับอุปกรณ์ในรหัสของเรา Vivado ต้องการข้อมูลนี้จึงรู้วิธีเชื่อมต่อองค์ประกอบตรรกะของเรากับฮาร์ดแวร์จริง ไฟล์ข้อจำกัดมีโค้ดแสดงความคิดเห็น (ไม่ได้ใช้) จำนวนมาก โค้ดเหล่านี้อ้างอิงถึงอุปกรณ์บนบอร์ดที่เราไม่ได้ใช้

อุปกรณ์ที่เราใช้ ได้แก่ สวิตช์อินพุตสี่ตัวที่ติดป้าย V17, V16, W16 และ W1 บนบอร์ด เรายังใช้ปุ่มปิดสากลที่มีป้ายกำกับว่า U18 พินเอาต์พุตสำหรับไฟ LED ที่เชื่อมต่อสี่ดวงของเราคือ JB4, JB10, JC4 และ JC10 สำหรับออด piezzo ของเราเราใช้พินเอาต์พุต JA9

ตามที่เราระบุไว้ในรายละเอียดโมดูลด้านบน หากคุณต้องการเพิ่มไฟ LED หรืออุปกรณ์อื่นๆ ลงในบอร์ด คุณต้องเพิ่มขอบเขตของสัญญาณ sw และ dev เพิ่มโมดูล killSwitch เพิ่มเติม และเชื่อมต่อเข้าด้วยกัน จากนั้นคุณต้องเชื่อมโยงชื่อตัวแปรเหล่านั้นกับฮาร์ดแวร์ของอุปกรณ์ผ่านไฟล์ข้อจำกัด ซึ่งสามารถทำได้โดยยกเลิกการใส่ความคิดเห็น (เปิดใช้งานอีกครั้ง) บรรทัดของรหัสที่เกี่ยวข้องกับพินที่คุณต้องการใช้ จากนั้นเพิ่มชื่อของตัวแปรที่เกี่ยวข้องในโมดูลด้านบน ไวยากรณ์ที่เหมาะสมสำหรับสิ่งนี้สามารถคัดลอกจากอุปกรณ์ที่เราใช้อยู่ หากต้องการทราบชื่อพินที่คุณต้องการใช้บนบอร์ด โปรดดูคู่มืออ้างอิง Baasys 3 ที่นี่

ขั้นตอนที่ 7: การสร้างพื้นฐาน 3

การสร้างพื้นฐาน 3
การสร้างพื้นฐาน 3
การสร้างพื้นฐาน 3
การสร้างพื้นฐาน 3

คุณจะต้องเสียบ LED ของคุณเข้ากับพอร์ต I/O ที่ถูกต้องของ Basys 3 ทำตามรูปภาพที่ให้มาเพื่อพิจารณาว่าพอร์ตที่ถูกต้องคืออะไร เพราะหากคุณเสียบ LED เข้ากับพอร์ตที่ไม่ถูกต้อง ไฟจะไม่สว่างขึ้น หากคุณเลือกที่จะแนบเสียง piezo คุณจะต้องเชื่อมต่อกับพอร์ต I/O ที่ถูกต้องด้วย

เมื่อบอร์ดพร้อมแล้ว ให้เสียบเข้ากับคอมพิวเตอร์ผ่านสาย USB

ขั้นตอนที่ 8: การนำไฟล์ VHDL ไปใช้กับ Basy 3

การนำไฟล์ VHDL ไปใช้กับ Basy 3
การนำไฟล์ VHDL ไปใช้กับ Basy 3
การนำไฟล์ VHDL ไปใช้กับ Basy 3
การนำไฟล์ VHDL ไปใช้กับ Basy 3

เมื่อบอร์ดของคุณพร้อมและโค้ดของคุณเสร็จเรียบร้อยแล้ว คุณก็ประกอบโมเดลเข้าด้วยกันได้ในที่สุด

เมื่อคุณตั้งค่าโปรเจ็กต์ของคุณใน Vivado แล้ว คุณต้องคลิกปุ่ม "สร้าง Bitstream" เพื่อคอมไพล์โค้ดก่อนที่จะอัปโหลดไปยังบอร์ด หากคุณได้รับข้อความแสดงข้อผิดพลาดในขณะนี้ คุณต้องตรวจสอบอีกครั้งว่ารหัสของคุณตรงกับรหัสของเราทุกประการ เมื่อฉันพูดตรงๆ ฉันหมายถึงแม้กระทั่งเครื่องหมายอัฒภาคหรือประเภทของวงเล็บที่ใช้อยู่ เมื่อบิตสตรีมของคุณเขียนสำเร็จแล้ว ให้ไปที่ตัวจัดการฮาร์ดแวร์ภายใน Vivado และคลิกที่ปุ่ม "เปิดเป้าหมาย" จากนั้นคลิกที่ "Program Device" ทันทีหลังจากนั้น บอร์ด Basy 3 ของคุณควรทำงานได้อย่างสมบูรณ์

ขั้นตอนที่ 9: การใช้บอร์ด Basy 3

การใช้บอร์ด Basy 3
การใช้บอร์ด Basy 3

ตอนนี้บอร์ด Basys 3 ใช้งานได้และได้รับการตั้งโปรแกรมให้เป็นตัวแทนของโมเดลของเราแล้ว คุณต้องรู้วิธีใช้งาน

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

เมื่อคุณต้องการปิดใช้งาน LED ทั้งหมดในคราวเดียว คุณต้องกดปุ่มกลางในชุดปุ่มห้าปุ่มที่แสดงด้านบน

ขั้นตอนที่ 10: อวด

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

แนะนำ: