10 Online
4 Member And 6 Guest
Today Visits : 4370
Yesterday Visits : 4063
All Visits : 513832

Welcome to Electronoobs Q&A, where you can ask questions and receive answers from other members of the community.



Categories


0 like 0 dislike

Buenas tardes, estoy intentando hacer una aplicacion que abra una puerta. Pero por medio del RFID y una APP.. Primero valido las tarjetas registradas y si es correcta la lectura necesito que me envie un 1 a la aplicacion. Y en la aplicacion, en caso de recibir el valor uno en una etiqueta, deberia permitirme activar el Servo al dar click al boton para abrir la cerradura.

El codigo de Arduino es:


#include <SPI.h>   
#include <MFRC522.h>
#include <SoftwareSerial.h>
#include <Servo.h> // servo library
Servo servo; // servo name
int bluetoothTx = 2; // bluetooth al pin 3
int bluetoothRx = 4; // bluetooth al pin 4
int pinServo = 3;
char txChar;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
#define greenLed 7     
#define redLed   5     
#define yellowLed 6    

byte myCards[] = {0x07,0x1D,0xCD,0x26,   //SELLO PERMITIDO
                  0xD2,0x84,0x41,0x31,
                  0x09,0x48,0x55,0xD3,
                  0x04,0xEB,0x18,0xB2}; 
                  
int successRead;     

byte dummy = 0x00;

byte readCard[4];
int valor = 0;
  

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); 


void setup() {
 
  pinMode(greenLed,OUTPUT); 
  pinMode(redLed,OUTPUT);
  pinMode(yellowLed,OUTPUT);
  pinMode(bluetoothTx, OUTPUT);
  //INICIO
  Serial.begin(9600);
  servo.attach (pinServo);
  servo.write (0);
  bluetooth.begin(9600);                            
  SPI.begin();                                  //Iniciamos protocolo SPI
  mfrc522.PCD_Init();                            
  mfrc522.PCD_SetAntennaGain(mfrc522.RxGain_max);
  // Serial.println("IDENTIFIQUESE...");
}


void loop () {
  do{
  
    digitalWrite(yellowLed,HIGH);
    delay(500);
    digitalWrite(yellowLed,LOW);
    delay(500);
    successRead = getID();
  }
 
 
  while (!successRead);    //Esperando que haya una comunicaciĆ³n con la tarjeta
 
  if (readCard[0] == myCards[4] && readCard[1] == myCards[5]
  && readCard[2] == myCards[6] && readCard[3] == myCards[7] && valor == 0)            
  {  
     valor = 1;
     Serial.write (valor);
     delay(1000);
     Success();
    
   for(int i = 0; i<4; i++) dummy = readCard[i];  
  
   successRead = 0;
  }else  if(readCard[0] == myCards[0] && readCard[1] == myCards[1]
  && readCard[2] == myCards[2] && readCard[3] == myCards[3] && valor == 0)           
  {
   
    valor = 1;
      Serial.write (valor);
     delay(1000);
    Success();    
   
    for(int i = 0; i<4; i++) dummy = readCard[i];
    successRead = 0;
  }
  else  if(readCard[0] == myCards[8] && readCard[1] == myCards[9]
  && readCard[2] == myCards[10] && readCard[3] == myCards[11] && valor == 0)          
  {
 
     valor = 1;
      Serial.write (valor);
     delay(1000);
    Success();    
   
    for(int i = 0; i<4; i++) dummy = readCard[i];
    successRead = 0;
  } else  if(readCard[0] == myCards[12] && readCard[1] == myCards[13]
  && readCard[2] == myCards[14] && readCard[3] == myCards[15] && valor == 0)           
  {
   
    valor = 1;
       Serial.write (valor);
     delay(1000);
    Success();    
   
    for(int i = 0; i<4; i++) dummy = readCard[i]; 
  } else{
    valor = 0;
   
    Error();     
    }

     //Read from bluetooth and write to usb serial
 if (bluetooth.available()){
      txChar = bluetooth.read();

      if (txChar == 'a'){
        servo.write (180);
      //  Serial.println (txChar);
       
     
       }
       else if(txChar =='b'){
         servo.write (-180);
      //  Serial.println (txChar);
       }
  }
}

int getID() {

  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return 0;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return 0;
  }

 // Serial.println("");
  for (int i = 0; i < 4; i++) {  //
    readCard[i] = mfrc522.uid.uidByte[i];
   // Serial.print(readCard[i], HEX);
  }
 
 // Serial.println("");
  mfrc522.PICC_HaltA();
  return 1;
}



void Success(){
 // Serial.println("SELLO PERMITIDO");
  digitalWrite(greenLed,HIGH);
  delay(2000);
  digitalWrite(greenLed,LOW);
  delay(500);
 
}

void Error(){
  //Serial.println("SELLO NO PERMITIDO");
 
    digitalWrite(redLed,HIGH);
    delay(2000);
    digitalWrite(redLed,LOW);
    delay(500);
  //  Serial.println(" ");
    //Serial.print(valor);
    //delay(400);
  
}

Y el codigo de la App es el siguiente:

Espero que puedas ayudarme!...Es para una tarea. Saludos.

in Arduino by (120 points)

Your answer

Your name to display (optional):
Privacy: Your email address will only be used for sending these notifications.
Anti-spam verification:
To avoid this verification in future, please log in or register.
...