Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Vorstellung RFID Starter Kit für den Arduino UNO R3

Posted on 31. Juli 20208. März 2024 by Stefan Draeger

Von der Firma digitspace.com habe ich für dieses Review kostenfrei das RFID Starter Kit für den Arduino UNO R3 zur Verfügung gestellt bekommen.

Box - RFID Starter Set für den Arduino UNO 3
Box – RFID Starter Set für den Arduino UNO 3
Inhalt der Box - RFID Starter Set für den Arduino UNO 3
Inhalt der Box – RFID Starter Set für den Arduino UNO 3

Dieses Set habe ich im gleichen Zuge mit dem Microbit Starter Kit für den BBC micro:bit von der Firma digitspace.com erhalten.

  • Bezug
  • Inhalt des RFID Starter Kit für den Arduino UNO R3
  • Beispielprojekt mit dem RFID Sensor
    • benötigte Bauteile
    • Anschluß der Bauteile an den Arduino UNO R3
    • Programmieren
      • Vorbereitung – auslesen der RFID IDs
      • prüfen der RFID Chips
    • Video
  • ein einfaches Geschwindigkeitsspiel mit LEDs & Taster
    • benötigte Bauteile
    • Aufbau der Schaltung
      • Anschluß der Taster
        • Aufbau des Tasters
      • LEDs anschließen
    • Programmieren
    • Video
  • Fazit & pers. Meinung

Bezug

Das RFID Starter Kit für den Arduino UNO R3 findest du im Shop von digitspace.com. Wenn man alle Teile des Sets einzeln auf ebay.de erwerben möchte so zahlt man deutlich mehr und daher lohnt sich der kauf eines solchen Sets.

Inhalt des RFID Starter Kit für den Arduino UNO R3

Das Set enthält folgende Bauteile:

  • Arduino UNO R3 (Klon) inkl. USB Datenkabel*,
  • IR Fernbedienung,
  • 720 Pin Breadboard,
  • diverse Breadboardkabel,
  • Servomotor Typ SG90 inkl. diverse Ruderhörner,
  • DHT11 Sensor (Temperatur & rel. Luftfeuchtigkeit),
  • Joystick,
  • Relaisshield,
  • RealTimeClock DS3231,
  • 16 Taster Shield,
  • Regendetektorshield,
  • 4 Phasen Schrittmotor inkl. Modul,
  • 20×2 LCD Display,
  • RFID Modul,
  • diverse LEDs & Widerstände,
  • 1x analoger Temperatursensor LM35DZ,
  • 2x Piezo Buzzer,
  • 4 Taster inkl. Kappen,
  • 1fach 7 Segmentanzeige,
  • 4fach 7 Segmentanzeige,
  • Dot Matrix, sowie ein
  • Schieberegister

* Das USB Datenkabel ist sehr kurz geraten, ich würde empfehlen eines mit min. 1m Kabellänge zu besorgen denn so kann man viel besser auf dem Schreibtisch mit dem Microcontroller arbeiten.

Beispielprojekt mit dem RFID Sensor

Den meisten dieser Bauteile aus dem RFID Starter Kit für den Arduino UNO R3 habe ich bereits separate Beiträge gewidmet. Jedoch möchte ich dir hier nun ein kleines Projekt mit dem RFID Sensor zeigen. Den RFID Sensor vom Typ RC522 habe ich bereits im Beitrag Arduino Lektion 20 – Teil 1: RFID RC522 – Kartenleser vorgestellt und auch im Beitrag Arduino Projekt: PIR & RFID Alarmanlage verwendet. Hier möchte ich dir nun zeigen wie du mit den Bestandteilen dieses Sets dir eine Anlage bauen kannst um mit einem RFID Chip Zugang zu gewähren oder zu verhinden.

benötigte Bauteile

  • Arduino UNO R3,
    • USB Datenkabel
  • 720 Pin Breadoard,
  • RGB LED Modul,
  • Piezo Buzzer,
  • RFID Shield RC522,
  • diverse Breadboardkabel

Anschluß der Bauteile an den Arduino UNO R3

RFID – RC522 
SDAD10
MOSID11 
MISOD12
IRQ-bleibt frei-
GNDGND
RSTD9
3.3V3.3V
RGB LED Modul 
–GND
RD7
GD6
BD5
Piezo Buzzer 
+D4
–GND

Programmieren

Wenn du die Schaltung wie oben beschrieben aufgebaut hast dann kannst du mit der Programmierung fortfahren.

Vorbereitung – auslesen der RFID IDs

