- ส่วนประกอบที่ใช้:
- การเชื่อมต่อ 4x4 Keypad กับ Raspberry Pi โดยใช้ Multiplexing:
- คำอธิบายวงจร:
- คำอธิบายการทำงาน:
- คำอธิบายการเขียนโปรแกรม:
ความปลอดภัยเป็นปัญหาสำคัญในชีวิตประจำวันของเราและการ ล็อกแบบดิจิทัล ได้กลายเป็นส่วนสำคัญของระบบรักษาความปลอดภัย มีเทคโนโลยีหลายประเภทเพื่อรักษาความปลอดภัยให้กับสถานที่ของเราเช่นระบบรักษาความปลอดภัยแบบ PIR ระบบรักษาความปลอดภัยที่ใช้ RFID สัญญาณเตือนความปลอดภัยด้วยเลเซอร์ระบบไบโอเมทริกซ์
ก่อนหน้านี้เราได้สร้าง Digital Lock ด้วยรหัสผ่านโดยใช้ Arduino และใช้ 8051 ที่นี่เราจะสร้างDigital Lockนี้โดยใช้ Raspberry Pi พร้อม User Defined Password เมื่อตั้งรหัสผ่านแล้วผู้ใช้จะสามารถเข้าถึงประตูได้ด้วยรหัสผ่านที่ถูกต้องเท่านั้น
หากคุณไม่คุ้นเคยกับ Raspberry Pi เราได้สร้างชุดบทเรียนเพื่อเรียนรู้ Raspberry Pi โดยเชื่อมโยงกับส่วนประกอบพื้นฐานทั้งหมดและโครงการง่ายๆที่จะเริ่มต้นโปรดตรวจสอบ
ส่วนประกอบที่ใช้:
- Raspberry Pi (พร้อมการ์ด SD ที่บูตแล้ว)
- โมดูลปุ่มกด
- Buzzer
- 16x2 LCD
- หม้อ 10k
- 10k Resistor Pack (Pull-up)
- LED
- ตัวต้านทาน 1k
- กระดานขนมปัง
- รถเข็นซีดี / ดีวีดีเป็นประตู
- กำลังไฟ 5 โวลต์
- ตัวขับมอเตอร์ L293D
- แบตเตอรี่ 12 โวลต์
- การเชื่อมต่อสายไฟ
การเชื่อมต่อ 4x4 Keypad กับ Raspberry Pi โดยใช้ Multiplexing:
ในวงจรนี้เราได้ใช้Multiplexing Techniqueเพื่อเชื่อมต่อกับปุ่มกดสำหรับป้อนรหัสผ่านในระบบ ที่นี่เราจะใช้4x4 ปุ multiplex กับ 16 คีย์ โดยปกติถ้าเราต้องการใช้ 16 คีย์เราต้องมี 16 พินสำหรับเชื่อมต่อกับ Arduino แต่ในเทคนิคมัลติเพล็กซิ่งเราต้องการเพียง 8 พินสำหรับเชื่อมต่อ 16 คีย์ เพื่อให้เป็นวิธีที่ชาญฉลาดในการเชื่อมต่อกับโมดูลปุ่มกด เรียนรู้เพิ่มเติมเกี่ยวกับเทคนิค Multiplexing และการทำงานใน Digital Lock นี้โดยใช้ 8051
เทคนิคการมัลติเพล็กซ์เป็นวิธีที่มีประสิทธิภาพมากในการลดจำนวนพินที่ใช้กับไมโครคอนโทรลเลอร์สำหรับป้อนข้อมูลหรือรหัสผ่านหรือตัวเลข โดยทั่วไปเทคนิคนี้ใช้ในสองวิธี - หนึ่งคือการสแกนแถวและอีกวิธีหนึ่งคือการสแกนคอลัมน์ ถ้าเราใช้ไลบรารีปุ่มกด (#include
แต่ในโครงการนี้เราได้ใช้วิธีการสั้น ๆ ในการเข้ารหัสสำหรับปุ่มกดเดียวกันโดยไม่ต้องใช้ไลบรารีปุ่มกด โปรดดูในส่วนการเขียนโปรแกรมด้านล่าง
คำอธิบายวงจร:
วงจรของRaspberry Pi Digital Door Lockนั้นง่ายมากซึ่งประกอบด้วยRaspberry Pi 3, โมดูลปุ่มกด, กริ่ง, รถเข็น DVD / CD เป็นประตูและ LCD ที่นี่ Raspberry Pi ควบคุมกระบวนการทั้งหมดเช่นการใช้โมดูลปุ่มกดแบบรหัสผ่านการเปรียบเทียบรหัสผ่านการขับเสียงกริ่งการเปิด / ปิดประตูและการส่งสถานะไปยังจอ LCD ปุ่มกดใช้สำหรับป้อนรหัสผ่าน Buzzer ใช้สำหรับบ่งชี้และขับเคลื่อนด้วยทรานซิสเตอร์ NPN ในตัว LCD ใช้สำหรับแสดงสถานะหรือข้อความ
หมุดคอลัมน์ของโมดูลปุ่มกดเชื่อมต่อโดยตรงกับ GPIO พิน 22, 23, 24, 25 และพินแถวจะเชื่อมต่อกับพิน wringPi ของ Raspberry Pi 21, 14, 13, 12 16x2 จอแอลซีดีจะเชื่อมต่อกับราสเบอร์รี่ Pi ในโหมด 4 บิต พินควบคุมของ LCD RS, RW และ En เชื่อมต่อโดยตรงกับ GPIO พิน 11, GND และ 10 พินข้อมูล D4-D7 เชื่อมต่อกับพิน GPIO 6, 15, 4 และ 1 หนึ่งออดเชื่อมต่อที่พิน GPIO 8 และตัวขับมอเตอร์ L293Dเชื่อมต่อที่ GPIO pin 28 และ 29 ของ Raspberry Pi แบตเตอรี่ 12 โวลต์มีการเชื่อมต่อที่ขา 8 ของ L293D ด้วยความเคารพกับพื้น
คำอธิบายการทำงาน:
การทำงานของโครงการนี้เป็นเรื่องง่าย เมื่อผู้ใช้รันรหัสใน Raspberry Pi หน้าจอ LCD จะแสดงข้อความต้อนรับและหลังจากนั้นจะแสดง“ A- Input Password” และในบรรทัดที่สอง B- Change Passkey” ตอนนี้ผู้ใช้สามารถเลือกตัวเลือกได้โดยกด A และ B ที่ปุ่มกด
ตอนนี้หากผู้ใช้ต้องการเปิดประตูเขาต้องกด 'A' ที่ปุ่มกดจากนั้นระบบจะถามรหัสผ่าน รหัสผ่านเริ่มต้นคือ“ 1234” ตอนนี้ผู้ใช้ต้องป้อนรหัสผ่านและหลังจากนี้ระบบจะตรวจสอบรหัสผ่านว่าถูกต้องหรือไม่:
1. หากผู้ใช้ป้อนรหัสผ่านที่ถูกต้องระบบจะเปิดประตู
2. หากผู้ใช้ป้อนรหัสผ่านผิดระบบจะส่งคำสั่งไปยังกริ่งเพื่อส่งเสียงบี๊บและแสดงข้อความ“ Access Denied” บนจอ LCD
ตอนนี้สมมติว่าผู้ใช้ต้องการเปลี่ยนรหัสผ่านจากนั้นเขา / เธอต้องกด 'B' ที่ปุ่มกดจากนั้นผู้ใช้จะถูกถามถึง“ รหัสผ่านปัจจุบัน” หรือ“ รหัสผ่านปัจจุบัน” ตอนนี้ผู้ใช้ต้องป้อนรหัสผ่านปัจจุบันจากนั้นระบบจะตรวจสอบความถูกต้องและดำเนินการอย่างใดอย่างหนึ่ง
1. หากผู้ใช้ป้อนรหัสผ่านที่ถูกต้องระบบจะถาม“ รหัสผ่านใหม่” และตอนนี้ผู้ใช้สามารถเปลี่ยนรหัสผ่านได้โดยป้อนรหัสผ่านใหม่
2. และหากผู้ใช้ป้อนรหัสผ่านผิดระบบจะกดกริ่งและแสดงข้อความ“ รหัสผ่านผิด: บนหน้าจอ LCD
ตอนนี้ผู้ใช้ต้องทำซ้ำกระบวนการทั้งหมดอีกครั้งเพื่อเปลี่ยนรหัสผ่าน
โดยพื้นฐานแล้วการเปิดและปิดประตูนั้นไม่ใช่อะไรนอกจากการหมุนนาฬิกามอเตอร์อย่างชาญฉลาดและทวนเข็มนาฬิกาเพื่อเปิดและปิดประตู สำหรับโครงการขนาดเล็กคุณสามารถเพิ่มมอเตอร์กระแสตรงเพื่อเปิดและปิดประตูได้ นอกจากนี้เรายังสามารถใช้ Servo หรือ stepper motor ได้ แต่เราจำเป็นต้องเปลี่ยนรหัสตามนั้น
นอกจากนี้คุณสามารถใช้ล็อคประตูอิเล็กทรอนิกส์ที่เหมาะสม(หาได้ง่ายทางออนไลน์) แทนรถเข็นซีดี มีแม่เหล็กไฟฟ้าซึ่งช่วยให้ประตูล็อคเมื่อไม่มีกระแสไฟฟ้าผ่านล็อค (วงจรเปิด) และเมื่อกระแสไฟฟ้าไหลผ่านล็อคจะปลดล็อคและสามารถเปิดประตูได้ รหัสจะมีการเปลี่ยนแปลงตามนั้นตรวจสอบการทบทวนโครงการที่แชร์นี้: Arduino RFID Door Lock
คำอธิบายการเขียนโปรแกรม:
การเขียนโปรแกรมคล้ายกับ Arduino มาก ฟังก์ชัน Arduino ใช้คลาส แต่ที่นี่เราได้ทำโค้ดนี้โดยใช้การเขียนโปรแกรม c โดยไม่มีคลาส เราได้ติดตั้งไลบรารี WirePiสำหรับGPIOแล้วด้วย
ก่อนอื่นเราต้องรวมไลบรารีที่จำเป็นจากนั้นกำหนดพินสำหรับ LCD, buzzer, LED และ Motor
# รวม
หลังจากกำหนดพินสำหรับแถวและคอลัมน์ของปุ่มกดและกำหนดอาร์เรย์สำหรับจัดเก็บรหัสผ่านและหมายเลขปุ่มกด
ถ่านผ่าน; ถ่าน pass1 = {'1', '2', '3', '4'}; int n = 0; แถวถ่าน = {21, 14, 13, 12}; ถ่าน = {22, 23, 24, 25}; ถ่าน num = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}};
หลังจากนั้นเราได้เขียนฟังก์ชันบางอย่างสำหรับการขับเคลื่อน LCD:
ฟังก์ชัน void lcdcmd ใช้สำหรับส่งคำสั่งไปยัง LCD และฟังก์ชัน void write ใช้สำหรับส่งข้อมูลไปยัง LCD
ฟังก์ชัน void print ใช้สำหรับส่งสตริงไปยัง LCD
พิมพ์เป็นโมฆะ (ถ่าน * str) {while (* str) {write (* str); str ++; }}
ฟังก์ชัน โมฆะ setCursor ใช้สำหรับตั้งค่าตำแหน่งเคอร์เซอร์ใน LCD
โมฆะ setCursor (int x, int y) {int set = 0; ถ้า (y == 0) ตั้งค่า = 128 + x; ถ้า (y == 1) ตั้งค่า = 192 + x; lcdcmd (ชุด); }
ฟังก์ชัน void clear () ใช้เพื่อล้าง LCD และ void buzzer () ใช้เพื่อส่งเสียงบี๊บ
ฟังก์ชัน void gate_open (), void gate_stop () และ void gate_close () ใช้สำหรับขับ Gate (CD Trolley)
เป็นโมฆะ gate_open () {digitalWrite (m1, LOW); digitalWrite (m2, สูง); ล่าช้า (2000); } โมฆะ gate_stop () {digitalWrite (m1, LOW); digitalWrite (m2, LOW); ล่าช้า (2000); } void gate_close () {digitalWrite (m1, HIGH); digitalWrite (m2, LOW); ล่าช้า (2000); }
ฟังก์ชัน Given ใช้เพื่อเริ่มต้น LCD ในโหมด 4 บิต
เป็นโมฆะเริ่มต้น (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
ระบุฟังก์ชัน void keypad () ใช้สำหรับเชื่อมต่อโมดูลปุ่มกดกับ Raspberry Pi ด้วย 'วิธีการสั้น ๆ '
ปุ่มกดเป็นโมฆะ () {int i, j; int x = 0, k = 0; ล่าช้า (2000); ในขณะที่ (k <4) {สำหรับ (i = 0; i <4; i ++) {digitalWrite (col, LOW); สำหรับ (j = 0; j <4; j ++) {if (digitalRead (row) == 0) {setCursor (x, 1);…………………
ตรวจสอบฟังก์ชั่นทั้งหมดในโค้ดเต็มด้านล่างโค้ดนั้นง่ายและอธิบายได้ด้วยตัวเอง