Archivo de la etiqueta: tutoriales

Convertir una pantalla LCD a I2C con el chip PCF8574


En esta entrada os voy a enseñar como poder adaptar vuestras pantallas LCD a una pantalla que se comunique a través del protocolo I2C (empleando sólo dos pines SDA y SCL). En una anterior entrada hemos hablado de un módulo que permite realizar esta operación de manera sencilla y económica, pero y si queremos montarnos nuestro propio módulo, o asignar diferentes direcciones a dispositivos para nuestros proyectos porque hay varios dispositivos con la misma dirección y no podemos trabajar con ambos. Todo esto es muy sencillo gracias al integrado PCF8574, que es un expansor de entradas/salidas compatible con la mayoría de los microcontroladores existentes, que nos permite convertir una comunicación en paralelo con un dispositivo a una comunicación I2C, además de poder indicar la dirección que queremos asignar a este dispositivo I2C.

Aquí podéis ver el pinout del integrado PCF8574N:

Pinout PCF8574

Hay que tener en cuenta que se pueden encontrar dos tipos de integrados PCF8574, uno el PCF8574N y otro el PCF8574A, que se diferencian en el valor de la dirección del dispositivo que podemos asignar, aumentando así las posibilidades a la hora de crear más dispositivos I2C para trabajar con nuestras placas Arduino, os dejo unas imagenes de como poder seleccionar la dirección I2C para el dispositivo en cada uno de los integrados arriba mencionados y una tabla de referencia de direcciones para el PCF8574N según se conecten los pines A0, A1 y A2.

Direcciones diferentes PCF8574

Tabla referencia Direcciones I2C

Ahora vamos a ver como cablear nuestras pantalla LCD al integrado PCF8574 para conseguir una comunicación I2C entre nuestro Arduino y la pantalla LCD:

LCD I2C PCF8574

NOTA: Faltan por conectar las resistencias de pullup de 4.7K en las líneas SDA y SCL que van a nuestro Arduino.

Yo he optado por conectar los pines A0, A1 y A2 del PCF8574 a tierra, para así obtener como dirección del dispositivo I2C (en este caso la pantalla LCD) 0x20 (en valor hexadecimal).

Os pongo también el esquemático en Eagle por si alguien lo entiende mejor que con el Fritzing:

Esquemático eagle PCF8574 LCD

Os pongo el ejemplo que he usado para realizar las pruebas básicas de funcionamiento y con el que no he tenido ningún problema:

#include <Wire.h> 
#include <LCD_I2C.h>

LCD_I2C lcd(0x20,16,2);  //Indicamos la dirección de la pantalla LCD 0x20 y el numero de columnas y filas 16*2

void setup()
{
  lcd.init(); //Inicializamos la pantalla LCD
  lcd.backlight();  //Activamos la iluminación de la pantalla
  //lcd.noBacklight(); //Desactivamos la iluminación de la pantalla
  lcd.setCursor(1,0);
  lcd.print("Visitanos en:");  //Imprimimos un mensaje
  lcd.setCursor(1,1);
  lcd.print("Taller Arduino");
}

void loop()
{
}

Aquí podéis ver el resultado:

IMAG0021

Para conseguir que funcionara todo correctamente he tenido que modificar la librería LyquidCrystal_I2C, así que en este archivo comprimido va una librería con la que funciona perfectamente la pantalla LCD, así como el datasheet del PCF8574 y el archivo Fritzing: https://www.mediafire.com/?3tcm58ig07a2eb5

Espero que os sirva de ayuda la entrada!!

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

Programando Arduino con Sublime Text 2


