Archivo de la etiqueta: uno

Necesitas visualizar información con tu Arduino? Nada mejor que un LCD a color

En este post, vamos a revisar el Color LCD Shield, fabricado por Elecfreaks y distribuido por www.dx.com, que viene listo para usar con cualquier placa Arduino.

DSC00252

Este shield tiene las siguientes características:

  • Display a color de 128x128px, basado en el display Nokia 6100
  • 4096 colores (profundidad de color de 12 bits)
  • Interfaz I2C (requiere unos pocos pines para funcionar)
  • Control de iluminación del backlight, mediante PWM en el pin 10 del arduino
  • Joystick de 5 posiciones, conectado a las entradas A0-A4 (deben ser configuradas como entradas digitales)
  • Regulación automática de 3.3v (no requiere modificaciones adicionales al Arduino)

El precio de este shield es bastante conveniente (19.xx con envío gratis desde China), y la calidad de fabricación es excelente. El item viene debidamente empacado, protegiendo con gomaespuma la pantalla y los pines de conexión, evitando las pantallas rotas o pines doblados en el largo viaje desde el otro lado del mundo.

Para esta prueba, vamos a usar los siguientes componentes:

Por que usar un LCD gráfico en lugar del clásico shield LCD 16×2? bueno, aquí es cuestión de gustos, y de la aplicación que le querramos dar. Como ejemplo del funcionamiento del Shield, y para ilustrar las funciones disponibles para el mismo, vamos a programar un voltímetro, que mida entre 0 y 5v, y que nos grafique en tiempo real las variaciones de voltaje ingresadas por el pin A5 de nuestro Arduino Uno.

Primero, debemos descargar e instalar la librería ColorLCDShield, que la puedes descargar de este enlace. Esta librería debe ser descomprimida en la carpeta “Libraries” de tu instalación del Arduino IDE, antes de empezar con nuestra prueba.

Primero, debemos incializar el LCD, para lo cual usamos los siguientes comandos:

pinMode(10, OUTPUT);
analogWrite(10, 1023); 
lcd.init(PHILLIPS); 
lcd.contrast(40);

Como podemos ver en este fragmento de código, el pin 10 de nuestro arduino controlará la intencidad del backlight mediante PWM. El valor de 40 para el contraste es un valor recomendado por el fabricante, así que no hay mucha explicación sobre dicho valor.

A continuación, luego de inicializada la pantalla, procedemos a dibujar la grilla de fondo. Para esto, vamos a usar el siguiente código:

  int x,y;  
  lcd.clear(BLACK);  
  lcd.setStr("Datalogger 2013 ", 2, 0, RED, WHITE);
  lcd.setStr("www.patolin.com ", 112, 1, BLUE, WHITE);
  for (x=1;x< =132;x+=20) {
       lcd.setLine(30,x,110,x, GRAY);
  } 
  for (y=30;y<=110;y+=20) {
       lcd.setLine(y,1,y,132, GRAY);  
  }
  lcd.setRect(30,2,110,129, 0, MAGENTA);

Dentro de este bloque, como podemos observar, usamos rutinas para limpiar la pantalla lcd.clear(BLACK);, escribir strings lcd.setStr(“Datalogger 2013 “, 2, 0, RED, WHITE);, dibujar líneas lcd.setLine(30,x,110,x, GRAY); y dibujar rectángulos lcd.setRect(30,2,110,129, 0, MAGENTA);.

Todas estas funciones, y el listado de colores disponibles como constantes para facilidad de uso, se encuentran detallados dentro de la ayuda de la librería del display.

Lo que vamos a hacer con nuestro arduino, es leer el valor del potenciómetro conectado en el puerto A5, y graficarlo en escala, dentro de la grilla que dibujamos previamente. El momento que el gráfico de la señal llegue al borde derecho de la grilla, limpiaremos la pantalla y empezaremos desde el borde izquierdo. Les dejo el código completo que estoy usando.

#include <ColorLCDShield.h> 

LCDShield lcd;  
int buttonPins[5] = {A0, A1, A2, A3, A4};  

void setup()
{
  pinMode(10, OUTPUT);
  analogWrite(10, 1023); //PWM control blacklight
  lcd.init(PHILLIPS);  // Initializes lcd, using an PHILIPSdriver
  lcd.contrast(40);  // -51's usually a good contrast value

  dibujaGrilla();
}

