Todas las entradas por Regata

Soy I.T.I. especialidad electrónica y estudiante de Grado en ingeniería Electrónica industrial y Automática. Tengo 33 años. Soy aficionado a la electrónica, la impresión 3D, las películas, las series... Aprendiendo Arduino!!

modúlo bluetooth HC-06 y arduino


Hoy os traemos una nueva entrada donde hablamos del económico módulo bluetooth HC-06 y su funcionamiento con Arduino. Dicho módulo trabajo mediante conexión serie con el Arduino, y se comunica con el exterior mediante bluetooth, ya sea a través de un teléfono móvil, ordenador, tablet, etc.

El módulo en cuestión es este, lo he comprado ya con regulación a 3.3V, así que lo puedo conectar directamente a los 5V del Arduino sin problema (Aunque Arduino ya nos proporciona 3.3V, es mejor tener los 5V por si lo usamos en un montaje exterior sin la placa Arduino):

Como véis solo disponemos de 4 pines que son los necesarios, por un lado tenemos VCC que irá conectado a los 5V del Arduino, por otro GND que ira al pin GND de Arduino, después tenemos TXD que irá conectado al pin RXD del Arduino y RXD que irá al pin TXD de Arduino.

En concreto yo he probado dicho módulo en un teléfono HTC Desire S y con el software BlueTerm, y en el portátil con el software Octoplus Terminal (que es un software de comunicación-monitor serie).

Para añadir el módulo al pc mediante bluetooth se debe hacer como un puerto serie virtual, los pasos que yo he seguido son los siguientes:

1º Buscamos los dispositivos bluetooth:

2º Seleccionamos Puerto Serie Virtual:

3º Configuramos el puerto COM que queramos:

4º Finalizamos el proceso de añadir el módulo bluetooth:

Aquí está el video del funcionamiento del módulo:

Y aquí unas capturas para la comunicación del software BlueTerm con el módulo:

Aquí os dejo el código de comunicación para placas Arduino Uno, Mega y Nano:

//Programa prueba modulo bluetooth GP-GC021 o HC-06
//Probado con programas para android Blueterm y Amarino 2.0
//Probado con bluetooth portatil y software Octoplus Terminal
//Programa realizado para www.tallerarduino.wordpress.com por Regata

void setup()
{
  //Pin donde conectamos el led para ver el correcto funcionamiento del modulo
   pinMode(13,OUTPUT);
   //Configuracion de la velocidad del modulo 9600 por defecto, se puede cambiar
   //mediante comandos AT
   Serial.begin(9600);
}

void loop()
{
   //Mientras el puerto serie del modulo bluetooth esta disponible
   while (Serial.available())
   {
      //Guardamos en la variable dato el valor leido por el modulo bluetooth
       char dato= Serial.read();
       //Comprobamos el dato
       switch(dato)
       {
         //Si recibimos una 'w' encendemos el led 13 y enviamos para mostrar
         //en Blueterm Led encendido
         case 'w':
         {
           digitalWrite(13,HIGH);
           Serial.println("Led encendido");
           break;
         }
         //Si recibimos una 'e' apagamos el led 13 y enviamos para mostrar
         //en Blueterm Led apagado
         case 'e':
         {
           digitalWrite(13,LOW);
           Serial.println("Led apagado");
           break;
         }
         //Si recibimos una 'r' encendemos y apagamos el led mediante la secuencia
         //programa y mostramos en Blueterm Led intermitente
         case 'r':
         {
           digitalWrite(13,HIGH);
           delay(200);
           digitalWrite(13,LOW);
           delay(200);
           digitalWrite(13,HIGH);
           delay(100);
           digitalWrite(13,LOW);
           delay(100);
           Serial.println("Led intermitente");
           break;
         }
       }       
   }
}

Aquí el código para la placa Arduino Leonardo:

//Programa prueba modulo bluetooth GP-GC021 o HC-06
//Programa para la placa ARDUINO LEONARDO
//Probado con programas para android Blueterm y Amarino 2.0
//Probado con bluetooth portatil y software Octoplus Terminal
//Programa realizado para www.tallerarduino.wordpress.com por Regata
 
