Archivo de la etiqueta: Arduino

Cap 9. Control de voz entre Arduino – EasyVR


Muy  buenas a todos de nuevo,

Tras mucho tiempo sin poder publicar un video tutorial, hoy os quiero presentar un tuyo sobre EasyVr. Éste es un tutorial que hacía mucho tiempo que quería hacer.

Que es EasyVR? Pues bien, es una placa que nos va permitir control nuestro arduino mediante nuestra voz. La cual cosa, nos será super útil en el caso que queramos dar vida a un robot, automatizar nuestra casa,… lo que la imaginación nos dicte.

Easy VR es una placa con muchísimo potencial. Nos permite incluso grabar nuestros propios comandos de voz, con la cual el reconocimiento de dichos comandos será más efectivo que al trabajar con los comandos que la PCB trae predefinidos de serie, aunque eso lo veremos en otro video tutorial.

Sin más, aquí os dejo el link con los documentos para que os descarguéis y el video a continuación.

Enjoy!

Como leer un datasheet


Sí, ya sé que la gran mayoría de vosotros sabrá que es un datasheet y como leerlo, pero me ha resultado interesante compartir este video de los chicos de DXE en el cual dan unos consejos para leer correctamente un datasheet. Todos los que somos electrónicos y cacharreamos a diario con componentes electrónicos nuevos nos hemos tenido que ver ante esa tesitura, así que creo que no está de más echarle un vistazo al video ;)

Enjoy!

Teclado I2C con chip PCF8574 y Arduino


En la anterior entrada he hablado de como convertir una pantalla LCD para comunicarse con nuestras placas Arduino a través del protocolo de comunicación I2C, la cual podéis ver aquí. Entonces decidí investigar acerca de como realizar un teclado I2C para poder trabajar con nuestro Arduino sin necesidad de utilizar un montón de pines digitales, que podremos utilizar para otros menesteres, y aunque no he encontrado mucha información he conseguido obtener un teclado I2C que funciona perfectamente para nuestros proyectos, pasando de emplear 8 pines digitales a sólo 2 pines de comunicación (SDA y SCL en nuestro Arduino). El teclado que he empleado para las pruebas ha sido un teclado de membrana muy económico como el de la imagen.

KEY4X4M01

Para ello usaremos el integrado PCF8574 y como hemos comentado anteriormente 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

En esta imagen podéis ver como cablear todos los componentes para poder convertir vuestro teclado matricial en un teclado I2C con el que poder trabajar perfectamente desde vuestro Arduino (yo he usado el integrado PCF8574N para las pruebas):

Conexion teclado a pcf8574

NOTA: Yo he optado por conectar los pines A0, A1 y A2 del PCF8574N a tierra, para así obtener como dirección del dispositivo I2C (en este caso el teclado de membrana) 0×20 (en valor hexadecimal).

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

Esquematico eagle Teclado I2C PCF8574

El ejemplo que he usado para realizar las pruebas es el siguiente:

/*Probando Teclado I2C con integrado PCF8574 y Arduino UNO*/

//Añadimos las librerias
#include <Wire.h>
#include <Keypad_I2C.h>
#include <Keypad.h>

//Indicamos el numero de filas
const byte FILAS = 4;
//Indicamos el numero de columnas
const byte COLUMNAS = 4; 

//Indicamos como queremos que nos devuelva el valor de la tecla pulsada
char teclas[FILAS][COLUMNAS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

//Indicamos los pines de configuracion de filas y columnas
byte PinsFilas[FILAS] = {0,1,2,3}; 
byte PinsColumnas[COLUMNAS] = {4,5,6,7};

//Indicamos la direccion I2C de nuestro dispositivo, se puede modificar dependiendo de las conexiones A0,A1 y A2
//Mirar datasheet PCF8574
int i2caddress = 0x20;

Keypad_I2C kpd = Keypad_I2C( makeKeymap(teclas), PinsFilas, PinsColumnas, FILAS, COLUMNAS, i2caddress );

void setup()
{
  Serial.begin(9600); //Iniciamos configuracion serie para ver las teclas pulsadas
  kpd.begin();  //Iniciamos el teclado
}

void loop()
{
  char tecla = kpd.getKey();  //Asignamos el valor devuelto por el teclado a la variable tecla
  //Mostramos el valor por el monitor serie
  if (tecla)
  {
    Serial.println(tecla);
  }
}

Aquí podéis ver una imagen del circuito montado y conectado al Arduino y además un ejemplo de la pulsación de las teclas a través del monitor Serie:

IMAG0028

Monitor Serie Teclado I2C PCF8574

Como siempre os dejo los archivos para que podáis hacer funcionar perfectamente este ejemplo: https://www.mediafire.com/?28b26tzosl6hrxi

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

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