กระแส arduino ช่วงนี้กำลังฮิต ผมหาโปรเจค arduino ง่ายมาลองใช้งานบ้างดีกว่า ในตอนนี้ผมทดลองประยุกต์ใช้งานง่ายๆ กับ RFID มาใช้งาน เผื่อเพื่อนสมาชิกจะมีไอเดีย ไปประยุกต์ต่อบ้าง

มารู้จัก RFID กันก่อน

RFID คืออุปกรณ์ประเภท Tag ID ที่สามารถอ่านผ่านสัญญาณวิทยุ คือป้ายชื่อนี้ล่ะครับ แต่อ่านออกมาเป็นไอดี ซึ่งเทคโนโลยีที่คล้ายกัน เช่น magnetic card, barcode และ smart card ส่วนมากจำเป็นต้องเอาตัว Tag ไปสัมผัสตรงๆกับตัวอ่าน เพื่อให้อ่าน ID ได้

แต่ใน RFID จะอ่าน ID ผ่านสัญญาณวิทยุ จึงไม่จำเป็นต้องเอา ตัว tag ไปสัมผัสกับตัวอ่าน(Reader) แค่ผ่านก้อพอ อย่างในสถานี รถไฟฟ้า จะเห็นชัดๆ ว่าแค่มีบัตรแปะแล้ววิ่งเข้าไปได้เลย ซึ่งอยากรู้รายละเอียดทางเทคนิคมากๆ ลองหาข้อมูล ใน google ดูครับ มีเยอะ

ทดลองใช้ RFID เพื่อควบคุมการเปิดปิดประตู

ตอนนี้คงจะรู้จัก RFID กันแล้วนะครับที่ผมมาประยุกต์ทำในครั้งนี้ เป็นการใช้ RFID ในการควบคุมการเข้าออกประตูครับ โดยระบบที่ทำยังไม่สมบูรณ์ครับ แต่มันพอใช้งานได้ ยังไม่ได้ลงลึกมากครับ ใครมีไอเดียอะไรก้อลองทำต่อดูนะครับ

อุปกรณ์ที่ใช้งาน

  1. ID-12 RFID Reader module ตัวอ่านค่า RFID tag สนใจหาซื้อจาก thaieasyelec.com
  2. Arduino board ทำเอง หรือ จาก ayarafun product :-D
  3. RFID-tag หาซื้อขากบ้านหม้อครับ ได้ราคา โอเคสุด
  4. Char LCD Display 16×2 หาได้ทั่วไปครับ
  5. สายไฟเล็กน้อย
  6. บอร์ด Relay ใช้ เปิด-ปิด ไฟเข้า magnetic doorlock

บอร์ด arduino

ตัวอย่างการแสดงผล หน้าจอ lcd16x2

รวมๆ แล้วราคาน่าจะประมาณ เกือบ สองพัน แพงกว่า RFID ที่ขายตามหอสักอีก :-D แต่เหตุผลในการทำ เราสามารถเพิ่มเติมฟังก์ชั่น ต่อเองได้ครับ เช่น อยากได้มากกว่าเปิด-ปิดประตู เป็นบันทึกเวลาเข้าออก ด้วย หรือ ใช้งานด้านอื่น คุม stock

การทำงานของ ayarafun access system

โปรเจคนี้หัวใจหลักอยู่ที่ตัวอ่าน RFID กับ ส่วนสมอง Arduino โดย

- RFID Module จะอ่านข้อมูลจาก Tag ส่งเป็น serial ไปยัง Arduino board
- ส่วนตัว Arduino จะรับ packet ข้อมูลทาง Software Serial มาตรวจสอบ(checksum) ส่ง report ออก serial เข้าไปยังคอมพิวเตอร์ และ ตรวจสอบกับฐานข้อมูล ถ้ามีตรงกันเอาชื่อ ออกมาแสดงผลผ่าน LCD และเปิดประตู

นี้เป็นขั้นตอนการทำงานของระบบที่ออกแบบนะครับ จะต้องแสดงคนใช้งานล่าสุด(last access) ของระบบด้วย เผื่อว่า ใครทำอะไรไปจะได้ เรียกตัวถูก พอดีจอที่ใช้ 2 บรรทัด ถ้าจอ 4 บรรทัด อาจจะเพิ่มเป็นแสดง คนใช้งานล่าสุดเพิ่มอีก 2 บรรทัด

ถ้าเจอ id เปิดประตู update ชื่อคนที่ acesss คนสุดท้ายที่หน้าจอ
ดังรูป

Welcome
member

และกลับไปหน้าจอปกติ

insert key
last: member

แต่ถ้าไม่เจอ ก้อจะขึ้นว่า

error!!
can not access

และกลับไปยังหน้าจอ

insert key
last unknow

โดยโปรแกรมยังไม่ได้ มีวิธีการบันทึก ID จากภายนอก :D ผมใช้วิธี hardcode เข้าไปในส่วน source code เลย โดยผมโกงเอาให้ Arduino จะ report code RFID ผ่าน serial แล้วท่านอยากเก็บ ID นี้ ก้อทำการก๊อบปี้ใส่ไว้ใน firmware

Structure ที่ใช้เก็บ ชื่อสมาชิก และ ID Card เอาไว้ เป็นดังนี้

struct member {
const char* name;
const char code[5];
};

อยากให้มี Filed อื่นเพิ่มได้ครับ ชื่อเล่น เบอร์โทร :D ก้อเพิ่มเข้าไปในส่วนนี้ล่ะครับ

วิธีการบันทึก id กรอกข้อมูลลงใน struct ที่ Header ของโปรแกรมดังตัวอย่าง

member electoday[] = {
{ “nooknick”, {54, 0, 157, 107, 114} },
{ “wlasoi”, {54, 0, 157, 0, 191} },
{ “chang”, {54, 0, 157, 74, 142} }
}

ขั้นตอนการสร้าง
ประกอบวงจรต้อง diagram นี้ครับ

LCD4bit Arduino
rs pin 12
rw pin 11
enable pin 10
d0 pin 5
d1 pin 4
d2 pin 3
d3 pin 2
RFID Module Arduino
VCC VCC
D0 pin 8
GND GND

compile และ upload sketch นี้นะครับ เป็น code ตัวอย่างยังไม่ได้ จัดฟอร์ม ให้พร้ิอมพัฒนาต่อไป

มาดูการทำงานของระบบ prototype กันบ้าง อย่างที่ย้ำยังไม่สมบูรณ์ครับ แต่พอเพียงกับการใช้งาน ตอนนี้ ผมใส่กล่องไปทดสอบ มาเป็นเดือน ยังไม่ hang เลย :-D

ต่อไป ท่านสามารถประยุกต์ใช้งานได้ เช่น เป็นบัตรเข้าชมงาน หรือ เอาไปต่อกับระบบคอมพิวเตอร์ แล้วทำสัญญาณเตือนว่าเจ้านาย หรือ แฟน เรากำลังมาแล้ว (ฮ่าๆ รีบไปสร้างภาพต่อ)

หวังว่าท่านได้ ไอเดีย เอาไปทำอะไร สร้างสรรค์ใหม่ กับ RFID กันบ้างนะครับ

ตัวอย่าง Sourcecode ใช้งาน download -> rfid_doorlock 


บทความที่เกี่ยวข้อง

  1. [Sciguy14] Arduino Tutorial 11: SD Cards and Datalogging
  2. [Sciguy14] Arduino Tutorial 6: Serial Comm and Processing
  3. [Sciguy14] Arduino Tutorial 10: Interrupts and Hardware Debouncing