void setup()
{
  //Pin donde conectamos el led para ver el correcto funcionamiento del modulo
   pinMode(13,OUTPUT);
   //Configuracion de la velocidad del modulo 9600 por defecto, se puede cambiar
   //mediante comandos AT
   Serial1.begin(9600);
}
 
void loop()
{
   //Mientras el puerto serie del modulo bluetooth esta disponible
   while (Serial1.available())
   {
      //Guardamos en la variable dato el valor leido por el modulo bluetooth
       char dato= Serial1.read();
       //Comprobamos el dato
       switch(dato)
       {
         //Si recibimos una 'w' encendemos el led 13 y enviamos para mostrar
         //en Blueterm Led encendido
         case 'w':
         {
           digitalWrite(13,HIGH);
           Serial1.println("Led encendido");
           break;
         }
         //Si recibimos una 'e' apagamos el led 13 y enviamos para mostrar
         //en Blueterm Led apagado
         case 'e':
         {
           digitalWrite(13,LOW);
           Serial1.println("Led apagado");
           break;
         }
         //Si recibimos una 'r' encendemos y apagamos el led mediante la secuencia
         //programa y mostramos en Blueterm Led intermitente
         case 'r':
         {
           digitalWrite(13,HIGH);
           delay(200);
           digitalWrite(13,LOW);
           delay(200);
           digitalWrite(13,HIGH);
           delay(100);
           digitalWrite(13,LOW);
           delay(100);
           Serial1.println("Led intermitente");
           break;
         }
       }       
   }
}

Aquí el código de configuración del módulo mediante comandos AT (el módulo no debe de estar emparejado):

/*Cambio de configuracion del modulo bluetooth mediante comandos AT
para ello el modulo no debe estar vinculado con ningun dispositivo
bluetooth, en mi caso el led debe estar en modo intermitente, si esta
vinculado aparece encendido de forma permanente*/

int contador=1;

void setup()
{
  //Led 13 para indicar final de operacion de configuracion AT
  pinMode(13,OUTPUT);
  //Velocidad del modulo bluetooth, 9600 por defecto
  Serial.begin(9600);
  //Apagamos el led 13
  digitalWrite(13,LOW);
}

void loop()
{
  //Es para realizar los cambios una sola vez
  while (contador==1)
  {
   //Indicacion de tiempo de espera iniciado
   digitalWrite(13,HIGH);
   /*Tiempo de espera de 15 segundos (prudencial, se puede cambiar, depende de lo que tardes
   en volver a conectarlos) para reconectar cables RX y TX del modulo bluetooth
   a la placa Arduino ya que para programar esta deben estar desconectados*/
   delay(15000);
   //Indicacion de tiempo de espera finalizado
   digitalWrite(13,LOW);
   //Iniciamos comunicacion con modulo bluetooth mediante comandos AT
   Serial.print("AT");
   //Espera de 1 segundo según datasheet entre envio de comandos AT
   delay(1000);
   //Cambio de nombre donde se envia AT+NAME y seguido el nombre que deseemos
   Serial.print("AT+NAMEtallerarduino");
   //Espera de 1 segundo según datasheet entre envio de comandos AT
   delay(1000);
   /*Cambio de la velocidad del modulo en baudios
   Se envia AT+BAUD y seguido el numero correspondiente:
   
   1 --> 1200 baudios 
   2 --> 2400 baudios
   3 --> 4800 baudios
   4 --> 9600 baudios (por defecto)
   5 --> 19200 baudios
   6 --> 38400 baudios
   7 --> 57600 baudios
   8 --> 115200 baudios
   
   */
   Serial.print("AT+BAUD4");
   //Espera de 1 segundo según datasheet entre envio de comandos AT
   delay(1000);
   //Configuracion Password, se envia AT+PIN y seguido password que queremos
   Serial.print("AT+PIN1234");
   //Espera de 1 segundo según datasheet entre envio de comandos AT
   delay(1000);
   //Mostramos tanto por puerto serial y por led la finalizacion de la
   //configuracion AT del modulo bluetooth
   Serial.print("OK Cambios Realizados correctamente");
   digitalWrite(13,HIGH);
   //Al tener contador=2 ya no se vuelve a repetir el while, a no ser que
   //se produzca un reset, por tanto comenzaria un nuevo cambio de configuracion
   contador=2;
  }  
}

