Čítačka Rfid

Sekcia určená pre Arduino nadšencov

Moderátor: Moderátori

seto
Pokročilý člen
Pokročilý člen
Príspevky: 555
Dátum registrácie: 20 Jan 2011, 00:00
Bydlisko: Niekde pri Modre

Čítačka Rfid

Príspevok od používateľa seto » 09 Júl 2019, 13:33

Vedel by mi niekto poradiť?Postavil som prístupový systém z Arduino.Je to iba na dva čipi.Ako by sa to dalo rozšíriť? Ďakujem.



/*
* ----------------------------------------------------------------------------
* This sketch uses the MFRC522 library ; see https://github.com/miguelbalboa/rfid
* for further details and other examples.
*
* NOTE: The library file MFRC522.h has a lot of useful info. Please read it.
*
* This sketch show a simple locking mechanism using the RC522 RFID module.
* ----------------------------------------------------------------------------
* Typical pin layout used:
* -----------------------------------------------------------------------------------------
* MFRC522 Arduino Arduino Arduino Arduino Arduino
* Reader/PCD Uno 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
*
*/
#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN 9 // Configurable, see typical pin layout above
#define SS_PIN 10 // Configurable, see typical pin layout above

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

String read_rfid; // Add how many you need and don't forget to include the UID.
String ok_rfid_1="a98ba06d"; // This is for my main RFID Card. aka. The one I will be using to turn on my PC. Can also be used to shut it down if you want to.
String ok_rfid_2="fbecb673"; // This is for the RFID Keyfob. aka. Shutdown Keyfob. Not advisable tho. Just shutdown your PC normally.
int lock = 7; // For the Card.
int lock2 = 7; // For the Keyfob.
/*
* Initialize.
*/
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card

//Choose which lock below:
pinMode(lock, OUTPUT);
pinMode(lock2, OUTPUT);
}
/*
* Helper routine to dump a byte array as hex values to Serial.
*/
void dump_byte_array(byte *buffer, byte bufferSize) {
read_rfid="";
for (byte i = 0; i < bufferSize; i++) {
read_rfid=read_rfid + String(buffer, HEX);
}
}

void open_lock() {
//Use this routine when working with Relays and Solenoids etc.
digitalWrite(lock,HIGH);
delay(500);
digitalWrite(lock,LOW);
}a


void close_lock2() { // You can also just use the card to shutdown your PC. This is just for those moments that you really need to shut it down quickly.
//Use this routine when working with Relays and Solenoids etc.
digitalWrite(lock2, HIGH);
delay(5000);
digitalWrite(lock2,LOW);
}


void loop() {

// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
return;

// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
return;

dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
Serial.println(read_rfid);
if (read_rfid==ok_rfid_1) {
//ok, open the door.
open_lock();
}

Serial.println(read_rfid);
if (read_rfid==ok_rfid_2) {
//ok, open the door.
close_lock2();
}
//Add below as many "keys" as you want
//if (read_rfid==ok_rfid_2) {
//also ok, open the door
// open_lock();
//}
// else not needed. Anything else is not ok, and will not open the door...
}
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: Čítačka Rfid

Príspevok od používateľa dan21 » 09 Júl 2019, 13:37

No ak sa vyznas v tom kode, tak potom je to hracka. Ak nie, tak potom pozri kde vsade v kode mas premenne ok_rfid_1 ok_rfid_2
a ak to ani potom nebudes vediet tak sa ozvi.
0

deepspace
Pokročilý člen
Pokročilý člen
Príspevky: 738
Dátum registrácie: 18 Máj 2017, 10:12
Bydlisko: Bratislava

Re: Čítačka Rfid

Príspevok od používateľa deepspace » 09 Júl 2019, 13:50

Máš to tam napísané v komentoch ..
String read_rfid; // Add how many you need and don't forget to include the UID
//Add below as many "keys" as you want
0

seto
Pokročilý člen
Pokročilý člen
Príspevky: 555
Dátum registrácie: 20 Jan 2011, 00:00
Bydlisko: Niekde pri Modre

Re: Čítačka Rfid

Príspevok od používateľa seto » 09 Júl 2019, 14:02

To je pekné ale moc tomu nerozumiem.Aj angličtina mi moc nejde.
Začínam z Arduinom.
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: Čítačka Rfid

Príspevok od používateľa dan21 » 09 Júl 2019, 14:24

Mas nejake zaklady v programovani ?
0

seto
Pokročilý člen
Pokročilý člen
Príspevky: 555
Dátum registrácie: 20 Jan 2011, 00:00
Bydlisko: Niekde pri Modre

Re: Čítačka Rfid

Príspevok od používateľa seto » 09 Júl 2019, 14:32

Minimum. Voľakedy Basic.
0

dan21
Ultimate člen
Ultimate člen
Príspevky: 3016
Dátum registrácie: 11 Apr 2007, 00:00
Bydlisko: ZA

Re: Čítačka Rfid

Príspevok od používateľa dan21 » 09 Júl 2019, 14:40

Zadefinuj si tolko premennych kolko kariet potrebujes
String ok_rfid_x="xxxxxxxx";
....

a potom zadefinuj akciu pre kazdu kartu (alebo pre vsetky)
if (read_rfid==ok_rfid_x) {
// akcia
}
0

seto
Pokročilý člen
Pokročilý člen
Príspevky: 555
Dátum registrácie: 20 Jan 2011, 00:00
Bydlisko: Niekde pri Modre

Re: Čítačka Rfid

Príspevok od používateľa seto » 09 Júl 2019, 14:42

Skúsim.Potrápim sa.

-- Spojený príspevok 09 Júl 2019, 14:09 --

Veľmi pekneďakujem .Už to beží.

-- Spojený príspevok 09 Júl 2019, 14:16 --

Ešte taký detail.Keď to zapnem ,tak relé sa zapne a zostane zapnuté pokiaľ ho nevypnem čipom.Malo by to byť
tak ,že po zapnutí musí byť relé v kľude.
Čo stým.
Ďakujem.
0

martinius96
Okoloidúci
Okoloidúci
Príspevky: 23
Dátum registrácie: 22 Feb 2020, 01:51
Bydlisko: Poprad

Re: Čítačka Rfid

Príspevok od používateľa martinius96 » 23 Feb 2020, 00:01

Nastavíš ten výstup v setupe na hodnotu LOW, aby ti to relé rozoplo na začiatku.
Takže digitalWrite(lock,LOW);
0

Napísať odpoveď