RFID steht für Radio Frequency Identification. Das RFID-Modul kann kleine Datenmengen in ein passives RFID-Tag lesen oder schreiben, das bei der Identifizierung in verschiedenen Systemen wie Anwesenheitssystem, Sicherheitssystem, Abstimmungssystem usw. verwendet werden kann. RFID ist eine sehr bequeme und einfache Technologie.
Zum Lesen der passiven RFID-Karten und des Tags benötigen wir einen Mikrocontroller mit UART-Hardware. Wenn wir einen Mikrocontroller ohne UART auswählen, müssen wir die Software UART implementieren. Hier verwenden wir den PIC-Mikrocontroller PIC16F877A für die Schnittstelle von RFID. Wir werden einfach die eindeutige Identifikationsnummer lesen. von RFID-Tags und zeigen Sie es auf 16x2 LCD.
RFID-Modul und seine Arbeitsweise
In diesem Projekt haben wir uns für das RFID-Modul EM-18 entschieden, ein kleines, kostengünstiges und energieeffizientes Modul. Das EM-18-RFID-Modul verwendet eine 125-kHz-HF-Frequenz zum Lesen passiver 125-kHz-RFID-Tags. Das EM-18-Modul verwendet Oszillator, Demodulator und Datendecoder, um Daten von einer passiven Karte zu lesen.
RFID-Tag
Es gibt drei Arten von RFID-Tags: Passiv, Aktiv oder Batterieunterstützt Passiv. Auf dem Markt sind verschiedene Arten von RFID-Tags mit unterschiedlichen Formen und Größen erhältlich. Nur wenige von ihnen verwenden unterschiedliche Frequenzen für Kommunikationszwecke. Wir werden passive 125-kHz-RFID-Karten verwenden, die die eindeutigen ID-Daten enthalten. Hier sind die RFID-Karte und die Tags, die wir für dieses Projekt verwenden.
Arbeiten mit RFID
Wenn wir das Datenblatt (http://www.alselectro.com/files/rfid-ttl-em18.pdf) des EM-18-Moduls sehen, können wir die Rückseite des Moduls und die Anwendungsschaltung sehen:
Das Modul verwendet das UART-Kommunikationsprotokoll mit einer Baudrate von 9600. Wenn ein gültiges Frequenzetikett in das Magnetfeld des EM-18-Lesegeräts gebracht wird, leuchtet der BC557-Transistor auf und der Summer beginnt zu piepen. Außerdem leuchtet die LED. Wir verwenden ein Modul, das auf dem Markt leicht erhältlich ist und über eine komplette Schaltung mit einem Summer, einer LED und einem zusätzlichen RS232-Anschluss verfügt.
Hier ist das RFID-Kartenmodul, das wir mit Pin-Namen verwenden. Dieses Modul verfügt außerdem über eine zusätzliche Stromversorgungsoption.
Eines muss beachtet werden, dass der Ausgang des EM-18-Lesegeräts einen 5-V-Logikpegel verwendet. Wir könnten einen anderen Mikrocontroller verwenden, der einen niedrigeren Logikpegel verwendet, aber in solchen Fällen ist der zusätzliche Logikpegelwandler erforderlich. In einigen Fällen ist der UART-Pin des 3,3-V-Mikrocontrollers häufig 5-V-tolerant.
Der UART-Ausgang liefert 12-Bit-ASCII- Daten. Die ersten 10 Bits sind die RFID-Tag-Nummer, die die eindeutige ID ist, und die letzten beiden Ziffern werden für Fehlertests verwendet. Diese letzten beiden Ziffern sind das XOR der Tag-Nummer. Das EM-18-Modul liest die Daten von passiven 125-kHz- RFID-Tags oder -Karten.
Diese Tags oder IDs verfügen über ein werkseitig programmiertes Speicherarray, in dem die eindeutige ID-Nummer gespeichert ist. Da diese passiv sind und keine Batterie in der Karte oder den Tags vorhanden ist, werden sie durch das Magnetfeld des RF-Transceiver-Moduls erregt. Diese RFID-Tags werden mit dem CMOS-IC EM4102 hergestellt, der ebenfalls vom Magnetfeld getaktet wird.
Erforderliches Material
Um dieses Projekt zu realisieren, benötigen wir folgende Elemente:
- PIC16F877A
- 20 MHz Kristall
- 2 Stück 33pF Keramikscheibenkondensator
- 16x2 Zeichen LCD
- Ein Steckbrett
- 10k voreingestellter Topf
- 4,7k Widerstand
- Einadrige Drähte zum Anschließen
- Ein 5V Adapter
- HF-Modul EM-18
- 5V Summer
- 100uF &.1uF 12V Kondensator
- BC557 Transistor
- LED
- 2,2k und 470R Widerstand.
Wir verwenden die EM-18-Modulplatine mit Summer und vorkonfigurierter LED. Daher werden die von 11 bis 15 aufgeführten Komponenten nicht benötigt.
Schaltplan
Das Schema ist einfach; Wir haben das LCD über Port RB und das EM-18-Modul über den UART Rx-Pin angeschlossen.
Wir haben die Verbindung auf Steckbrett nach Schaltplan hergestellt.
Code Erklärung
Wie immer müssen wir zuerst die Konfigurationsbits im pic-Mikrocontroller setzen, einige Makros definieren, einschließlich Bibliotheken und Kristallfrequenz. Sie können den Code für alle im vollständigen Code überprüfen, der am Ende angegeben ist.
// PIC16F877A Konfigurationsbit-Einstellungen // ' C'- Quellzeilen-Konfigurationsanweisungen // CONFIG #pragma config FOSC = HS // Oszillatorauswahlbits (HS-Oszillator) #pragma config WDTE = OFF // Watchdog-Timer Aktivierungsbit (WDT deaktiviert) # Pragma-Konfiguration PWRTE = AUS // Einschalt-Timer-Aktivierungsbit (PWRT deaktiviert) # Pragma-Konfiguration BOREN = EIN // Brown-Out-Reset-Aktivierungsbit (BOR aktiviert) # Pragma-Konfiguration LVP = AUS // Niederspannung (Einzelversorgung)) Aktivierungsbit für serielle In-Circuit-Programmierung (RB3 / PGM-Pin hat PGM-Funktion; Niederspannungsprogrammierung aktiviert) #pragma config CPD = OFF // Daten-EEPROM-Speichercode-Schutzbit (Daten-EEPROM-Code-Schutz aus) #pragma config WRT = OFF // Schreibprogramme für Flash-Programmspeicher schreiben (Schreibschutz aus; der gesamte Programmspeicher kann von der EECON-Steuerung beschrieben werden) #pragma config CP = OFF // Code-Schutzbit für Flash-Programmspeicher (Codeschutz aus) # include "supporing_cfile \ lcd.h" #include "supporing_cfile \ eusart1.h"
Wenn wir die Hauptfunktion sehen , haben wir eine Funktion aufgerufen, um das System zu initialisieren. In dieser Funktion initialisieren wir LCD und UART.
/ * Diese Funktion dient zur Systeminitialisierung. * / void system_init (void) { TRISB = 0x00; // PORT B als Ausgangspin gesetzt lcd_init (); // Dadurch wird der LCD initialisiert. EUSART1_Initialize (); // Dies initialisiert den Eusart }
Jetzt haben wir in der Hauptfunktion ein 13-Bit-Array verwendet, das die RFID-Nummer ist. Wir erhalten jedes Bit der RFID-Nr. using EUSART1_Read (); Funktion, die innerhalb der UART-Bibliothek deklariert ist. Nach dem Empfang von 12 Bit drucken wir das Array als Zeichenfolge auf dem LCD.
void main (void) { vorzeichenlose Zeichenanzahl; vorzeichenloses Zeichen RF_ID; system_init (); lcd_com (0x80); lcd_puts ("Circuit Digest"); während (1) { für (Anzahl = 0; Anzahl <12; Anzahl ++) { RF_ID = 0; RF_ID = EUSART1_Read (); } lcd_com (0xC0); // Setze den Cursor für die zweite Zeile beginnend mit lcd_puts ("ID:"); lcd_puts (RF_ID); } }
Der vollständige Code mit dem Demonstrationsvideo ist unten angegeben.
Überprüfen Sie auch die Schnittstelle von RFID mit anderen Mikrocontrollern:
RFID-Schnittstelle mit dem MSP430 Launchpad
RFID-Schnittstelle mit 8051-Mikrocontroller
RFID-Schnittstelle mit Arduino