RFID et Bluetooth serrure (4 / 4 étapes)

Étape 4: Le Code - (mise à jour le 16 avril 2016)

 /* * ---------------------------------------------------------------------------- * 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 #include #include #include #include #include #define RST_PIN 9 // Configurable, see typical pin layout above #define SS_PIN 10#define Green_LED 6 //pin for green "door unlocked" indicator LED #define Red_LED 7 //pin for red "door locked" indicator LEDString inputString = ""; String command = ""; String value = ""; String password = "startrek"; // this is the password for opening and closing your door // you can set any pasword you like using digit and symbols boolean stringComplete = false; char array1[]="Swipe To Unlock"; // the string to print on the LCD char array2[]=" Door Locked "; char array3[]=" Door Unlocked "; char array4[]=" Locking "; char array5[]=" Unlocking "; char array6[]=" Accepted "; char array7[]=" Swipe To Lock "; int tim = 1; //the value of delay time// initialize the library with the numbers of the interface pins LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. Servo myservo;String read_rfid; // nfc tags ID String ok_rfid_1="94e68de2"; String ok_rfid_2="f5642a50"; String ok_rfid_3="43ef222993c81";int addr = 1; // initalise eeprom address int eVal = 0; // initalise value to be stored in eeprom int lockPosition; // initialise lockPosition, used to value to sore in eVal int servo_position; int BUTTON1 = 8; // initialise the pin input of the lock/unlock buttonvoid setup() { Serial.begin(9600); // Initialize serial communications with the PC while (!Serial); SPI.begin(); mfrc522.PCD_Init(); inputString.reserve(50); // reserve 50 bytes in memory to save for string manipulation command.reserve(50); value.reserve(50); boolean stringOK = false; { lcd.init(); //initialize the lcd lcd.backlight(); //open the backlight lcd.begin(16,2); } // sets pin modes input/output and lights led pinMode(Green_LED, OUTPUT); pinMode(Red_LED, OUTPUT); digitalWrite(Green_LED, LOW); digitalWrite(Red_LED, HIGH); pinMode(BUTTON1,INPUT); myservo.attach(5); // servo pin number // sets initial locl position lockPosition = EEPROM.read(1); // Serial.print(EEPROM.read(1)); if(lockPosition == 1){ digitalWrite(Red_LED, LOW); digitalWrite(Green_LED, HIGH); } else { digitalWrite(Red_LED, HIGH); digitalWrite(Green_LED, LOW); lockUnlock(); } swipeText();}/* * 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[i], HEX); } }void lockUnlock() { // locks or unlocks door myservo.attach(5); if(lockPosition == 1) { lock1(); servo_position = 0; myservo.write(servo_position); digitalWrite(Red_LED, HIGH); digitalWrite(Green_LED, LOW); delay(2500); lockPosition = 2; eVal = lockPosition; EEPROM.write(1,eVal); // Serial.print(eVal); } else if(lockPosition == 2) { lock2(); servo_position = 180; myservo.write(servo_position); digitalWrite(Red_LED, LOW); digitalWrite(Green_LED, HIGH); delay(2500); lockPosition = 1; eVal = lockPosition; EEPROM.write(1,eVal); // Serial.print(eVal); } myservo.detach(); }void swipeText() // sends text to the lcd screen { if(lockPosition == 1){ lcd.clear(); //Clears the LCD screen and positions the cursor in the upper-left corner. lcd.setCursor(0,0); // set the cursor to column 15, line 0 for (int positionCounter1 = 0; positionCounter1 < 15; positionCounter1++) { lcd.print(array3[positionCounter1]); // Print a message to the LCD. delay(tim); //wait for 250 microseconds } lcd.setCursor(0,1); // set the cursor to column 15, line 1 for (int positionCounter = 0; positionCounter < 15; positionCounter++) { lcd.print(array7[positionCounter]); // Print a message to the LCD. delay(tim); //wait for 250 microseconds } } else if(lockPosition == 2){ lcd.clear(); //Clears the LCD screen and positions the cursor in the upper-left corner. lcd.setCursor(0,0); // set the cursor to column 15, line 0 for (int positionCounter1 = 0; positionCounter1 < 15; positionCounter1++) { lcd.print(array2[positionCounter1]); // Print a message to the LCD. delay(tim); //wait for 250 microseconds } lcd.setCursor(0,1); // set the cursor to column 15, line 1 for (int positionCounter = 0; positionCounter < 15; positionCounter++) { lcd.print(array1[positionCounter]); // Print a message to the LCD. delay(tim); //wait for 250 microseconds } } }void lock1() // sends text to the lcd screen locking { lcd.clear(); lcd.setCursor(0,0); for (int positionCounter1 = 0; positionCounter1 < 15; positionCounter1++) { lcd.print(array6[positionCounter1]); delay(tim); } lcd.setCursor(0,1); for (int positionCounter1 = 0; positionCounter1 < 10; positionCounter1++) { lcd.print(array4[positionCounter1]); delay(tim); } }void lock2() // sends text to the lcd screen for unlocking { lcd.clear(); lcd.setCursor(0,0); for (int positionCounter1 = 0; positionCounter1 < 15; positionCounter1++) { lcd.print(array6[positionCounter1]); delay(tim); } lcd.setCursor(0,1); for (int positionCounter1 = 0; positionCounter1 < 12; positionCounter1++) { lcd.print(array5[positionCounter1]); delay(tim); } }void loop() { // checks for lock/unlock button press if(digitalRead(BUTTON1) == HIGH){ lockUnlock(); swipeText(); } // checks if bluetooth has sent a command // if arduino receive a string termination character like \n stringComplete will set to true if (stringComplete) { //Serial.println(inputString); delay(100); // identified the posiion of '=' in string and set its index to pos variable int pos = inputString.indexOf('='); // value of pos variable > or = 0 means '=' present in received string. if (pos > -1) { // substring(start, stop) function cut a specific portion of string from start to stop // here command will be the portion of received string till '=' // let received string is open=test123 // then command is 'open' command = inputString.substring(0, pos); // value will be from after = to newline command // for the above example value is test123 // we just ignoreing the '=' taking first parameter of substring as 'pos+1' // we are using '=' as a separator between command and vale // without '=' any other character can be used // we are using = menas our command or password must not contains any '=', otherwise it will cause error value = inputString.substring(pos+1, inputString.length()-1); // extract command up to \n exluded //Serial.println(command); //Serial.println(value); // checks password from bluetooth and is correct locks or unlocks the door // password.compareTo(value) compare between password tring and value string, if match return 0 if(!password.compareTo(value) && (command == "OPEN")){ // if password matched and command is 'OPEN' than door should open lockUnlock(); // call lockUnlock() function Serial.println(" OPEN"); // sent open feedback to phone delay(100); swipeText(); } if(!password.compareTo(value) && (command == "CLOSE")){ // if password matched and command is 'CLOSE' than door should close lockUnlock(); Serial.println(" CLOSE"); // sent " CLOSE" string to the phone delay(100); swipeText(); } if(password.compareTo(value)){ // if password not matched than sent wrong feedback to phone Serial.println(" WRONG"); delay(100); swipeText(); } } // clear the string for next iteration inputString = ""; stringComplete = false; } // looks for rfid tag to be presented if ( ! mfrc522.PICC_IsNewCardPresent()) return; // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) return; dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); // checks if an rfid tags ID matches the stored list, if so it will then lock or unlock the door Serial.println(read_rfid); if (read_rfid==ok_rfid_1) { //ok, open the door. lockUnlock(); swipeText(); } //Add below as many "keys" as you want if (read_rfid==ok_rfid_2) { //also ok, open the door lockUnlock(); swipeText(); } //Add below as many "keys" as you want if (read_rfid==ok_rfid_3) { //also ok, open the door lockUnlock(); swipeText(); } }void serialEvent() { while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); //Serial.write(inChar); // add it to the inputString: inputString += inChar; // if the incoming character is a newline or a carriage return, set a flag // so the main loop can do something about it: if (inChar == '\n' || inChar == '\r') { stringComplete = true; } } } 

Articles Liés

Serrure RFID Arduino

Serrure RFID Arduino

serrure de l'Arduino RFIDComment ça marche ?Le verrouillage de l'Arduino RFID est une serrure qui s'ouvre facilement, mais il est sûr. L'écluse fonctionne avec une base de données de serveur qui peut enregistrer les codes de la carte. Il y a un lecte
RFID voiture Lock/Unlock v1.0

RFID voiture Lock/Unlock v1.0

Dans cette vidéo, vous me voyez déverrouiller la voiture à l'aide d'un tag RFID, attendre 25sec et les voiture relocks.Vue d'ensemble de baseCe projet décrit un moyen de verrouiller et de déverrouiller votre voiture à l'aide d'identification par radi
Ouvre-porte de Garage Arduino RFID

Ouvre-porte de Garage Arduino RFID

Dans ce projet, nous allons utiliser la puissance de la technologie RFID afin d'ouvrir votre porte de garage, système d'ouverture. Nous allons au pont un lien dans le premier match passer via une carte à relais RobotGeek, ouverture de la porte comme
Serrure de porte RFID avec Arduino

Serrure de porte RFID avec Arduino

Nous voici avec la serrure RFID classique. C' est classique en ce sens « Nous vivons dans l'avenir et considérer pour acquis à ce stade » entiers. Dans ce tutoriel, nous allons configurer un loquet de porte qui s'ouvre avec le coup d'une étiquette RF
Serrure RFID bricolage

Serrure RFID bricolage

Instructions pour construire votre propre faites-le vous-même RFID serrure pour votre maison, garage, etc. de porte.En outre, si vous possédez une imprimante 3D, vous pouvez également utiliser mes dessins affaire ou changer mes dessins pour faire vot
Prototype de serrure RFID vélo

Prototype de serrure RFID vélo

Bienvenue sur mon tutoriel RFID Concept de vélo Lock,Je viens de recevoir ma puce RFID de www.dangerousthings.com implanté dans mon bras et j'ai pensé à des choses à faire avec elle.La première chose que j'ai pensé a été écrit mes données de donar vo
Météo, Bluetooth capable RFID correcteur

Météo, Bluetooth capable RFID correcteur

cette instructable relie le populaire module BlueSmirf Bluetooth au lecteur RFID ID12 et montre comment faire une poussière et étanche (IP55), RFID lecteur qui envoie des ID à votre PC ou téléphone mobile via Bluetooth radio sans un contrôleur micro
Facile Bluetooth activé porte serrure avec Arduino + Android

Facile Bluetooth activé porte serrure avec Arduino + Android

Merci à tous ceux qui ont soutenu ce projet et ont voté pour lui le défi de l'Arduino ! J'ai obtenu le deuxième prix et l'espoir de participer à plusieurs concours d'Arduino dans un proche avenir.Ce tutoriel vous expliquera un moyen simple de faire u
Android / Arduino - contrôle d’accès BLUETOOTH porte serrure électrique Strike Lock

Android / Arduino - contrôle d’accès BLUETOOTH porte serrure électrique Strike Lock

Bonjour tout le monde! Aujourd'hui, j'ai fait un soft pour verrouiller et déverrouiller une serrure électrique à l'aide d'un relais, protégé par un mot de passe. L'app est disponible open source ! Il suffit de me contacter ! Contact suivez l'étape su
Boîte de serrure RFID Arduino

Boîte de serrure RFID Arduino

Salut, aujourd'hui j'ai va vous montrer comment faire une boîte de serrure RFID.Étape 1: préparationVous aurez besoin1 x boîte en bois - http://www.amazon.com/Darice-9151-58-Rectangle-Woo...1 x parallaxe en lecture seule RFID scanner - http://www.par
Sésame, ouvre-toi ! Serrure RFID Arduino et automatismes

Sésame, ouvre-toi ! Serrure RFID Arduino et automatismes

J'ai récemment déménagé dans une nouvelle maison à la campagne et le garçon, que je ne savais pas comment sombre, il pourrait devenir ! Ou combien étrange, sons effrayants, que vous pouvez entendre sans la ville bruit.Pour me distraire de se souvenir
Scure serrure avec étiquette RFID et code PIN

Scure serrure avec étiquette RFID et code PIN

Vous avez coché dans un hôtel et compte tenu d'un tag RFID pour accéder à votre chambre. Si vous avez perdu votre carte, et quelqu'un d'autre avait la carte perdue peut accéder à votre chambre. Ne serait-il pas plus sûr si un autre élément d'informat
Bluetooth PC serrure

Bluetooth PC serrure

Avez-vous jamais été appelé loin de votre ordinateur portable dans une telle affluence que CTRL-ALT-DEL est juste trop demander ? Et je fais le pari, vous jamais allez nulle part sans votre téléphone, même la salle de bain. Je me trompe ? Les télépho
Créer une simple serrure électronique avec la RFID à l’aide d’un RC522

Créer une simple serrure électronique avec la RFID à l’aide d’un RC522

Il s'agit d'une simple procédure pas à pas sur comment faire un verrou contrôlé avec des tags RFID. Je montre quelques mécanismes de verrouillage simples et aussi comment télécharger et installer le module de lecteur RFID de RC522. Toutes les informa