Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)
Confluence
For you

Electrical Engineering
Results will update as you type.
  • Aesthetic elements in Eagle
  • Actuators and Outputs
  • Aktuatoren (DE)
  • Analog Input
  • Analog Sensors
  • Arduino Grundlagen
  • Arduino Programmieren
  • Arduino und Processing
  • Shift Registers
  • Carvey
  • Capacitors
  • Bread Boards
  • Digitaler Input
  • Digitaler Output
  • Eagle
  • Energy Harvesting
  • H-Bridge
  • I2C (en)
  • Interrupt Service Routine
  • Mosfet Transistor
  • LED
  • PCBs Herstellen
  • Pololu Servo Controller
  • Relays as Switches
  • Pulse Width Modulation
  • RFiD
  • Schrittmotorentreiber
  • SD Karten
  • Signal Filtering
  • Transistors as Switches
  • Widerstand
  • PCB Manufacturing
  • PlatformIO
  • Lynx Smart Motion Servo
  • Electronics Basics (EN)
  • Arduino Basics (en)
  • Arduino Programming (EN)
  • Digital Outputs (en)
  • Digital Input (en)
  • Serial Communication (en)
  • Pulse Width Modulation (en)
  • Resistors (en)
  • Arduino and P5.js
  • Arduino and ml5.js
  • Project box 2021
  • Servo Motors
  • H-Bridge (DE)
  • Networking
  • Bit Shifting
  • C++ (Arduino) Variables
  • Stepper Motor Drivers
  • Interrupt Service Routine (en)
  • Common Arduino Problems
  • Finite State Machine
  • Voltage Regulators
  • Arduino USB HID (Human Interface Devices)

/
RFiD

RFiD

Jul 09, 2015

RFiD

RFiD steht für “radio frequency identification” und ist eine von vielen sog. “Nearfield Communication Technologies”. RFiD hat sich heute schon in vielen Bereichen durchgesetzt (z.B. Skipässe, Preisschilder, Alarmsysteme, Bibliotheken, usw.) und erlaubt eine kontaktlose Übertragung von Daten. 

Ein RFiD System besteht dabei grundsätzlich aus einer Leseeinheit (Reader) und einem Transponder (Tag). Der Tag besteht aus einem Microchip, welcher eine unverwechselbare ID besitzt und einer Spule, welche für die Stromaufnahme durch den Reader verantwortlich ist. Somit kommt der Tag ohne eigene Spannungsversorgung aus, was seinen Einsatz enorm flexibilisiert. Ebenso kann ein Tag dadurch sehr klein gehalten werden. 

Der RFiD Reader erzeugt magnetische Wechselfelder geringer Reichweite oder hochfrequente Radiowellen. Damit werden nicht nur Daten übertragen, sondern auch der Transponder mit Energie versorgt. Die ID des gelesenen Tags wird dann meist über eine Serielle Schnittstelle vom Reader weitergegeben. In diesem Workshop verwenden wir den Reader ID-12 der Firma ID Innovations. 

ID-12

Datenblatt: ID-12
Spannungsversorgung: 5V

Dieser Reader lässt sich sehr einfach mit dem Arduino kombinieren, da er über eine Serielle TTL Schnittstelle und die Spannungsversorgung von 5V ebenfalls vom Arduino übernommen werden kann.

Schaltung

Um den Reader am Arduino anzuschliessen verbinden wir zunächst die 5V und GND Kontakte des Readers mit den entsprechenden PINs des Arduino. Danach verbinden wir den Kontakt RST (Reset) des Readers mit PIN D13 des Arduino, sowie D0 (Data Pin 0) des Readers mit PIN D2 des Arduino.

Auf dem Breadboard sieht das dann folgendermassen aus…

Das Arduino verfügt über eine Serielle Schnittstelle. Diese benötigen wir jedoch für die Programmierung und Kommunikation über USB. Deshalb macht es Sinn, für die Nutzung des ID-12 eine zusätzliche, softwareseitige Serielle Schnittstelle einzurichten. Dies machen wir über die Arduino Library: SoftwareSerial.

SoftwareSerial

Die SoftwareSerial Library ist nach der Instanzierung genau gleich zu benutzen, wie die normale Serielle Schnittstelle. D.h. es gibt ebenfalls die von uns bereits genutzten Funktionen: begin(Baudrate), read(Wert) und write(Wert).

Instanziert wird die SoftwareSerial über:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(RX_PIN, TX_PIN);

RX_Pin und TX_Pin können dabei jeder beliebige digitale PIN sein (also zum Beispiel D2 und D3). Die einzige Limitierung ist die Baudrate, welche 115200bps nicht überschreiten darf.

Code

Im Beispiel-Code lesen wir die ID eines RFiD Tags aus und lassen uns diesen über die Serielle Schnittstelle auf dem Serial-Monitor ausgeben.

Beispiel RFiD Expand source
#include <SoftwareSerial.h>
int RFIDResetPin = 13;
SoftwareSerial mySerial(2, 3);
void setup()
{
  Serial.begin(9600);
  mySerial.begin(9600);
  pinMode(RFIDResetPin, OUTPUT);
  digitalWrite(RFIDResetPin, HIGH);
}
void loop()
{
  char tagString[8];
  int index = 0;
  boolean reading = false;
  while (mySerial.available())
  {
    int readByte = mySerial.read(); // Nächstes Byte lesen
    if (readByte == 2) reading = true; //Indentifizierung für den Anfang des Tags
    if (readByte == 3) reading = false; //Indentifizierung für das Ende des Tags
    if (reading && readByte != 2 && readByte != 10 && readByte != 13)
    {
      tagString[index] = readByte; // Tag speichern
      index ++;
    }
  }
  if (tagString[0] != 0)
  {
    Serial.println(tagString); //RFiD Tag über Serielle Schnittstelle ausgeben
  }
  memset(tagString, 0, strlen(tagString)); //Tag freigeben (mit NULL überschreiben)
  resetReader(); //Den RFiD Reader resetten
}
void resetReader() // Reset Funktion
{
  digitalWrite(RFIDResetPin, LOW);
  digitalWrite(RFIDResetPin, HIGH);
  delay(150);
}
, multiple selections available,
{"serverDuration": 18, "requestCorrelationId": "d808af6dfa37465995e1c857a8d34ebd"}