Pinos TX e RX + NFC

olá, estou tendo uma dificuldade com os pinos RX e TX do atmega328 (arduino uno)

O projeto é para abrir uma porta com NFC, o sistema funciona perfeitamente no arduino, criei uma placa definitiva com o proteus e fenolite a placa funciona perfeitamente com o atmega rodei vários testes sem o modulo RFID, o problema esta na comunicação do rfid com o atmega na placa definitiva ja q no arduino eles funcionam perfeitamente, o q eu percebo é q o atmega na recebe o os valores enviados pelo modulo rfid.
este é o codigo

int readVal = 0; 
unsigned int readData[10]; 
int counter = -1; 
char tagId[11]; 
int para = 0;
char* authorizedTags[7]; 

// lista de tag autorizadas
void initAuthorizedTags() {
  // adicionar seus próprios IDs tag aqui
  authorizedTags[0] = "*****FAA3F"; // censurado 
  authorizedTags[1] = "07007*****"; 
  authorizedTags[2] = "*****D53E0"; 
  authorizedTags[3] = "07007*****";
  authorizedTags[4] = "*****D8A09"; 
  authorizedTags[5] = "07009*****"; 
  authorizedTags[6] = "*****97C0F"; 
  }
  
void setup() {                
  Serial.begin(9600);
  pinMode(3,OUTPUT);//rele
 
  pinMode(2,OUTPUT);//buzzer
  
  initAuthorizedTags();
}


int checkTag() {
  int i;
  
  for (i = 0; i < 8; ++i) {
    if (strcmp(authorizedTags[i], tagId) == 0) {
      return 1;
    }
  }
  return 0;
}

void parseTag() {
  int i;
  for (i = 0; i < 10; ++i) {
    tagId[i] = readData[i];
  }
  tagId[10] = 0;
}

void processTag() {
  
  parseTag();
  
  
  printTag();
  
  // busca na lista de tags autorizadas
  if (checkTag() == 1) {
    tagSuccess(); 
  } else {
    tagFailed(); 
  }
}

void printTag() {
  //Serial.print("Valor da Tag: ");
  //Serial.println(tagId);
}


void tagSuccess() {
 
  para = 1;
  }
 


// tag nao autorizada
void tagFailed() {
  //Serial.println("Não Autorizada!"); // nao estou usando o pc
  
 
}


void clearSerial() {
  while (Serial.read() >= 0) {
    ; 
  }
}

void loop() {
  
  if (Serial.available() > 0) {
    
    readVal = Serial.read();
    
    
    if (readVal == 2) {
      counter = 0; 
    } 
    
    else if (readVal == 3) {
      
      processTag();
      
      
      clearSerial();
      
      
      counter = -1;
    }
    
    else if (counter >= 0) {
    
      readData[counter] = readVal;
      
    
      ++counter;
    } 
  }
  if(para ==1){ // tive q criar o if pq nao funciona no void tagsuccess
    digitalWrite(3,HIGH); // rele porta 
    tone(2,4000);// buzzer
    delay(500);
    digitalWrite(3,LOW);
    noTone(2);
  }
  para = 0;
  
}

imagens do circuito

Isso parece-me ser talvez um problema com a fonte de alimentação...

Consegues, nessa placa definitiva, tirar o ATmega e ligar uns fios no RX e TX para ver o que chega com um interface FTDI, por exemplo?

Olhando para as imagens que enviaste, existe uma ligação que não foi completada. Se não me engano é entre o GND e AGND que estupidamente cruzam por baixo da placa. O chato é que depois parece quereres tirar alimentação dali para um connector bastante grande e não vai funcionar.

Outro problema que tens (se bem que não deve estar a dar este problema) é que o teu cristal está a milhas do chip... Isso é mau porque induz barulho noutros sinais e não é bom para o microprocessador. Olhando ao espaço que tens, podias muito bem tê-los colocado mais próximo.