void dibujaGrilla() {

  int x,y;  
  lcd.clear(BLACK);  
  lcd.setStr("Datalogger 2013 ", 2, 0, RED, WHITE);
  lcd.setStr("www.patolin.com ", 112, 1, BLUE, WHITE);
  for (x=1;x< =132;x+=20) {
       lcd.setLine(30,x,110,x, GRAY);
  } 
  for (y=30;y<=110;y+=20) {        lcd.setLine(y,1,y,132, GRAY);     }   lcd.setRect(30,2,110,129, 0, MAGENTA); } void dibujaPunto(int x,int valADC) {   // ajustamos el valor del adc para la escala del grafico   int valor;   valor=valADC/20;   lcd.setPixel(RED,(110-valor),x); } void loop() {   int x=3;   int valor;   while(1) {     if (x>128) { x=3; dibujaGrilla();}
    valor=analogRead(A5);
    dibujaPunto(x,valor);
    delay(100);

    x++;
  }
}

Luego de cargar el código en el Arduino, el resultado es excelente! hemos creado con unas pocas líneas de código, un datalogger gráfico, que puede servir como base para muchas aplicaciones más. Les dejo un pequeño video del resultado.

Como podemos observar, este LCD Shield es bastante práctico, y es una gran mejora sobre el LCD 16×2 que casi siempre usamos en nuestros proyectos, para resumir sus características, podemos lanzar la siguiente comparativa:

A favor:

  • Bajo costo
  • Envío gratis desde dx.com
  • Incluye joystick de 5 posiciones
  • Interfaz I2C reduce el número de pines usados
  • Librerías listas para generar texto y gráficos
  • Facil uso y de facil integración en tus proyectos con Arduino

En contra

  • Largo tiempo de espera para recibirlo
  • el Joystick utiliza 5 pines (A0-A4) dejando solo una entrada analógica disponible (podría arreglarse cambiando los pines usados, conectándolo a un arduino nano o pro)
  • La actualización del display es un poco lenta, para algunas aplicaciones (podría ser un poco lenta si queremos usarla para un osciloscopio digital)

 

 

Freaduino Uno Review

Como habrán escuchado, la plataforma Arduino, es una plataforma electrónica abierta, diseñada para la creación de prototipos de hardware y software, pensando en gente que no tiene mucha experiencia con microcontroladores y electrónica en general.

En mi opinión personal, al haber estudiado a detalle algunos microcontroladores,pasando por el Motorola 68HC11 y el Intel 8051, hasta los modelos un poco mas actuales de Microchip (como el 18F4550, que he usado en muchos de mis proyectos), puedo decirles que la plataforma Arduino, dentro de sus limitaciones de hardware, nos brinda una extremada facilidad al momento de desarrollar aplicaciones de electrónica, que requieran del uso de un microcontrolador.

Dado que Arduino es una plataforma de código abierto, era de esperarse que empiecen a comercializarse “Clones” o incluso versiones mejoradas de la placa original. En este caso, vamos a analizar al Freaduino Uno, que lo puedes conseguir en DealExtreme, aun precio realmente bajo. Mucha gente tiene miedo de comprar en estos sitios mayoristas, que distribuyen desde la China, pero he realizado varias compras desde este sitio, y nunca he tenido problemas con los pedidos, el soporte al cliente es excelente, y los precios son muy convenientes.

freaduino3

Características

Como lo mencionamos, el Freaduino Uno está basado en el Arduino Uno, por lo que tiene características base similares. Las características completas las podemos observar en la siguiente tabla:

 

Freaduino Uno

Arduino Uno

Microcontrolador

ATMega 328P (SMD)

ATMega 328 (DIP)

Memoria Flash

32Kb

32Kb

Memoria Ram

2Kb

2Kb

Memoria EEPROM

1Kb

1Kb

E/S Digitales

14

13

E/S Analógicas

6

6

E/S PWM

6 (compartidas con las digitales)

6 (compartidas con las digitales)

Voltaje de Operación

3.3V/5V seleccionable

5V

Voltaje de Alimentación

7 a 23Vcc

7 a 12 Vcc

Corriente de salida máx.

