สร้างเครื่องเปิดประตูอัตโนมัติด้วยบัตร RFID และมอเตอร์ (ไม่ต้องเจาะประตู!)

เคยเบื่อไหมครับที่ต้องมานั่งล้วงกระเป๋าหากุญแจทุกครั้งเวลาจะเข้าห้องทำงาน? แถมบางทีประตูเป็นแบบล็อกอัตโนมัติ ถ้าลืมกุญแจไว้ข้างในก็จบข่าวเลย...

ด้วยปัญหานี้ นักศึกษาวิศวกรรมคนหนึ่งจึงปิ๊งไอเดียสร้าง "The D'Opener" เครื่องเปิดประตูอัจฉริยะที่ใช้บัตร RFID แตะปุ๊บประตูเปิดปั๊บ! จุดเด่นคือ ไม่ต้องเจาะประตูแม้แต่รูเดียว ตัวเครื่องจะไปหมุนมอเตอร์ดึงด้ามจับประตูจากด้านในให้เอง แถมยังคงใช้กุญแจแบบเดิมไขได้ตามปกติ มาดูกันครับว่าโปรเจกต์เจ๋งๆ แบบนี้มีขั้นตอนการสร้างยังไงบ้าง

The D'Opener

รายการอุปกรณ์ที่ต้องใช้ (Parts & Supplies)

  • บอร์ด Arduino UNO (หรือ Nano) พร้อมแผ่นวงจร Perf board
  • โมดูลอ่านบัตร Parallax RFID Serial Module และบัตร/พวงกุญแจ RFID
  • มอเตอร์เกียร์ (Bosch Seat Motor หรือมอเตอร์แบบทำมุมฉาก)
  • โมดูล Relay แบบ 2 ช่อง
  • โมดูลลดแรงดันไฟ 12V เป็น 5V (DC-DC Buck Converter) และอะแดปเตอร์ 12V
  • สวิตช์ลิมิต (Limit switches) 2 ตัว และ สวิตช์ปุ่มกด (Pushbutton) 2 ตัว
  • เชือก (ขนาดประมาณ 1/4 นิ้ว ยาว 12 นิ้ว) และอุปกรณ์ฮาร์ดแวร์ทั่วไป
  • เครื่องพิมพ์ 3D (3D Printer) และหัวแร้งบัดกรี

Step 1 & 2: ไอเดียและการออกแบบกลไก (Mechanical Design)

หลักการทำงานคือ ตัวกล่องจะถูกนำไป "แขวน" ล็อกไว้กับแกนด้ามจับประตู (ฝั่งด้านในห้อง) โดยมีเซ็นเซอร์ RFID แนบติดไว้กับบานประตูเพื่อรอรับสัญญาณจากฝั่งด้านนอก

เมื่อเราแตะบัตรผ่านประตูเข้ามา มอเตอร์ข้างในกล่องจะหมุนแกนสปูล (Spool) เพื่อดึง "เชือก" ที่มัดรั้งไว้กับปลายด้ามจับประตู ทำให้ด้ามจับถูกกดลงและประตูเปิดออก! โดยมี Limit Switch คอยตัดไฟมอเตอร์เมื่อหมุนถึงระยะที่กำหนด

Mechanism Diagram
คลิกเพื่อดูรูปโมเดล 3D และดาวน์โหลดไฟล์ STL (View More)
3D Model Box
3D Print Part 1
3D Print Part 2
3D Print Part 3

Step 3: การต่อวงจร (Electrical Design)

ระบบนี้ใช้ไฟ 12V เป็นหลัก (จ่ายให้มอเตอร์โดยตรง) และใช้ Buck Converter ลดไฟเหลือ 5V เพื่อเลี้ยงบอร์ด Arduino, โมดูล Relay และโมดูล RFID

เราใช้ Relay 2 ตัวในการควบคุมทิศทางการหมุนของมอเตอร์ (หมุนไป-กลับ เพื่อดึงเชือกและปล่อยเชือก) โดยมีปุ่มบนกล่อง 2 ปุ่ม คือปุ่ม "Exit" สำหรับกดเปิดประตูจากด้านใน และปุ่ม "Hold" สำหรับล็อกให้ประตูดึงค้างไว้

Circuit Schematic

Step 4: ลงโปรแกรม (Software & Code)

การทำงานของโค้ดคือ Arduino จะรออ่านรหัส 10 หลักจากบัตร RFID ถ้าตรงกับหมายเลขที่เราบันทึกไว้ในระบบ (CardNumber หรือ FobNumber) ก็จะสั่งให้ Relay ทำงานเพื่อหมุนมอเตอร์เปิดประตูทันที

ทริคการหาเลขบัตร RFID:

ให้ลองอัปโหลดโค้ดลงบอร์ด เปิด Serial Monitor (ตั้งค่า 9600 baud) แล้วเอาบัตรไปแตะที่เซ็นเซอร์ ตัวเลข 10 หลักจะโชว์ขึ้นมาบนหน้าจอ ให้ก๊อปปี้เลขนั้นไปใส่ในโค้ดตรงช่อง #define CardNumber "XXXXXXXXXX" ได้เลยครับ

คลิกเพื่อคัดลอกโค้ดและดาวน์โหลดไฟล์ (.ino) (View More)
// Firmware v1.1 for D'OPENER
#include <SoftwareSerial.h>

#define RFIDEnablePin 3 
#define RFIDSerialRate 2400 
#define RxPin 5 
#define TxPin 4 
#define Relay1Pin 2 
#define Relay2Pin 7 
#define PiezoPin 6 
#define Limit1Pin 11
#define Limit2Pin 12
#define ExitButtonPin 8
#define ToggleButtonPin 10
#define ToggleLedPin 9

