กลับไปหน้ารวมไฟล์
security-access-system-with-lcd-display-3ecc04.md

ระยะเวลาในการดำเนินงานโดยประมาณ: 30-45 นาที (สามารถรับชมวิดีโอสาธิตการทำงานของโปรเจกต์ฉบับเต็มได้ที่ Instagram: @Arduino_Builds)

ในโปรเจกต์นี้ เราจะมาสร้างระบบจำลองการป้อนรหัสผ่าน (Code Entry System) พร้อมระบบนับถอยหลัง (Countdown Timer) โดยใช้บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3 เป็นหน่วยประมวลผลกลาง ระบบนี้ถูกออกแบบมาเพื่อเลียนแบบกลไกความปลอดภัยหรืออุปกรณ์จับเวลาที่ต้องใช้การโต้ตอบจากผู้ใช้ ซึ่งประกอบไปด้วยส่วนแสดงผลผลข้อมูล การรับค่า Input และการแจ้งเตือนสถานะผ่านไฟ LED

1. การเชื่อมต่อจอแสดงผล LCD1602 เข้ากับ Arduino Uno R3

หัวใจสำคัญของการแสดงผลในโปรเจกต์นี้คือโมดูล LCD1602 ซึ่งเป็นหน้าจอแบบตัวอักษร 16 แถว 2 คอลัมน์ เราจะเลือกใช้การเชื่อมต่อแบบ 4-bit Mode เพื่อประหยัดขาพิน (Digital Pins) บนบอร์ด Arduino ทำให้เราเหลือพินไว้ใช้งานสำหรับอุปกรณ์เซนเซอร์หรือปุ่มกดอื่นๆ ได้มากขึ้น

การทำงานของ LCD ในโหมดนี้จะใช้สายสัญญาณข้อมูลเพียง 4 เส้น (D4-D7) แทนที่จะเป็น 8 เส้น โดยข้อมูลจะถูกส่งออกไปเป็น 2 ชุด (Nibbles) เพื่อประกอบกันเป็น 1 Byte ในหน่วยความจำของตัวควบคุม Hitachi HD44780 (หรือรุ่นที่เทียบเท่า) บนจอ LCD

ขั้นตอนการต่อวงจร:

  • เชื่อมต่อขา RS (Register Select) ไปยังพินดิจิทัล 7: ทำหน้าที่เลือกสถานะระหว่างการส่งคำสั่ง (Command) หรือข้อมูล (Data)
  • เชื่อมต่อขา Enable (E) ไปยังพินดิจิทัล 8: ใช้เพื่อสร้างสัญญาณ Clock Pulse สำหรับการยืนยันการรับข้อมูล
  • เชื่อมต่อขาข้อมูล D4, D5, D6, D7 ไปยังพินดิจิทัล 9, 10, 11 และ 12 ตามลำดับ
  • VSS และ RW: ต่อเข้ากับ Ground (GND) ของ Arduino เพื่อให้ระบบครบวงจรและตั้งค่าให้อยู่ในโหมดเขียน (Write Mode) ตลอดเวลา
  • VCC: ต่อเข้ากับแหล่งจ่ายไฟ 5V
  • VO (Contrast Adjustment): ขานี้มีความสำคัญมากต่อความชัดเจนของตัวอักษร โดยต้องต่อเข้ากับขาเลื่อน (Middle Pin) ของ Potentiometer (ตัวต้านทานปรับค่าได้) ส่วนขาด้านข้างอีกสองขาให้ต่อเข้ากับ 5V และ GND เพื่อสร้างแรงดันแบ่ง (Voltage Divider) สำหรับปรับระดับความเข้มของหน้าจอ
  • Backlight (A และ K): ขา A (Anode) ต่อเข้ากับ 5V และขา K (Cathode) ต่อเข้ากับ GND เพื่อเปิดไฟพื้นหลังให้มองเห็นได้ชัดเจนในที่มืด

2. ระบบไฟแสดงสถานะ LED (Visual Feedback Indicators)

เพื่อให้ผู้ใช้งานทราบถึงสถานะปัจจุบันของระบบ (เช่น ระบบพร้อมทำงาน, กำลังป้อนข้อมูล, หรือรหัสผ่านถูกต้อง/ผิดพลาด) เราจะใช้ไฟ LED 3 สีเป็นตัวบ่งชี้ โดยมีการเลือกใช้พินแบบ Analog (A3-A5) ซึ่งสามารถประยุกต์ใช้เป็น Digital Output ได้เช่นกัน

