โปรเจกต์นี้คืออะไร?
มันคือระบบปลดล็อกรหัสผ่านด้วยแป้นหมุนโทรศัพท์รุ่นเจ้าคุณปู่ (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) นะน้อง เจ้า RDD จะมีสายไฟ 4 เส้น:
- สองเส้นบนจะเป็นตัวส่ง Pulses ตามจำนวนเลขที่เราหมุน
- สองเส้นล่างทำหน้าที่เป็น Switch ที่จะตัดตอนเราหมุนเลขนั้นๆ เสร็จสิ้น
การต่อสาย (Figure 2):
- สาย Pulse ต่อเข้า Digital Pin 3 และอีกข้างลง GND
- สาย Signal ต่อเข้า Digital Pin 7 และอีกข้างต่อไฟ 5V
- ส่วนสายสีแดง (Red Wires) สองเส้นนั้นเอาไว้เริ่มการนับ Digit
การทำงานของ Code
หลักการคือ Code จะคอยนับ Pulses ที่ถูกส่งออกมาแล้วเก็บค่าไว้ใน Digit แรก พอหมุนเลขถัดไปก็เก็บเข้า Digit ที่สอง ทำแบบนี้ไปเรื่อยๆ จนครบจำนวนหลักที่ตั้งไว้เป็น Password ซึ่งแกสามารถโปรแกรมต่อได้เลยว่าพอรหัสผ่านถูกแล้วจะให้มันไปสั่งงานอะไรต่อ หล่อเท่เลยงานนี้!

วิดีโอโชว์ผลงาน
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" ออกไป