// ใส่รหัสบัตรของคุณตรงนี้
#define CardNumber "XXXXXXXXXX"
#define FobNumber "XXXXXXXXXX"

SoftwareSerial RFIDReader(RxPin, TxPin);
String RFIDTAG = ""; 
String DisplayTAG = "";

void setup() {
  RFIDReader.begin(RFIDSerialRate);
  pinMode(RFIDEnablePin, OUTPUT);
  pinMode(ToggleLedPin, OUTPUT);
  pinMode(Relay1Pin, OUTPUT);
  pinMode(Relay2Pin, OUTPUT);
  pinMode(PiezoPin, OUTPUT);
  pinMode(Limit1Pin, INPUT_PULLUP);
  pinMode(Limit2Pin, INPUT_PULLUP);
  pinMode(ToggleButtonPin, INPUT_PULLUP);
  pinMode(ExitButtonPin, INPUT_PULLUP);
  
  digitalWrite(RFIDEnablePin, LOW); 
  Serial.begin(9600); 
  Serial.println("Hello world!"); 
  motor(false, false); 
}

void loop() {
  if (RFIDReader.available() > 0) {
    ReadSerial(RFIDTAG);
    DisplayTAG = RFIDTAG;
    Serial.println(RFIDTAG);
    
    // ตรวจสอบรหัสบัตร
    if ((DisplayTAG == CardNumber) || (DisplayTAG == FobNumber)) {
      tone(PiezoPin, 800, 1000);
      door_open();
      delay(1000);
      door_close();
      clearBuffer();
    }
  }

  // กดปุ่ม Hold Toggle Lock
  if (!digitalRead(ToggleButtonPin)) {
    delay(5);
    if (!digitalRead(ToggleButtonPin)) {
      door_open();
      digitalWrite(ToggleLedPin, 1);
      while (digitalRead(ToggleButtonPin)) { }
      door_close();
      digitalWrite(ToggleLedPin, 0);
    }
  }

  // กดปุ่ม Exit ชั่วคราว
  if (!digitalRead(ExitButtonPin)) {
    delay(5);
    if (!digitalRead(ExitButtonPin)) {
      door_open();
      delay(1000);
      door_close();
    }
  }
}

void ReadSerial(String &ReadTagString) {
  // ฟังก์ชันอ่านค่าจาก Serial (ดึงโค้ดเต็มจากไฟล์ดาวน์โหลด)
}
void clearBuffer() {
  while (RFIDReader.available() > 0) { RFIDReader.read(); }
}
void motor(bool run, bool dir) {
  if (!run) {
    digitalWrite(Relay1Pin, LOW);
    digitalWrite(Relay2Pin, LOW);
  } else {
    if (dir) {
      digitalWrite(Relay1Pin, LOW);
      digitalWrite(Relay2Pin, HIGH);
    } else {
      digitalWrite(Relay1Pin, HIGH);
      digitalWrite(Relay2Pin, LOW);
    }
  }
}
void door_open() {
  motor(true, true);
  while (digitalRead(Limit2Pin)) { }
  motor(false, false);
}
void door_close() {
  motor(true, false);
  while (digitalRead(Limit1Pin)) { }
  motor(false, false);
}
📥 ดาวน์โหลดไฟล์ Arduino Code (.ino) ฉบับเต็ม

Step 5 - 9: การประกอบ ติดตั้ง และแก้ปัญหา

เมื่อเขียนโค้ดเสร็จแล้ว ให้ประกอบวงจรทั้งหมดลงในกล่อง มัดเชือกจากสปูล (Spool) ไปที่ปลายด้ามจับประตู (อย่าให้ตึงหรือหย่อนเกินไป) และตั้งตำแหน่งน็อตเตะ Limit Switch ให้พอดีกับการหมุนของด้ามจับ

ปัญหาที่พบ: บางครั้งตัวกล่องที่เป็นมอเตอร์เหล็กขนาดใหญ่ จะเข้าไปรบกวนคลื่นของเซ็นเซอร์ RFID ทำให้สแกนบัตรผ่านประตูไม่ค่อยติด ผู้สร้างจึงแก้ปัญหาด้วยการพิมพ์เคส "Sidecar" ขนาดเล็ก เพื่อย้ายตัวอ่าน RFID แยกออกมาด้านข้างแทน เท่านี้ก็ใช้งานได้ลื่นไหลแล้วครับ!

Inside the Assembly
คลิกเพื่อดูรูปภาพการติดตั้งและกลไกการทำงาน (View More)
Installation 1
Installation 2
Installation 3
Installation 4

สรุป: การสร้างระบบ D'Opener เป็นโปรเจกต์ที่ผสมผสานทั้งงาน 3D Print, การต่อวงจรมอเตอร์ และการเขียนโค้ด RFID ได้อย่างลงตัว แถมยังนำไปประยุกต์ใช้กับประตูบ้านได้จริงโดยไม่ต้องเจาะทำลายประตูให้เสียของเลยครับ!


คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา

อ้างอิงและเรียบเรียงโดย: Globalbyteshop Blog

แหล่งที่มาหลัก:
- โปรเจกต์โดย Z3_R0: RFID Door Opener for Quick Access (Instructables)
- เครดิตไลบรารี RFID: Wiring and Programming Parallax RFID by Kev_MacD
- เอกสารประกอบ PDF ต้นฉบับ

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี