กลับไปหน้ารวมไฟล์
rotary-dial-disk-rotary-phone-password-programmed-30c32f.md

โปรเจกต์นี้คืออะไร?

มันคือระบบปลดล็อกรหัสผ่านด้วยแป้นหมุนโทรศัพท์รุ่นเจ้าคุณปู่ (Rotary Dial) ที่ควบคุมด้วยบอร์ด Arduino Uno สุดเก๋าของพวกเรานั่นเอง โดยเราจะตั้งรหัสไว้ 6 หลัก ถ้าหมุนรหัสถูกหมด เครื่องจะสั่งให้ Gear Motor ทำงานเพื่อปลดล็อกประตู แต่ถ้าแกหมุนผิด LED ก็จะกระพริบรัวๆ เตือนสติซะหน่อย พอใส่รหัสถูกแล้วจะเอาไปสั่งเปิดเครื่องใช้ไฟฟ้าอะไรก็จัดไปวัยรุ่น แต่ในโปรเจกต์นี้พี่จัดให้เป็นตัวล็อกประตูสุดเท่ไปก่อน

ทำไปเพื่ออะไร?

ก็เพื่อให้พวกเด็กๆ หรือรุ่นน้องอย่างพวกแกได้เห็นว่า ของเก่าคลาสสิกอย่างโทรศัพท์แป้นหมุนเนี่ย มันเอามาทำอะไรใหม่ๆ ที่ล้ำๆ ได้เหมือนกัน แถมเจ้าตัว RDD (Rotary Dial Disk) เนี่ย สายไฟก็น้อยกว่าพวก Keypad สมัยใหม่เยอะนะน้อง ไม่วุ่นวายแน่นอน

ความง่ายของ Code (ระดับปอกกล้วย)

บอกเลยว่า Code ชุดนี้พี่เขียนมาแบบ Simple สุดๆ ชนิดที่ว่าหาที่ไหนไม่ได้อีกแล้ว นี่คือ Code หนึ่งเดียวที่ประยุกต์ใช้ RDD ได้แบบคลีนๆ

  • Code เข้าใจง่ายมาก ใช้คำสั่ง Basic พื้นฐานล้วนๆ
  • จะเปลี่ยน Password ก็ทำได้ง่ายๆ
  • จะเพิ่มหรือลดจำนวนหลักของรหัสผ่าน (Digits) ก็จัดการได้เลย
  • ที่สำคัญ พี่เขียนแบบไม่ใช้ Timers เลยนะ และไม่ต้องลง Library อะไรเพิ่มให้หนักเครื่องด้วย ของแท้แน่นอน!

มันทำงานยังไง?

Figure 1 (ด้านหลังของ Rotary Dial Disk)

ดูตามรูป (Figure 1) นะน้อง เจ้า RDD จะมีสายไฟ 4 เส้น:

  1. สองเส้นบนจะเป็นตัวส่ง Pulses ตามจำนวนเลขที่เราหมุน
  2. สองเส้นล่างทำหน้าที่เป็น Switch ที่จะตัดตอนเราหมุนเลขนั้นๆ เสร็จสิ้น

การต่อสาย (Figure 2):

  • สาย Pulse ต่อเข้า Digital Pin 3 และอีกข้างลง GND
  • สาย Signal ต่อเข้า Digital Pin 7 และอีกข้างต่อไฟ 5V
  • ส่วนสายสีแดง (Red Wires) สองเส้นนั้นเอาไว้เริ่มการนับ Digit

การทำงานของ Code

หลักการคือ Code จะคอยนับ Pulses ที่ถูกส่งออกมาแล้วเก็บค่าไว้ใน Digit แรก พอหมุนเลขถัดไปก็เก็บเข้า Digit ที่สอง ทำแบบนี้ไปเรื่อยๆ จนครบจำนวนหลักที่ตั้งไว้เป็น Password ซึ่งแกสามารถโปรแกรมต่อได้เลยว่าพอรหัสผ่านถูกแล้วจะให้มันไปสั่งงานอะไรต่อ หล่อเท่เลยงานนี้!

(Figure 2)

วิดีโอโชว์ผลงาน

https://www.youtube.com/watch?v=YYOWdpoRKwc


เจาะลึกทางเทคนิค (ฉบับวิศวะสายแข็ง)

ระบบยืนยันตัวตนแบบ Retro-Digital

โปรเจกต์นี้เป็นการเปลี่ยนกลไกการส่งสัญญาณแบบ Pulse ของโทรศัพท์โบราณให้กลายเป็นระบบรหัสผ่าน Digital ที่มีความปลอดภัยสูง

  • Pulse-Train Decoding Logic: Arduino จะคอย Monitor หน้าสัมผัสของ "Pulse" และ "Handset" โดย Firmware จะนับจำนวน Pulse กลไกความเร็วสูงที่เกิดขึ้นตอนแป้นหมุนตีกลับเข้าจุดศูนย์ แล้วแปลงค่านั้นเป็นตัวเลข 1-9 (และเลข 0)
  • Multi-Digit Array Matching: ตัวเลขที่รับมาจะถูกผลักเข้าไปเก็บใน Array ชั่วคราว จากนั้น Arduino จะเอา Array นี้ไปเปรียบเทียบกับรหัสที่เก็บไว้ใน EEPROM ถ้าค่าตรงกันเป๊ะๆ ถึงจะส่งสัญญาณ "Unlock" ออกไป

สุนทรียภาพแห่งงานช่าง (Aesthetics)

  • Mechanical Haptic Response: งานนี้มีกระดิ่งโทรศัพท์ของเดิมติดมาด้วยนะ พี่เลยเขียนให้ Arduino สั่ง Relay ตีกระดิ่งดัง "กริ๊ง" ทุกครั้งที่น้องใส่เลขถูกแต่ละหลัก เพื่อคงความคลาสสิกของ Hardware ดั้งเดิมเอาไว้ สู้งานนะน้อง!

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

title: "Rotary Dial Disk (Rotary Phone) Password programmed"
description: "Let the old phone disk function in some thing new using the Gear motor to open the door"
author: "Aws_Alkarmi"
category: "Home & Automation"
tags:
  - "entertainment system"
  - "security"
  - "door lock"
views: 6364
likes: 7
price: 699
difficulty: "Intermediate"
components:
  - "1x Rotary Dial Disk from old phone"
  - "1x AA Batteries"
  - "1x Arduino UNO"
  - "1x Geared DC Motor"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "9979ef8a7361748c0a83b145d1e865359b1dd5585dfddfbb1ea22954caab69e5"
encryptedPayload: "U2FsdGVkX19ZzWoke51jSGGZR+WA73abShZjRarU0n6c05QIboFF33RG/0lFhpHncgRo3p3dHWrxhWl9bHjB9H5ypqj8hw63ROkTsKqXkW4="
seoDescription: "Arduino project using a Rotary Dial Disk (Rotary Phone) to enter a Password and control a Gear motor for door access."
videoLinks:
  - "https://www.youtube.com/embed/YYOWdpoRKwc"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/rotary-dial-disk-rotary-phone-password-programmed-30c32f_cover.jpg"
lang: "th"