RFIDuino (1 / 6 steg)
Steg 1: Montera RFIDuino
UDPSendReceive.pde:
Denna skiss mottar UDP-meddelande strängar, skriver ut dem till den seriella porten
och skickar en "erkänna" sträng tillbaka till avsändaren
En bearbetning skiss ingår i slutet av filen som kan användas för att skicka
och mottagna meddelanden för att testa med en dator.
skapad 21 Aug 2010
av Michael Margolis
Denna kod är i public domain.
*/
#include < SPI.h > / / behövs för Arduino versioner senare än 0018
#include < Ethernet.h >
#include < EthernetUdp.h > / / UDP-bibliotek från: bjoern 2008-12-30
Ange en MAC-adress och IP-adressen för din controller nedan.
IP-adressen kommer att bero på ditt lokala nätverk:
byte [mac] = {0xDF, 0xAD, 0xCE, 0xEF, 0xFE, 0xWE};
byte ip [] = {0, 0, 0,};
IP-adress server(0,0,0,0);
char servernamn [] = "http://whatever.com";
int keepAlive = 0;
flyktiga lång reader1 = 0;
flyktiga int reader1Count = 0;
unsigned int localPort = 70056; lokal port att lyssna på
char packetBuffer [UDP_TX_PACKET_MAX_SIZE]; buffert för att hålla inkommande paket,
EthernetClient klient;
EthernetUDP Udp;
void reader1One(void) {
reader1Count ++;
reader1 = reader1 << 1.
reader1 | = 1;
}
void reader1Zero(void) {
reader1Count ++;
reader1 = reader1 << 1.
}
void setup() {
Ethernet.BEGIN(Mac,IP,DNS); / / start Ethernet
UDP.BEGIN(localPort); / / och UDP
Serial.BEGIN(9600);
pinMode (5, OUTPUT);
Bifoga pin change interrupt service rutiner från Wiegand RFID läsare
attachInterrupt (0, reader1Zero, RISING); //DATA0 till stift 2
attachInterrupt (1, reader1One, stiger). Data1 till stift 3
Delay(10);
avbrottet i Atmel processor mises ut den första negitave puls som insatsvarorna som redan är hög,
så detta ger en puls till varje läsare inmatningsraden att få avbrotten fungerar korrekt.
Avmarkera sedan ut läsaren variablerna.
Läsarna är öppen kollektor sitter normalt på en en så detta är OK
för (int jag = 2; jag < 4; i ++) {
pinMode (i, matas);
digitalWrite i, hög. Aktivera inre dra upp orsakar en
digitalWrite (i, låg); Inaktivera inre dra upp orsakar noll och thus ett avbrott
pinMode (i, ingång);
digitalWrite i, hög. Aktivera inre dra upp
}
Delay(10);
reader1 = 0;
reader1Count = 0;
}
void loop() {
om (reader1Count > = 26) {//If kortet läses.
Serial.Print(reader1);
client.connect (server, 80); Ansluta till servern.
client.Print ("GET rfiddoor/door.php?data="); Skicka kortdata.
client.Print(reader1);
client.println ("& dörr = 12door"); //Send dörren namn.
IF(client.Connected()) {
Serial.Print ("Skicka kortdata (");
Serial.Print(reader1); skriva ut kortdata till seriell utgång.
Serial.println(") till Server...");
} annat {
Serial.println kan inte ("ansluta till servern, försöker igen...");
}
client.stop();
}
reader1 = 0;
reader1Count = 0;
Delay(100); Ge arduino tid att ta emot UDP-paket.
int packetSize = Udp.parsePacket(); Processen UDP-paket.
IF(packetSize) {//if UDP-paket är mottagna act, annars hålla kortdata och skicka data (börja slinga om bibehållen kortdata).
Serial.Print ("Packet innehållet:");
IP-adress remote = Udp.remoteIP();
UDP.Read (packetBuffer, UDP_TX_PACKET_MAX_SIZE); //Read paket i bufferten.
Serial.Print (packetBuffer); //Print UDP-paket.
Serial.Print ("kortet är");
om (packetBuffer [0] == "p" & & packetBuffer [1] == "a" & & packetBuffer [2] == 's "& & packetBuffer [3] == 's" & & packetBuffer [4] == 'w' & & packetBuffer [5] == ' o ' & & packetBuffer [6] == 'r' & & packetBuffer [7] == hade ") {//If UDP-paket innehåller lösenord öppna, annars bo stängda
digitalWrite 5, hög, / / ### detta kommer att läsa packet bufferten. Om det innehåller "kommandot Öppna" det kommer att hålla strejken ###
Serial.println("approved"); / / ### öppna i 5 sekunder och skriva ut att kortet godkändes. Webclient stoppas ###
client.stop(); / / ### läsaren kommer att återställas. ###
reader1 = 0; / / ### om "neka kommando" tas emot kommer det att förbli låst och skrivs ut som kortet ###
reader1Count = 0; / / ### nekades. Webclient stoppas och läsaren kommer att återställas. ###
Delay(5000); / / ### ###
digitalWrite 5, låg, / / ### om ett paket inte är emot det håller läsaren data och skicka igen. ###
}else{// ###################################################################################################
Serial.println("Denied");
client.stop();
reader1 = 0;
reader1Count = 0;
digitalWrite (5, låg).
}
Serial.println("___");
}
}