กลับไปหน้ารวมไฟล์
simple-arduino-mkr-codelock-with-touchscreen-95e490.md

ความปลอดภัยแค่ปลายนิ้ว: ระบบล็อครหัสผ่าน MKR Touchscreen

ยุคนี้ใครเขาใช้กุญแจไขประตูกันล่ะน้อง? มันต้องขยับมาใช้หน้าจอ Digital ล้ำๆ กันแล้ว โปรเจกต์นี้พี่จะพาน้องใช้ Arduino MKR Zero ร่วมกับเคส ArduiTouch สำหรับติดผนัง มาทำระบบ Codelock ระดับมืออาชีพกัน โดยใช้หน้าจอสี ILI9341 SPI บอกเลยว่าตัวนี้คือพื้นฐานชั้นยอดที่จะเอาไปต่อยอดทำระบบ Home Automation หรือระบบความปลอดภัยที่ซับซ้อนกว่านี้ได้สบายๆ จัดไปวัยรุ่น!

ทำไมต้อง MKR? พลังเหลือๆ แถมแม่นยำ

จริงอยู่ที่ Arduino รุ่นเก๋าๆ มันก็ใช้ดีสำหรับการลองผิดลองถูก แต่พอจะทำของจริงให้ดูโปร MKR Zero คือคำตอบ เพราะมีฟีเจอร์ระดับ Enterprise มาให้เลย:

  • สถาปัตยกรรม ARM Cortex-M0+: ประมวลผลกราฟิกบนจอ TFT ได้ลื่นปรื๊ดกว่าบอร์ด 8-bit ทั่วไปเยอะ ไม่ต้องรอนานให้เสียอารมณ์
  • ช่องเสียบ SD Card ในตัว: อันนี้ทีเด็ดเลยน้อง น้องสามารถอัพเกรดเป็น "Logging System" เก็บประวัติการเข้า-ออก (ทั้งที่กดถูกและกดมั่ว) ลงไฟล์ CSV ไว้เช็คย้อนหลังได้ เท่ป่ะล่ะ?
  • ขนาดกะทัดรัด: ออกแบบมาให้ลงล็อคกับ PCB ของ ArduiTouch พอดีเป๊ะ เอาไปติดผนังได้หล่อๆ เลย

กลไกการทำงานของ GUI (หน้าจอสั่งการ)

หัวใจของงานนี้คือการเปลี่ยน "การจิ้มจอ" ให้กลายเป็น "คำสั่ง" :

  1. วาดหน้าจอด้วย Adafruit_GFX: เราจะใช้ Library มาตรฐานอย่าง Adafruit GFX และ ILI9341 วาดปุ่มกด 12 ปุ่ม (0-9, CLEAR, OK) ลงบนจอขนาด 2.4 นิ้ว
  2. ตรวจจับการสัมผัสด้วย XPT2046: ตัวเลเยอร์ทัชสกรีนจะถูกคุมด้วยชิป XPT2046 พอน้องจิ้มไปที่ "ปุ่ม" บนจอ Arduino จะแปลงค่าพิกัด Analog ที่ได้มา เป็นค่าปุ่มที่เราตั้งไว้ใน Code
  3. ตรรกะการตรวจสอบรหัส: ระบบความปลอดภัยเราอิงตาม codenum ที่ตั้งไว้ น้องจะตั้งรหัสยาวแค่ไหนก็ได้ พอจิ้ม "OK" ปุ๊บ ระบบจะเช็คว่าตรงไหม ถ้าถูกก็สั่งให้ Piezo Buzzer ดัง หรือสั่ง Relay ให้ปลดล็อคประตูได้เลย ง่ายๆ แต่ใช้งานได้จริง

ความเป็นมืออาชีพที่แท้จริง

การใช้ชุด ArduiTouch จะช่วยเปลี่ยนโปรเจกต์ "สายไฟระโยงระยางบน Breadboard" ให้กลายเป็นผลิตภัณฑ์ที่พร้อมใช้งานจริง ตัวบอร์ดรองรับไฟเลี้ยง 12V-24V ทำให้ติดตั้งเข้ากับระบบไฟบ้านเดิมได้เลย เป็น Gateway ความปลอดภัยที่ดูดีและทำงานได้ตลอด 24 ชั่วโมง

มีน้องๆ หลายคนทักมาถามพี่ว่าขอดูตัวอย่าง Code ง่ายๆ สำหรับ ArduiTouch หน่อย เอาไว้เช็คว่าต่อถูกไหม หรือเอาไว้เริ่มต้นเขียนเอง พี่เลยจัดระบบ Codelock แบบเบสิกมาให้ดูเป็นแนวทาง ไม่มีอะไรซับซ้อน เน้นใช้งานได้จริง

ขั้นตอนการประกอบ:

สำหรับการประกอบ ArduiTouch MKR ให้ทำตาม คู่มือการประกอบ ของเราได้เลยนะน้อง

เราต้องเสียบ Board [Arduino](https://s.shopee.co.th/7fUgFAWSki) MKR ลงในช่องที่มาร์คไว้ที่ด้านหลังของ PCB ArduiTouch ตามนี้:

การติดตั้ง Library เพิ่มเติม:

ไปติดตั้ง Library พวกนี้ผ่าน Arduino Library Manager ให้ครบนะน้อง เดี๋ยว Compile ไม่ผ่านจะหาว่าพี่ไม่เตือน

Adafruit GFX Library

Adafruit ILI9341 Library

XPT2046_Touchscreen โดย Paul Stoffregen

หรือจะดาวน์โหลดเป็นไฟล์ ZIP แล้วแตกไฟล์ลงในโฟลเดอร์ libraries ของ Arduino ก็ได้ตามสะดวก

พอติดตั้ง Library ของ Adafruit เสร็จแล้ว ก็ Restart ตัว Arduino IDE สักรอบนึงเพื่อความชัวร์

การตั้งค่าตามใจชอบ:

ใน Source Code น้องสามารถตั้งรหัสผ่านได้ตรงนี้:

#define codenum 42

เลข 42 นี่คือคำตอบของทุกสรรพสิ่ง (มั้งนะ) แต่น้องเปลี่ยนเป็นเลขอะไรก็ได้ตั้งแต่ 0 ถึง 999,999 จัดไปอย่าให้ใครรู้รหัสเราล่ะ

นอกจากนี้ยังตั้งเวลาการทำงานของ [Relay](https://s.shopee.co.th/3fyXTmWPbL) (ถ้าจะต่อเพิ่ม) ได้ตรงนี้:

#define relay_on_time 40

รัน Demo กันเลย:

เปิดไฟล์ตัวอย่างนี้ใน Arduino IDE เลยวัยรุ่น พอ Compile และ Upload เสร็จ น้องจะเห็นปุ่มกดขึ้นมาบนหน้าจอ ทีนี้ก็จิ้มรหัสที่ตั้งไว้แล้วกด „OK“ ได้เลย!

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

title: "Simple Arduino MKR Codelock with Touchscreen"
description: "ILI9341-based codelock with touchscreen for Arduino MKR series and ArduiTouch."
author: "hwhardsoft"
category: ""
tags:
  - "home automation"
  - "security"
  - "internet of things"
views: 2763
likes: 0
price: 699
difficulty: "Easy"
components:
  - "1x Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires"
  - "1x Arduino MKR Zero"
  - "1x Plier, Needle Nose"
  - "1x Soldering iron (generic)"
  - "1x ArduiTouch"
  - "1x Solder Wire, Lead Free"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://github.com/HWHardsoft/Arduino-MKR-Codelock"
documentationLinks: []
passwordHash: "7202dd8968a9930dd9f9bb619daa8bc54640b94ce5dd5a78a32cc8e7c9b1f1d5"
encryptedPayload: "U2FsdGVkX1+WOs9Dd0FJAV0rz3WlT0JunMHAX3mWXlN2RYbmTYQXX4lVMQE0hqsBkVaZqxgJaQauVoV2O++G35tLEXVTs/ExJDRd37mHRYk="
seoDescription: "Build a simple Arduino MKR Codelock using ILI9341 Touchscreen and ArduiTouch. Easy-to-follow guide for security projects."
videoLinks:
  - "https://www.youtube.com/embed/xYigtnN1-ms"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/simple-arduino-mkr-codelock-with-touchscreen-95e490_cover.jpg"
lang: "th"