การคำนวณและความปลอดภัยของอุปกรณ์: เนื่องจาก LED แต่ละสีมีแรงดันตกคร่อม (Forward Voltage) ที่ต่างกัน การต่อโดยตรงกับพิน 5V ของ Arduino อาจทำให้กระแสไหลเกินจน LED ขาดหรือพินของ MCU เสียหายได้ เราจึงต้องใช้ตัวต้านทานจำกัดกระแส (Current-Limiting Resistor) ขนาด 220-330 โอห์ม อนุกรมไว้ในวงจร

  • Green LED (สถานะผ่าน/สำเร็จ): ต่อขา Anode เข้ากับตัวต้านทานแล้วเชื่อมไปยังพิน A3
  • Yellow LED (สถานะรอ/กำลังประมวลผล): ต่อขา Anode เข้ากับตัวต้านทานแล้วเชื่อมไปยังพิน A4
  • Red LED (สถานะผิดพลาด/เตือน): ต่อขา Anode เข้ากับตัวต้านทานแล้วเชื่อมไปยังพิน A5
  • เชื่อมต่อขา Cathode (ขาสั้น) ของ LED ทุกตัวลงที่ Ground (GND)

3. การกำหนดส่วน Input ด้วยปุ่มกด (Push Buttons)

อินเทอร์เฟซผู้ใช้ประกอบด้วยปุ่มกด 4 ปุ่ม แทนตัวอักษร 'A', 'B', 'C' และ 'D' เพื่อใช้ในการป้อนรหัสผ่าน ในทางเทคนิคเราจะกำหนดให้พินเหล่านี้ทำงานแบบ INPUT_PULLUP ภายในซอฟต์แวร์ เพื่อลดความซับซ้อนของวงจรโดยไม่ต้องใช้ตัวต้านทานภายนอก (External Resistor)

  • Button 1 (A): เชื่อมต่อกับพินดิจิทัล 2
  • Button 2 (B): เชื่อมต่อกับพินดิจิทัล 3
  • Button 3 (C): เชื่อมต่อกับพินดิจิทัล 4
  • Button 4 (D): เชื่อมต่อกับพินดิจิทัล 5

4. การจัดการพลังงานและการเริ่มต้นระบบ

ตรวจสอบให้แน่ใจว่าบอร์ด Arduino ได้รับแหล่งจ่ายไฟที่เสถียรผ่านพอร์ต USB หรือแหล่งจ่ายไฟภายนอก (DC Jack) ขนาด 9V เมื่อตรวจสอบการเชื่อมต่อทั้งหมดเรียบร้อยแล้ว ให้ทำการอัปโหลดซอร์สโค้ดผ่าน Arduino IDE

ตรรกะการทำงานของซอฟต์แวร์ (Code Logic): ภายในโค้ดจะมีการทำงานหลักอยู่ 3 ส่วนคือ:

  1. State Management: คอยตรวจสอบว่าผู้ใช้กดปุ่มใดผ่านฟังก์ชัน digitalRead() โดยมีการจัดการปัญหาการสั่นของหน้าสัมผัส (Debouncing) เพื่อป้องกันการรับค่าเบิ้ล
  2. Countdown Logic: ใช้ฟังก์ชัน millis() เพื่อจัดการเวลาในการนับถอยหลังโดยไม่ทำให้การทำงานของปุ่มกดสะดุด (Non-blocking code) แทนการใช้ delay()
  3. Validation System: เมื่อมีการป้อนข้อมูลจนครบตามจำนวนที่กำหนด ระบบจะทำการเปรียบเทียบคาร์แรกเตอร์ที่รับเข้ามากับรหัสผ่านที่ตั้งไว้ (Hard-coded Password) หากถูกต้อง ไฟสีเขียวจะสว่างและหยุดเวลา หากผิดไฟสีแดงจะเตือนและให้ป้อนใหม่

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

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

title: "Security Access System with LCD Display"
description: "This project allows users to enter a predefined code using buttons, and it features a countdown timer displayed on the LCD screen. The system grants or denies access based on the correct code input and displays corresponding status messages with LED indicators."
author: "admin253"
category: "Screens & Displays"
tags:
  - "Security"
views: 17271
likes: 8
price: 699
difficulty: "Easy"
components:
  - "2x 10 jumper wires 150mm male"
  - "1x 5 Volt Yellow LED"
  - "1x Green LED"
  - "1x 16x2 LCD display with I²C interface"
  - "1x Breadboard - 830 contacts"
  - "4x Push Button"
  - "1x Arduino Uno Rev3"
  - "1x 5 Volt Red LED"
tools: []
apps:
  - "1x Arduino IDE 2.0 (beta)"
downloadableFiles:
  - "https://projects.arduinocontent.cc/8a62a6c3-53fb-42f7-8d2c-110fb17b7437.ino"
documentationLinks: []
passwordHash: "ea22214dd1aadb784b92b3a358595f3fdf2cf02273110be93887d265d68d1357"
encryptedPayload: "U2FsdGVkX1/pnQNCf2rNxMqw1hJ4tpmJjkepGbEWBrZMEnXig55WEQvm01DnCZJijn0Tlx0qSCtuff9Eu8KL9MDo+sz1dDJnZM2Pb9VT5II="
seoDescription: "Build a Security Access System using buttons and LCD display. Features include code entry, countdown timer, and LED status indicators."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/security-access-system-with-lcd-display-3ecc04_cover.jpg"
lang: "en"