กระแส arduino ช่วงนี้กำลังฮิต ผมหาโปรเจค arduino ง่ายมาลองใช้งานบ้างดีกว่า ในตอนนี้ผมทดลองประยุกต์ใช้งานง่ายๆ กับ RFID มาใช้งาน เผื่อเพื่อนสมาชิกจะมีไอเดีย ไปประยุกต์ต่อบ้าง
มารู้จัก RFID กันก่อน
RFID คืออุปกรณ์ประเภท Tag ID ที่สามารถอ่านผ่านสัญญาณวิทยุ คือป้ายชื่อนี้ล่ะครับ แต่อ่านออกมาเป็นไอดี ซึ่งเทคโนโลยีที่คล้ายกัน เช่น magnetic card, barcode และ smart card ส่วนมากจำเป็นต้องเอาตัว Tag ไปสัมผัสตรงๆกับตัวอ่าน เพื่อให้อ่าน ID ได้
แต่ใน RFID จะอ่าน ID ผ่านสัญญาณวิทยุ จึงไม่จำเป็นต้องเอา ตัว tag ไปสัมผัสกับตัวอ่าน(Reader) แค่ผ่านก้อพอ อย่างในสถานี รถไฟฟ้า จะเห็นชัดๆ ว่าแค่มีบัตรแปะแล้ววิ่งเข้าไปได้เลย ซึ่งอยากรู้รายละเอียดทางเทคนิคมากๆ ลองหาข้อมูล ใน google ดูครับ มีเยอะ
ทดลองใช้ RFID เพื่อควบคุมการเปิดปิดประตู
ตอนนี้คงจะรู้จัก RFID กันแล้วนะครับที่ผมมาประยุกต์ทำในครั้งนี้ เป็นการใช้ RFID ในการควบคุมการเข้าออกประตูครับ โดยระบบที่ทำยังไม่สมบูรณ์ครับ แต่มันพอใช้งานได้ ยังไม่ได้ลงลึกมากครับ ใครมีไอเดียอะไรก้อลองทำต่อดูนะครับ
อุปกรณ์ที่ใช้งาน
- ID-12 RFID Reader module ตัวอ่านค่า RFID tag สนใจหาซื้อจาก thaieasyelec.com
- Arduino board ทำเอง หรือ จาก ayarafun product 😀
- RFID-tag หาซื้อขากบ้านหม้อครับ ได้ราคา โอเคสุด
- Char LCD Display 16×2 หาได้ทั่วไปครับ
- สายไฟเล็กน้อย
- บอร์ด Relay ใช้ เปิด-ปิด ไฟเข้า magnetic doorlock
บอร์ด arduino
ตัวอย่างการแสดงผล หน้าจอ lcd16x2
รวมๆ แล้วราคาน่าจะประมาณ เกือบ สองพัน แพงกว่า RFID ที่ขายตามหอสักอีก 😀 แต่เหตุผลในการทำ เราสามารถเพิ่มเติมฟังก์ชั่น ต่อเองได้ครับ เช่น อยากได้มากกว่าเปิด-ปิดประตู เป็นบันทึกเวลาเข้าออก ด้วย หรือ ใช้งานด้านอื่น คุม 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 |
insert key |
error!! |
และกลับไปยังหน้าจอ
insert key |
โดยโปรแกรมยังไม่ได้ มีวิธีการบันทึก ID จากภายนอก 😀 ผมใช้วิธี hardcode เข้าไปในส่วน source code เลย โดยผมโกงเอาให้ Arduino จะ report code RFID ผ่าน serial แล้วท่านอยากเก็บ ID นี้ ก้อทำการก๊อบปี้ใส่ไว้ใน firmware
Structure ที่ใช้เก็บ ชื่อสมาชิก และ ID Card เอาไว้ เป็นดังนี้
struct member {
const char* name;
const char code[5];
};
อยากให้มี Filed อื่นเพิ่มได้ครับ ชื่อเล่น เบอร์โทร 😀 ก้อเพิ่มเข้าไปในส่วนนี้ล่ะครับ
วิธีการบันทึก 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 เลย 😀
ต่อไป ท่านสามารถประยุกต์ใช้งานได้ เช่น เป็นบัตรเข้าชมงาน หรือ เอาไปต่อกับระบบคอมพิวเตอร์ แล้วทำสัญญาณเตือนว่าเจ้านาย หรือ แฟน เรากำลังมาแล้ว (ฮ่าๆ รีบไปสร้างภาพต่อ)
หวังว่าท่านได้ ไอเดีย เอาไปทำอะไร สร้างสรรค์ใหม่ กับ RFID กันบ้างนะครับ
ตัวอย่าง Sourcecode ใช้งาน download -> rfid_doorlock
แวะมาเยี่ยมจ้า ย้ายบ้านเหรอ ทำเว็บสวยดีนี่นา ^^
เอ่อ พี่ครับหากเราใช้ IC เบอร์ cc1110 มาทำระบบ RFID
ในขั้นตอนการเขียนโปรแกรม เพื่อเช็ค ID(เป็นเลขฐานสิบหก) จำนวนแปดไบต์
จะมีวิธีเขียนยังงัยหรอครับ ผมเขียนไม่ได้ ไม่รู้ใช้ register ตัวไหนอ่ะครับ
พอจะแนะแนวได้มั้ยครับ
น่าสนใจมากๆครับ ไม่ทราบว่า RFID reader สามารถแปลงให้แทนที่จะอ่านค่าในบัตร แต่ทำหน้าที่เหมือน detect ว่าบัตรออกจากตัว reader ได้หรือป่าวครับผม
cc1110 เป็น mcu รวมกับ RF ในตัวใช่ไหมครับ
ถ้าผมเข้าใจไม่ผิค คงจะเหนื่อย นิดหน่อยนะครับ ผมไม่ได้ทำเกี่ยวกับ RF มากนักนะครับ อาจจะอธิบายได้ไม่ดี
ผมว่า CC1110 มันไม่ได้ ออกแบบไว้อ่าน RFID นะครับตรงนะครับ ที่ลอง อ่าน datasheet เหมือนข้อมูล อาจจะ เข้ามาทาง uart ของ mcu ครับ(ไม่แน่ใจนะ แต่แน่ๆ ถามคนเคยใช้)
ในขั้นแรก น่าจะลองกับ tag มาตราฐาน แล้วทำให้ cc1110 อ่านค่า ID ออกมาให้ได้ก่อนครับ
tag มาตราฐาน จะใช้สัญญาณช่วง 125kHz ให้เข้าใจ วิธีการทำงานของ RFID สักก่อน
แล้วค่อยลองทำ tag เองครับ เลือกช่วงคลืนที่จะใช้ และออกแบบ protocol ในการรับส่งข้อมูล
ตัว Reader ที่ใช้ เป็นแค่ตัวรับอย่างเดียวเลยครับ ไม่มีตัวส่ง คงเอา modify เป็นตัวส่ง ID ไม่ได้ครับ
ลักษณะที่ท่านว่ามันเป็น active tag RFID
คงต้องลอง ทำวงจรตัวรับส่งสัญญาณ RF เองครับ ต้องเขียนโปรแกรม ให้สังสัญญาณตาม protocol ของ RFID ของเจ้านั้นๆ ครับ
สวัสดีครับผมขอคำแนะนำหน่อยนะครับ ตอนนี้กำลังจะทำโรเจคทำเครื่องอ่าน/เขียน rfid เลยยากรู้เกี่ยวกับอุปกรณ์และอยากได้วิธีการทำด้วยนะครับถ้าหากว่าใครรู้ ช่วยบอกผมด้วยนะครับ หรือติดต่อที่เมลล์ salit_nick@hotmail.com
ตัวนี้ไม่ต้องใช้ ic max232 หรือครับ
@salit
ตัวนี้ ผมต่อเข้า mcu เลยครับ ระดับไฟ มันต่อเข้ากันได้เลยครับ
ถ้าต่อเข้า คอมพิวเตอร์ อาจจะต้องมี ตัว max232
ช่วยแนะนำโปรเจ็คที่เกี่ยวข้องกับ rfid ให้ทีคะ เพราะตอนนี้คิดไม่ออก
ฮ่าๆ คิดไม่ออกเหมือนกันครับ RFID หมดมุกแล้ว
คุณน้องจะเอาไปทำอะไรล่ะ
มีเบอร์โทรติดต่อไหมครับ(หรืออีเมส์ก็ได้ครับ)
ขอคุณมากเลยครับยอมงานพี่มากเลยๆๆๆๆๆๆๆๆๆๆๆ
ติดต่อ email หน้า contact ครับ
พี่ครับ Sourcecode โหลดไม่ได้แล้วอ่ะครับ ผมอยากนำไปต่อ ยอดอ่ะครับ
แก้ไข Link ให้แล้วนะครับ
พี่ค่ะ สามารถบันทึกเวลาการเข้าออกได้มั๊ยค่ะ
ทำได้หมดล่ะครับ
Can you speak or understand English?
I am looking for helper (Programer of RFID TAG).
สอบถามครับพี่
แล้วเราจะรู้ค่า RFID TAG ได้อยากไร ครับ
//we hard code programming database member in rom
member electoday[] = {
{ “inside”, {-1, -1, -1, -1, -1} },
{ “unknown”, {-1, -1, -1, -1, -1} },
{ “admin” , {13, 0, 88, 178, 131} },
{ “card1”, {54, 0, 157, 107, 114} },
{ “card2”, {54, 0, 157, 0, 191} },
};