Bevor wir die eine Zugangsbeschränkung für bestimmte Karten erstellen können müssen wir diese erst einmal auslesen. Dem RFID Starter Kit für den Arduino UNO R3 liegen zwei RFID  Chips bei, einmal in Kartenform und einmal als Schlüsselanhänger. Damit wir jedoch das RFID Modul am Arduino UNO betreiben können benötigen wir eine Bibliothek, es gibt für den Typ RC522 einige gute Bibliotheken im Internet, ich habe bisher die https://www.electrodragon.com/w/File:Rfid-master.zip verwendet und diese reicht vollkommen aus. 

Wie du eine Bibliothek in die Arduino IDE integriest habe ich im Beitrag Arduino IDE, Einbinden einer Bibliothek ausführlich beschrieben.

Mit dem nachfolgenden Sketch kannst du die Kartennummern auslesen und dir auf dem seriellen Monitor der Arduino IDE ausgeben.

#include <SPI.h>
#include <RFID.h>

#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN, RST_PIN);

const int RFID_IDs = 1; 

String ids[RFID_IDs] = {""}; //Zugelassene ID's
void setup(){
  Serial.begin(9600);
  SPI.begin();
  rfid.init();
}

void loop() {
  if (rfid.isCard() && rfid.readCardSerial()) {
    String serial = parseId(rfid);
    Serial.print("RFID Nummer: ");
    Serial.println(serial);

    boolean serialOK = false;
    for (int i = 0; i < RFID_IDs; i++) {
      if (serial == ids[i]) {
        serialOK = true;
        break;
      }
    }
    if (serialOK) {
      Serial.println("ID wurde gefunden!");
    } else {
      Serial.println("ID wurde nicht gefunden!");
    }
    delay(2000);
  }

  rfid.halt();
}

String parseId(RFID rfid) {
  String result = "";
  int position = 0;
  for (position = 0; position <= 4; position++) {
    String pos = getNumPosAsHEX(rfid, position);
    result = result + pos;
  }
  result.toUpperCase();
  return result;
}

String getNumPosAsHEX(RFID rfid, int position) {
  return String(rfid.serNum[position], HEX);
}

Auf dem seriellen Monitor solltest du nun jeweils die IDs der RFID Chips sehen.

RFID Nummer: B949E3B8AB
ID wurde nicht gefunden!
RFID Nummer: C6A3352B7B
ID wurde nicht gefunden!

prüfen der RFID Chips

Nachdem wir nun die RFID IDs ausgelesen haben möchten wir eine davon für den Zugang gewähren und die andere nicht. Da wir jedoch eine beliebige Anzahl an RFID IDs haben können verwenden wir ein Array wobei wir die maximale Anzahl über Konstante pflegen. 

const int RFID_IDs = 1;

String ids[RFID_IDs] = {"B949E3B8AB"}; //Zugelassene ID's

Das RGB LED Modul wird über die Pins 7,6 & 5 angeschlossen.

#define redLed 7
#define greenLed 6
#define blueLed 5

void setup(){
  ...
  pinMode(redLed,OUTPUT);
  pinMode(greenLed,OUTPUT);
  pinMode(blueLed,OUTPUT);
}

In der Funktion „loop“ prüfen wir bereits die RFID Chips und müssen hier „nur“ zusätzlich die Funktionen für die LED steuern.

if (serialOK) {
   Serial.println("ID wurde gefunden!");
   ok();
} else {
   Serial.println("ID wurde nicht gefunden!");
   fail();
}

Wenn eine „korrekte“ Karte vor das Lesegerät gehalten wurde dann soll die LED grün blinken.

void ok(){
 digitalWrite(greenLed, HIGH);
 delay(250);
 digitalWrite(greenLed, LOW);
}

Wenn eine unbekannte Karte vor das Lesegerät gehalten wird dann soll die LED rot blinken und zusätzlich ein Ton ausgegeben werden.

void fail(){
 tone(BUZZER, 450, 250);
 digitalWrite(redLed, HIGH);
 delay(250);
 tone(BUZZER, 450, 250);
 digitalWrite(redLed, LOW);
}

Video

ein einfaches Geschwindigkeitsspiel mit LEDs & Taster

Das Set enthält auch einige LEDs , Taster und Widerstände. Aus dieses läßt sich auch schnell ein einfach Geschwindigkeitsspiel mit LEDs und Taster basteln. Ziel des Spieles ist es die Seite des jeweiligen anderen Spielers zu erreichen, dabei muss man nur schnell genug auf die Taster drücken.

