RFID ย่อมาจากRadio Frequency Identification โมดูล RFID สามารถอ่านหรือเขียนข้อมูลจำนวนเล็กน้อยลงในแท็ก Passive RFID ซึ่งสามารถใช้ในกระบวนการระบุตัวตนในระบบต่างๆเช่นระบบการเข้าร่วมระบบรักษาความปลอดภัยระบบการลงคะแนนเสียงเป็นต้น RFID เป็นเทคโนโลยีที่สะดวกและง่ายดาย
ในการอ่านการ์ดและแท็ก RFID แบบพาสซีฟเราจำเป็นต้องมีไมโครคอนโทรลเลอร์ที่มีฮาร์ดแวร์ UART หากเราเลือกไมโครคอนโทรลเลอร์ที่ไม่มี UART เราจำเป็นต้องใช้ซอฟต์แวร์ UART ที่นี่เรากำลังใช้ PIC Microcontroller PIC16F877A สำหรับเชื่อมต่อ RFID เราจะอ่านหมายเลขประจำตัวที่ไม่ซ้ำกัน ของแท็ก RFID และแสดงบนจอ LCD 16x2
โมดูล RFID และการทำงาน
ในโครงการนี้เราเลือกโมดูล RFID EM-18ซึ่งเป็นโมดูลขนาดเล็กต้นทุนต่ำและประหยัดพลังงาน โมดูล EM-18 RFID ใช้ความถี่ RF 125 KHz เพื่ออ่านแท็ก RFID 125 KHz แบบพาสซีฟ โมดูล EM-18 ใช้ Oscillator, demodulator และ data decoder เพื่ออ่านข้อมูลจาก passive card
แท็ก RFID
แท็ก RFID มีให้เลือกสามประเภทคือ Passive, Active หรือ Battery-assisted passive มีแท็ก RFID ประเภทต่างๆที่มีรูปร่างและขนาดแตกต่างกันในตลาด ไม่กี่คนที่ใช้ความถี่ต่างกันเพื่อจุดประสงค์ในการสื่อสาร เราจะใช้บัตร RFID Passive 125Khz ซึ่งเก็บข้อมูล ID เฉพาะ นี่คือบัตร RFID และแท็กที่เราใช้สำหรับโครงการนี้
การทำงานของ RFID
หากเราเห็นแผ่นข้อมูล (http://www.alselectro.com/files/rfid-ttl-em18.pdf) ของโมดูล EM-18 เราจะเห็นด้านหลังของโมดูลและวงจรแอปพลิเคชัน:
โมดูลนี้ใช้โปรโตคอลการสื่อสาร UART ในอัตรา9600 Baud เมื่อนำแท็กความถี่ที่ถูกต้องเข้าสู่สนามแม่เหล็กของเครื่องอ่าน EM-18 ทรานซิสเตอร์ BC557 จะเปิดขึ้นและเสียงสัญญาณเตือนจะเริ่มส่งเสียงบี๊บและ LED จะเรืองแสงด้วย เรากำลังใช้โมดูลที่หาได้ง่ายในตลาดและมีวงจรที่สมบูรณ์พร้อมด้วยกริ่งไฟ led และพอร์ต RS232 เพิ่มเติม
นี่คือโมดูลบอร์ด RFID ที่เราใช้กับชื่อพิน โมดูลนี้ยังมีตัวเลือกพลังงานเพิ่มเติม
สิ่งหนึ่งที่จะต้องเก็บไว้ในใจว่าการส่งออกของEM-18 อ่านใช้ตรรกะระดับ เราสามารถใช้ไมโครคอนโทรลเลอร์ตัวอื่นที่ใช้ระดับลอจิกต่ำกว่าได้ แต่ในกรณีเช่นนี้จำเป็นต้องใช้ตัวแปลงระดับตรรกะเพิ่มเติม ในบางกรณีที่ขา UART ไมโครคอนโทรลเลอร์ 3.3V มักจะเป็น 5V ใจกว้าง
เอาต์พุต UART ให้ข้อมูลASCII 12 บิต 10 บิตแรกคือหมายเลขแท็ก RFID ซึ่งเป็นรหัสเฉพาะและใช้ตัวเลขสองหลักสุดท้ายสำหรับการทดสอบข้อผิดพลาด สองหลักสุดท้ายคือ XOR ของหมายเลขแท็ก โมดูล EM-18 จะอ่านข้อมูลจากแท็กหรือการ์ด RFID แบบพาสซีฟ125 KHz
แท็กหรือ ID เหล่านั้นมีอาร์เรย์หน่วยความจำที่ตั้งโปรแกรมไว้จากโรงงานซึ่งเก็บหมายเลข ID ที่ไม่ซ้ำกัน เนื่องจากเป็นแบบพาสซีฟจึงไม่มีแบตเตอรี่อยู่ในการ์ดหรือแท็กจึงได้รับพลังงานจากสนามแม่เหล็กของโมดูล RF Transceiver แท็ก RFID เหล่านี้ทำโดยใช้EM4102 CMOS ICซึ่งถูกโอเวอร์คล็อกโดยสนามแม่เหล็กด้วย
วัสดุที่จำเป็น
ในการสร้างโครงการนี้เราต้องการรายการต่อไปนี้ -
- PIC16F877A
- คริสตัล 20Mhz
- 2 ชิ้น 33pF ตัวเก็บประจุแผ่นเซรามิก
- 16x2 ตัวอักษร LCD
- เขียงหั่นขนม
- หม้อที่ตั้งไว้ล่วงหน้า 10k
- ตัวต้านทาน 4.7k
- สายเดี่ยวสำหรับเชื่อมต่อ
- อะแดปเตอร์ 5V
- โมดูล RF EM-18
- 5V Buzzer
- ตัวเก็บประจุ 100uF &.1uF 12V
- BC557 ทรานซิสเตอร์
- LED
- ตัวต้านทาน 2.2k และ 470R
เรากำลังใช้บอร์ดโมดูล EM-18 พร้อมเสียงกริ่งและไฟ LED ที่กำหนดค่าไว้ล่วงหน้า ดังนั้นส่วนประกอบที่อยู่ในรายการตั้งแต่ 11 ถึง 15 จึงไม่จำเป็น
แผนภูมิวงจรรวม
แผนผังนั้นง่าย เราเชื่อมต่อ LCD ข้ามพอร์ต RB และเชื่อมต่อโมดูล EM-18 ผ่านพิน UART Rx
เราได้ทำการเชื่อมต่อบนเขียงหั่นขนมตามแผนผัง
คำอธิบายรหัส
เช่นเคยอันดับแรกเราต้องตั้งค่าบิตการกำหนดค่าในไมโครคอนโทรลเลอร์ pic กำหนดมาโครบางตัวรวมถึงไลบรารีและความถี่คริสตัล คุณสามารถตรวจสอบรหัสสำหรับทุกคนใน รหัสที่สมบูรณ์ ได้รับในตอนท้าย
// PIC16F877A Configuration Bit Settings // คำ สั่งการกำหนดค่าบรรทัดต้นทาง 'C' // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) # pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enable) #pragma config LVP = OFF // Low-Voltage (Single-Supply) การเขียนโปรแกรมแบบอนุกรมในวงจรเปิดใช้งานบิต (พิน RB3 / PGM มีฟังก์ชัน PGM เปิดใช้งานการเขียนโปรแกรมแรงดันไฟฟ้าต่ำ) #pragma config CPD = OFF // บิตการป้องกันรหัสหน่วยความจำ EEPROM ข้อมูล (ปิดการป้องกันรหัสข้อมูล EEPROM) #pragma config WRT = OFF // Flash Program Memory Write เปิดใช้งานบิต (ปิดการป้องกันการเขียนหน่วยความจำโปรแกรมทั้งหมดอาจถูกเขียนโดยการควบคุม EECON) #pragma config CP = OFF // บิตป้องกันรหัสหน่วยความจำโปรแกรมแฟลช (ปิดการป้องกันรหัส) # รวม "supporing_cfile \ lcd.h" #include "supporing_cfile \ eusart1.h"
หากเราเห็นฟังก์ชัน หลัก เราเรียกว่าฟังก์ชันเพื่อเริ่มต้นระบบ เราเริ่มต้น LCD และ UART ในฟังก์ชันนี้
/ * ฟังก์ชันนี้ใช้สำหรับการเริ่มต้นระบบ * / void system_init (โมฆะ) { TRISB = 0x00; // PORT B ตั้งเป็นขาออก lcd_init (); // สิ่งนี้จะเริ่มต้น LCD EUSART1_Initialize (); // สิ่งนี้จะเริ่มต้น Eusart }
ตอนนี้ในฟังก์ชั่น หลัก เราใช้อาร์เรย์ 13 บิตซึ่งเป็นหมายเลข RFID เราได้รับหมายเลข RFID แต่ละบิต ใช้ EUSART1_Read (); ซึ่งประกาศไว้ภายในไลบรารี UART หลังจากได้รับ 12bits เราจะพิมพ์ Array เป็นสตริงใน LCD
โมฆะหลัก (โมฆะ) { จำนวนถ่านที่ไม่ได้ลงชื่อ; ถ่าน RF_ID ที่ไม่ได้ลงชื่อ; system_init (); lcd_com (0x80); lcd_puts ("วงจรย่อย"); ในขณะที่ (1) { สำหรับ (count = 0; count <12; count ++) { RF_ID = 0; RF_ID = EUSART1_Read (); } lcd_com (0xC0); // ตั้งค่าเคอร์เซอร์สำหรับบรรทัดที่สองที่ขึ้นต้น lcd_puts ("ID:"); lcd_puts (RF_ID); } }
รหัสที่สมบูรณ์พร้อมวิดีโอสาธิตได้รับด้านล่าง
ตรวจสอบการเชื่อมต่อ RFID กับไมโครคอนโทรลเลอร์อื่น ๆ ด้วย:
การเชื่อมต่อ RFID กับ MSP430 Launchpad
การเชื่อมต่อ RFID กับไมโครคอนโทรลเลอร์ 8051
การเชื่อมต่อ RFID กับ Arduino