ViejuLCD USB

Ya tengo el prototipo del ViejuLCD versión USB, he preparado el PCB y todo correcto a la primera. Ahora mandaré un par de ellos a un par de compas de vieju.net para que desarrollen software del lado del PC.

viejulcd-protousb-2La idea es hacer un servidor de datos al LCD, que implemente una cola y a la que las aplicaciones que quieran hablar con el LCD se conecten por sockets y dejen el stream de texto/comandos que quieran mandar. Asi no habra conflictos de bloqueo entre las aplicaciones si dos toman el control del puerto al mismo tiempo. Luego tenemos pensado desarrollar varios clientes,  para datos del sistema, notificaciones, etc.

En el lado XT, la idea de JoJo, es hacer un programa residente de DOS (TSR), que capture ciertas interrupciones para recabar datos del sistema y asi enviarla al LCD. Con esta técnica se podria incluso usar el LCD de pantalla externa, capturando las interrupciones necesarias.

Yo he estado haciendo un pequeño demo, para probar los comandos implementados en el firmware del LCD, y la verdad, ha sido un éxito.

Lo programé en ruby, toma el control directamente del puerto, y hace una serie de pruebas del firmware, texto, scroll, niveles de brillo, activacion/desactivación, etc.

Podeis ver un video del demo a continuación:

ViejuLCD

Estoy junto con la gente de Vieju.NET prototipando un pequeño dispositivo que nos ha parecido divertido e interesante tener. Un display LCD conectable al puerto USB. Aunque ya hay muchos de estos dispositivos, queriamos hacer uno que tanto el hardware como el firmware fueran libres, y además, diseñar un protocolo muy simple para poder usarlo desde cualquier lenguaje, maquina, etc.

El resultado es el ViejuLCD… el LCD está controlado por un attiny2313, y para la comunicación al final hemos optado por dos versiones, la USB, con un ft232rl para hacer de interfaz USB/Serie, y una basada en un max232 para poder controlarlo desde un puerto serie normal.

El protocolo es muy sencillo, y está documentado en el wiki. Basicamente se envian caracteres ascii que se muestran en pantalla, salvo que se reciba el ascii 0x09, que entonces  se pone en modo comando e interpreta un cierto número de bytes siguientes dependiendo del comando que le mandemos.

La idea es desarrollar varios módulos para ciertos programas, como por ejemplo el MAME, para que nos muestre los créditos que nos quedan, un monitor de recursos del sistema, un TRS para DOS con diversas funciones…

En el siguiente video podeis ver la versión serie recibiendo datos desde un PC XT ejecutando MSDOS 3.3.  Un simple programa hecho en TurboC hace la magia:

Insoladora con LEDs UV y temporizador.

Estoy haciéndome una insoladora de PCB’s con LEDs UV. La idea me la dieron los chicos de http://radikaldesig.com/, que estuvieron trabajando en una. Después de hacer el PCB con los LEDs en una protoboard de tiras, pensé que sería interesante tener un temporizador que se encargara de apagar automáticamente la insoladora para no pasarme si se me olvida encendida. Asi que cojí otros trozos de protoboard y me he hecho uno, basado en un attiny2313, un 4511 para gestionar un display LED de 7 segmentos, un relé, y poco más. Podeis ver un video con un test del temporizador a continuación. El temporizador cuenta minutos, pero para hacer las pruebas esta muy acelerado como se puede ver en el video:

En siguientes entradas publicaré el esquema y el código de este temporizador por si os interesa.

EDIT: Os dejo el esquema del temporizador:

Y el código del micro; incluyo un makefile para compilarlo (make), flashearlo (make flash) y flashear los fuses (make fuses). seguramente tendreis que adaptarlo a vuestro programador, puertos, etc:

temporizador1

Programador ICSP AVR

programador-paralelo.jpgAquí está el programador AVR que me he construido, es muy sencillo, está basado en el programador paralelo de ALF, y es compatible con él en el AVRDUDE, así que para programar con él, solo hace falta poner el modelo -c alf en la linea de comandos del AVRDUDE y listo. Es un programador paralelo standard, solo añadiendo un buffer para convertir los niveles del puerto paralelo, y unos leds de estado. Adjunto los esquemas del PCB y la lista de componentes.programador_y_placa.jpg

Placa principal, máscara de componentes
Placa principal, cara inferior.

Componentes: IC1: buffer séxtuplo 4050N, R1-R4: resistencias 1K 1/4W, LED1-4 LED standard 5mm de diferentes colores, C1: condensador cerámico 10pF… un conector SubD 25, y pines de tira para el conector ICSP y la alimentación.

Para la placa ICSP que posteé en la entrada anterior:

Placa ICSP, cara superior
Placa ICSP, cara inferior
Placa ICSP, máscara de componentes.

Y los componentes: Zócalos torneados de 8, 20, 28 y 40 pines (si no encontrais alguno como me pasó a mi, podeis usar tiras de pines torneadas), X1: cristal de 4Mhz, C1 y C2: condensadores cerámicos de 22pF, LED de 3mm, R1 resistencia de 200 Ohm y pines para el conector ICSP.

Utilizo zócalos torneados porque se pueden soldar bastante bien a las pistas de la cara superior, al no llegar el plástico hasta abajo como en los zócalos normales.