benötigte Bauteile

  • Arduino UNO R3,
    • USB Datenkabel
  • 720 Pin Breadboard,
  • 9 LEDs,
    • 6x gelb
    • 3x rot
  • 9x 220 Ohm Widerstand,
  • 2x 10 kOhm Widerstand,
  • 2x Taster (inkl. Kappen), sowie
  • diverse Breadboardkabel

Aufbau der Schaltung

Die Schaltung ist recht simple denn es ist im grunde „nur“ 2x die Schaltung für einen Taster mit Pull Down Widerstand und 9x jeweils eine LED.

Aufbau des kleinen LED Geschwindigkeitsspiels
Aufbau des kleinen LED Geschwindigkeitsspiels
Aufbau der Schaltung am 720 Pin Breadboard
Aufbau der Schaltung am 720 Pin Breadboard

Das Steckbrett hat oben wie unten Kontaktleisten für „+“ und „-“ hier kannst du die 5V bzw. GND vom Arduino UNO mit einem Breadboardkabel anschließen und sparst dir einige Kabel. 

Anschluß der Taster

Wie bereits erwähnt und verlinkt sind die Taster über Pull Down Widerstände mit dem Arduino UNO verbunden.

Taster mit Pull Down Widerstand
Taster mit Pull Down Widerstand

Für den Taster benötigst du einen 10 kOhm Widerstand sowie 2 Breadboardkabel. 

Aufbau des Tasters

Der Taster verfügt über 4 Kontakte, welche jeweils über Kreuz zu einem Taster funktionieren.

Drucktaster
Drucktaster

Es sind jeweils 2 Kontakte oben und unten, die Kontakte auf der gleichen Seite sind jeweils miteinander verbunden.

Drucktaster, Aufbau
Drucktaster, Aufbau

In der Grafik habe ich dir einmal aufgezeichnet wie die Kontakte miteinander verbunden sind.

LEDs anschließen

Die 9 LEDs werden im gleichen Abstand auf das Breadboard gesteckt dabei wird jeweils ein 220 Ohm Widerstand mit der Anode verbunden und an die Kathode GND vom Breadboard.

Aufbau einer LED
Aufbau einer LED

Eine LED leitet den Strom nur in eine Richtung, sollte diese also in deinem Aufbau nicht leuchten, so hast du diese gewiss falsch herum eingebaut.

Programmieren

Die Programmierung ist nicht viel aufwändiger als der Aufbau der Schaltung. 

Für die Taster benötigen wir zusätzlich eine Bibliothek damit die Taster entprellt werden.

#include <Bounce2.h>

Im nächsten Schritt definieren wir die Pins an welche die LEDs bzw. Taster angeschlossen wurden.

#define led1 2
#define led2 3
#define led3 4
#define led4 5
#define led5 6
#define led6 7
#define led7 8
#define led8 9
#define led9 10

#define btn1 11
#define btn2 12

Die LEDs fassen wir in ein Array zusammen damit wir später über einen Index auf die LED zugreifen können.

int leds[9] = {led1, led2, led3, led4, led5,led6,led7,led8,led9};

Für die Taster benötigen zwei Objekte der Bounce2 Library, im Konstruktor übergeben wir den Pin sowie ein „Timeout“ in Millisekunden.

Bounce btn1Bounce = Bounce(btn1, 50);
Bounce btn2Bounce = Bounce(btn2, 50);

Und für den aktiven Index eine globale Variable.

int index = 5;

In der „setup“ Funktion werden die Pins der LEDs als Ausgänge sowie die Taster als Eingänge definiert.

void setup() {
  Serial.begin(9600);
  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);

  pinMode(btn1, INPUT);
  pinMode(btn2, INPUT);

  start();
}

Zusätzlich habe ich den seriellen Port für die Ausgabe auf dem seriellen Monitor gestartet, hier kann man zbsp. Debugausgaben ausgeben lassen. Des Weiteren wird in der „setup“ Funktion die Funktion „start“ aufgerufen.

Die Funktion „start“ aktiviert die 5. LED und setzt den Index auf den Wert 5.

void start(){
  digitalWrite(led5, HIGH);
  index = 5;
}

Die „loop“ Funktion läuft dauerhaft auf dem Microcontroller bis dieser den Stromverliert oder ein Reset durchgeführt wird (aber auch dann sollte die loop wieder aufgerufen werden).

Zunächst müssen wir die Taster aktualisieren und danach die einzelnen Status abfragen. Wenn der Taster „losgelassen“ wird dann wird entweder der Index um eins erhöht oder verringert. Zusätzlich wird dann die Funktion „updateLeds“ aufgerufen.

