martes, 20 de septiembre de 2011

Papershield LCD

Una vez que parece que puedo subir programas al microcontrolador, estaría bien ver alguna información de lo que hace para cuando no lo tenga conectado al ordenador. Para eso Arduino tiene una librería de uso de pantallas de cuarzo líquido (LCD) y unas instrucciones de uso muy curras. El problema es que son diez cables a conectar cada vez que se quiera usar, mejor hacerme uno de esos chismes que llaman "shields" y que sirven para enchufar un aparato al Arduino, en este caso paperduino, directamente y ya se pueden empezar a usar.

El método usado es el método paper, con el que con una pegatina que nos imprimimos tenemos una guía de donde va cada componente y por donde iría cada cable. Uso "perfboard" ya que me permite más libertad a la hora de ir colocando los componentes según vaya encontrando problemas o se me ocurran nuevas soluciones, aunque se tiene que soldar más. Para instrucciones detalladas de cómo hacer un "paper" os recomiendo la página de Txapuzas, mi cámara no es ninguna maravilla y las fotos de cerca no salen nada bien, asin que paso a relatar los pormenores.

Hardware necesario:

Un Paperduino.

Tiras de pines hembra una de 1x14, dos de 1x4, una de 1x6 y una de 1x8, como las tiras vienen con más agujeros se recortan con cuidado y es buena idea lijar los bordes.

Tiras de pines macho, para la placa preferiblemente largos, los del LCD a gusto de cada cual. Recomiendo antes de soldar estos últimos, hacer pruebas de cómo quedarían en el "paperLCD Shield". Para la placa uno de 1x14, uno de 1x4 y uno de 1x8 para conectar con el Paperduino. Para el LCD uno de 1x4 y otro de 1x6.

Una placa de prototipos 15x14 agujeros, es recomendable lijar y ajustar bien los bordes para que el cable del FTDI no tropiece con la placa si es un Paperduino Perfboard o PCB.

Una pantalla LCD 16x2 compatible con las de Hitachi.

Un potenciómetro pequeño de 10k.

Cables de colores, aunque uso una gama, puede ser cualquier otra pero para que sea fácil identificarlos, se necesitan nueve colores distintos.

Líquidos nutritivos y sabrosos para no deshidratarnos, agua, café, zumo etc.

Software necesario:

Entorno Arduino.

La librería de LCD de Arduino nos permite usar LCDs de 16x2 (dieciséis caracteres y dos líneas), tienen que ser compatibles con los LCD de Hitachi, eso se ve en que deberían tener 16 conexiones y en el "datasheet" debe especificar la siguiente distribución de pines. Por lo general con cinco voltios se alimentan correctamente, aunque hay que tener en cuenta que si tiene luz trasera, esta va a otro voltaje y debería regularse el voltaje que va a usar la luz.

1 VSS (Tierra de la fuente de alimentación).

2 Vdd Alimentación (+5v).

3 Vo Ajuste de contraste.

4 RS Señal de selección de registro.

5 R/W Lectura/escritura de datos.

6 E Señal de activación (enable).

7 DB0 Bus de datos.

...

14 DB7 Bus de datos.

Y adicionalmente, si tiene luz trasera, A (ánodo, positivo de la luz) y K (cátodo, el negativo), también funcionan el 15 y el 16 para este menester.

Arduino va a usar los pines del uno al seis y del once al catorce, por lo que podemos soldar unas tiras pines a la pantalla para luego poderla enchufar directamente al shield e ir intercambiando entre pantallas según las vayamos rompiendo (yo suelo confundirlas con galletas al desayunar) o necesitemos que estén orientadas de distintas formas. Por ejemplo tengo una soldada con pines doblados, y otra normales.

LCDpindoblado.jpg

LCDpinrecto.jpg

El shield es bastante sencillo, consiste en pines macho que pondríamos a un lado, y pines hembra al otro. Primero pondríamos la tira de pines hembra que quisiéramos colocar en su lugar, y a continuación, con el plástico que junta los pines la más alejado de la placa, encajaríamos los pines macho con el conector para soldar de los pines hembra.

Pinchos.jpg

En la foto he usado pines macho del doble de longitud, eso permite poder conservar el plástico y tenerlos un poco más estables. Al soldar y juntar las piezas de cobre de los pines hembra con los machos, no podemos bajar el plástico hasta el fondo, y eso puede causar malas conexiones al quedar demasiado cortos los pines. Conviene también comprobar bien la soldadura antes y después de soldar los cables y conexiones, pues es un sistema un tanto endeble a menos que se infiltre bien el estaño.

Luego sueldo el potenciómetro que regula el contraste y paso a conectar los pines con los cables correspondientes. El negativo del pot al pin AGnd del paper, el positivo al pin AVcc, y luego los pines del LCD.
LCD Potenciómetro Paperduino
1 VssNegativoAGND
2 VddPositivoAVcc
3 Vo Regulado -------
4 RS --------- D11
5 R/W Negativo AGND
6 E --------- D10
11 DB4 --------- D5
12 DB5 --------- D4
13 DB6 --------- D3
14 DB7 --------- D2

Una vez acabado, queda así. Nótese que hay cables a ambos lados, al ser una placa relativamente pequeña y con muchos cables cruzándose he optado por irlos poniendo un poco repartidos entre los dos lados para evitar líos. Por otro lado las dimensiones del potenciómetro pueden variar, quedan como referencia los colores azul para el contraste, negro para tierra y rojo para positivo, por si alguien que use esto tenga un "pot" distinto.

LCDShield01.jpg

LCDShield01B.jpg

Hay mil formas de hacerse un shield, esta es una "afoto" de una prueba anterior en la que conecté el voltaje y la tierra a las entradas del Paperduino y además conecté el FTDI. De paso descubrí que hay que tener cuidado con la longitud de los pines y su soldadura.



Podemos hacer pruebas subiendo los distintos sketchs que hay en los ejemplos del entorno Arduino. Y usando el paperFTDI modificado queda tal que asin.



El documento con la pegatina se puede descargar aquí. He puesto también un sketch que permite el scroll de una sola línea en vez de toda la pantalla.

Estas son las instrucciones de cómo conectar un LCD al Arduino.

Página de Txapuzas, con instrucciones detalladas sobre el "método paper" y un bonito adaptador de este "shield" para usarlo con un Arduino.

En el siguiente post iré contando mis venturas y desventuras con los multiplexores para poder leer muchas señales analógicas de distintos sensores y ahorrar pines del Paperduino.

Revisión 2

La guía aquí presentada es a modo informativo, manejar y modificar aparatos electrónicos conlleva riesgos que aquel que repita los pasos aquí mostrados debe asumir por sí mismo, no siendo el autor ni el publicante del documento responsables de los accidentes o daños materiales o personales ocasionados por la perpetración de las modificaciones descritas.

domingo, 11 de septiembre de 2011

Revisión del FTDI de Txapuzas

Después de muchos cabezazos con el 50$robot, pensé que debería haber una forma sencilla de ver los datos de los sensores para ver si se ajustaban al programa. Buscando buscando, encontré esta magnífica página donde te explican cómo hacerte un arduino sencillo, el Paperduino, con un poco de paciencia y fusilando los shields de .......... me hice un par de shields, uno para los sensores y servos, y otro para pinchar un lcd que me pudiera mostrar los parámetros de los sensores del flamante paper50$bot que estaba maquinando.


Hete aquí que me resultaba bastante incómoda la forma de programar el paperduino, y me compré en ebay el cable ca-42 para hacer el paperFTDI. Como quiera que uso XP-x64 y los drivers no iban muy bien, empecé a buscar por la "Hinternec" los controladores actualizados, encontrando de paso algunas utilidades para identificar los dispositivos USB, documentación del chip Prolific 2303, que es el que usa el cable, y algunos "hacks" para activar el reset y la alimentación.




Me entró el gusanillo por saber si podría modificar el cableado del chip para activar las señales necesarias, y a base de ensayo, error, multímetro y estaño parece que lo he conseguido. A continuación detallo los pasos a seguir para hacer un USB-232 funcional para el paperduino. Se puede hacer un adaptador para que coincida con los pines ISP del Uno, y supongo, no lo he probado aún, que para coincidir con el ISP del 50$bot, ya que los pines van a las mismas patillas.





Lista de piezas:


Cable compatible Nokia DKU-4 o CA-42. ~4€ en E-bay


Cables de colores de aproximadamente un metro. Dependiendo del cable que te haya tocado uno o tres.


Un retal de stripboard.


Cinta aislante, fixo y cinta adhesiva de dos caras.


Café, agua o refrescos para no deshidratarse.


Herramientas:


Un soldador, estaño, pela cables (yo uso las uñas y un mechero) y un destornillador o algo similar para abrir el encapsulado.


Software necesario:


El entorno Arduino.

Software recomendable:


Enumerador de puertos USB (windows), nos permitirá identificar el chip usado. En Linux podemos usar el hardware info o mirar el dmesg.


Drivers actualizados (windows). Linux ya trae los controladores para este tipo de chips.




Esquema de pines, PaperFTDI-Paperduino-Adaptador RS-232-USB


Modificación respecto al post anterior. Puse CTS en el MISO, cuando debería estar en SCK. Me lié al mirar el circuito, y soldé donde no era. Me llama la atención que funcionara de sin problemas de vez en cuando, pero saltaba muy a menudo un error de sincronzación.




1 GND - GND - GND


2 CTS - D13 (SCK) - CTS


3 Vcc - Vcc (+5v.)- (Vcc del chip adaptador)


4 Rx - D0(Rx) - TXD


5 Tx -D1(Tx) -RXD


6 RTS - Reset - DTR (curioso)


Los pines del adaptador no coinciden con los pines de un RS-232 de 9 pines, se corresponderían con los de un AVR-ISP.




Lo primero es abrir el encapsulado del USB-RS232, yo lo hice con un cúter y rompí unos cuantos soportes para encajar, alguien más mañoso seguro que lo abre sin romper nada, dentro hay un pequeño PCB de dos capas, con el chip y varios puntos de conexión.


Prolific cara A.jpg Prolific cara B.jpg




Localización de VCC, CTS y DTR en el chip Prolific 2303.


El chip soporta una tensión de 5v a través del VCC, midiendo con el multímetro, esta corriente es constante a 100mA desde el momento en que se enchufa al puerto USB. En el datasheet indica que es para alimentación externa, o al menos eso he creído entender, así que decidí alimentar al Paperduino con ella, soldando un cable del pin Vcc hasta el inicio de la entrada de 5v en mi Paperduino perfboard tal que así.


Paperduino VCC.jpg




Y soldar un cable desde el chip hasta el conector.


Prolific VCC.jpg




En mi chip venían identificados los puertos, en caso de no ser así, para identificar VCC basta con poner tierra en el metal externo del USB e ir probando hasta encontrar un voltaje de +5v, el resto son de 3,3 o menos.




(No son las mejores soldaduras del mundo, ni soy un gran soldador ni el soldador está para muchos sustos, que me senté encima de el y el pobre quedó así. El caso es que parece funcionar.)




Localizando DTR y CTS.




Hay tres señales de 3,3v, una es DTR , otra RTS y otra CST, la principal diferencia es el momento en que empiezan a ponerse a cero y los saltos que hagan. Mi multímetro no reacciona muy rápido, por lo que lo hice mirando las letras en el chip. El truco está en enchufar el chip, pero no el arduino, abrir el software de arduino y subir un sketch, la señal de 3,3 voltios que antes se apague debería ser DTR y esa la conectamos a reset, la otra sería CTS, y la que no parece variar es RTS. Curiosamente el reset no me funciona con RTS, que es donde está enchufado en el Paper FTDI, sino en DTR.


Prolific CTS.jpg Prolific DTR.jpg


En el Paperduino necesitamos conectar CTS al pin adecuado (SCK), que es D13.


Paperduino CTS.jpg




Por último queda subir un sketch al Paperduino y si no se sale humo y empieza a ejecutar el programa, lo más probable es que el invento haya funcionado y ya tengamos un FTDI casero marca "El Cheapo" de última generación. De vez en cuando me falla y enchufando y desenchufando el USB vuelve a funcionar, supongo que tendría que revisar los puntos de soldadura.


Nota: La primera vez que lo conecté el led del pin 13 se apagó. Un buen rato después, volví a hacer pruebas con otro cable y volvió a funcionar. En estos momento funciona perfectamente, se ve que he soldado mal el cable.


El documento con la pegatina de la parte de atrás modifucada, esta aquí.




Revisión 2


La guía aquí presentada es a modo informativo, manejar y modificar aparatos electrónicos conlleva riesgos que aquel que repita los pasos aquí mostrados debe asumir por sí mismo, no siendo el autor ni el publicante del documento responsables de los accidentes o daños materiales o personales ocasionados por la perpetración de las modificaciones descritas.


Este documento se adscribe a la licencia CC tipo tres, que permite la reproducción del mismo, previa autorización del autor.