Consegues confirmar que tens um Ground no módulo? Como tens um chão de massa, pode haver ali uma má ligação talvez?

Que software é que usaste para desenhar a placa??

sim o GND esta ligado por um pequeno JUMP. Foi usado o Proteus 8. O tx e rx funciona perfeitamente ligando no arduino. liguei o pino 2 do socket q esta ligado no tx do modulo para o atmega na placa definitiva, no pino 0 (RX) do arduino para verificar a comunicação, o contato esta perfeito, o atmega tb funciona na placa definitiva apenas o RX e TX q nao!

segue o video (placa definitiva + Arduino )

https://goo.gl/photos/DNaBhnN8JVpeRbpi6

sera q devo declarar a entrada do pino

void setup(){ //exenplo

pinMode(0, INPUT); Serial.begin(9600);

} o q achas ?

O código que funciona num sitio tem de funcionar no outro....

já experimentaste o blink na placa nova?

Como gravaste o código no atmega que vai ficar na placa definitiva?

o codigo foi gravado atraves do arduino uno. fiz outros testes e vi q on pino tx e rx funciona apenas quando conectado a uma USB do computador alimentado ele com uma fonte de 9v a placa arduino nao funciona tb o TX e RX apenas na USB, nao sei mas o q fazer pois nao posso deixar ele ligado no PC quero q seja independente do computador apenas a placa :( :(

Ok, vamos por partes.

Uma pilha de 9Volt não é uma boa alimentação para isto... Se puderes lligar umas pilhas de 1.5V em série é bastante melhor.

Mas adiante...

Onde arranjaste esse chip? Já trazia o bootloader? Se tiveste de gravar o programa, pode ter acontecido que não programaste os fuses internos e o chip está a correr a 1MHz... o que não é o que pretendes e certamente que não faz nada bem para a porta série. Daí ter pedido para programares um blink para ver se funciona... se o blink funcionar com os tempos que programaste, é sinal que as temporizações estão correctas e como tal o resto também estará a funcionar.

Acho que vais ter de explicar melhor o que estás a fazer... porque tu tens um chip, tens um Arduino e nós não sabemos que combinação é que estás a falar nos testes que fazes. O teste que eu referi em cima com um chip que funciona na placa do Arduino é interessante de fazer.

Trocar a fonte de alimentação é outro. Já mediste com um multimetro as tensões que tens na placa quando alimentada com a pilha?? Talvez um regulador de tensão com problemas?

É possível fazer o que pretendes sem ter o computador ligado a uma porta USB... no entanto, pareceu-me ver uns relés e uma pilha de 9V não é ideal para alimentar relés e pode ser o que te está a dar dores de cabeça.

O chip é original do arduino uno apenas retirei da placa, ou seja 100% funcionando, ja rodei o blink varias vezes na placa definitiva e tudo funciona.
A alimentação funciona da seguinte maneira, entra na placa definitiva uma fonte 12V 3A e segue direto para os reles q tb sao 12v, a interação atmega e rele é feita por um transistor, para o chip atmega é reduzido a 5v por um lm7805.
Sim foi tudo testado com multimetro a tensão em todos os pontos positivos da placa, 12v para os reles 5v no atmega e 5v no modulo RFID, o aterramento tb foi verificado.
O ultimo teste foi usado a biblioteca <softwareSerial.h>, para testar com outros pinos do Chip, nao funcionou.
Resultado final até o momento, o modulo RFID nao se comunica com o atmega na placa definitiva, apenas na placa arduino alimentado via usb.
isso me deixa muito confuso pois nao faz sentido!

Voltando ao código, tu tens algumas coisas esquisitas lá que talvez seja melhor corrigir... Não é sinal que seja o problema agora, mas:

unsigned int readData[10]; //Estás a guardar char's aqui... então isto devia ser char. 
char* authorizedTags[7]; //isto deveria talvez ser uma matriz.

Tens um osciloscópio ou um analisador lógico para ver o que se está a passar na linha?