Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Sie befinden sich in: Unterrichtsangebote Fächer Fachbereich III Informatik WU_Info Arduino 2019-20 Porth, Florian Arduino Zugangskontrolle Arduino Zugangskontrolle mit 7 Segment-Display und seriellem Monitor

Arduino Zugangskontrolle mit 7 Segment-Display und seriellem Monitor

 

Material:

Vorbereitung des RFID Moduls:

1. Anschluss:

Anschluss RFID Lesegerät

Pinzuteilung RFID Arduino Mega 2560
Anschlussbezeichung Nummer
GND GND
3.3V 3.3V
RST 5
MISO 50
MOSI 51
SCK 52
SDA 53
IRO -

 

2. Einen RFID Chip auslesen (um ihn später verwenden zu können)

 

Zusammenführung mit dem 7 Segment-Display und dem Schaltrelais:

Informationen zur Funktion und zum Anschluss des Relais findet ihr hier:
Relais mit dem Arduino steuern

Informationen zum Anschluss und zur Funktion des 7 Segement-Displays findet ihr hier:
7 Segment-Display anschließen und programmieren

1. Anschluss:

Anschluss RFID und 7seg

Das Relais findet sich nicht auf der fritzing Grafik, da es dort nicht verfügbar war.
Es hat 3 Steckleisten und wird wie folgt angeschlossen:

+     ->     5V Anschluss am Arduino

-     ->      GND Anschluss am Arduino

S    ->      ein digitaler Output am Arduino; in meinem Fall Pin 7

Pinzuteilung 7Segment - Display Arduino Mega 2560
Segment Nummer
A 32
B 33
C 36
D 29
E 28
F 26
G 27
- (2x) GND
DP 37

7SEG_function

Sieht in echt dann ungefähr so aus:

(das Bild ist nicht aktuell, ein Bild des fertigen Aufbaus folgt ;))

RFID + 7seg_iphonepicture

 

2. Sketch:

 

/* Florian Porth; 2019; Arudino Mega 2560
 *
Arduino Zugangskontrolle mit RFID, Relais, 7-Segment-Display und seriellem Monitor
 *
 * In dieser Schaltung wird ein Relais mit einem RFID Chip gesteuert. Als Statusanzeige werden der     serielle Monitor und ein 7-Segment-Display verwendet.
 * Das System soll als vereinfacht dargestellte Zugangskontrolle funktionieren.
 * Für das RFID Bauteil muss man aufgrund der hinterlegten library auf folgende Pin-Zuteilung zurückgreifen:
 * -----------------------------------------------------------------------------------------
 *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
 *             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
 * Signal      Pin          Pin           Pin       Pin        Pin              Pin
 * -----------------------------------------------------------------------------------------
 * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
 * SPI SS      SDA(SS)      10            53        D10        10               10
 * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
 * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
 * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
 * Quelle (Zuordnungstabelle):  https://www.makerblog.at/2017/11/rfid-transponder-mit-dem-mfrc-522-card-reader-am-arduino-auslesen/
 *
 *
 * In einem vorrangstellten Schritt muss mit einem gesonderten Sketch die ID des RFID Tags ausgelesen werden, welche dann unten
 * in diesem Sketch eingefügt werden muss
 */