void loop() {
  btn1Bounce.update();
  btn2Bounce.update();
  
  if(btn1Bounce.fell()){
    index++;
    updateLeds();
  }

  if(btn2Bounce.fell()){
    index--;
    updateLeds();
  }

  Serial.print("index=");
  Serial.println(index);
}

In der Funktion „updateLeds“ prüfen wir nun ob der Index gleich 8 oder 0 ist, wenn dieses so ist wird die jeweilige LED zum blinken gebracht und das Spiel ist beendet. Wenn der Index ungleich 8 & 0 ist dann wird die jeweilige LED aktiviert.

void updateLeds(){
  if(index == 8){
    blinkPlayerLed(led9);
  } else if(index == 0){
    blinkPlayerLed(led1);
  } else {
    lightUpLeds();  
  }
}

Die Funktion „blinkPlayerLed“ erwartet als Parameter den Pin der jeweiligen LED welche zum blinken gebracht werden soll.
Zunächst werden alle LEDs deaktiviert und  danach eine For-Schleife von 0 bis 9 somit wird 10x die LED im Intervall von 125ms zum blinken gebracht.

void blinkPlayerLed(int led){
  clearLeds();
  for(int i=0;i<10;i++){
    Serial.println("blink");
    Serial.println(led);
    digitalWrite(led,HIGH);
    delay(125);  
    digitalWrite(led,LOW);
    delay(125);  
  }
  start();
}

Am Ende der Funktion wird dann ein neues Spiel gestartet indem die Funktion „start“ aufgerufen wird.

Die Funktion „lightUpLeds“ deaktiviert zunächst alle LEDs um dann mit dem aktiven Index aus dem Array die LED zu aktivieren.

void lightUpLeds(){ 
  clearLeds();
  digitalWrite(leds[index], HIGH);
}

Zum deaktivieren der LEDs dient die Funktion „clearLeds“ hier wird in einer For-Schleife das Array durchlaufen und alle dort hinterlegten Pins auf LOW gesetzt.

void clearLeds(){
  for(int i=0;i<10;i++){
    digitalWrite(leds[i], LOW);
  }
}

Hier nun das gesamte Sketch / Programm zum Spiel.

#include <Bounce2.h>

#define led1 2
#define led2 3
#define led3 4
#define led4 5
#define led5 6
#define led6 7
#define led7 8
#define led8 9
#define led9 10

#define btn1 11
#define btn2 12

int leds[9] = {led1, led2, led3, led4, led5,led6,led7,led8,led9};



Bounce btn1Bounce = Bounce(btn1, 50);
Bounce btn2Bounce = Bounce(btn2, 50);

int index = 5;

void setup() {
  Serial.begin(9600);
  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);

  pinMode(btn1, INPUT);
  pinMode(btn2, INPUT);

  start();
}

void loop() {
  btn1Bounce.update();
  btn2Bounce.update();
  
  if(btn1Bounce.fell()){
    index++;
    updateLeds();
  }

  if(btn2Bounce.fell()){
    index--;
    updateLeds();
  }

  Serial.print("index=");
  Serial.println(index);
}

void start(){
  digitalWrite(led5, HIGH);
  index = 5;
}

void updateLeds(){
  if(index == 8){
    blinkPlayerLed(led9);
  } else if(index == 0){
    blinkPlayerLed(led1);
  } else {
    lightUpLeds();  
  }
}

void clearLeds(){
  for(int i=0;i<10;i++){
    digitalWrite(leds[i], LOW);
  }
}

void lightUpLeds(){ 
  clearLeds();
  digitalWrite(leds[index], HIGH);
}

void blinkPlayerLed(int led){
  clearLeds();
  for(int i=0;i<10;i++){
    Serial.println("blink");
    Serial.println(led);
    digitalWrite(led,HIGH);
    delay(125);  
    digitalWrite(led,LOW);
    delay(125);  
  }
  start();
}

Video

ein kleines, einfaches LED Spiel am Arduino UNO R3
Dieses Video auf YouTube ansehen.

Fazit & pers. Meinung

Das Set enthält sehr viele Bauteile und womit man gleich loslegen kann und so einiges Aufbauen kann. Der Preis ist für die Anzahl der Teile im Set angemessen jedoch sind die Versandkosten doch deutlich hoch. Somit kann man dieses Set ggf. im Shop von digitspace.com mitbestellen aber nur deswegen wäre das Set deutlich zu teuer. 

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}