Alimentas laplaca con una fuente externa y arduino por USB, no pasa nada, solo compartes GND con la placa y las lineas del puerto serie que trabajan a la tensión adecuada.
Tranquilo que todo es correcto.
Usando una fuente de alimentación externa de 6v y 500mAh, conectando el positivo a la entrada V+ de la placa RFID, y el negativo al V- de la placa RFID y al GND del Arduino, ya me devuelve siempre un valor positivo el método available del SoftwareSerial, es decir, ya reconoce siempre que hay "algo" por TTL, pero en cambio, todos los comandos me devuelven 0 ("Command not understood").
Todas las pruebas las hago ahora con el hardware soldado, evitando así problemas de malos contactos.
En teoría está claro un simple comando:

Le envío SD2, y luego un salto de línea, y debería devolver un OK, pero devuelve un 0:

Por lo que me estoy comunicando correctamente con la placa, pero en cambio, sigue sin entender mis comandos.
#include <SoftwareSerial.h>
#define rxPin 8
#define txPin 9
SoftwareSerial RFID = SoftwareSerial(rxPin, txPin); //RX, TX
int newtag[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // used for read comparisons
int data1 = 0;
void setup(){
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
Serial.begin(9600); // start serial to PC
while (!Serial){
; // espera a que el puerto serial se conecte. Necesario solo para puerto USB nativo
}
RFID.begin(9600); // start serial to RFID reader
}
void loop(){
if (RFID.available() > 0){
Serial.println("OK");
RFID.print(F("SD2"));
/*RFID.write(0x53);
RFID.write(0x44);
RFID.write(0x32);*/
RFID.write(0x0d);//crn->carriage return (en decimal 13: RFID.write(13))
delay(1000);
Serial.println(RFID.read());
RFID.print(F("LTG"));
/*RFID.write(0x4c);
RFID.write(0x54);
RFID.write(0x47);*/
RFID.write(13);//crn->carriage return (en decimal 13: RFID.write(13))
delay(1000);
Serial.println(RFID.read());
RFID.print(F("RAT"));
delay(1000);
for (int z = 0 ; z < 15 ; z++) // read the rest of the tag
{
data1 = RFID.read();
newtag[z] = data1;
Serial.print(data1);
}
Serial.println("");
RFID.flush(); // stops multiple reads
}
else
Serial.println("KO");
delay(1000);
}
Si en vez de enviar el comando como cadena (convertida haciendo casting), lo envío en hexadecimal, el resultado es el mismo (código comentado).
Y si en vez de enviar el salto de línea en decimal, lo envío en hexadecimal, el resultado sigue siendo el mismo (código comentado).
Tabla ASCII:

Se me acaban las ideas, no entiendo ya el problema que puede pasar...
Así es como lo tengo, las partes fijas soldadas, y la fuente conectada de manera "temporal":
