Mostrando entradas con la etiqueta SPI. Mostrar todas las entradas
Mostrando entradas con la etiqueta SPI. Mostrar todas las entradas

miércoles, 22 de junio de 2016

Panel luminoso de Matrices LED 8x8 con driver MAX7219


En este tutorial aprenderemos a controlar las matrices LED de 8×8 con Arduino, en concreto vamos a usar los módulos que llevan el driver MAX7219, y para controlarlos utilizaremos la librería “MaxMatrix.h”, que nos facilitarán enormemente el trabajo. Lo que haremos en cuestión, será mostrar un mensaje en forma de texto que se va a desplazar de derecha a izquierda (Scroll horizontal) a través de las 4 matrices LED 8x8 que conectaremos en cascada, repitiéndose constantemente. 

La Matriz LED de 8×8, está compuesta por 64 LED de 3mm, en color rojo. Internamente los LED, están montados con cátodo común dentro de un encapsulado sólido de fibra de vidrio para protegerles. Algunas de las principales características de las matrices LED 8x8 se describen a continuación: 

·         Voltaje de Trabajo: 4.7 -5.3 V
·         Tensión típica: 5 V
·         Consumo de corriente: 320mA
·         Corriente de trabajo máxima: 2A
·         Temperatura: 0 -50 °C
·         Temperatura de trabajo: 25 

El driver MAX7219 (de Maxim) que contiene cada módulo,  sirven para implementar una interfaz  SPI (Serial Peripheral Interface, que es básicamente un bus de comunicación a nivel de circuitos integrados en el que la transmisión de datos se realiza en serie, es decir un bit después de otro) en cada uno de ellos,  para que se puedan comunicar con nuestro Arduino exclusivamente por medio de 3 pines digitales de salida (DIN, CS y CLK), además de dos pines para la alimentación (+5V) y la masa (GND). A continuación se detallan sus principales características: 

·        Entrada y salida en serie, para necesitar menos pines.
·        Controla displays de 7 segmentos de hasta 8 dígitos, Bar graph displays (Barras de LED) y Matrices de 8×8 o de hasta 64 LED individuales.
·        Solo requiere una resistencia externa para los 64 LED.
·        Incluye decodificador BCD (No hay necesidad de dibujar matrices de caracteres, las lleva incluidas. Mayúsculas, minúsculas y hasta números y signos).
·        Se encarga del multiplexado de los caracteres y dígitos.
·        Incluye memoria de los caracteres.
·        Es compatible con interfaz SPI y QSPI.

Para conectar en cascada las 4 matrices LED 8x8 con driver MAX7219 (aunque por este método podríamos conectar hasta 8), que nos van a hacer falta para desarrollar este proyecto, es imprescindible conectar a nuestro Arduino la matriz LED 8x8 que se encuentra más a la derecha de todas, teniendo en cuenta que el mensaje de texto se va a mover hacia la izquierda. A continuación se muestra la relación de los pines a conectar:

Correspondencia de los pines entre nuestro Arduino y el driver MAX7219

Posteriormente necesitamos conectar las salidas del módulo situado más a la derecha (CLK, CS, DOUT, GND y VCC) a las entradas del siguiente (CLK, CS, DIN, GND y VCC) y así sucesivamente con los restantes módulos, hasta llegar al que esté situado más a la izquierda, el cual no necesita que sus salidas estén conectadas. Como en las matrices LED 8x8 con driver MAX7219 viene rotulado en la parte inferior la función de cada pin y cuales son de salida y cuáles de entrada, solo necesitaremos un poco de paciencia para poder realizar correctamente las conexiones. Un pequeño detalle a tener en cuenta es que el pin “DIN” es el correspondiente a la entrada de datos y el pin “DOUT” es el correspondiente a la salida de datos, con lo que tenemos una referencia a mayores para poder distinguir que grupo de pines son de entrada y cuáles de salida.


Conexión de las 4 matrices LED 8x8 con driver MAX7219

Cabe aclarar que debido a la existencia de infinidad de fabricantes de este tipo de módulos, nos podemos encontrar con el problema de que al adquirirlos, nos vengan sin soldar o que no tengan terminales de conexión en sus pines de E/S, por lo que tendremos que ingeniárnoslas para realizar las conexiones entre los módulos mediante pequeños cablecitos, un soldador, estaño y bastante paciencia, ya que precisamente es lo que a mí me ocurrió al adquirirlos a muy bajo precio en “China”, aunque viendo los resultados obtenidos, merece la pena ahorrarse un dinero aunque tengamos que desempolvar nuestras herramientas de soldadura.

