LCD PC1602F-B en Raspberry Pi por GPIO

Escrito el 21 junio 2013 por Luis Ignacio Díaz Martínez


Bueno, la verdad es que hace mucho tiempo que tengo pendiente documentar esto… la verdad es que es una de las primeras cosas que hago con mi Raspberry Pi! 

Existen varias formas de conectar un LCD 16×2 a nuestra Raspberry Pi de manera más optima como por ejemplo con el método de I2C que explicaré en otro artículo con más calma. Este método es realmente sencillo a la par de práctico donde podremos observar y comprender el funcionamiento de los puertos GPIO de nuestro juguetito… así como una introducción al lenguaje de programación Python!

Antes de empezar

Tenemos que tener claro que este artículo describe una forma diferente de conexión de un LCD de 16×2 a nuestra Raspberry Pi debido a que el modelo que utilizo de pantalla tiene los pines 15 y 16 al principio del tramo por lo tanto el esquema varia…

Normalmente se utilizará una resistencia variable para regular el contraste, no obstante yo no la utilizaré ya que Raspberry Pi no es capaz de alimentar el LCD a plena potencia y por lo tanto los niveles de contraste y luz no son elevados ni necesitan regulación alguna.

También quiero aconsejaros leer el artículo que escribí anteriormente sobre los puertos GPIO para tener una cierta base de funcionamiento de estos.

Lista de la compra

Algunos elementos ya los tenía… pero los que yo he utilizado son los siguientes:

  • 1 x LCD 16×2 con controlador hitachi HD44780
  • 1 x Raspberry Pi ( tipo B )
  • 1 x Protoboard
  • 1 x Cables de conexión

Eso es todo… luego tenemos complementos adicionales que facilitarán el trabajo como:

  • Raspberry Pi board connect
  • Coca-cola con hielo y limón

Creo que no me dejo nada… para empezar es bastante poco material.

Esquemas

En los esquemas detallaré como se realizarán las conexiones entre el LCD y la Raspberry Pi.

Esquema visual

Podemos observar la Raspberri Pi y justo debajo la protoboard! el color de los cables es indiferente… más adelante podemos ver un esquema relacional de los pines que se utilizarán y donde irán conectados.

RaspBerryPi_LCD16x2_bb_red

En la imagen podemos ver como he utilizado dos cables amarillos… sencillamente, me he quedado sin colores! los cables rojos ( positivo ) y negros ( negativos ) indican eso… y el cable blanco ( negativo ) está es el contraste del LCD! que va conectado directamente a negativo.

Electrónico

A continuación podemos ver el esquema electrónico donde por un lado tenemos los pines GPIO de nuestra Raspberry Pi y por el otro el PC1602F-B relacionados…

RaspBerryPi_LCD16x2_esquema

En lo único que se tiene que prestar atención es en las conexiones que contienen el positivo y el negativo que alimentan el LCD!

Paquetes necesarios

El control de los puertos GPIO lo vamos a realizar por medio de Python.. y por lo tanto necesitaremos su entorno de desarrollo para que funcione el código fuente que más tarde expondré…

Una vez tenemos los paquetes instalados en nuestra distribución… instalaremos el control de GPIO de la siguiente forma…

Ahora lo tendríamos que tener todo listo para que nuestro código funcione sin problemas…

Código fuente

No me gusta apropiarme del trabajo de los demás… el código ha sido extraído de Adafruit, aún que he realizado algunas modificaciones en el código para adaptarlo mejor… así como el renombrado de los ficheros (para mejor comprensión) en mi repositorio exclusivo para Raspberry Pi en mi cuenta de GitHub que poco a poco iré ampliando.

Para empezar, primero lo descargaremos…

Y ahora accederemos al directorio…

Y podemos ver que tiene el siguiente contenido:

Donde podemos ver el fichero «example.py» el cual contiene el mensaje y ejemplo que enviaremos a nuestro LCD.

Funcionamiento

Ahora que tenemos el código y que sabemos donde situarnos… vamos a ver el código de «example.py» para poder modificar el mensaje que saldrá por pantalla…

Que contiene lo siguiente…

Como podemos ver es un sencillo script que realiza una llamada a la librería de «rpi_CharLCD.py» y que más tarde realiza un búcle (while) donde envía el mensaje cada dos segundos (sleep(2)).

Utilizando la función «lcd.message» enviamos el mensaje a nuestro LCD, así mismo utilizando «lcd.clear()» limpiamos la pantalla.

Para ejecutar el script lo realizaremos de la siguiente forma…

Y podemos ver el mensaje por pantalla…

Casos prácticos

Bueno, una vez hemos visto el ejemplo podemos hacer un script que realice una llamada a la función que imprime el mensaje en el LCD, que por ejemplo envíe una dirección IP o el último acceso al sistema… incluso errores… aquí tendríamos que imaginar y crear.

Como hemos visto, tenemos grandes posibilidades asociadas a ello! tan solo toca imaginar…

Referencias

Alguna de las referencias que he utilizado…


Cargando...

Comentarios: