¿Cuántos de ustedes alguna vez no habrán utilizado un Nokia 5110 o 3110? Estos móviles creados por la compañía finlandesa Nokia dieron mucho de qué hablar hace casi una década donde el mundillo de la telefonía comenzaba a expandirse hacia millones de personas. En esta entrada conocerás cómo se puede utilizar la pantalla LCD que traía estos móviles a través de Arduino. ¡Da un vistazo!
El móvil Nokia 5110, como se menciona anteriormente, utilizaba una pantalla para mostrar las diferentes aplicaciones que se tenían: juegos, configuración, directorio telefónico, entre otros. A pesar que ahora ya no se utilicen este tipo de móviles debido al boom de los móviles inteligentes, muchos nos aprovechamos de aquellos componentes electrónicos que hicieron en ese momento al Nokia 5110 o bien 3110, uno de los celulares por excelencia, a pesar de su gran tamaño.
En esta entrada voy a enseñarles cómo podemos trabajar con la pantallaLCD que utilizaban estos famosos celulares. Técnicamente se conoce como el PCD8544. Es una matriz de 48×64 píxeles monocromática. Puede ser comprada por menos de diez dólares en sitios como ebay, adafruit, sparkfun. La pantalla a utilizar en este tutorial ha sido comprada a través del enlace en ebay correspondiente.
Comento un poco acerca de esta pantalla. Trabaja con SPI, si no conoces qué es SPI puedes visitar esta entrada donde explico cómo funciona este protocolo. Trabaja a 3.3 V, contiene cuatro leds en cada uno de sus cuatro lados permitiendo iluminación en la pantalla, consume poca potencia, cuenta con una velocidad de transferencia máxima de 4 Mbits/s y contiene ocho pines. El pinaje de la pantalla puede verse en la siguiente imagen:
El pinaje del LCD puede variar dependiendo del fabricante. Para la pantalla utilizada, además de tener ocho pines en un lado, también cuenta con ocho pines en su lado contrario para conectar en cascada otro LCD. Por otro lado, se tiene una memoria DDRAM que cuenta con seis bancos de 84 bytes, también tiene un contador de programa que se encarga de hacer el barrido en la memoria y un registro de desplazamiento que se encarga de transformar los bits que llegan a través del pin SDIN o MOSI en forma serial a paralelo.
¿Cómo trabaja la pantalla del Nokia 5110?
No explicaré muchos detalles de cómo funciona la pantalla, pueden ver a profundidad su funcionamiento en la hoja de datos del componente. Haz clic aquí para encontrar el datasheet.
Sin embargo, considero mencionar aspectos que llamaron mi atención. La pantalla tiene un set de instrucciones pequeño y fácil de entender. En el set de instrucciones podemos decirle a la pantalla cómo escribir en la memoria ram, qué modo vamos a utilizar, si vamos a enviar una señal de comando o una señal de información.
Por ejemplo, para escribir en la pantalla existe dos maneras: haciendo un barrido horizontal o vertical enviando 1 byte cada ocho ciclos de reloj. Podemos ver la respectiva ilustración del direccionamineto tipo horizontal:
En donde para la transmisión, se envía primero el dígito más significativo MSB. Para este tutorial se utiliza el direccionamiento de memoria horizontal.
Esta pantalla suele ser ideal para proyectos sencillos donde no se requiera tanto consumo de energía y presentar información elemental como voltajes, temperaturas. Sin embargo, estas no son las únicas aplicaciones que se le pueden dar a esta pantalla.
¿Qué haremos? Bien, vamos a enviar datos a través de Arduino hacia la pantalla utilizando una librería. Esta librería fue creada por Nathan Seidle y modificada por iPadNanito de electrónica de invernopara transformar una imagen tipo mapa de bits a un vector binario que puede ser tomado por el Arduino y así ser enviado a la pantalla. Yo he hecho algunas modificaciones y agregado la compatibilidad con versiones para el IDE de Arduino por encima de la 1.0.
Pueden conseguir la librería a través del siguiente enlace: Enlace a la librería.
Lo bueno de esta librería es que permite asignar los pines como tu desees e implementa funciones básicas para imprimir un string, caracter y posicionarlo en cierta región de la pantalla.
Materiales:
- 1 Arduino UNO
- 1 LCD 5110
- 1 Breadboard
- 1 Resistencia de 270
- Cables de conexión o Arduino Jumper Wires
Paso 1: Creando el circuito
El circuito lo podemos armar a partir del siguiente esquemático:
Asegúrate de conectar la pantalla a 3.3 V y no a 5 V.
Paso 2: Creando el programa
Vamos a crear un código sencillo que te permita escribir un string en la pantalla y posicionarlo en cierta región de la misma. Lo haces con este código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/* Kiara Navarro sophiekovalevsky arroba fedoraproject.org www.panamahitek.com */ #include <Clase911_PCD6544.h> NokiaLCD NokiaLCD(3,4,5,6,7); // (CLK, MOSI, DC, RST, CE) void setup() { NokiaLCD.init(); // Init screen. NokiaLCD.clear(); // Clear screen. } void loop() { NokiaLCD.setCursor(1,0); NokiaLCD.print("Hello World!"); NokiaLCD.setCursor(1,1); NokiaLCD.print("Felicidades!"); NokiaLCD.setCursor(20,3); NokiaLCD.print("Visita:"); NokiaLCD.setCursor(1,4); NokiaLCD.print("clase911.com"); } |
En este código destaco varias funciones:
- NokiaLCD te permite asignar los pines del Arduino para cada pin del LCD.
- NokiaLCD.init() Se encarga de inicializar la pantalla, de enviar los comandos necesarios para que pueda funcionar correctamente.
- NokiaLCD.setCursor(X,Y) Se encarga de colocar el string en la posición X,Y correspondiente.
- NokiaLCD.print(«String») Permite imprimir en la pantalla una cadena.
Como observarás, el código es bien sencillo y fácil de entender.
Paso 3: Presentación del proyecto
Agrego un set de fotos. Espero que les haya gustado y si tienen alguna pregunta, por favor no duden en comentar.