Diferentes versiones de matriz LED 8x8 con driver MAX7219

Por último os comento que dentro de la programación podremos cambiar tanto el mensaje o mensajes de texto que queráis mostrar, como el brillo de los LEDS (si alimentamos el panel luminoso a través de nuestro Arduino es recomendable que esté en el nivel 1 para evitar fallos al subir el programa), el número de módulos conectados en cascada (máximo 8) o incluso la velocidad con la que se va a desplazar el texto, aunque para poder realizar todo esto es necesario recurrir al código del programa donde deberemos modificar las líneas de código necesarias, aunque no os preocupéis porque el código está comentado al detalle. Es muy importante subir el programa a nuestro Arduino sin tener alimentado el panel luminoso (pines +5V y GND), puesto que teniendo en cuenta que cada matriz LED 8x8 tiene un consumo aproximado de 350mA tendríamos un consumo total de unos 1400mA, un consumo excesivamente elevado para la salida USB de nuestro PC, lo que hará que al intentar subir el programa a nuestro Arduino, el puerto serie se nos desconecte dándonos un error en el IDE de Arduino. Después de subir el programa conectaremos nuevamente la alimentación del panel luminoso y procederemos a resetear nuestro Arduino para que los mensajes comiencen a deslizarse de derecha a izquierda a través de las matrices LED 8x8. (Es muy recomendable alimentar el panel luminoso con una fuente de alimentación de 5VDC para que esto no suceda).




Lista de Materiales:

·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         4 Matrices LED 8x8 con driver MAX7219.

·         Soldador de 30W y estaño (en el caso de que sea necesario).

·         Fuente de alimentación de 5VDC/3000mA (opcional).

·         Protoboard.

·         Cables de conexión.



Código del programa:





Video:

viernes, 29 de enero de 2016

Medidor de rayos ultravioletas con sensor de rayos UV y LCD NOKIA 5110


En la época en la que vivimos, debido al fuerte cambio climático que estamos experimentando, es muy importante que protejamos nuestra piel a la hora de tomar el sol, puesto que cada vez contamos con mayor número de enfermedades derivadas del abuso o de la deficiente protección cuando nos exponemos a las radiaciones ultravioletas procedentes del sol.
En este POST os traigo un excelente sistema que mide la magnitud de los rayos ultravioletas en una escala del 0 al 11. Para ello este sistema tiene conectado un sensor de rayos UV que nos ofrecerá a su salida (OUT) un voltaje variable que depende directamente de la intensidad con la que los rayos ultravioletas, procedentes del sol, inciden sobre el sensor. Este sensor se alimenta con una tensión entre 3-5V y es capaz de detectar rayos UV  con 200-370 nm de longitud de onda y una precisión de ± un índice UV.
Sensor de rayos UV

Además este sistema está dotado de un LCD NOKIA 5110, conectado a Arduino mediante comunicación SPI y programado a través de la librería “LCD5110_Graph.h”, donde se mostrarán los resultados en vivo y en directo. En la siguiente tabla podemos ver el significado de los resultados obtenidos a través del LCD NOKIA 5110.

Tabla del índice UV

Para el funcionamiento real de este sistema de medición de rayos UV, no serían necesarios ni el pulsador y su resistencia PULL-DOWN de 10KΩ, ni el LED UV, puesto que han sido implementados para comprobar que el sistema funciona correctamente, ya que en el interior de una vivienda la radiación UV tiende a cero a no ser que el sol entre a través de una ventana por ejemplo.
El LED UV de 5 mm debido a su escasa potencia, ha sido sobrealimentado a +5V, aunque se puede quemar si lo tenemos encendido mucho tiempo, para que la intensidad de brillo sea capaz de estimular al sensor de rayos UV y como consiguiente subir un nivel el índice UV que se muestra por el LCD NOKIA 5110 (para más detalles consultar el código del sistema).


Lista de Materiales:

·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Sensor de rayos UV.

·         LCD PCD8544 (LCD NOKIA 5110).

·         LED UV 5mm (Ultravioleta).

·         Pulsador.

·         6 Resistencias de 10KΩ.

·         Protoboard.

·         Cables de conexión.


Código del programa:





Video:

jueves, 28 de enero de 2016

Cómo crear logos con LCD Assistant para visualizarlos con LCD NOKIA 5110