Gracias a los compañeros de Spainlabs me he enterado de la existencia de un muy buen software de programación, Sublime Text 2, con el que podemos programar nuestras placas Arduino de una forma que a mí parecer es más sencilla, ya que incorpora las siguientes características:

  • Presenta un minipama, que nos permite una previsualización de la estructura que presenta nuestro código, siendo muy útil para desplazarse a través de códigos grandes.
  • Presenta Multi Layout, esto significa que permite siete configuraciones de plantilla, es decir, podemos elegir editar en una sola ventana o hacer una división de hasta cuatro ventanas verticales o cuatro ventanas en cuadrícula.
  • Presenta Multi Cursor, que nos permite crear distintos cursores con los que podemos escribir texto de forma arbitraria en diferentes posiciones del archivo.
  • Presenta Multi Sección, que permite realizar una selección múltiple de un término por diferentes partes del archivo.
  • Soporte nativo para distintos lenguajes de programación.
  • Remarcado de sintaxis completamente configurable a través de archivos de configuración del usuario.
  • Búsqueda dinámica, que permite realizar búsquedas de expresiones regulares o por archivos, proyectos, directorios, una conjunción de ellos o todo a la vez.
  • Auto completado y marcado de llaves, que permite auto completar código con los comandos del lenguaje de programación, así como abrir y cerrar bloques de código mediante las llaves.
  • Configuración total de Keybindings, que nos permite configurar todas las teclas a nuestro gusto.
  • Coloreado y envoltura de sintaxis, que permite resaltar las expresiones propias de la sintaxis del lenguaje para facilitar su lectura.
  • Presenta Pestañas, que permite abrir varios documentos y organizarlos en pestañas.
  • Resaltado de paréntesis e identación, que al colocar el cursor en un paréntesis, corchete o llave, resalta esta y el paréntesis, corchete o llave de cierre o apertura correspondiente.
  • Presenta el número de línea de código.
  • Está disponible para distintos sistemas operativos.

Captura de pantalla sublime text 2

¿Como podemos entonces programar Arduino desde Sublime Text 2? Pues gracias a un plugin llamado Stino, que necesitaremos descargar y copiar en la siguiente ruta: C:\Users\”USUARIO”\AppData\Roaming\Sublime Text 2\Packages. Os pongo una imagen para que veáis como lo tengo hecho yo en mi ordenador.

Plugin Stino

Además necesitaremos también tener instalado/copiado el IDE de Arduino en nuestro ordenador, ya que desde Sublime Text 2 tendremos que indicar donde está el directorio de Arduino (para poder coger las librerías, sintaxis, configuraciones, etc…), donde se encuentra el directorio de nuestro Sketchbook (directorio donde guardamos nuestros programas realizados con Arduino). Para ello deberemos ir a la barra de menú de Sublime Text 2 e ir a Preferences y marcar Show Arduino Menu para que aparezca el menú de Arduino. Podéis ver como queda en esta imagen.

Menu Arduino preferencias

 

Una vez que tengamos el menú de Arduino visible, es cuando necesitamos indicarle a Sublime Text 2 donde están los directorios del IDE de Arduino, estos se le indican a través de los siguientes menús:

Preferencias Arduino

 

Como veis os aparecerán todas las opciones de compilación, carga, consola serie, selección de placa, selección de puerto, skecthbook, ejemplos, librerías, etc… que permitirán realizar correctamente todas las operaciones con vuestra placa Arduino.

También se pueden establecer unas teclas especiales, llamadas Keybindings, que permitan realizar la compilación, carga y apertura del monitor serie de la siguiente manera: Vamos al menú Preferences de Sublime Text 2 y pulsamos sobre Key Bindings – User.

keybindings

 

Y modificamos el contenido de ese archivo por este trozo de código:

[
{ "keys": ["f5"], "command": "compile_sketch" },
{ "keys": ["f6"], "command": "upload_sketch" },
{ "keys": ["f7"], "command": "start_serial_monitor" }
]

Guardamos y listo! Ahora ya podemos compilar con la tecla F5, cargar nuestro programa al Arduino con la tecla F6 y abrir el monitor serie con la tecla F7. Ya tenemos Sublime Text 2 listo para programar nuestros Arduino!!

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

Arduino Pinout y conexiones básicas


En mis visitas diarias a otros blogs he encontrado una buena información en www.pighixxx.com y www.akafugu.jp que creo que puede ser de ayuda a toda aquella gente que comienza en esto de la electrónica y en concreto en el tema de Arduino. Se trata de unos documentos que he recopilado en un único pdf para que sea más cómodo su uso, en los que aparecen los distintos pinouts de las placas Arduino más comunes.