Por último os dejo los datasheets y los programas arriba expuestos:

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

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

nuevo ide arduino v1.0


Los chicos de Arduino han sacado una nueva versión de su software de programación, en concreto el Arduino IDE v1.0.

Como mejoras en el apartado visual se han cambiado los iconos del interface gráfico, así como los colores que lo componen, han añadido también una barra que nos indica el proceso de verificación de programa o el proceso de subida de nuestro sketch hacia el Arduino.

Además se ha cambiado la extensión de los sketchs, que ahora pasan de ser .pde a .ino. También se ha añadido la opción en File de subir programa desde programador, el cual lo podemos seleccionar desde la opción Tools en la opción Programmer, en el anterior IDE de Arduino esto lo teniamos que hacer modificando un archivo .txt y modificando una línea de dicho archivo. Se han mejorado algunas librerias como la Wire, la SD, la SoftSerial, etc.

Aquí podéis ver unas capturas de pantalla para observar las diferencias visuales entre el IDE anterior y esta nueva versión del IDE, así como una de la incorporación de la barra de progreso:

Desde aquí podéis descargaros la nueva versión de este IDE para 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 Barcamp Ordes 2011


Es un evento organizado entre BricoGeek.com e Inestable.org con la colaboración de la Xunta de Galicia y se realizará en el la casa de la cultura de Ordes donde se dispondrá de un aula para nosotros donde poder cacharrear durante todo el día. La fecha se ha fijado el 5 de Noviembre y a continuación o dejo más detalles. No es un evento con temario cerrado! irán añadiendo cosas según las ideas de los participantes. Pasad con cualquiera de las páginas arriba mencionadas para dejar vuestro comentarios con ideas y demás.

Temario inicial:

  • Introducción a la electrónica.
  • Presentación de la plataforma Arduino.
  • Montajes típicos e iniciación a la robótica.
  • Presentación y explicación de robots Oruga.
  • Comunicación inalámbrica mediante Xbee.
  • Presentación de módulos de expansión y material diverso.

No os lo penséis dos veces y pasaros por Ordes el 5 de noviembre.

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

Envio de información de Arduino a VB6.0 y de VB6.0 a Arduino


Este post es para entender el funcionamiento de la comunicación de Arduino con Visual Basic 6.0 y viceversa. He realizado un pequeño programa que nos permite la comunicación desde Arduino a Visual Basic 6.0 mediante puerto serie y de Visual Basic 6.0 a Arduino.

Para comprobar la comunicación desde Arduino a Visual Basic 6.0 vamos a controlarla mediante un pulsador conectado al pin 12 de nuestro Arduino y para comprobar el envío desde Visual Basic 6.0 a Arduino disponemos de un led conectado al pin 13.

El programa en Visual Basic 6.0 también es bastante sencillo, cuenta con dos botones, dos labels, un control de puerto serie y un temporazidor (Timer), para realizar cada 20 ms, en este caso, una acción automáticamente. Aquí una imagen de la aplicación:

Aquí tenéis el código hecho en Visual Basic 6.0:

Option Explicit

Dim dato As String 'Variable para guarda el dato recibido por el puerto serie

'Botón de conectar
Private Sub cmdConectar_Click()
Serie.PortOpen = True   'Abrimos el puerto serie
cmdConectar.Enabled = False 'Deshabilitamos botón de conectar
cmdDesconectar.Enabled = True 'Habilitamos botón de conectar
Timer1.Enabled = True 'Habilitar temporizador
End Sub

'Botón de desconectar
Private Sub cmdDesconectar_Click()
Serie.PortOpen = False  'Cerramos el puerto serie
cmdConectar.Enabled = True 'Habilitamos botón de conectar
cmdDesconectar.Enabled = False 'Deshabilitamos botón de desconectar
Timer1.Enabled = False 'Deshabilitamos temporizador
End Sub