#include
#include
#include
#include   //libraries eingebunden
#define SS_PIN 53
#define RST_PIN 5 //Definition von "SS" und "RST" Pin
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup()
//Relaisschalter eingebaut; wird über digitalWrite - Signal geschaltet; steht für die Verbidung zu einem  Türkontaktschalter
//Das Relais kann zwischen den Schaltzuständen "AB" und "BC" wechseln
//Bei "AB" sind die Ausgänge "A" und "B" aktiv
//Bei "BC" sind die Ausgänge "B" und "C" aktiv
{
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
  pinMode (26, OUTPUT); // Der Pin ist als Output für eine LED definiert
  pinMode (27, OUTPUT); // "
  pinMode (28, OUTPUT); // "
  pinMode (29, OUTPUT); // "
  pinMode (32, OUTPUT); // "
  pinMode (33, OUTPUT); // "
  pinMode (36, OUTPUT); // "
  pinMode (37, OUTPUT); // "
  pinMode (7, OUTPUT); // "
  pinMode (7, OUTPUT); //Der Pin ist als Output definiert; mit diesem Pin wird das Relais gesteuert

  digitalWrite(32, HIGH);
  digitalWrite(33, HIGH);
  digitalWrite(28, HIGH);
  digitalWrite(29, HIGH);
  digitalWrite(26, HIGH);
  digitalWrite(36, HIGH);
  digitalWrite(7, LOW); //Die Relaiskarte wird in die Normalstellung gebracht; bei der Alarmanlage also den "scharfen" Zustand - der Türkontakt würde einen Alarm auslösen
                        //Der Normalzustand ist in meiner Schaltung als "BC" definiert
}
void loop()
{
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }
  long code = 0;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    code = ((code + mfrc522.uid.uidByte[i]) * 10);
  }
  // Ab hier erfolgt die erweiterung des Programms.
  if (code == 2409430) // Wenn der Zahlencode 2409430 lautet...   [hier muss man die ID einfügen]
  { // ...dann führe folgenden Abschnitt aus
    digitalWrite(7, HIGH);  //Die Relaiskarte schaltet zu "BA"
    Serial.println("Karte identifiziert - Zugang 10sec freigeschaltet");//Auf dem seriellen Monitor erscheint der Schriftzug "Zugang 10sec freigeschaltet"
    digitalWrite (32, LOW);//das 7-Segement-Display soll die Zahl "1" anzeigen
    digitalWrite (28, LOW);//...
    digitalWrite (29, LOW);//...
    digitalWrite (26, LOW);//...
    delay (10000); //
    digitalWrite (7, LOW);  //Die Relaiskarte schaltet zu "BC"
    Serial.println("Zugang  gesperrt"); //Auf dem seriellen Monitor erscheint der Schriftzug "Zugang gesperrt"
    digitalWrite(32, HIGH);//das 7-segment-Display soll die Zahl "0" anzeigen
    digitalWrite(33, HIGH);//...
    digitalWrite(28, HIGH);//...
    digitalWrite(29, HIGH);//...
    digitalWrite(26, HIGH);//...
    digitalWrite(36, HIGH);//...
    }
    else
    {
      Serial.println("keine Zugangsberechtigung");//Auf dem seriellen Monitor erscheint der Schriftzug "keine Zugangsberechtigung"
      Serial.print("");
  digitalWrite(32, LOW);//das 7-segment-Display soll die Zahl "0" blinkend anzeigen
  digitalWrite(33, LOW);
  digitalWrite(28, LOW);
  digitalWrite(29, LOW);
  digitalWrite(26, LOW);
  digitalWrite(36, LOW);
  delay(500);
  digitalWrite(32, HIGH);
  digitalWrite(33, HIGH);
  digitalWrite(28, HIGH);
  digitalWrite(29, HIGH);
  digitalWrite(26, HIGH);
  digitalWrite(36, HIGH);
  delay(500);
  digitalWrite(32, LOW);
  digitalWrite(33, LOW);
  digitalWrite(28, LOW);
  digitalWrite(29, LOW);
  digitalWrite(26, LOW);
  digitalWrite(36, LOW);
  delay(500);
  digitalWrite(32, HIGH);
  digitalWrite(33, HIGH);
  digitalWrite(28, HIGH);
  digitalWrite(29, HIGH);
  digitalWrite(26, HIGH);
  digitalWrite(36, HIGH);
  delay(500);
  digitalWrite(32, LOW);
  digitalWrite(33, LOW);
  digitalWrite(28, LOW);
  digitalWrite(29, LOW);
  digitalWrite(26, LOW);
  digitalWrite(36, LOW);
  delay(500);
  digitalWrite(32, HIGH);
  digitalWrite(33, HIGH);
  digitalWrite(28, HIGH);
  digitalWrite(29, HIGH);
  digitalWrite(26, HIGH);
  digitalWrite(36, HIGH);
  delay(500);
  digitalWrite(32, LOW);
  digitalWrite(33, LOW);
  digitalWrite(28, LOW);
  digitalWrite(29, LOW);
  digitalWrite(26, LOW);
  digitalWrite(36, LOW);
  delay(500);
  digitalWrite(32, HIGH);
  digitalWrite(33, HIGH);
  digitalWrite(28, HIGH);
  digitalWrite(29, HIGH);
  digitalWrite(26, HIGH);
  digitalWrite(36, HIGH);
  delay(500);
    }
}

 

erstellt: Schuljahr 2019/20
Florian Porth, 10b

 

Erstellt: Florian Porth (19.11.2019) Letzte Änderung: Florian Porth (28.03.2020)