Adaptador I2C para pantallas LCD con Arduino

Hace mucho que me compré un adaptador I2C para pantallas LCD y hoy por fin lo he probado, el adaptador está basado en el micro PCF8574T y tiene dos conectores, el tradicional de 16 pines en linea para conectar la LCD y los 4 del conector I2C, tambien posee un jumper para habilitar la luz de fondo (que se puede apagar/encender por software) y un potenciometro para regular la luz de los caracteres.

adaptador

Para probarlo he usado una pantalla LCD con luz azul de 2 lineas por 16 caracteres cada una.

lcd

Como en ambos tengo montados pines macho he montado todo sobre una protoboard, solo tener en cuenta que los pines esté correctamente alineados, contad con que el pin 1 es GND que es facil de localizar.

montaje_1

El montaje completo incluyendo las conexiones I2C:

adaptador_I2C_LCD

El código fuente:

// ********************************************************************
// ********************************************************************
/* Demostracion de modulo adaptador I2C LCD
basado en PCF8574T */

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);

void setup()
{
lcd.begin (16,2); // activamos modulo 16×2
lcd.setBacklightPin(3,POSITIVE);

lcd.home (); // igual que lcd.setCursor(0,0);
lcd.print(” furrichip “);

lcd.setBacklight(LOW); // Apagar luz de fondo
delay(500);
lcd.setBacklight(HIGH); // Encender luz de fondo
delay(500);

lcd.setBacklight(LOW); // Apagar luz de fondo
delay(500);
lcd.setBacklight(HIGH); // Encender luz de fondo
delay(500);

}

void loop()
{
lcd.setCursor (4,1); // empezamos en la segunda linea fila 4
lcd.print(millis());
delay(100);
}

// ********************************************************************
// ********************************************************************

La libreria LiquidCrystal he usado esta:
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads

Solo me queda mencionar que en caso de necesidad podeis cambiar la dirección I2C del adaptador (0x27 por defecto) puenteando los pads A0, A1 y A2, dichos pads están en modo pull-up por lo que su valor lógico es “1”, al puentearlos cambiamos dicho valor a “0” y usando la siguiente tabla podemos ajustar la dirección a nuestras necesidades:

I2C_LCD_Direcciones


Enlaces de interes:

Datasheet PCF8574 de Texas Instruments
Datasheet PCF8574 de NXP
Tutorial PCF8574 en ingles

 

Regrabar Bootloader en una Arduino (2)

Hace casi 5 años ya me encontré con este problema… fastidiar el micro de una arduino (vieja, eso si..) y tener que meter el bootloader de nuevo asi que no me extenderé demasiado ya que podeis leer el artículo de aquella epoca que solucioné con un programador por puerto paralelo muy barato de fabricar.

http://blog.xbot.es/?p=262

Ahora nos encontramos con que pocos ordenadores de sobremesa y ningún portatil trae puerto paralelo por lo que una alternativa USB vendria muy bien y lo que he hecho es aprovechar mi Programador ArduinoISP quedando el montaje tal que asi.

IMG_20150312_195506

En el USB tenemos una Arduino con el programa ArduinoISP (la de color rojo), esa tarjeta, sea la Arduino que sea no es mas que una pasarela hacia la segunda (la de color azul) y es esta ultima la que tenemos que seleccionar en Herramientas/Tarjetas… en mi caso la roja es compatible con Decimilia con micro Atmega168 pero da igual, podria ser una MEGA 2560… tan solo hace de pasarela. La tarjeta azul es una Duemilanove con micro Atmega328, por lo que en la configuración elegiré “Duemilanove w/Atmega328”.

tarjeta

A continuación comprobaremos que hemos seleccionado el programador adecuado.

Prog_ArduinoISP

Y por fin pulsaremos la opción que el IDE de Arduino nos da para programar el bootloader de la tarjeta seleccionada.

Prog_ArduinoISP_2

La arduino (azul) quedará como recien comprada y lista para trabajar.

Hasta pronto.
furri.

Programando ATtiny85 con Arduino

Utilizar micros Attiny puede resolvernos una necesidad por poco dinero y poca complicación a la hora de programarlos, como poco es divertido… 😛

1) HARDWARE.

Antes de nada hay que montar el grabador, bien cableado en una protoboard (no os lo aconsejo) o montaros una shield que os costará un par de euros y un rato soldando.

Para el que quiera cablear en una protoboard, este es el esquema.
esquema_attiny-arduino


2) Preparando el programador.

Para preparar el programador solo tenemos que enchufar una Arduino cualquiera, en mi caso utilizo una Duemilanove pero deberia funcionar con cualquiera.

Verificar que no teneis enchufada ninguna shield ni nada cableado, la Arduino solita.

Seleccionamos el tipo de tarjeta y puerto, a continuación abrimos la carpeta de ejemplos, elegimos “ArduinoISP” y grabamos.

En este momento nuestra tarjeta Arduino se ha convertido en un programador por lo que procedemos a enchufar nuestra placa o cableamos según el esquema del punto 1 de este tutorial.


3) IDE – Preparación del entorno de programación.

Para programar un Attiny85 con el entorno de Arduino tenemos que añadir dicho microcontrolador como si fuera una tarjeta mas seleccionable dentro del IDE de Arduino, esto lo haremos descargando la información de dicho micro e instalandolo en dos pasos simples.

