Stránka 1 z 2
Zapojeni arduina do magnetickeho zamku dveri
Napsal: 21 říj 2021, 16:51
od Kony
Ahoj, chtel bych umistnit a obsluhovat magneticky zamek u vchodovych dveri do bytovky
Chtel bych udelat nejaky mezikus, ktery zapojim pred zamek a mohl bych pomoci RFID odemykat dvere...
Ale ted otazky :
- jak udelat aby bylo nejaky ovladaci tlacitko, kterym bych mohl pridavat dalsi chipy
- kam by se ukladali cisla klicu ? Do EEPROM ?
- rad bych aby tam byla i ciselna klavesnice, kde by byl universalni kod(ktery by se dal zmenit)
- samozrejme bez moznosti pripojeni k PC. Jen pomoci klavesnice a displeye
- samozrejmost je i moznost otevirani dveri jak je do ted pomoci domovniho vratneho, ktery je nyni funkcni z bytu
Mate nekdo nejaky odkaz na neco podobneho ?
Re: Zapojeni arduina do magnetickeho zamku dveri
Napsal: 21 říj 2021, 17:41
od Kony
Nasel jsem toto, to je asi presne co bych potreboval...
Jen nemuzu najit dokumentaci ..... navrh zapojeni a samotny kod
http://www.sselek-havirov.cz/erasmus_v_ ... ock_PL.pdf
Re: Zapojeni arduina do magnetickeho zamku dveri
Napsal: 21 říj 2021, 18:22
od Kony
Jen doplnim ze pocitam s cca 100-120 RFID klici
Re: Zapojeni arduina do magnetickeho zamku dveri
Napsal: 21 říj 2021, 18:58
od Kony
tak cely projekt jsem jiz nasel.....
jakmile budu mit neco hotoveho, tak poslu nejake info
Re: Zapojeni arduina do magnetickeho zamku dveri
Napsal: 21 říj 2021, 19:19
od Kony
Nasel jsem tento kod :
Kód: Vybrat vše
//Viral Science www.youtube.com/c/viralscience www.viralsciencecreativity.com
//RFID RC522 Master Card, Add and Remove multiple Cards
#include <SPI.h>
#include <Wire.h>
#include <MFRC522.h>
#define RST_PIN 9
#define SS_PIN 10
#define STATE_STARTUP 0
#define STATE_STARTING 1
#define STATE_WAITING 2
#define STATE_SCAN_INVALID 3
#define STATE_SCAN_VALID 4
#define STATE_SCAN_MASTER 5
#define STATE_ADDED_CARD 6
#define STATE_REMOVED_CARD 7
#define REDPIN 7
#define GREENPIN 6
#define Relay 5
const int cardArrSize = 10;
const int cardSize = 4;
byte cardArr[cardArrSize][cardSize];
byte masterCard[cardSize] = {131,35,56,187}; //Change Master Card ID
byte readCard[cardSize];
byte cardsStored = 0;
// Create MFRC522 instance
MFRC522 mfrc522(SS_PIN, RST_PIN);
// Set the LCD I2C address
byte currentState = STATE_STARTUP;
unsigned long LastStateChangeTime;
unsigned long StateWaitTime;
//------------------------------------------------------------------------------------
int readCardState()
{
int index;
Serial.print("Card Data - ");
for(index = 0; index < 4; index++)
{
readCard[index] = mfrc522.uid.uidByte[index];
Serial.print(readCard[index]);
if (index < 3)
{
Serial.print(",");
}
}
Serial.println(" ");
//Check Master Card
if ((memcmp(readCard, masterCard, 4)) == 0)
{
return STATE_SCAN_MASTER;
}
if (cardsStored == 0)
{
return STATE_SCAN_INVALID;
}
for(index = 0; index < cardsStored; index++)
{
if ((memcmp(readCard, cardArr[index], 4)) == 0)
{
return STATE_SCAN_VALID;
}
}
return STATE_SCAN_INVALID;
}
//------------------------------------------------------------------------------------
void addReadCard()
{
int cardIndex;
int index;
if (cardsStored <= 20)
{
cardsStored++;
cardIndex = cardsStored;
cardIndex--;
}
for(index = 0; index < 4; index++)
{
cardArr[cardIndex][index] = readCard[index];
}
}
//------------------------------------------------------------------------------------
void removeReadCard()
{
int cardIndex;
int index;
boolean found = false;
for(cardIndex = 0; cardIndex < cardsStored; cardIndex++)
{
if (found == true)
{
for(index = 0; index < 4; index++)
{
cardArr[cardIndex-1][index] = cardArr[cardIndex][index];
cardArr[cardIndex][index] = 0;
}
}
if ((memcmp(readCard, cardArr[cardIndex], 4)) == 0)
{
found = true;
}
}
if (found == true)
{
cardsStored--;
}
}
//------------------------------------------------------------------------------------
void updateState(byte aState)
{
if (aState == currentState)
{
return;
}
// do state change
switch (aState)
{
case STATE_STARTING:
StateWaitTime = 1000;
digitalWrite(REDPIN, HIGH);
digitalWrite(GREENPIN, LOW);
break;
case STATE_WAITING:
StateWaitTime = 0;
digitalWrite(REDPIN, LOW);
digitalWrite(GREENPIN, LOW);
break;
case STATE_SCAN_INVALID:
if (currentState == STATE_SCAN_MASTER)
{
addReadCard();
aState = STATE_ADDED_CARD;
StateWaitTime = 2000;
digitalWrite(REDPIN, LOW);
digitalWrite(GREENPIN, HIGH);
}
else if (currentState == STATE_REMOVED_CARD)
{
return;
}
else
{
StateWaitTime = 2000;
digitalWrite(REDPIN, HIGH);
digitalWrite(GREENPIN, LOW);
}
break;
case STATE_SCAN_VALID:
if (currentState == STATE_SCAN_MASTER)
{
removeReadCard();
aState = STATE_REMOVED_CARD;
StateWaitTime = 2000;
digitalWrite(REDPIN, LOW);
digitalWrite(GREENPIN, HIGH);
}
else if (currentState == STATE_ADDED_CARD)
{
return;
}
else
{
StateWaitTime = 2000;
digitalWrite(REDPIN, LOW);
digitalWrite(GREENPIN, HIGH);
digitalWrite(Relay,LOW);
delay(3000);
digitalWrite(Relay,HIGH);
}
break;
case STATE_SCAN_MASTER:
StateWaitTime = 5000;
digitalWrite(REDPIN, LOW);
digitalWrite(GREENPIN, HIGH);
break;
}
currentState = aState;
LastStateChangeTime = millis();
}
void setup()
{
SPI.begin(); // Init SPI Bus
mfrc522.PCD_Init(); // Init MFRC522
LastStateChangeTime = millis();
updateState(STATE_STARTING);
pinMode(REDPIN, OUTPUT);
pinMode(GREENPIN, OUTPUT);
pinMode(Relay, OUTPUT);
digitalWrite(Relay,HIGH);
Serial.begin(9600);
}
void loop()
{
byte cardState;
if ((currentState != STATE_WAITING) &&
(StateWaitTime > 0) &&
(LastStateChangeTime + StateWaitTime < millis()))
{
updateState(STATE_WAITING);
}
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
cardState = readCardState();
updateState(cardState);
}
ale nejak nechapu kam se ukladaji ID tech karet....
Re: Zapojeni arduina do magnetickeho zamku dveri
Napsal: 21 říj 2021, 20:24
od peterple
To je ľahké. No predsa do poľa
cardArr
Kód: Vybrat vše
byte cardArr[cardArrSize][cardSize];
Pole je dvojrozmerné. Jedna karta zaberá 4 byte a kariet môže byť 10.
Kód: Vybrat vše
const int cardArrSize = 10;
const int cardSize = 4;
Pole je definované ako globálne, takže sa nachádza v SRAM. (Vypneš a je to v dyme)
Re: Zapojeni arduina do magnetickeho zamku dveri
Napsal: 21 říj 2021, 20:35
od Kony
a to je pruser...
a to potrebuji aby to bylo na porad
Re: Zapojeni arduina do magnetickeho zamku dveri
Napsal: 21 říj 2021, 20:38
od peterple
tak si to daj do EEPROM a máš to nastálo
Re: Zapojeni arduina do magnetickeho zamku dveri
Napsal: 21 říj 2021, 20:42
od Kony
jenze to ale prece musim urcit bunku a pak ta bunku je dle tohoto plovouci.... takze uplne mimo me chapani v arduino
Re: Zapojeni arduina do magnetickeho zamku dveri
Napsal: 21 říj 2021, 20:48
od peterple
vôbec nerozumiem ako to myslíš.
Prešiel si si príklady s EEPROM dostupné v samotnom prostedí?