Conexión Arduino -> lector magnético

Hola,

Estoy intentando conectar un lector serie de banda magnética pero no consigo que funcione. Aparte de Vcc, Gnd, Tx y Rx se debería de conectar Rts y Dtr? Con un PC normal si que comunica y con la Arduino he probado con un max3232 haciendo un conversor de rs232 a ttl pero no hay manera.

Un saludo.

Hola, en un principio dtr y rts no debería hacerte falta, son para otros menesteres.

El lector tiene salida serie?, lo conectas directamente al puerto rs232 del pc???, me magino que no tiene salida a nivel ttl.

Si la salida es serie y tu conversor serie a ttl está correcto (ojo que no te sirve un conversor usb a serie-ttl), prueba a cambiar distintas velocidades del puerto serie variando el baudrate, como 4800, 9600, 56700, etc

Mándanos más información, tal como alguna foto del elemento en cuestión, marca y modelo, esquema que usas para el conversor serie a ttl, modo de conectarlo todo entre sí, etc.

Saludos

Hola,

El lector lo conecto directamente al PC por puerto serie y con pccom si que leo la trama de las tarjetas.

La manera de conectar ha sido.

Arduino los puertos RX y TX (aunque este no hace falta del todo) a 10 y 8. Al otro lado al T1 y R1 del max3232. y las salidas, RX y TX y GND al lector. Este tipo de lectores lleva handshaking si no me equivoco pués si no pongo a +5v el RTS y el DTR no enciende un led, DRS y CTS los tengo desconectados aunque he leído por internet que són los que indican que están listos para enviar.

El código es este

He estado probando con este código estándar pues con el mío tampoco funcionaba.

Un saludo y mil gracias.

Cumplir con las Normas del foro por favor!!

Usar tags para colocar códigos

**Códigos sin etiquetas no. **
Vuelve a tu post #2 fjmartos y edita colocándolo como se ve en TODO el foro.

Alternativa de conexionado

RTS y CTS debes puentearlo, si todo lo demás no funciona. Esa es la configuración mínima pero es raro que se necesite.

#include <SoftwareSerial.h>

SoftwareSerial barcode = SoftwareSerial(10, 8, true); // RX, TX (TX not used, but the constructor wants a number anyway)
String numero;
char c;
void setup()
{ 
 
  Serial.begin(9600);
  Serial.println("Barcode Scanner Test!");
 
  // Open the SoftwareSerial port of the barcode scanner
  barcode.begin(9600);
 
  delay(1000);
}

void loop()
{
 
if (barcode.available()){
numero = "";
  while(barcode.available()){
 c = Serial.read();
 Serial.println(c);
numero += c;
delay(1);
 }
Serial.print("\n\rNumero leido desde el lector magnetico: ");
Serial.println(numero);
}                  
                   
}

El puerto softwareSerial, 'NO' dispone de las mismas ventajas que el puerto serie nativo de arduino, pero esto de todas formas te deberia de funcionar, cuentanos que ocurre

Saludos

Hola,

Pues he estado probando vuestro código y tampoco consigo que lea. He probado de conectar la arduino a través de un max3232 al lector y sin él. Entiendo que al conectar el lector directamente al PC, la arduino necesita si o si el Max para convertir a niveles TTL.

Estoy pensando de coger una shield de rs232 para ver si el problema lo tengo en el max.

Un saludo

Estas usando correctamente el lado TTL y el lado RS232 con el MAX232? Revisa las tensiones. Revisa todo porque debería funcionar.

Si, el problema creo que debe de estar en el handshaking aunque no se por que. He probado la comunicación entre 2 arduinos directamente a TTL o a través de 2 conversores RS232 a TTL( los de elecfreaks) y funciona bien (por descartar el código).

Por las pruebas que sigo haciendo, el dispositivo lector no reconoce que en el otro lado esta conectado a algo y esperando recibir.

Un saludo.

Colocate con un terminal de PC pero con un cable armado por ti en el que solo tengas gnd tx y rx. lo demás debes hacerlo funcionar. Digo esto porque es mas fácil de creer desde la pc cuando las cosas funcionan.
Debes alternar con RTC y CTS por un lado y DSR y DTR por otro
La conexión minima sabemos que es GND RX TX. Si eso no funciona, prueba con
RX TX cruzados con el lector y CTS y RTS unidos del lado del sensor magnético siempre.
Si no funciona prueba con
lo mismo mas DSR y DTR unidos.