Arduino uno pinout

También podéis encontrar una hoja donde aparecen los pinouts más comunes de algunos de los componentes electrónicos que normalmente usamos en nuestros proyectos.

Componentes electrónicos pinout

Así como unas magnifícas páginas en las que se pueden ver las conexiones básicas de distintos componentes a nuestro Arduino y que puede ser de una muy buena ayuda tanto para aquellos que están empezando con Arduino o otro microcontrolador, como para aquellas personas que ya están curtidas en estos temas.

conexiones basicas arduino

Sin más, os dejo el enlace al documento pdf en el que vais a encontrar todo este estupendo material de ayuda:
http://www.mediafire.com/download/zrssl27tiasi17r/Arduino_Pinout_y_Conexiones_Basicas.pdf

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

Protección contra corrientes inversas (Tutorial/teoría)


Muy buenas a todos. Después de unos meses de inactividad blogera, por motivos laborales y estudiantiles del equipo, volvemos a la carga con todo nuestro arsenal dispuesto para aportar a la comunidad electrónica, open source, …

Aquí os dejo un poco de teoría, es un tutorial via: dangerousprototypes.com en el cual se explica muy bien los temas sobre las protecciones que podemos llevar a cabo en un circuito para evitar corrientes inversas y que sin quererlo nos han fastidiado algún proyecto que otro.

Enjoy!

Arduino Tutorials Cap 6. I2C Comunication


Muy buenas a todos!

Tras varias semanas sin poder llevar al día la tarea de los videotutoriales, hoy os traigo un nuevo capítulo de la serie “Arduino Tutorials”. En este nuevo tutorial, vamos a tratar el uso de la comunicación I2C, como siempre, lo haremos guiado por un documento y tres casos prácticos que espero os ayuden a entender a la perfección como funciona la comunicación I2C.

Informaos que hasta Junio, aproximadamente, los videotutoriales no tendrán la frecuencia prevista en un principio, uno cada dos semanas, debido a motivos estudiantiles y laborales del equipo. De todas formas, estamos en contacto con vosotros para resolver cualquier duda que podáis tener tanto por twitter, facebook y, como no, desde el propio blog.

Aquí os dejo el link de descarga de los archivos requeridos en el tutorial y el video, como siempre, espero vuestros comentarios, críticas, aportaciones,…

http://www.mediafire.com/?kp17m2hk7wczwxq

ProcessingTutorials Cap 2. Introducción Processing/Arduino (II)


Con un poco de retraso, como viene siendo costumbre en mí, hacemos entrega del segundo capítulo de la mini serie de tutoriales “Processing Tutorials”.

En este segundo capítulo, proseguimos los conceptos dados en el primer video, haciendo de ambas partes un solo video. En esta parte, hemos realizado un par de ejemplos con un nivel del complejidad más elevado, en lo que a la parte gráfica de Processing se refiere, para dar una pequeña idea al usuario de lo que se puede llegar hacer con este programa. De aquí en adelante debe dejar volar su imaginación y añadir lo que quiera en el código del programa, unas tírulos, más botones, …

Sin más y como siempre aquí os dejo el link de descargar para que podáis obtener los archivos adjuntos al video tutorial y, cómo no, el video!

Espero que os haya gustado. Nos vemos en el próximo video, espero vuestro comentarios, aportaciones, críticas, …

Enjoy!

Arduino tutorials Cap 4. Interrupciones externas


Muy buenas a todos de nuevo. Aquí os traigo la nueva entrega de la serie “Arduino tutorials”, en la cual hablamos de las interrupciones externas.

Este tema lo he querido dividir en dos, ya que las interrupciones son un tema muy extenso y complicado, así que en el próximo capítulo veremos el uso de las interrupciones internas y Timers.

Como siempre, aquí os dejo el link desde el cual os podéis descargar todos los códigos, documentos adjuntos y datsheets para que podáis desarrollar los ejemplos del tutorial en vuestra casa y jugar con él.

Sin más, aquí os dejo el video.

Espero que os haya gustado y espero vuestros comentarios con críticas, dudas, observaciones,…

Enjoy!