ในบทความนี้เราจะพาชมเทคโนโลยีวงจร RFID เราจะสำรวจวิธีการทำงานของแท็ก RFID และเครื่องอ่านวิธีเชื่อมต่อโมดูล RFID (RC522) กับ Arduino และดึงข้อมูลที่เป็นประโยชน์จากแท็ก RFID
การใช้แท็ก RFID
ฉันแน่ใจว่าทุกคนใช้ RFID เพื่อเข้าถึงความปลอดภัยอย่างน้อยหนึ่งครั้งที่สำนักงานโรงเรียนวิทยาลัยห้องสมุด ฯลฯ
แท็ก / การ์ดที่คุณพกพามีชิปอิเล็กทรอนิกส์ฝังอยู่ชิปจะจัดเก็บข้อมูลประจำตัวของคุณด้วยระบบอิเล็กทรอนิกส์ ซึ่งแตกต่างจากบาร์โค้ดที่การ์ดควรอยู่ในแนวสายตาของเครื่องอ่าน RFID สามารถวางไว้ใกล้กับเครื่องอ่านเพื่ออ่านข้อมูลได้
สมาร์ทการ์ดของเราส่วนใหญ่ใช้เทคโนโลยี RFID แบบพาสซีฟซึ่งหมายความว่าไม่จำเป็นต้องใช้พลังงานในการอ่านข้อมูลจากการ์ด เครื่องอ่านเปิดใช้งานชิป RFID และดึงข้อมูลในเวลาเดียวกัน
แท็กประเภทนี้สามารถอ่านข้อมูลได้ตั้งแต่มิลลิเมตรไปจนถึงไม่กี่ฟุตขึ้นอยู่กับแท็กและแอปพลิเคชัน
แท็ก RFID ที่ใช้งานได้รับการขับเคลื่อนจากภายนอกแท็กประเภทนี้จะส่งข้อมูลได้ไกลถึง 100 ฟุต การใช้พลังงานแบตเตอรี่ได้รับการปรับให้เหมาะสมกับช่วงไม่กี่ปีที่ผ่านมา
ในโครงการนี้เราจะดูเทคโนโลยี RFID แบบพาสซีฟ เรากำลังใช้โมดูลตัวอ่าน RC522 ร่วมกับ arduino เพื่อแยกและแสดงข้อมูล โมดูล RC522 มีจำหน่ายทั่วไปที่เว็บไซต์อีคอมเมิร์ซและร้านขายอุปกรณ์อิเล็กทรอนิกส์ในพื้นที่
ภาพประกอบของโมดูลตัวอ่าน / ตัวเขียน RC522:
แท็กประเภทการ์ดและพวงกุญแจ:
ดังที่เราเห็นว่าส่วนหนึ่งของ PCB ถูกล้อมรอบด้วยเส้นทางการดำเนินการในรูปทรงสี่เหลี่ยมบนเครื่องอ่านซึ่งจะสร้างสนามแม่เหล็กไฟฟ้าสำหรับแท็กที่ความถี่ 13.56MHz
EMF ที่สร้างขึ้นจะถูกเลือกโดยแท็กและแปลงเป็นแรงดันไฟฟ้าที่เพียงพอสำหรับแท็กในการทำงานแท็กจะส่งข้อมูลที่จำเป็นในรูปแบบพัลส์กลับไปยังผู้อ่าน ไมโครคอนโทรลเลอร์ในตัวจะถอดรหัสข้อมูล
มันทำงานอย่างไร
แผนผังนั้นง่ายมากและอธิบายได้ด้วยตัวเองสายจัมเปอร์เพียงไม่กี่เส้นก็เพียงพอที่จะทำโครงการนี้ให้สำเร็จ เราจะจ่ายไฟให้กับ arduino และ RFID ผ่านพอร์ต USB ของคอมพิวเตอร์ แรงดันไฟฟ้าที่ใช้งานของ RC522 คือ 3.3V ห้ามเชื่อมต่อแหล่งจ่ายไฟ 5V เข้ากับโมดูลและจะทำให้ส่วนประกอบบนบอร์ดเสียหาย
ต้นแบบวงจร Arduino RFID:
นั่นคือการเชื่อมต่อฮาร์ดแวร์ทั้งหมดตอนนี้เรามาดูการเข้ารหัสกัน
ก่อนอัปโหลดโปรแกรมให้ดาวน์โหลดไฟล์ไลบรารีจากลิงค์ต่อไปนี้และย้ายไปที่โฟลเดอร์ไลบรารีของ arduino IDE
github.com/miguelbalboa/rfid.git
รหัสโปรแกรม:
//-------------------------Program developed by R.Girish------------------//
#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN)
MFRC522::MIFARE_Key key
void setup()
{
Serial.begin(9600)
SPI.begin()
rfid.PCD_Init()
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent())
return
if ( ! rfid.PICC_ReadCardSerial())
return
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak)
if(piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K)
{
Serial.println(F('Your tag is not of type MIFARE Classic, your card/tag can't be read :('))
return
}
String StrID = ''
for (byte i = 0 i <4 i ++)
{
StrID +=
(rfid.uid.uidByte[i]<0x10? '0' : '')+
String(rfid.uid.uidByte[i],HEX)+
(i!=3?':' : '' )
}
StrID.toUpperCase()
Serial.print('Your card's UID:')
Serial.println(StrID)
rfid.PICC_HaltA ()
rfid.PCD_StopCrypto1 ()
}
//-------------------------Program developed by R.Girish------------------//
ตกลง! โปรแกรมข้างต้นออกแบบมาเพื่อใช้งานอะไร?
โปรแกรมข้างต้นจะแสดง UID ของแท็กในมอนิเตอร์แบบอนุกรมของ IDE เมื่อคุณสแกนบนเครื่องอ่าน UID คือหมายเลขประจำตัวที่ไม่ซ้ำกันของแท็กซึ่งไม่สามารถเปลี่ยนแปลงได้และถูกกำหนดโดยผู้ผลิต
เอาท์พุท:
UID ของการ์ดของคุณ: FA: 4E: B2 // นี่คือตัวอย่าง
หมายเหตุ 1: ค่าสองค่าแต่ละค่าจะถูกคั่นด้วยโคลอนซึ่งทำโดยค่าจริงของโปรแกรมอาจไม่ถูกคั่นด้วยโคลอน แต่เป็นช่องว่าง
หมายเหตุ 2: เฉพาะแท็ก RFID ที่ผลิตโดย NXP เท่านั้นที่สามารถอ่าน / เขียนได้ด้วยการตั้งค่าที่เสนอซึ่งมักใช้กันทั่วไปและในเชิงพาณิชย์
UID ใช้เพื่อจดจำแท็กแท็กที่มาพร้อมกับชุดสามารถจัดเก็บข้อมูลได้มากถึง 1 KB มีการ์ดอื่น ๆ ที่สามารถจัดเก็บข้อมูลได้ถึง 4KB หรือมากกว่านั้น
กระบวนการจัดเก็บและดึงข้อมูลจากแท็กเป็นเรื่องของบทความอื่น
หากคุณมีคำถามเกี่ยวกับโครงการนี้โปรดถามในส่วนความคิดเห็น
ก่อนหน้านี้: วงจรเซ็นเซอร์ความดันบรรยากาศ - รายละเอียดการทำงานและการเชื่อมต่อ ถัดไป: Triac Phase Control โดยใช้ PWM Time Proportional