Como conectar una comandera / ticketeadora epson a un arduino

11 nov 2015 by shadow_of__soul, No Comments »

epson-tm-375-tickeadora-comandera-impresoras-tm-u375

 

Hace unas semanas, consegui en un remate online una comandera / impresora de tickets Epson TM-U375. Mi idea era conectarla a un arduino para ver que podia hacer. La tarea fue un poco engorrosa, a pesar de que usa una interfaz RS-232 (serial) con un conector DB25, habia poca informacion en internet y un poco confusa. Ademas, tuve que comprar un cable echo por que aunque lo iba a armar yo mismo, no daba nunca con la configuracion correcta. Pero vamos a los echos:

1) Cable

A pesar de tener como entrada una ficha DB25, de tipo paralelo, en realidad el protocolo es Serial, RS-232. Por eso el cable de esta impresora, es DB9 en su otro extremo, para conectarlo al puerto serial de la PC.

rs232-db9-connector

db9-connector-pins

 

Como ven arriba, esta la el arreglo de pins en el conector de la PC. Tranquilos, que no vamos a usar todos, y hasta me sorprendi al darme cuenta de que usa aun menos de los que deberia. Por alguna razon, el cable de esta impresora, tiene solo 5 cables:

db9-db25-epson-schema

 

Osea que el Arreglo de los pins, como ven en la imagen es:

db9 pin              db25 pin
1 CD ———-> 6 CD
2 RX ———-> 2 TX
3 TX ———-> 3 RX
4 dtr ———-> 6 dtr
5 gnd ———-> 7 gnd
6 dsr ———-> 20 dsr
7 none
8 cts ———-> 20 cts
9 none

Por alguna razon, CD y DTR (pin 1 y 4 en el db9) son unificados en el pin 6 del DB25 y lo mismo sucede con DSR y CTS (pin 6 y 8 en el db9), despues se unifican el pin 20 del DB25

2) Conectar al arduino

Ahora, para conectar al arduino, a pesar de que este tiene entradas serials, no podemos hacerlo directamente, por que el protocolo serial de la impresora, usa 10V/12V y el arduino no puede soportar ese voltage en sus I/O inputs. Para solucionar esto, necesitamos poner en el medio, un level shifter. El mas comun y simple, es el MAX232 (hay otros modelos que son muy parecidos). Esta es la parte que mas me causo problema, por que hay muchas configuraciones de como armarlo. La que me funciono, es esta (gracias a esta pagina por el esquema):

rs232-arduino

 

 

Como ven, van a necesitar 4 capacitores de 1Uf y 1 de 0.1 Uf. Y para que sea mas preciso, asi iria el esquema de conexion entero con el arduino y el DB25 a la impresora:

rs232-a-db9

 

Del ado del arduino

 

Pin 11 del max232 a TX del arduino

Pin 12 del max 232 a RX del arduino

Pin 10 a un PWN pin

Pin 11 a otro PWN pin

Del lado del DB9

Pin 1 y 4 del DB9 van juntos al Pin 7 del max232

Pin 2 del db9 al Pin 13 del max232

Pin 3 del db9 al Pin 14 del max232

Pin 6 y 8 del db9 al Pin  8 del max232

Pin 5 del db9 a GND

A imprimir !

Si conectaste todo correctamente, es hora de imprimir algo ! Gracias a este post en el foro de arduino un user sabia los commandos serials para inicializar la impresora:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void setup ()
{
Serial.begin(9600); //Epson default printer settings for baud rate
}

void loop() //looping sequence
{
printFromAtoZ();
delay(1000);                         //delay for 1 second
}
void printFromAtoZ()
{
unsigned char caracter = 'A';
Serial.write(0x1B);             //ESC POS command
Serial.print('@');                   //ESC POS initialize followed after command
for(uint8_t i = 0; i<=25;i++){
Serial.write(caracter++);
}
Serial.write(0xA);                    //Print and Line Feed from Buffer
}

Y voila ! deberia estar imprimiendoles el abecedario :D

Y si no imprime?

Bueno, sera momento de investigar. Recomiendo seguir este orden:

1) Verificar el cable que funciona conectandolo solo a la PC e imprimir desde ahi

2) Verificar que el conectado del max232 es el correcto

3) Verificar voltages de entrada y salida del max232

4) Saber seguro el baud rate de la impresora. En mi caso, el mio es 9600, para saberlo, cuando la encienden, mantienen apretado el boton release y paper slip para que haga la impresion de prueba, ahi se los va a decir.

Y eso fue todo ! Espero que a alguien mas le sirva :D

Etiquetas: , , , ,

Sigueme !

Follow Me! Follow Me! Follow Me!