RFID y Bluetooth cierre (4 / 4 paso)

Paso 4: El código de-(actualizado el 16 de abril de 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; } } } 

Artículos Relacionados

Coche de RFID Lock/Unlock v1.0

Coche de RFID Lock/Unlock v1.0

En este video me ves abrir el coche mediante una etiqueta RFID, espere 25 segundos y el coche rebloqueo.Resumen básicoEste proyecto describe una forma para bloquear y desbloquear su coche utilizando Radio frecuencia identificación (RFID, para más inf
Altavoz portátil Bluetooth de 40W (versión mejorada!)

Altavoz portátil Bluetooth de 40W (versión mejorada!)

¡ Hola todos! Hoy voy a mostrarte cómo construí este altavoz portátil! Después de casi 2 años de investigación, diseño y pruebas, he venido para arriba con este diseño. Pone 40W de potencia de sus 2 tweeters, woofers y pasivos, cuenta con el más reci
Sistema de altavoces DIY satélite Bluetooth con Subwoofer

Sistema de altavoces DIY satélite Bluetooth con Subwoofer

En este Instructable voy a mostrarle cómo creé un sistema de altavoces Bluetooth vía satélite utilizando algunos kits de altavoz, abedul Báltico y un tablero de amplificador de Bluetooth.Así que lo primero que miré fue el tamaño de mi espacio y en es
Altavoces portátiles Bluetooth

Altavoces portátiles Bluetooth

El objetivo principal de este proyecto era crear un altavoz que mímico $200 Soundlink altavoz calidad de Bose a una fracción del costo. Mientras estaban en un horario estricto y a menudo tuvo que renunciar a partes más baratas de China para las unida
Tubo de Bluetooth Radio receptor No.6 "totalmente portátil

Tubo de Bluetooth Radio receptor No.6 "totalmente portátil

El sexto proyecto es el Radio portátil de tubo.Una vez hice algunos amplificadores portátiles con pilas. Pero de todos modos necesita cables para conectar fuentes y altavoces, porque no había tal manera conectarse entonces fuente sin cables. Pero aho
Boombox/altavoz portátil con Bluetooth

Boombox/altavoz portátil con Bluetooth

por lo tanto, tienes un altavoz Bluetooth pero su falta de volumen y bajos, este proyecto me costo bajo £40 ($60) y paquetes de un golpe fuerte. el proyecto me tomó unas vacaciones de verano enteras así que alrededor de 6 semanas. la duración de la b
Bluetooth control LED portátil con Intel Edison

Bluetooth control LED portátil con Intel Edison

¿Que nunca imaginó un mundo donde se puede cambiar el patrón de un vestido con un empuje del botón? ¿O a poder cambiar la altura de un dobladillo con un golpe de dedo? Tecnología permite control y personalización en lugares donde normalmente no lo ha
Bluetooth policía Faro

Bluetooth policía Faro

Esta mini gira beacon de policía se puede activar y desactivar de forma remota, desde un smartphone vía Bluetooth Low Energy (BLE).En este proyecto, obtendrá experiencia práctica:a) utilizando una Haba azul claro (versión antigua), una pequeña placa
Cómo hacer oídos de música activar bluetooth

Cómo hacer oídos de música activar bluetooth

recientemente he estado pasando mucho tiempo en la tienda y que puede ser muy fuerte; ya que quiero conservar mis tímpanos, protección auditiva es importante. Pasar horas solo escuchando amortiguado clangs y pulido no es que divertido, sin embargo, a
Arduino y Android basado en Bluetooth control de contraseña protegida inteligente cerradura de la puerta (excepto su casa)

Arduino y Android basado en Bluetooth control de contraseña protegida inteligente cerradura de la puerta (excepto su casa)

Todos estamos preocupados por la seguridad de nuestro hogar. Mundo cada vez más inteligente y más inteligente cada día y desea controlar y asegurado lo nuestro de manera más inteligente. En este tutorial que voy a explicar cómo hacer basados en un ar
Arduino bluetooth tanque

Arduino bluetooth tanque

se construyo un tanque de arduino bluetooth para aprender cómo programación y cómo funciona la comunicación bluetooth entre el teléfono inteligente android y HC-06 o HC-05. El brazo robótico se unen para que usuario controlar y capturar algo que por
Arduino controla caja de bloqueo con solenoide y RFID

Arduino controla caja de bloqueo con solenoide y RFID

La caja de la cerradura RFID combina Arduino, RFID y un solenoide para hacer su propio personal seguro! La caja de la cerradura se abre sólo a las tarjetas de clave que haya programado en el sistema, cierre todos los demás fuera.Esta guía mostrará có
Controlador Bluetooth PS2

Controlador Bluetooth PS2

El regulador original de PlayStation 2 sigue siendo un control sólido y bien construido por estándares de hoy. Mejor aún, puede tener hoy en día por una fracción del costo de un controlador con la misma calidad.Hoy estamos recuperando este controlado
Adaptador de ratón teclado Bluetooth

Adaptador de ratón teclado Bluetooth

¡ Hola! Esta semana es el Minion Bluetooth teclado Mouse adaptador!Conecte un teclado estándar o ratón y podrá utilizar como un ratón o un teclado Bluetooth.También es NFC habilitado así que directamente podemos aprovechar a la par con un dispositivo