800mA (3.3V) / 2000mA (5V)

50mA (3.3V) / 500mA (5V)

Pines dedicados (IIC/UART)

Si

No

Rieles Vcc y Gnd para E/S

Si

No

Tipo de conector USB

mini USB

USB tipo B

Precio

$ 18.60 (envío gratis desde dx.com)

$ 25.00 aprox (+ envío desde arduino.cc)

Si comparamos directamente las características, vemos que tenemos una placa muy superior al Arduino original, sin tomar en cuenta el valor adicional de un menor costo, que incluye el envío hasta la puerta de tu casa. Como es de esperar, el Freaduino Uno es compatible 100% con el IDE de Arduino, y los Shields diseñados para el mismo.

Por el precio de compra, se incluye un cable USB, para poder conectar la placa a nuestro computador, y poder programarla.

freaduinocable

El mayor plus de esta placa, comparada con la original de Arduino (o varios clones que existen en el mercado) es la inclusión de los headers para conexiones externas, que incluyen +Vcc y Gnd. Estos headers están claramente señalados al pin que corresponden, y nos brindan una gran ayuda el momento de conectar servomotores o sensores, eliminando la necesidad de incluir un shield de sensores para dichas conexiones.

2013-06-18_21-26-17_415

Otra función adicional, que nos podrá resultar super útil a futuro, es la inclusión de un selector de voltaje de trabajo. Todas las tarjetas Arduino tienen una salida de voltaje de referencia de 3.3v, pero el microcontrolador siempre funcionará a 5Vcc internamente. El Freaduino Uno posee un selector de voltaje de operación que  nos permite que todo el microcontrolador opere a 3.3v. Esto nos resulta útil para interconectar nuevos dispositivos (transmisores Bluetooth, pantallas LCD gráficas, acelerómetros, giroscopios, etc) que requieran este voltaje de funcionamiento, eliminando el requerimiento de componentes adicionales para la conexión.

 freaduino2

Instalación

La instalación del Freaduino Uno es identica a la del Arduino original. Basta con descargar el Arduino IDE, conectar la tarjeta al puerto USB con el cable provisto, e instalar los drivers que se incluyen dentro del IDE. Únicamente debemos seleccionar “Arduino Uno” de la lista de dispositivos compatibles, y escoger el puerto COM respectivo, según se instale en nuestro computador.

Para finalizar, podemos resumir toda esta revisión, en los siguientes pros y contras de esta tarjeta compatible con arduino:

Pros:

  • Compatible 100% con el Arduino Uno, en Programación y Shields existentes
  • Bajo Costo
  • Excelente calidad de manufactura
  • Pines de E/S con alimentación incluida (ideales para conectar servos o sensores)
  • Mayor capacidad de corriente de salida
  • Selección de voltaje de operación mediante un switch (3.3v o 5v)
  • El uso de componentes SMD ahorra espacio, y crea una disposición de placa más limpia
  • El regulador de voltaje switching a la entrada de alimentación, permite un mayor rango de voltajes de entrada.
  • Chip FTDI reemplazado por un ATMega8U, para la conexión USB con el computador
  • Leds integrados y boton de reset de facil acceso, al tener Shields conectados
  • Envío gratis desde dx.com

 

Contras:

  • Tiempo de espera de casi 3 semanas para la entrega (bueno, viene desde muy lejos hacia Ecuador)
  • Cable USB bastante corto, y si usas una PC de escritorio, quizás necesites un cable más largo
  • Empaque de transporte aceptable, pero no el 100% adecuado.

 

Valoración: 100/100

Aplicaciones

Con las pruebas que he realizado, he llegado a montar aplicaciones tan simples como un voltímetro digital usando una pantalla LCD, hasta reemplazar toda la electrónica de un transmisor de radio control básico, para convertirlo en un transmisor completamente programable. Las aplicaciones provienen de nuestras necesidades, así que a darle un buen uso.

Un ejemplo que lo tengo en video, es mi módulo de transmisor para radio control, donde el Freaduino Uno, se encarga de la lectura de los potenciómetros de las palancas de mando, el procesamiento de los datos, la visualización en una pantalla LCD y el envío de una señal PPM hacia el módulo de radio frecuencia. Les dejo un video con esta aplicación.

Enlaces