Zapojeni arduina do magnetickeho zamku dveri
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Zapojeni arduina do magnetickeho zamku dveri
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 ?
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
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
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
Jen doplnim ze pocitam s cca 100-120 RFID klici
Re: Zapojeni arduina do magnetickeho zamku dveri
tak cely projekt jsem jiz nasel.....
jakmile budu mit neco hotoveho, tak poslu nejake info
jakmile budu mit neco hotoveho, tak poslu nejake info
Re: Zapojeni arduina do magnetickeho zamku dveri
Nasel jsem tento kod :
ale nejak nechapu kam se ukladaji ID tech karet....
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);
}
Re: Zapojeni arduina do magnetickeho zamku dveri
To je ľahké. No predsa do poľa cardArr
Pole je dvojrozmerné. Jedna karta zaberá 4 byte a kariet môže byť 10.
Pole je definované ako globálne, takže sa nachádza v SRAM. (Vypneš a je to v dyme)
Kód: Vybrat vše
byte cardArr[cardArrSize][cardSize];
Kód: Vybrat vše
const int cardArrSize = 10;
const int cardSize = 4;
Re: Zapojeni arduina do magnetickeho zamku dveri
a to je pruser...
a to potrebuji aby to bylo na porad
a to potrebuji aby to bylo na porad
Re: Zapojeni arduina do magnetickeho zamku dveri
tak si to daj do EEPROM a máš to nastálo
Re: Zapojeni arduina do magnetickeho zamku dveri
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
vôbec nerozumiem ako to myslíš.
Prešiel si si príklady s EEPROM dostupné v samotnom prostedí?
Prešiel si si príklady s EEPROM dostupné v samotnom prostedí?
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů