- รายการส่วนประกอบ
- แผนภาพวงจรสำหรับ Arduino Keypad Door Lock
- รหัส Arduino สำหรับล็อคประตูปุ่มกดดิจิตอล
- Arduino Keypad DoorLock การประกอบและการทดสอบ
บ่อยครั้งเราจำเป็นต้องรักษาความปลอดภัยในห้องที่บ้านหรือที่ทำงานของเรา (อาจเป็นห้องปฏิบัติการลับของเด็กซ์เตอร์) เพื่อไม่ให้ใครสามารถเข้าถึงห้องนั้นได้โดยไม่ได้รับอนุญาตจากเราและรับประกันการป้องกันการโจรกรรมหรือการสูญหายของอุปกรณ์และทรัพย์สินที่สำคัญ ปัจจุบันมีระบบรักษาความปลอดภัยหลายประเภท แต่เบื้องหลังสำหรับการตรวจสอบความถูกต้องพวกเขาทั้งหมดจะถ่ายทอดบนลายนิ้วมือเครื่องสแกนเรตินาเครื่องสแกนม่านตารหัสใบหน้าเครื่องสแกนลิ้นเครื่องอ่าน RFID รหัสผ่านพินรูปแบบ ฯลฯ ปิดโซลูชันทั้งหมด ต้นทุนต่ำคือการใช้รหัสผ่านหรือระบบพิน ดังนั้นในโครงการนี้ฉันได้สร้างArduino Keypad Door Lockซึ่งสามารถติดตั้งกับประตูที่มีอยู่ของคุณเพื่อรักษาความปลอดภัยด้วยรหัสผ่านดิจิทัล ก่อนหน้านี้เราได้สร้างล็อคประตูที่น่าสนใจอื่น ๆ ซึ่งแสดงไว้ด้านล่าง
- ล็อคประตู Arduino RFID
- ล็อคประตู Arduino Solenoid
- ล็อครหัสดิจิตอล Raspberry Pi
- 555 ตัวตั้งเวลาล็อคประตูแบบอิเล็กทรอนิกส์
ก่อนที่จะสร้างโครงการล็อคประตูรหัสผ่านก่อนอื่นเราต้องรวบรวมส่วนประกอบที่จำเป็นจากนั้นดำเนินการตามขั้นตอนการสร้างทีละขั้น
รายการส่วนประกอบ
- Arduino Uno / Pro / Mini หรือบอร์ดแบบกำหนดเองโดยใช้ไมโครคอนโทรลเลอร์ Atmega 328p
- 16 x 2 LCD (จอแสดงผลคริสตัลเหลว)
- ปุ่มกดเมทริกซ์ 4 x 3 หรือ 4 x 4 สำหรับ Arduino
- เซอร์โวมอเตอร์
- ตู้เก็บของประตูพิมพ์ 3 มิติ / ตู้เก็บของประตูแบบกำหนดเอง
- ส่วนประกอบเพิ่มเติมสำหรับแหล่งจ่ายไฟของเครื่องชาร์จมือถือ 1 แอมป์ 5 โวลต์
- กล่องพลาสติก 4 '' / 6 '', สายจัมเปอร์, สลักเกลียวถั่ว, ปลอกพลาสติก ฯลฯ
แผนภาพวงจรสำหรับ Arduino Keypad Door Lock
แผนภาพวงจรที่สมบูรณ์สำหรับโครงการ Digital Keypad Door Lock ที่ใช้ Arduino ของเราแสดงไว้ด้านล่าง
ก่อนอื่นเราเริ่มจากสมองของโครงการนี้ซึ่งก็คือบอร์ด Arduino UNO บอร์ด Arduino เชื่อมต่อกับ LCD และเซอร์โวมอเตอร์ เซอร์โวมอเตอร์ใช้เพื่อดัน (ล็อค) หรือดึง (ปลดล็อค) สลักที่ประตู ต้องใช้ LCD ขนาด 16 x 2 เพื่อแสดงข้อความโดย Arduino 16 x 2 หมายความว่ามีจำนวนคอลัมน์ 16 คอลัมน์และจำนวนแถว 2 แถว หากคุณยังใหม่กับโมดูลจอแสดงผล LCD 16x2 อย่างสมบูรณ์คุณสามารถตรวจสอบบทช่วยสอน Arduino LCD Interfacing เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้
ที่นี่ฉันใช้เซอร์โวมอเตอร์5v Towerpro SG90สำหรับทำตู้เก็บของประตูแบบกำหนดเอง เป็นเซอร์โวมอเตอร์ระดับพื้นฐานและทำงานได้ดีกับ Arduino โดยไม่มีวงจรขับหรือโมดูลภายนอก นอกจากนี้ค่าใช้จ่ายของเซอร์โวมอเตอร์นี้ยังน้อยกว่ามากดังนั้นคุณสามารถซื้อได้อย่างง่ายดาย คุณยังสามารถตรวจสอบบทช่วยสอน Arduino Servo Motor Control เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับเซอร์โวมอเตอร์และวิธีการทำงาน เชื่อมต่อเซอร์โวมอเตอร์กับ Arduino Digital pin D9 และแหล่งจ่ายไฟ 5 โวลต์ เซอร์โวมอเตอร์นี้มีสายอินพุตทั้งหมด 3 สาย (GND, + 5V & SIGNAL LINE)
ในโครงการนี้ฉันได้ใช้แป้นพิมพ์เมทริกซ์ 4 x 4 (แต่ส่วนแป้นพิมพ์ 4 x 4 ไม่สามารถใช้งานได้ในการทำให้เป็นภาพกราฟิกนี้) แต่ไม่ต้องกังวลเพราะแป้นพิมพ์เมทริกซ์ 4 x 3 ก็ทำงานได้ดีกับการเข้ารหัสของฉัน. เราต้องการปุ่มกดสำหรับใส่รหัสผ่านและล็อคตู้เก็บของประตูที่กำหนดเองด้วยตนเอง ประกอบด้วย 16 ปุ่ม (ซอฟต์สวิตช์) 4 ปุ่มในแถว (R1, R2, R3, R4) และ 4 ปุ่มในคอลัมน์ (C1, C2, C3, C4) เมื่อกดปุ่มจะสร้างการเชื่อมต่อระหว่างแถวที่เกี่ยวข้อง และคอลัมน์ ตารางด้านล่างแสดงวิธีการเชื่อมต่อ Arduino กับปุ่มกด
ปุ่มกด | Arduino |
พิน 1 (แถวที่ 1) | พินดิจิตอล 1 |
พิน 2 (แถว 2) | พินดิจิตอล 2 |
พิน 3 (แถวที่ 3) | พินดิจิตอล 3 |
พิน 4 (แถวที่ 4) | พินดิจิตอล 4 |
Pin 5 (คอลัมน์ 5) | พินดิจิตอล 5 |
Pin 6 (คอลัมน์ 6) | พินดิจิตอล 6 |
Pin 7 (คอลัมน์ 7) | พินดิจิตอล 7 |
รหัส Arduino สำหรับล็อคประตูปุ่มกดดิจิตอล
รหัสล็อคประตู Arduino ทั้งหมดอยู่ที่ด้านล่างของหน้านี้ คุณสามารถอัปโหลดโค้ดได้โดยตรง แต่ขอแนะนำให้อ่านย่อหน้าด้านล่างเพื่อทำความเข้าใจว่าโค้ดทำงานอย่างไร นอกจากนี้สิ่งสำคัญคือต้องแน่ใจว่าคุณได้เพิ่มไลบรารีปุ่มกดต่อไปนี้ใน Arduino IDE ของคุณเพื่อคอมไพล์โค้ดให้สำเร็จ โดยเปิดลิงค์ด้านล่างแล้วดาวน์โหลดไฟล์ ZIP จากนั้นใน Arduino IDE ของคุณไปที่ Sketch -> รวมไลบรารี -> Add.ZIP Library และเรียกดูไฟล์ที่คุณเพิ่งดาวน์โหลด
- ห้องสมุดปุ่มกด Arduino
หลังจากใส่ไฟล์ส่วนหัวและไลบรารีทั้งหมดแล้วให้กำหนดพินทั้งหมดสำหรับ LCD และกำหนดความยาวของรหัสผ่านและตั้งค่าตำแหน่งเริ่มต้นของเซอร์โวเป็น 0 หลังจากนั้นให้ใช้ประเภทข้อมูล“ char” เพื่อประกาศหมายเลขที่สามารถถือได้รวมถึง อักขระว่าง
// # รวม
ด้วยรหัสชิ้นนี้ (char Master = "123456";) - ภายใต้ Char Master ฉันจะประกาศรหัสผ่านของการล็อกประตูจากนั้นกำหนดจำนวนแถวและคอลัมน์ในแป้นพิมพ์และยังประกาศคีย์แมปและเชื่อมต่อกับแถวและ คอลัมน์ ภายใต้การตั้งค่าโมฆะเริ่มต้นขาสัญญาณเซอร์โว D9 สถานะเซอร์โวปิดและพิมพ์ชื่อของโครงการ / อุปกรณ์ / บริษัท โดยมีความล่าช้า 3 วินาทีบนเวลา LCD ในการเริ่มต้นอุปกรณ์
การตั้งค่าเป็นโมฆะ () {myservo.attach (9); ServoClose (); lcd.begin (16, 2); lcd.print ("ประตู Arduino"); lcd.setCursor (0, 1); lcd.print ("- โครงการดู -"); ล่าช้า (3000); lcd.clear (); }
ภายใต้ฟังก์ชันลูปเงื่อนไข if-else อย่างง่ายจะอยู่ที่นั่น ตามสถานะ (มันถูกล็อคโดยอัตโนมัติ) พิมพ์“ ประตูปิด” ด้วยการหน่วงเวลา 3 วินาทีและเซอร์โวหมุนเพื่อปิดตำแหน่งข้อมูลประตูจะนับเป็น 1 มิฉะนั้นตู้เก็บของประตูจะยังคงเปิดอยู่และข้อมูลจะนับ 0 เซอร์โวเปิดหมุนไปที่ตำแหน่งไป 0 องศาถึง 180 องศาและในการปิดจะเปลี่ยนจาก 180 เป็น 0 ฟังก์ชันเปิดและปิดเซอร์โวแสดงไว้ด้านล่าง
เป็นโมฆะ ServoOpen () {สำหรับ (pos = 180; pos> = 0; pos - = 5) {// ไปจาก 0 องศาถึง 180 องศา // ในขั้นตอนที่ 1 องศา myservo.write (pos); // บอกเซอร์โวให้ไปที่ตำแหน่งในตัวแปร 'pos' delay (15); // รอ 15ms เพื่อให้เซอร์โวถึงตำแหน่ง}} เป็นโมฆะ ServoClose () {สำหรับ (pos = 0; pos <= 180; pos + = 5) {// ไปจาก 180 องศาถึง 0 องศา myservo.write (pos); // บอกเซอร์โวให้ไปที่ตำแหน่งในตัวแปร 'pos' delay (15); // รอ 15ms เพื่อให้เซอร์โวถึงตำแหน่ง}}
เขียนตำแหน่งของเซอร์โวด้วยการหน่วงเวลา 15 วินาทีเพื่อไปถึงตำแหน่งเซอร์โว ภายใต้ฟังก์ชัน void open ให้พิมพ์ "Enter Password" บน LCD จากนั้นเงื่อนไขจะระบุว่ารหัสผ่านที่ป้อนควรจะเหมือนกันกับคีย์ที่กำหนดเองโดยภายในข้อมูลเนื้อหานี้จะถูกนับและเก็บถ่านไว้ในอาร์เรย์ข้อมูลรหัสผ่านที่เพิ่มขึ้นและป้อนที่พิมพ์บน LCD หาก ความยาวข้อมูล (จำนวนคีย์) และรหัสผ่านอินพุตตรงกับ Data Master (ซึ่งมีคีย์ที่กำหนดไว้ล่วงหน้า) จากนั้นเมื่อแอคชั่น LCD ชัดเจนเซอร์โวไดรฟ์ให้พิมพ์บน LCD“ ประตูเปิดอยู่” และตัวนับข้อมูลจะถูกรีเซ็ตเป็น 0
หากคีย์อินพุตไม่ตรงกับ Data Master เนื่องจากการดำเนินการบน LCD clear print บน LCD“ รหัสผ่านผิด” เพื่อแจ้งเตือนโดยมีการหน่วงเวลา 1 วินาทีและยังคงอยู่ในตำแหน่งล็อกพร้อมตัวนับข้อมูลเป็น 1 และดำเนินการตามขั้นตอนนี้ต่อไป.
if (data_count == Password_Lenght - 1) // ถ้าดัชนีอาร์เรย์เท่ากับจำนวนอักขระที่คาดไว้ให้เปรียบเทียบข้อมูลกับต้นแบบ {if (! strcmp (Data, Master)) // เท่ากับ (strcmp (Data, Master) == 0) {lcd.clear (); ServoOpen (); lcd.print ("ประตูเปิดอยู่"); ประตู = 0; } else {lcd.clear (); lcd.print ("รหัสผ่านผิด"); ล่าช้า (1,000); ประตู = 1; } ข้อมูลชัดเจน(); }
Arduino Keypad DoorLock การประกอบและการทดสอบ
ตอนนี้ใส่ทุกอย่างลงในกล่องพลาสติกขนาด 4 นิ้ว / 6 นิ้วและจ่ายไฟด้วยที่ชาร์จมือถือจัดเรียงทุกอย่างอย่างสวยงามโดยใช้ปลอก ตามหลักการแล้วฉันสามารถใช้การพิมพ์ 3 มิติเพื่อประกอบล็อคของฉันได้ แต่หลังจากออกแบบไฟล์ของฉันฉันพบว่าการพิมพ์ 3 มิติมีราคาแพงมากดังนั้นฉันจึงแก้ไขเซอร์โวก่อนจากนั้นเชื่อมต่อตู้เก็บสไลด์ปกติกับเซอร์โวโดยใช้แผ่นโลหะและปิดทับ ด้วยใยแก้วแม้ว่าจะใช้งานได้ดี แต่ก็มีความปลอดภัยน้อยกว่า
หากคุณต้องการความปลอดภัยมากขึ้นคุณต้องพิมพ์โมเดลล็อคประตู 3 มิติที่ใช้งานได้ภายในกับเซอร์โวนี้ คุณสามารถดาวน์โหลดไฟล์ STL ที่ต้องการได้จากลิงค์ด้านล่างและพิมพ์ 3D หากคุณสามารถเข้าถึงเครื่องพิมพ์ 3D ได้
ดาวน์โหลดไฟล์ STL สำหรับการพิมพ์ 3 มิติ
ไฟล์การออกแบบยังแสดงอยู่ในภาพด้านล่าง
ในช่วงเริ่มต้นของโครงการในช่วงเวลาที่เราเปิดเครื่องเป็นครั้งแรกเราจำเป็นต้องให้ชื่อโครงการ (คุณสามารถแสดงชื่อ บริษัท ได้ด้วย) เพื่อให้ดูฉลาดและเป็นเอกสิทธิ์เหมือนอุปกรณ์เชิงพาณิชย์ (ดังที่คุณเห็นใน ภาพด้านล่าง)
ด้วยการหน่วงเวลา 3 วินาทีให้ล็อคประตูอย่างรวดเร็วและตรวจสอบการแสดงสถานะของการล็อคประตูโดยตรงตามที่แสดงในภาพด้านล่าง
เมื่อคุณล็อคประตูด้วยตนเองโดยการกด“#” ที่สำคัญก็แสดงให้เห็นครั้งแรกที่ประตูถูกปิดเป็นเวลา 1 วินาทีและจากนั้นจะแสดงป้อนรหัสผ่านในทางตรงกันข้ามเมื่อประตูถูกปลดล็อคโดยการป้อนรหัสผ่านที่ถูกต้องก็แสดงให้เห็นประตูเปิด
หากประตูยังคงอยู่ในสภาพปลดล็อกจะแสดง - ประตูเปิดอยู่ตราบเท่าที่คุณล็อคประตูด้วยตนเองตามการเข้ารหัส ฉันให้รหัสแล้วและคุณสามารถปรับแต่งการตั้งค่าได้โดยเปลี่ยนพารามิเตอร์การแสดงรหัสตามต้องการ คุณยังสามารถตรวจสอบการทำงานทั้งหมดกับวิดีโอที่ลิงก์ไว้ที่ด้านล่างของหน้านี้