Étape 1: Montage de RFIDuino
UDPSendReceive.pde :
Cette esquisse reçoit les chaînes des messages UDP, imprime sur le port série
et une chaîne de « reconnaître » renvoie à l’expéditeur
Une esquisse de traitement est incluse à la fin du fichier qui peut être utilisé pour envoyer
et les messages reçus pour des tests avec un ordinateur.
créé le 21 août 2010
par Michael Margolis
Ce code se trouve dans le domaine public.
*/
#include < SPI.h > / / nécessaire pour les versions de l’Arduino plus tard que 0018
#include < Ethernet.h >
#include < EthernetUdp.h > / / Bibliothèque à partir d’UDP : bjoern 30/12/2008
Entrez une adresse MAC et l’adresse IP de votre contrôleur ci-dessous.
L’adresse IP sera tributaire de votre réseau local :
la mac de Byte [] = {0xDF, 0xAD, 0xCE, 0xEF, 0xFE, 0xWE} ;
la propriété intellectuelle de Byte [] = {0, 0, 0,} ;
IPAddress server(0,0,0,0) ;
Char [NomServeur] = "http://whatever.com" ;
keepAlive int = 0 ;
volatils reader1 long = 0 ;
volatile int reader1Count = 0 ;
unsigned int localPort = 70056 ; port local à écouter sur
char packetBuffer [UDP_TX_PACKET_MAX_SIZE] ; tampon de tenir un paquet entrant,
EthernetClient client ;
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 the Ethernet
UDP.Begin(localPort); / / et UDP
Serial.Begin(9600) ;
pinMode (5, sortie) ;
Attache broche changement interrupt service routine des lecteurs Wiegand RFID
attachInterrupt (0, reader1Zero, RISING); //DATA0 de la broche 2
attachInterrupt 1, reader1One, RISING ; Data1 à la broche 3
Delay(10) ;
l’interruption dans le mises de processeur Atmel sur le premier negitave d’impulsion que les entrées sont déjà élevées,
donc, cela donne une impulsion à chaque ligne d’entrée du lecteur pour obtenir les interruptions fonctionne correctement.
Ensuite, vider les variables de lecteur.
Les lecteurs sont à collecteur ouvert assis normalement à un donc c’est OK
pour (int i = 2; i < 4; i ++) {}
pinMode (i, sortie) ;
digitalWrite (i, HIGH) ; activez l’arrachage par causer un
digitalWrite (i, faible) ; désactiver l’arrachage par causer de zéro et donc une interruption
pinMode (i, entrée) ;
digitalWrite (i, HIGH) ; activez l’arrachage des
}
Delay(10) ;
Reader1 = 0 ;
reader1Count = 0 ;
}
void loop() {}
Si (reader1Count > = 26) {//If carte est lue.
Serial.Print(Reader1) ;
client.Connect (serveur, 80) ; Se connecter au serveur.
client.Print (« GET rfiddoor/door.php?data=") ; Envoyer des données de la carte.
client.Print(Reader1) ;
client.println ("& porte = 12door"); nom de porte de //Send.
{if(client.Connected())}
Serial.Print ("envoi de données de la carte (") ;
Serial.Print(Reader1) ; imprimer les données de la carte de sortie série.
Serial.println(") au serveur...") ;
} else {}
Serial.println ("Impossible de se connecter au serveur, une nouvelle tentative...") ;
}
client.Stop() ;
}
Reader1 = 0 ;
reader1Count = 0 ;
Delay(100) ; Donner le temps de recevoir le paquet UDP arduino.
int packetSize = Udp.parsePacket() ; Paquet UDP de processus.
if(PacketSize) {paquet UDP //if est acte reçu, d’autre données de carte de donjon et renvoyer les données (recommencer boucle tout en conservant les données de la carte).
Serial.Print ("contenu du paquet:") ;
Distance de IPAddress = Udp.remoteIP() ;
UDP.Read (packetBuffer, UDP_TX_PACKET_MAX_SIZE); //Read paquet en mémoire tampon.
Serial.Print (packetBuffer); //Print de paquet UDP.
Serial.Print ("Card is") ;
Si (packetBuffer [0] == « p » & & packetBuffer [1] == « a » & & packetBuffer [2] == de ' & & packetBuffer [3] == de ' & & packetBuffer [4] == « w » & & packetBuffer [5] == ' o ' & & packetBuffer [6] == « r » & & packetBuffer [7] == avait ') {paquet UDP //If contient le mot de passe ouvert, sinon rester fermé
digitalWrite (5, HIGH); / / ### il indiquera la mémoire tampon de paquets. Si elle contient la commande « ouvrir » il gardera la grève ###
Serial.println("approved"); / / ### ouvrir pendant 5 secondes et imprimer que la carte a été approuvée. Le service webclient cesseront ###
client.Stop(); / / ### le lecteur sera remis à zéro. ###
Reader1 = 0; / / ### si la commande « refusé » est reçu il restera verrouillé et il permet d’imprimer que la carte ###
reader1Count = 0; / / ### a été refusée. Le service webclient s’arrête et le lecteur sera remis à zéro. ###
delay(5000);// ### ###
digitalWrite (5, LOW); / / ### si un paquet n’est pas reçu il conserver les données du lecteur et renvoyer. ###
}else{// ###################################################################################################
Serial.println("denied") ;
client.Stop() ;
Reader1 = 0 ;
reader1Count = 0 ;
digitalWrite (5, faible) ;
}
Serial.println("___") ;
}
}