– Descargar cores de microcontroladores Attiny.
En la página de Arduino podeis encontrar diversos cores adecuados a vuestras necesidades y la versión del IDE que tengais.
http://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips

Los cores que tengo instalados en el IDE 1.0.6. los podeis descargar de aqui, incluye los que he ido encontrando por ahí, son los Attiny 24/44/84/25/45/85/13/2313/4313

– Descomprimir
Facil, en la carpeta (Arduino)\Hardware\

– Abrir IDE de Arduino
y verificar en Herramientas/Tarjetas si el sistema las reconoce.


4) Programación del Attiny85

Ya solo queda hacer un programa y grabarlo en el microcontrolador, lo primero que hacemos es irnos a Herramientas/Tarjeta y seleccionamos “Attiny85 @ 1MHz (Internal Oscillator, BOD disabled)”.

Abrimos un ejemplo como el tradicional “BlinkWithoutDelay” y cambiamos el pin 13 por el 0, que en el Attiny85 se corresponde con el pin 5 como podeis comprobar en el siguiente grafico.

ATtiny

Pulsamos el botón de grabar y ya tenemos nuestro primer Attiny85 funcionando en cualquier protoboard con tan solo V+, GND y un led en el pin 5 que deberia parpadear.

Espero que os haya gustado.

furri

 

Programador ArduinoISP

Quizá sea uno de los programadores para micros atmel mas basicos que me he tropezado, y aunque los clones MKII baratos proliferan en tiendas on-line este te puede sacar de algún apuro o como a mi, hasta que me llegue el que he pedido en Hong Kong… 😛

1) HARDWARE.

Ante todo mi primera preocupación a la hora de cualquier montaje es evitar en lo posible los cableados a mano y las protoboard, que son maravillosas para las primeras pruebas pero ahí acaba la cosa, el programador podemos construirlo en una simple placa de topos o mejor de lineas, como la idea orginal para este programador era trabajar con Attinys de 8 patas me fabriqué una plaquita que acaba en un DIP8 y a continuación construí un cable DIP8 a ISP, el resultado fué el siguiente:

Cableado para DIP8
esquema_attiny-arduino

Cable DIP8 – ISP.
Adaptador Dip8 ISP

Este es el aspecto final.

IMG_20150314_201924 IMG_20150314_201910

Nota: el condensador no es necesario en todas las tarjetas Arduino por lo que os aconsejo lo pongais de manera que sea facil quitarlo en un momento dado.

2) Preparando el programador.

Para preparar el programador solo tenemos que enchufar una Arduino cualquiera, en mi caso utilizo una Seeeduino compatible con la antigua Decimilia pero deberia funcionar con cualquier modelo.

Verificar que no teneis enchufada ninguna shield ni nada cableado, la Arduino solita.

En el IDE de Arduino seleccionamos el tipo de tarjeta y puerto, a continuación abrimos la carpeta de ejemplos, elegimos “ArduinoISP” y grabamos.

En este momento nuestra tarjeta Arduino se ha convertido en un programador por lo que procedemos a enchufar nuestra placa o cableamos según el esquema del punto 1 de este tutorial.

Espero tener que enlazar a este post mas de una vez…

furri.

Regrabar Bootloader en una Arduino.

Es la segunda Arduino que rompo, la primera llevaba micro Atmega168 en smd y gracias a Boops la pude recuperar, pero el otro dia trabajando con los velocistas de Cosmobot rompí otra pero esta con el micro en formato DIP, o sea… de las normalitas, concretamente una Duemilanove con Atmega328.

Ante todo decir que esa placa, la Duemilanove puede llevar un Atmega168 sin problemas y nos puede servir para grabar el bootloader en nuestro flamante micro nuevo… y vacio… 😛

Bien, lo primero es construiros un programador, no os asusteis, este me lo he hecho en 15 minutos.

 
La construccion es muy facil, aqui teneis las instrucciones en la web oficial de Arduino.
Como construir un programador por puerto paralelo para Arduino

Aqui teneis el esquematico:programmer_schematic

Una vez construido haceis lo siguiente:
– Enchufais el programador al puerto paralelo (la arduino aún no la enchufeis).
– Descargaros este fichero y descomprimidlo en cualquier carpeta temporal.
– Para instalar giveio teneis que ejecutar ginstall.bat, aparecerá una pantalla negra (tipo msdos) que durará un instante.
– Para evitar problemas con el acceso al puerto paralelo desde Windows XP haceis doble click en XP_stop_polling.reg, el sistema o el propio antivirus os advertirán de que se van a escribir entradas en el registro de windows, bla, bla, etc, etc… ni caso, palante…
– Resetear Windows (esto es aconsejable, a mi no me funcionó hasta hacerlo).
– Enchufad la Arduino y buscar el puerto COM asignado en el panel de control.
– Abrir Arduino-001x (yo lo he probado con la versión 14, de ahí para arriba irá bien), configurais el puerto y el tipo de tarjeta como si la arduino funcionara normalmente.
– Enchufad el conector ICSP de la Arduino al programador.
– Ejecutad en el menú de Arduino…
y a los 15 segundos (mas o menos) os deberia aparecer un mensaje indicando que el bootloader se ha grabado correctamente.
– Desenchufais la Arduino del programador.
– Abris un programa de ejemplo como el… Blink y probais a ver si graba correctamente.

Que lo disfruteis.
furri.