'Función que se realiza automáticamente cada 20 ms
Private Sub Timer1_Timer()
dato = Left(Serie.Input, 1) 'Cortamos el dato que nos llega por puerto serie
'para solamente tener un único caracter
pulsador.Caption = dato 'Asigamos ese dato a nuestra label para mostrar el estado
'del pulsador
Serie.Output = pulsador.Caption 'Enviamos al arduino nuestro dato recibido por puerto serie
End Sub

El código arduino es bastante básico pero que sirve perfectamente para entender la comunicación serie entre VB y Arduino:

//Programa de comunicación bilateral Arduino-Visual Basic 6.0
//Mediante un pulsador enviamos información a visual y desde visual
//dependiendo del estado de ese pulsador mandamos una orden a arduino
//para encender un lez o apagarlo.
//Programa realizado por Regata

int boton=12; //pulsador conectado en pin 12
int led=13;   //led conectado en pin 13

void setup()
{
Serial.begin(9600); //Configuración de puerto serie
pinMode(led,OUTPUT); //Indicamos led como salida
//NOTA: no hace falta indicar el pulsador como entrada
}

void loop()
{
Serial.print(digitalRead(boton),DEC); //Enviamos por puerto serie el
//estado del pulsador hacia VB
if (Serial.available())  //Comprobamos si hay datos desde VB hacia Arduino
{
byte dato; //Variable donde guardaremos el dato recibido por puerto serie
dato=Serial.read();  //Guardamos el dato recibido
switch(dato)
{
case '0': //Apagamos el led si recibimos '0' por puerto serie
digitalWrite(led,LOW);
break;
case '1': //Encendemos el led si recibimos '1' por puerto serie
digitalWrite(led,HIGH);
break;
}
}
delay(30);
}

Aquí tenéis el esquema de conexión:

Y por último os dejo un video del funcionamiento:

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

Módulo bluetooth gp-gc021


Me ha llegado a casa un nuevo juguete con el que cacharrear, se trata de un módulo bluetooth GP-GC021 de sure electronics, que compré por ebay a un precio próximo a los 12. Esto me va a servir para poder aprender a comunicar nuestro Arduino o Pinguino PIC mediante bluetooth con cualquier dispositivo que tenga bluetooth, en mi caso lo voy a intentar hacer con mi telefono móvil, un htc desire s que lleva sistema android y que gracias a la appinventor podremos diseñar nuestros programas de control a medida.

Os voy a contar un poco sobre este dispositivo:

Se trata de un módulo bluetooth basado en el chipset BlueCore4-AudioROM. Presenta un chip GL-6B que puede operar con una memoria Flash externa de hasta 8Mbit de 16 bits. Cuando es usado con la pila de software CSR Bluetooth, provee un sistema totalmente compatible con especificación Bluetooth V2.0+EDR para comunicaciones de datos y voz.

Como características principales podemos destacar:

  • 3.3V de voltaje de operación.
  • No necesita componentes externos para su funcionamiento.
  • Interface UART.
  • Bluetooth Spec v2.0+EDR Compliant
  • Enhanced Data Rate (EDR) compliant with V2.0.E.2 of specification for both 2Mbps and
    3Mbps modulation modes.
  • Full Speed Bluetooth Operation with Full Piconet Support.
  • Support for 8Mbit External Flash Onboard.
  • Support for 802.11Co-Existence.

Ahora toca aprender a realizar programas para android con appinventor para poder sacar el máximo jugo a este módulo y poder dotar a mis futuros proyectos de comunicación inalámbrica media bluetooth.

Para practicar con él he realizado en eagle una placa para poder pinchar el módulo en un placa protobard, además de ser más cómoda para realizar los prototipos. Os dejo una imagen del módulo para que veais que pequeñito es y una imagen del fotolito que he realizado, así como el datasheet del módulo y la libreria para eagle del mismo.

Aquí teneís los ficheros (datasheet y libreria para eagle del módulo bluetooth): http://www.mediafire.com/?x3wbuxs89xh1bq0

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