กลับไปหน้ารวมไฟล์
keypad-entry-lock-with-leds-51beb4.md

ภาพรวมโครงการ

"Matrix-Guard Keypad Lock" คือการประยุกต์ใช้ Access Control Logic ในทางปฏิบัติสำหรับการรักษาความปลอดภัยทางกายภาพ ระบบนี้ใช้ Membrane Switch Keypad แบบบาง ทำให้ผู้ใช้สามารถกำหนด PIN code หลายหลักที่ไม่ซ้ำใครภายใน Arduino firmware ได้ มีระบบไฟแสดงสถานะแบบ 3 LED: สี Green สำหรับการยืนยันตัวตนสำเร็จ, สี Red สำหรับการละเมิดความปลอดภัย (รหัสผิด) และสี Yellow สำหรับการตอบสนองการกดแป้นพิมพ์แบบเรียลไทม์ โปรเจกต์นี้เป็นการศึกษาพื้นฐานในเรื่อง Matrix Scanning, Array Comparison และ Hardware Debouncing

เจาะลึกทางเทคนิค

  • หลักการของ Keypad Matrix:
    • Pins เทียบกับจำนวนปุ่ม: Keypad ขนาด 4x4 มีปุ่ม 16 ปุ่ม แต่มี pin เพียง 8 pin ทำได้โดยใช้สถาปัตยกรรมแบบ Row/Column Matrix ในการตรวจจับการกด Arduino จะ "สแกน" อย่างรวดเร็วโดยการตั้งค่า pin แถวหนึ่งเป็น LOW และตรวจสอบว่า pin คอลัมน์ใดที่ถูกดึงลงมาเป็น LOW ด้วย
    • ความถี่ในการสแกน: ไลบรารี Keypad.h จะจัดการการสแกนนี้ด้วยความเร็วสูง (ทุกๆ ไม่กี่ microseconds) เพื่อให้แน่ใจว่าการกดที่สั้นและรวดเร็วจะถูกจับโดย processor
  • ตรรกะการยืนยันรหัสผ่าน:
    • Character Buffer: ขณะที่ผู้ใช้พิมพ์ แต่ละปุ่มจะถูกเก็บไว้ใน Character Array ชั่วคราว (Buffer) firmware จะติดตาม "Buffer Index" ซึ่งเป็นตำแหน่งของหลักปัจจุบัน
    • การเปรียบเทียบสตริง: เมื่อความยาวเป้าหมาย (เช่น 4 หรือ 6 หลัก) ถึง ระบบจะทำการเปรียบเทียบแบบทีละองค์ประกอบระหว่าง User Array และ Secret Array ที่เก็บไว้ใน Flash memory เฉพาะการจับคู่แบบ bitwise match 100% เท่านั้นที่จะกระตุ้นสถานะ "Unlocked"
  • สถานะการทำงานของ LED Feedback:
    • การดีบักด้วยภาพ: LED สี Yellow ทำหน้าที่เป็นองค์ประกอบของ UI (user interface) โดยจะกะพริบทุกครั้งที่มีการกดปุ่มเพื่อยืนยันว่าระบบได้ประมวลผลอินพุตแล้ว
    • การกำหนดเวลาล็อก: เมื่อป้อนรหัสที่ถูกต้อง LED สี Green จะถูกตั้งค่าเป็น HIGH เป็นระยะเวลาที่กำหนด (เช่น 3000ms) ซึ่งจำลองเวลาที่จำเป็นสำหรับ electronic strike-plate หรือ solenoid ในการเปิดค้างไว้
  • การจัดการความปลอดภัยระดับฮาร์ดแวร์:
    • ตรรกะของ Pull-Up Resistor: pin ของ matrix ใช้ Internal Pull-Up Resistors ของ Arduino สิ่งนี้ทำให้มั่นใจว่าสายสัญญาณจะอยู่ในสถานะ HIGH (1) เมื่อไม่มีการใช้งาน และจะลดลงเป็น LOW (0) เมื่อมีการเชื่อมต่อทางกายภาพเท่านั้น เพื่อป้องกัน "False Positives" ที่เกิดจากไฟฟ้าสถิตในสิ่งแวดล้อมหรือ floating pins

วิศวกรรมและการก่อสร้าง

  • การออกแบบประสบการณ์ผู้ใช้ (UX): รายละเอียดทางวิศวกรรมที่สำคัญในการสร้างนี้คือฟังก์ชัน "Keypad Clear" หากผู้ใช้ทำผิดพลาดระหว่างการใช้งาน โค้ดสามารถตั้งโปรแกรมให้ timeout หรือใช้ "Cancel" key พิเศษ (เช่น * หรือ #) เพื่อรีเซ็ต index ทำให้มั่นใจว่าล็อกยังคงแข็งแกร่งและใช้งานง่าย
  • การจ่ายพลังงาน: ในขณะที่ LED ใช้กระแสไฟน้อยมาก แต่สำหรับล็อกเวอร์ชันระดับอุตสาหกรรม terminal 5V จะถูกใช้เพื่อขับเคลื่อน Relay Module หรือ PNP Transistor circuit เพื่อสั่งการ electromagnetic door latch 12V
  • หน่วยความจำแบบโมดูลาร์: ผู้สร้างขั้นสูงสามารถขยายโปรเจกต์นี้ได้โดยใช้ EEPROM ของ Arduino สิ่งนี้จะช่วยให้ผู้ใช้สามารถ เปลี่ยน รหัสผ่าน "in the field" และบันทึกไว้ได้อย่างถาวร ดังนั้น PIN จะไม่หายไปหากแบตเตอรี่หมดหรือระบบรีเซ็ต
  • ความทนทานทางกลไก: Membrane keypads มีความบางและกันน้ำ ทำให้เหมาะสำหรับการติดตั้งภายนอกอาคารหรือบนพื้นผิวเรียบ โปรเจกต์นี้แสดงให้เห็นถึงวิธีเดิน ribbon cable ที่บอบบางผ่านโครงสร้างโดยไม่ทำให้เกิดรอยร้าวจากการดัดงอบน conductive traces

ล็อกพื้นที่ของคุณด้วยความอัจฉริยะแบบ matrix: ความปลอดภัยที่แข็งแกร่งผ่านโค้ดที่ชาญฉลาดและการตอบสนองด้วยการสัมผัส

ข้อมูล Frontmatter ดั้งเดิม

title: "Keypad Entry Lock With LEDs"
description: "Enter the keypad PIN specified in the code, to activate the green LED. Red LED activates when incorrect code is entered."
author: "gamemaster8245"
category: "Security"
tags:
  - "security-systems"
  - "keypad"
  - "pin-entry"
  - "authentication"
  - "access-control"
views: 2848
likes: 0
price: 450
difficulty: "Intermediate"
components:
  - "1x Arduino UNO R3"
  - "1x 4x4 Membrane Switch Keypad"
  - "1x 5mm Green LED (Access Granted)"
  - "1x 5mm Red LED (Access Denied)"
  - "1x 5mm Yellow LED (Processing/Input)"
  - "3x 220-ohm Resistors"
  - "1x Solderless Breadboard"
  - "1x USB Programming Cable"
  - "1x Male/Male Jumper Wire Kit"
tools: []
apps:
  - "1x Arduino IDE"
  - "Keypad.h Library"
downloadableFiles:
  - "https://projects.arduinocontent.cc/07ef6a2e-525b-4946-895b-1babbbcf3137.ino"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/keypad-entry-lock-with-leds-51beb4_cover.jpg"
lang: "th"