Hoy les voy a enseñar a trabajar con la aplicación para PC “LCD Assistant”, que nos sirve exclusivamente para transformar una imagen monocromática en formato mapa de bits (.bmp), en un archivo (.C) que Arduino es capaz de entender gracias al uso de la librería “LCD5110_Graph.h”, para mostrarnos la imagen a través del LCD NOKIA 5110 que ya hemos utilizado en el POST anterior. Para obtener la aplicación “LCD Assistant” tenéis que abrir el siguiente enlace:



Una vez que tenemos la imagen que deseamos convertir en un logo para el LCD NOKIA 5110, tenemos que seguir una serie de pasos para que se pueda visualizar correctamente en la pantalla:
·         Ejecutamos “Paint”:
o   Editamos la imagen: Cambiar tamaño (en px)à No mantener relación de aspecto à Medida máxima en Horizontal: 81 y en Vertical: 47 .
o   Guardamos la imagen: Archivo à Guardar como à Tipo à Mapa de bits monocromático.

·         Ejecutamos “LCD Assistant”:
o   File à Load Image à Buscamos el archivo de imagen *.bmp creado en Paint.
o   File à Save Output à Guardamos como queramos y le cambiamos la extensión a *.c para que pueda ser reconocido por el IDE de Arduino.

·       Guardamos el archivo *.c creado dentro de la carpeta que contiene al programa de Arduino que va a lanzar la imagen al LCD NOKIA 5110.

·         Ejecutamos el programa de Arduino (*.ino):
o   Cuando se nos abre el IDE , ahora al lado del archivo *.ino nos aparecerá un archivo *.c que es la imagen en cuestión.
o   Añadir al principio del archivo *.C:  #include
o   Tenemos que cambiar : imagen [] = {  à  imagen [] PROGMEM = {

·         Por último solo nos queda subir todo a nuestro Arduino para poder ver a través del LDC NOKIA 5110, si hemos realizado correctamente el logo.

Ventana del LCD Assistant

El programa que contiene este POST simplemente nos mostrará, a través del LCD NOKIA 5110, una serie de mensajes de texto, acompañados por una serie de logotipos que yo he creado con la aplicación LCD Assistant, a partir de imágenes de superhéroes que encontrado por la WEB y que he modificado siguiendo los pasos anteriormente mencionados. A continuación os muestro los logos que nos ha de mostrar el LCD NOKIA 5110.
Logos de Superhéroes en formato *.bmp
 
Como nota puntual os quiero recordar que la librería “LCD5110_Graph.h” es válida tanto para mostrar imágenes como texto (ver el código del programa para más información).


Lista de Materiales:

·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         LCD PCD8544 (LCD NOKIA 5110).

·         5 Resistencias de 10KΩ.

·         Protoboard.

·         Cables de conexión.


Código del programa:




Video:

Cómo utilizar una pantalla LCD de un NOKIA 5110


El LCD Gráfico de Nokia 5110, es una pequeña pantalla gráfica LCD montada sobre un PCB de 45mm x 45mm, que tiene una resolución de 84 x 48 píxeles sobre los que podemos dibujar gráficos y textos. Existen varias librerías para Arduino que funcionan con este LCD, sin embargo, ahora vamos a trabajar con las que nos proporciona “Adafruit” (fabricante de componentes electrónicos para Arduino): “Adafruit_GFX.h” y  “Adafruit_PCD8544.h”. En siguientes POST veremos cómo trabajar con la librería “LCD5110_Graph.h”, puesto que cada una tiene sus ventajas y dependiendo de la aplicación, se puede escoger la que más convenga.

LCD NOKIA 5110

La pantalla utiliza el chip controlador PCD8544 de Philips que fue utilizado en el Nokia 5110, el cual está diseñado para funcionar sólo a 3.3V, teniendo niveles de comunicación de 3.3V en sus pines (RST, CE, DC, Din y Clk), por lo que para conectarlos con Arduino a través de comunicación SPI, se requiere un convertidor de nivel lógico (5V à 3.3V) o resistencias de limitación de corriente de 10kΩ, de lo contrario se podría dañar fácilmente la pantalla.
Con el siguiente programa vamos a ser capaces de visualizar, a través del LCD de NOKIA 5110, una serie de formas y caracteres previamente programados ayudándonos de las librerías que “Adafruit” nos proporciona (para más información revisar el código de la programación).


Lista de Materiales:

·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         LCD PCD8544 (LCD NOKIA 5110).

·         5 Resistencias de 10KΩ.

·         Protoboard.

·         Cables de conexión.


Código del programa:





Video: