ความปลอดภัยแค่ปลายนิ้ว: ระบบล็อครหัสผ่าน 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 (หน้าจอสั่งการ)
หัวใจของงานนี้คือการเปลี่ยน "การจิ้มจอ" ให้กลายเป็น "คำสั่ง" :
- วาดหน้าจอด้วย Adafruit_GFX: เราจะใช้ Library มาตรฐานอย่าง Adafruit GFX และ ILI9341 วาดปุ่มกด 12 ปุ่ม (0-9, CLEAR, OK) ลงบนจอขนาด 2.4 นิ้ว
- ตรวจจับการสัมผัสด้วย XPT2046: ตัวเลเยอร์ทัชสกรีนจะถูกคุมด้วยชิป XPT2046 พอน้องจิ้มไปที่ "ปุ่ม" บนจอ Arduino จะแปลงค่าพิกัด Analog ที่ได้มา เป็นค่าปุ่มที่เราตั้งไว้ใน Code
- ตรรกะการตรวจสอบรหัส: ระบบความปลอดภัยเราอิงตาม
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“ ได้เลย!