ความปลอดภัยเป็นปัญหาสำคัญในชีวิตประจำวันของเราและการล็อกแบบดิจิทัลได้กลายเป็นส่วนสำคัญของระบบรักษาความปลอดภัย มีเทคโนโลยีหลายประเภทเพื่อรักษาความปลอดภัยให้กับสถานที่ของเราเช่นระบบรักษาความปลอดภัยแบบ PIR, ระบบรักษาความปลอดภัยที่ใช้ RFID, สัญญาณเตือนความปลอดภัยด้วยเลเซอร์, ระบบไบโอเมทริกซ์เป็นต้นแม้ในปัจจุบันจะมีระบบล็อคแบบดิจิทัลที่สามารถใช้งานได้โดยใช้สมาร์ทโฟนของเราก็หมายความว่าไม่มี จำเป็นต้องเก็บคีย์ที่แตกต่างกันมากขึ้นสมาร์ทโฟนเพียงเครื่องเดียวสามารถใช้งานการล็อกทั้งหมดได้แนวคิดนี้มีพื้นฐานมาจาก Internet of Things
ในโครงการนี้เราได้อธิบายการล็อครหัสอิเล็กทรอนิกส์แบบง่ายๆโดยใช้ 8051 Microcontorllerซึ่งสามารถปลดล็อกได้ด้วยรหัสที่กำหนดไว้ล่วงหน้าเท่านั้นหากเราป้อนรหัสผิดระบบจะแจ้งเตือนด้วยเสียงไซเรน เราได้สร้าง Digital lock โดยใช้ Arduino แล้ว
คำอธิบายการทำงาน:
ระบบนี้ประกอบด้วยไมโครคอนโทรลเลอร์AT89S52, โมดูลปุ่มกด, กริ่งและ LCD เป็นหลัก ไมโครคอนโทรลเลอร์ At89s52 ควบคุมกระบวนการทั้งหมดเช่นการใช้โมดูลปุ่มกดแบบฟอร์มรหัสผ่านเปรียบเทียบรหัสผ่านที่กำหนดไว้ล่วงหน้าเสียงกริ่งและส่งสถานะไปยังจอ LCD ปุ่มกดใช้สำหรับใส่รหัสผ่านลงในไมโครคอนโทรลเลอร์ Buzzer ใช้สำหรับระบุรหัสผ่านที่ไม่ถูกต้องและ LCD ใช้สำหรับแสดงสถานะหรือข้อความ Buzzer มีไดรเวอร์ในตัวโดยใช้ทรานซิสเตอร์ NPN
ส่วนประกอบ:
- 8051 ไมโครคอนโทรลเลอร์ (AT89S52)
- 4X4 โมดูลปุ่มกด
- Buzzer
- 16x2 LCD
- ตัวต้านทาน (1k, 10k)
- ตัวต้านทานแบบดึง (10K)
- ตัวเก็บประจุ (10uf)
- ไฟ LED สีแดง
- กระดานขนมปัง
- IC 7805
- 11.0592 MHz คริสตัล
- พาวเวอร์ซัพพลาย
- การเชื่อมต่อสายไฟ
การป้อนข้อมูลจาก 4X4 Keypad Matrix โดยใช้เทคนิค Multiplexing:
ในวงจรนี้เราได้ใช้เทคนิคการมัลติเพล็กซ์เพื่อเชื่อมต่อปุ่มกดกับไมโครคอนโทรลเลอร์ 8051 เพื่อป้อนรหัสผ่านในระบบ ที่นี่เราใช้ปุ่มกด 4x4 ซึ่งมี 16 ปุ่ม หากเราต้องการใช้ 16 คีย์เราต้องมี 16 พินสำหรับการเชื่อมต่อกับ 89s52 แต่ในเทคนิคมัลติเพล็กซ์เราต้องใช้เพียง 8 พินในการเชื่อมต่อ 16 คีย์ เพื่อให้เป็นวิธีที่ชาญฉลาดในการเชื่อมต่อโมดูลปุ่มกด
เทคนิคการมัลติเพล็กซ์เป็นวิธีที่มีประสิทธิภาพมากในการลดจำนวนพินที่ใช้กับไมโครคอนโทรลเลอร์สำหรับป้อนข้อมูลหรือรหัสผ่าน โดยทั่วไปเทคนิคนี้ถูกนำมาใช้ในสองวิธี - หนึ่งคือการสแกนแถวและอีกหนึ่งคือการสแกนคอลัมน์
ที่นี่เราจะอธิบายการสแกนแถว:
ก่อนอื่นเราต้องกำหนด 8 พินสำหรับโมดูลปุ่มกด ซึ่ง 4 พินแรกคือคอลัมน์และ 4 พินสุดท้ายคือแถว
สำหรับการสแกนแถวเราจำเป็นต้องให้ข้อมูลหรือสัญญาณกับหมุดของคอลัมน์และอ่านข้อมูลหรือสัญญาณนั้นจากหมุดแถว ตอนนี้สมมติว่าเราให้ข้อมูลด้านล่างแก่หมุดของคอลัมน์:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
และเราอ่านข้อมูลนี้ที่หมุดแถว (โดยค่าเริ่มต้นหมุดแถวจะสูงเนื่องจากตัวต้านทานแบบดึงขึ้น)
หากผู้ใช้กดหมายเลขคีย์ '1' ดังนั้น R1 จะเปลี่ยน HIGH เป็น LOW หมายถึง R1 = 0; และตัวควบคุมเข้าใจว่าผู้ใช้กดปุ่ม '1' และจะพิมพ์ '1' บนจอ LCD และจัดเก็บ '1' ไว้ในอาร์เรย์ ดังนั้นการเปลี่ยน HIGH เป็น LOW ที่ R1 จึงเป็นสิ่งสำคัญที่ตัวควบคุมเข้าใจว่ามีการกดปุ่มบางปุ่มซึ่งตรงกับคอลัมน์ 1
ตอนนี้ถ้าผู้ใช้กดหมายเลขคีย์ '2' ดังนั้น R1 จะยังคงอยู่ที่ HIGH เนื่องจาก C1 และ R1 ทั้งคู่อยู่ที่ HIGH แล้ว ดังนั้นจะไม่มีการเปลี่ยนแปลงหมายความว่าไมโครคอนโทรลเลอร์เข้าใจว่าไม่มีการกดอะไรในคอลัมน์ที่หนึ่ง และในทำนองเดียวกันหลักการนี้จะใช้กับพินอื่นทั้งหมด ดังนั้นในตัวควบคุมขั้นตอนนี้จะรอเฉพาะคีย์ในคอลัมน์ที่หนึ่ง: '1', '4', '7' และ '*'
ตอนนี้ถ้าเราต้องการติดตามคีย์ในคอลัมน์อื่น ๆ (เช่นใน col 2) เราจำเป็นต้องเปลี่ยนข้อมูลที่หมุดของคอลัมน์:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
ตัวควบคุมเวลานี้จะรอเฉพาะคีย์ในคอลัมน์สอง: '2', '5', '8'และ' 0 'เนื่องจากการเปลี่ยนแปลง (สูงเป็นต่ำ) จะเกิดขึ้นเมื่อกดปุ่มสองคอลัมน์เท่านั้น หากเรากดปุ่มใด ๆ ใน col 1, 3 หรือ 4 จะไม่มีการเปลี่ยนแปลงเกิดขึ้นเนื่องจากคอลัมน์เหล่านี้อยู่ที่ HIGH และแถวอยู่ที่ HIGH แล้ว
ดังนั้นในทำนองเดียวกันคีย์ในคอลัมน์ C3 และ C4 ยังสามารถติดตามได้โดยทำให้เป็น 0 ในแต่ละครั้ง ตรวจสอบคำอธิบายโดยละเอียดได้ที่นี่: ปุ่มกดเชื่อมต่อกับ 8051 นอกจากนี้โปรดอ่านส่วนรหัสด้านล่างเพื่อทำความเข้าใจตรรกะอย่างถูกต้อง
คำอธิบายวงจร:
แผนภาพวงจรสำหรับDigital lock ที่ใช้ 8051แสดงไว้ด้านล่างและสามารถเข้าใจได้ง่าย หมุดคอลัมน์ของโมดูลปุ่มกดเชื่อมต่อโดยตรงกับพิน P0.0, P0.1, P0.2, P0.3 และหมุดแถวเชื่อมต่อกับ P0.4, P0.5, P0.6, P0.7 จากพอร์ตไมโครคอนโทรลเลอร์ 89s52 0. จอ LCD 16x2 เชื่อมต่อกับไมโครคอนโทรลเลอร์ 89s52 ในโหมด 4 บิต พินควบคุม RS, RW และ En เชื่อมต่อโดยตรงกับพิน P1.0, GND และ P1.2 และพินข้อมูล D4-D7 เชื่อมต่อกับพิน P1.4, P1.5, P1.6 และ P1.7 ของ 89s 52 และหนึ่งออดเชื่อมต่อที่พิน P2.6 ผ่านตัวต้านทาน
คำอธิบายโปรแกรม:
เราได้ใช้รหัสผ่านที่กำหนดไว้ล่วงหน้าในโปรแกรมรหัสผ่านนี้สามารถกำหนดโดยผู้ใช้ในรหัสด้านล่าง เมื่อผู้ใช้ป้อนรหัสผ่านเข้าสู่ระบบจากนั้นระบบจะเปรียบเทียบรหัสผ่านที่ผู้ใช้ป้อนกับรหัสผ่านที่จัดเก็บไว้หรือที่กำหนดไว้ล่วงหน้าใน Code of Program หากการแข่งขันเกิดขึ้น LCD จะแสดง“ Access Grated” และหากรหัสผ่านไม่ตรงกันจอ LCD จะแสดงข้อความ“ Access Denied” และเสียงสัญญาณเตือนจะดังขึ้นเรื่อย ๆ ในบางครั้ง ที่นี่เราได้ใช้ไลบรารี string.h ด้วยการใช้ไลบรารีนี้เราสามารถเปรียบเทียบหรือจับคู่สตริงสองสตริงโดยใช้ฟังก์ชัน "strncmp"
ในโปรแกรมก่อนอื่นเรารวมไฟล์ส่วนหัวและกำหนดพินตัวแปรและอินพุตและเอาต์พุตสำหรับปุ่มกดและ LCD
# รวม
มีการสร้างฟังก์ชันสำหรับสร้างการหน่วงเวลา 1 วินาทีพร้อมกับฟังก์ชัน LCD บางอย่างเช่นสำหรับการเริ่มต้น LCD การพิมพ์สตริงสำหรับคำสั่งเป็นต้นคุณสามารถค้นหาได้อย่างง่ายดายใน Code ตรวจสอบบทความนี้สำหรับการเชื่อมต่อ LCD กับ 8051 และฟังก์ชันต่างๆ
หลังจากนี้ในโปรแกรมหลักเราได้เริ่มต้น LCD จากนั้นเราจะอ่านอินพุตจากปุ่มกดโดยใช้ฟังก์ชันปุ่มกด () และเก็บคีย์อินพุตไว้ในอาร์เรย์จากนั้นเปรียบเทียบจากข้อมูลอาร์เรย์ที่กำหนดไว้ล่วงหน้าโดยใช้ strncmp
เป็นโมฆะ main () {buzzer = 1; lcd_init (); lcdstring ("รหัสอิเล็กทรอนิกส์"); lcdcmd (0xc0); lcdstring ("ระบบล็อค"); ล่าช้า (400); lcdcmd (1); lcdstring ("วงจรย่อย"); ล่าช้า (400); ในขณะที่ (1) {i = 0; ปุ่มกด (); ถ้า (strncmp (ผ่าน "4201", 4) == 0)
หากรหัสผ่านที่ป้อนตรงกันฟังก์ชัน accept () จะถูกเรียกว่า:
เป็นโมฆะยอมรับ () {lcdcmd (1); lcdstring ("ยินดีต้อนรับ"); lcdcmd (192); lcdstring ("ยอมรับรหัสผ่าน"); ล่าช้า (200); }
และถ้ารหัสผ่านผิดฟังก์ชันผิด () จะถูกเรียก:
โมฆะผิด () {buzzer = 0; lcdcmd (1); lcdstring ("รหัสผ่านผิด"); lcdcmd (192); lcdstring ("PLZ ลองอีกครั้ง"); ล่าช้า (200); ออด = 1; }
ตรวจสอบฟังก์ชั่นปุ่มกดด้านล่างในรหัสที่อ่านโมดูลปุ่มกดฟอร์มอินพุต