Do realizacji projektu potrzebne są następujące komponenty:
KAmduino UNO
Czytnik RFID modRFID RC-522
Konwerter stanów logicznych
Płytka prototypowa
Przewody do płytek prototypowych (męsko-męskie oraz żeńsko-męskie)
Diody LED (zielona i czerwona)
Rezystory 220 ohm (2 sztuki)
Zestaw modRFID, oprócz modułu z układem RC522 odczytującego dane z tagów, zawiera również dwa tagi RFID w postaci breloczka oraz karty. Moduł współpracuje z tagami pracującymi z częstotliwością nośną 13,56 MHz. Do komunikacji z mikrokontrolerem wykorzystuje interfejs SPI. Układ znajdujący się na płytce pracujące z napięciem 3,3 V co oznacza, że aby podłączyć linie sterujące do KAmduino UNO, konieczne jest użycie konwertera stanów logicznych. Dzięki niemu sygnały o napięciu 3,3 V będą zamieniane na sygnały o napięciu 5 V (i odwrotnie). Zestaw modRFID zawiera także 2 listwy goldpinów (proste i kątowe). Jedną z nich należy przylutować do modułu przed przystąpieniem do realizacji projektu.
Sposób połączenia elementów
Pierwszym krokiem jest połączenie modułu do odczytu tagów z KAmduino UNO. Należy to zrobić zgodnie ze schematem pokazanym na rysunku
Zmontowany układ prezentuje się następująco (kolory przewodów zgadzają się z schematem): Kod programu:
Kod: Zaznacz cały
/*
* Program do elektronicznego zamka
* Na podstawie przykładu "READNUID" znajdującego się w bibliotece MFRC522 library dostępnej pod adresem https://github.com/miguelbalboa/rfid
*
*
*
*
*/
#define LED_Zielona 6 // Pin do którego będzie podłączona Zielona dioda
#define LED_Czerwona 7 //Pin do którego będzie podłączona czerwona dioda
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
const byte poprawna_karta[] = {0x10,0x55,0x60,0x89};
void setup() {
Serial.begin(9600);
SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
pinMode(LED_Zielona,OUTPUT); // Ustawienie pinu LED_Zielona jako wyjscie
pinMode(LED_Czerwona,OUTPUT); // Ustawienie pinu LED_Czerwona jako wyjscie
}
void loop() {
// Look for new cards
if ( ! rfid.PICC_IsNewCardPresent())
return;
// Verify if the NUID has been readed
if ( ! rfid.PICC_ReadCardSerial())
return;
if (rfid.uid.uidByte[0] == poprawna_karta[0] ||
rfid.uid.uidByte[1] == poprawna_karta[1] ||
rfid.uid.uidByte[2] == poprawna_karta[2] ||
rfid.uid.uidByte[3] == poprawna_karta[3] )
{
Serial.println("Poprawna karta");
digitalWrite(LED_Zielona,HIGH);
delay(1500);
digitalWrite(LED_Zielona,LOW);
}
else
{
Serial.println("Niepoprawna karta!!!");
digitalWrite(LED_Czerwona,HIGH);
delay(2000);
digitalWrite(LED_Czerwona,LOW);
}
// Halt PICC
rfid.PICC_HaltA();
// Stop encryption on PCD
rfid.PCD_StopCrypto1();
}
