Alteración de cajas registradoras. Parte 1

Buen dia a todos. Hace unos años, una vieja caja registradora fuera de servicio cayó accidentalmente en mis manos. Se llamaba "Elfos Micro-F". Porque Estoy interesado en la electrónica y la programación, incluida la construcción de varios dispositivos en microcontroladores, el dispositivo decidió investigar. Después de desmontarlo, vi:


  • Una placa con relleno electrónico y un microcontrolador AT89C52 en un zócalo
  • exhibir
  • impresora térmica
  • bateria
  • teclado de cine
  • dos LEDs

imagen
Fig. 1 Apariencia de caja


En ese momento, ya tenía la experiencia de crear dispositivos simples desde cero (relojes, relés controlados por el puerto COM, etc.). Entender el dispositivo terminado parecía mucho más difícil. Para empezar, encontré en la red una descripción de este dispositivo, un diagrama y documentación de reparación. Al final resultó que, hay varios esquemas, difieren bastante, aunque los dispositivos se llaman casi lo mismo. Pero al final, encontré el circuito correcto. Él la miró y se dio cuenta de que, de hecho, el dispositivo de pago no es tan complicado.


Tuve que descubrir:


  • cómo programar fácilmente el microcontrolador para no arrastrarlo de un lado a otro, luego al programador, luego de vuelta al tablero
  • Cómo establecer un intercambio con una computadora
  • cómo trabajar con RAM (y había un AT24C08 en serie)
  • cómo dibujar algo en la pantalla
  • cómo obtener pulsaciones de teclas
  • y lo más importante! cómo generar algo significativo para una impresora térmica

En este artículo, hablaré sobre el comienzo de mi trabajo. El objetivo final es crear una impresora térmica a partir de un antiguo cajero automático cancelado.


Parte 1
Inicio


Al principio, decidí abandonar el microcontrolador que estaba en el tablero. En primer lugar, solo podía programarse en un programador, que no tenía para este tipo de controlador. En segundo lugar, tenía poca memoria flash interna para los programas.
Después de haber sido atormentado con la elección, me decidí por el microcontrolador Winbond w78e58b. Estaba en el mismo paquete (plcc44), tenía 32Kb de memoria de programa y más memoria estática interna para almacenar variables, y lo más importante, ¡te permitía programarte usando el programador en circuito sin quitarlo del zócalo!


Pero había una dificultad: para comenzar a programarlo, se necesitó un programador paralelo para que este tipo de microcontrolador flasheara el gestor de arranque, con el que luego cargaría mi firmware. ¡Encontré información sobre cómo crear un programador en Internet, armar un programador y parchear el gestor de arranque!


Luego hubo otro problema: ¡esta unidad no tenía un conector para conectarse a una PC!


imagen
Fig. 2 Placa de interfaz original

Aunque, como leí en los manuales, había un pañuelo, y había enchufes en el estuche del dispositivo y un conector en la placa, pero no pude obtener este emparejamiento. En ese momento no estaba a la venta en ninguna parte, y no costaba mucho dinero. Entonces decidí hacer la interfaz yo mismo. Rompí un enchufe de la caja, desarmé el zócalo de la red local con un conector para RJ45, corté este conector en un pedazo de la placa y lo pegué en la taquilla para el adhesivo termofusible. Como resultado, el par trenzado habitual se insertó perfectamente desde el exterior hasta un clic. Queda por conectar los pines del conector al microcontrolador. Directamente, por supuesto, es imposible, es necesario a través de un convertidor de nivel, por ejemplo MAX232. En un pequeño pedazo de la placa de pruebas, colocó el chip, los condensadores de flejado, soldaron el cableado. Solde un cable para conectarlo a una computadora desde una pieza de par trenzado. Por un lado, un conector RJ45 normal, por otro, una madre DB9 para un conector de puerto COM.


La siguiente tarea fue encontrar un compilador, gratuito y no particularmente difícil para tales propósitos. Me encontré con Keil Microvision. Era una especie de versión demo con un límite de longitud de código. Suficiente para mis propósitos. El primer programa fue simple: enviar a la computadora en el programa de terminal algo así como Hello world!


Escribí un programa, la dificultad estaba solo en la inicialización inicial de puertos y registros de servicio. Pero después de buscar ejemplos en la red, rápidamente me ocupé de esto. Luego, lancé el programa
8051IspWriter, que carga el firmware. Para que el microcontrolador ingrese al modo de bahía de firmware, fue necesario activar el gestor de arranque incorporado. Al final resultó que esto se puede hacer cortando a tierra la salida del controlador antes de aplicar energía. Cuál: se encuentra en la hoja de datos del microcontrolador. El firmware se cargó, después de lo cual apagué, encendí el cajero y vi mi texto en la pantalla del terminal. El sistema funcionó!


Además, decidí controlar un poco la caja registradora, o más bien parpadear el LED. De acuerdo con el esquema, determiné a qué parte del microcontrolador al que va este LED, escribí una simple luz intermitente y el LED comenzó a parpadear al finalizar la compra. ¡El camino hacia la meta final ya se ha hecho visible!


Extractos del código fuente:


void main(void) { UCHAR i; char c; static int data value; UCHAR bCassaTypeOld; UCHAR iNumSymbolsOld; jmpLDROM=0; //            P0 |= 0x01; // PPWR = 1 P1 |= 0x20; // PM1 = 1 P1 |= 0x40; // PM2 = 1 P3 &= ~0x40; // SI = 0 P3 &= ~0x20; // CLOCK = 0 P3 |= 0x80; // LATCH = 1 P3 |= 0x10; // STBA = 1 P3 |= 0x08; // STBB = 1 //          initUart(BAUD_RATE_19200); puts("Hello world!"); while(1) ; } 

Source: https://habr.com/ru/post/es424627/


All Articles