Subir a Inicio

PaperBluetooth: Bluetooth Shield para Arduino

Descripción

Ultimamente están apareciendo módulos bluetooth bastante económicos (<5€), Estos módulos permiten la conexión serie por bluetooth entre Arduino (Esclavo) y un PC o móvil (Maestro), la única pega que tienen es que están alimentados con 3,3v.
El presente proyecto simplemente es un adaptador para Arduino de uno de estos módulos.

Esquema

El circuito que utilizaremos es una simplificación de los circuitos que existen en internet de los diferentes módulos más o menos compatibles, pero partiendo de las indicaciones dadas para el módulo SURE GP-GC021.

Como puedes ver en el esquema conectamos la salida TX del módulo directamente a la entrada de arduino, ya que según las características del chip ATMega, considera como nivel alto cualquier valor que esté por encima de 0,6Vcc. Por lo que si lo alimentamos con 5v => 0,6x5=3, valor inferior al que nos da el módulo bluetooth SURE.

La entrada RX del módulo (3,3v) la tomamos de un divisor de tensión formado por las resistencias R1 (5K6) y R2 (10K) acoplado entre la patilla Tx (5v) de Arduino y masa (0v)
Si despreciamos la intensidad de entrada en el módulo bluetooth: 
I=Vcc/(R1+R2)
Luego la caída de tensión que esta intensidad generará en la resistencia R2=
Vo=R2*I=R2*Vcc/(R1+R2)=10*5/(15,6)=3,2v
Que es un valor compatible con la tensión de entrada del módulo.

En la la patilla de Reset del módulo colocamos una resistencia Pull-Up a Vcc (se activa a nivel bajo).

Las patillas 13,14,21 y 22 a masa.

NOTA: Si utilizas otro módulo compatible comprueba mirando en sus hojas de características si es necesario llevar a masa la patilla 14.

En algunos módulos se puede conectar en la patilla 24 un LED que nos indica el estado del mismo.

Por defecto el módulo SURE tiene una velocidad de 9600 baudios, pero parece que se puede modificar mediante instrucciones AT, para lo cual es necesario puentear los terminales 3 (CTS) y 4 (RTS) según las instrucciones indicadas en:

http://www.circuit-blog.com/how-to-change-baud-rate-of-bluetooth-modem-bluesmirf-gold-using-arduino-terminal/

La placa tiene prevista la alimentación a partir de los 5v de la placa Arduino (~500mA) mediante la colocación en serie de dos diodos rectificadores que provocan cada uno una caida de tensión de 0,7v) es decir 5-0,7*2= 3,6v (admisible de 2,2v a 4,2v).
Otra posibilidad es utilizar la tensión de 3,3v disponibles en la placa Arduino que puede suministrar como máximo 50 mA, intensidad suficiente para el módulo de SURE GP-GC021 que consume como máximo 10mA según su hoja de características.

NOTA:
Lo que no debemos hacer es conectar la alimentación de 5v (rebajada con los diodos a 3,6v) y la alimentación de 3,3v, ya que estaríamos alimentando el módulo simultáneamente con 3,6v y con 3,3v !!
 
Realización

Lo primero es localizar el módulo

una vez que lo tengamos :-)   ...

Utilizaremos el método Paper, que consiste en ayudarnos en unas pegatinas para facilitarnos el proceso de montaje y soldadura.

Primero imprimiremos (sin aplicar ningún tipo de escala) el documento PaperBluetooth, lo puedes descargar del enlace de la parte inferior de esta página en el apartado de descargas:


Una vez impreso el documento, comprobaremos que la impresión se ha realizado a la escala correcta con la ayuda de la regla impresa situada en el lateral izquierdo de la hoja. Al colocar a su lado un regla en centímetros deberán coincidir las marcas.


En el documento tenemos tres posibilidades de realización, una con circuito impreso, y las otras dos con stripboard, con todos los pines disponibles (para poder conectar más shield, y una placa sencilla que ocupa los terminales de GND, 5v y 3,3v , y TX y RX. Vamos a ver como realizar ésta última variante:



Si quieres puedes proteger la paperetiqueta con un poco de plástico transparente autoadhesivo (aironfix):



Si quieres puedes proteger con un poco de plástico transparente la paperetiqueta antes de recortarla.

Con un cutter cortamos un trozo de stripboard de 12 tiras x 20 agujeros

Primero lo marcamos


Con un cutter cortamos la placa trazando el corte sobre la línea de agujeros para facilitar la rotura de las piezas.


Con una ligera presión separamos las piezas


Ahora recortamos la placa para permitir el acceso a los terminales del Arduino, que la placa bluetooth no utiliza (es importante profundizar en la esquina indicada en la figura por los dos lados de la placa).


Con unos alicates flexionamos ligeramente hacia arriba y hacia abajo hasta que se separen los recortes.


Aplicamos adhesivo


Con ayuda de una aguja la colocamos de forma que los agujeros de la paperetiqueta coincidan con la placa de stripboard, y perforamos todos los agujeros de la paperetiqueta que necesitemos.


Desplazamos los pines macho, ya que los vamos a soldar por la parte inferior


Y soldamos los diferentes componentes. Para soldar el módulo, lo que he hecho, ha sido soldar trozos de cable a la placa, para posteriormente colocando el módulo sobre la placa podemos soldar uno a uno estos cables



 Para soldar los componentes y para cortar las pistas inferiores fíjate en el dibujo del paperdocumento:



Y este es el resultado final

Notas:
Como ves, no he conectado ningún led, y la señal de alimentación de 3,3v la tomo directamente de la placa Arduino no he colocado los diodos que puentean 5v y 3,3v) 


Y lo podemos conectar en el Arduino (fíjate que dejamos el pin de reset libre)



INSTALACION (en Ubuntu)

Para probar nuestro circuito deberemos instalar en ubuntu con el administrador de aplicaciones el gestor de bluetooth "Blueman", ya que el applet de la barra superior que viene por defecto no nos permite activar el servicio de puerto serie.

Al conectar nuestro bluetooth en el ordenador, aparecerá un icono nuevo en la barra superior, y al hacer click sobre él se nos abrirá el programa.


Ahora alimentaremos nuestro Arduino con la placa Bluetooth conectada, y apretamos sobre el botón Buscar del programa Blueman, y nos aparecerá la lista de dispositivos bluetooth disponibles (en mi caso solamente el módulo Sure) :



Lo seleccionamos y apretamos el botón configurar, con lo que se nos abrirá una ventana para emparejarlo con nuestro ordenador:


Seleccionamos la segunda opción e introducimos la contraseña "1234" (tal vez tu módulo necesite introducir "0000").



El programa nos solicita que introduzcamos la clave en nuestro módulo bluetooth: EINGG??!! cómo voy a hacer eso!! así que no hago nada y espero un poco...



 Oh no!! el programa falló!!  no te preocupes, al cerrar la ventana vemos que el dispositivo está conectado (fíjate en el icono de la llave)


Ahora que está emparejado, podemos habilitar el servicio de puerto serie, para lo cual, teniéndo seleccionado el icono del módulo Sure, volvemos a apretar el botón de configuración, y nos aparecerá una ventana con los servicios disponibles:

Seleccionamos el puerto serie y apretamos el botón de "Adelante", al cabo de un ratito, el sistema nos indicará en la parte superior derecha de la pantalla que se ha habilitado un puerto serie en /dev/rfcomm0:


y el icono de Bluemon de la barra superior de la pantalla del ordenador indicará que tenemos una conexión bluetooth activa:

Ahora ya podemos utilizarlo!!

Si quieres, colocando el cursor sobre los iconos de la derecha de Bluemon, puedes ver la calidad de conexión de tu módulo:


Ejemplo: Dimmer.pde

Un ejemplo muy sencillo de uso es utilizar el programa de ejemplo del entorno Arduino dimmer (Arduino/menu/File/Examples/Communication/Dimmer).

Tienes más información en el documento disponible al final de este documento en el apartado de descargas (en la carpeta Sketches):



Este programa espera a recibir un valor byte (0-255) del puerto serie y cuando lo recibe, ilumina más o menos un led conectado en la patilla 9, como nuestra placa bluetooth dispone del servicio serie, y está conectada a los terminales TX y RX de Arduino, lo que reciba por bluetooth se lo transmitirá a Arduino como si fuera a través del cable USB.

Lo primero que deberemos hacer es cargar el programa Dimmer en nuestro Arduino. El proceso de carga lo haremos por el método habitual, es decir a través del cable USB. Tal vez tengas problemas de carga si tienes el módulo bluetooth conectado al Arduino, ya que también utiliza los terminales Tx y Rx del Arduino. (en este caso quita el módulo bluetooth del Arduino).

Conectaremos el terminal positivo (el más largo) de un led al pin 9 de Arduino, y el negativo a través de una resistencia (de 330 Ohmnios a 1K) a GND.


Desde el PC necesitaremos un terminal serie que permita configurar el puerto serie, yo lo he intentado con el que incorpora el entorno Arduino, pero no he conseguido conectarlo al puerto /dev/rfcomm0, así que me he descargado con el administrador de aplicaciones el GTKTerm que se instala en Aplicaciones/Accesorios/Serial Port Terminal.

En este programa podemos configurarle para que se conecte a través del puerto rfcomm0 (GKTTerm/Menu/Configuration/Port) :


Y ahora lo que escribamos en pantalla lo recibirá nuestro Arduino, encendiendo más o menos el LED.

Debes tener en cuenta que lo que mandas es un Byte, y que los teclados de ordenador están codificados en ASCII, es decir cuando aprietas la tecla A envías el byte 65. A continuación tienes una lista de los códigos ASCII del 00 al 255 que utiliza un teclado de PC:
 

Para probar el funcionamiento del módulo, puedes apretar las siguientes teclas:
<-  (Tecla retroceso): 08  => LED iluminación baja
(letra z minúscula):122 => LED iluminación intermedia
º (símbolo de grado):248 => LED iluminación alta

NOTA: Cuando escribes en el terminal las teclas que escribes no se visualizan en pantalla, ya que se envían al Arduino, si quieres que se muestren, debes activar el "Eco local" (GTKTerm/Menu/Configuration/Local echo)





Ejemplo: LEDSerial.pde

En este ejemplo encenderemos y apagaremos 8 LEDS desde un terminal (ya sabes, quien enciende un LED mueve el mundo!!) , y en  vez de conectar el PC con el Arduino, conectaremos un móvil con Android.

El móvil debe tener instalado un terminal serie bluetooth, yo he utilizado  Blueterm, descargable desde Android Market. Este programa es un terminal serie, que envía los comandos que escribas directamente por el bluetooth del móvil.

El hardware consistirá en un conjunto de diodos LED (con su correspondiente resistencia) conectados entre las patillas 6-13 y masa, aunque yo he utilizado el PaperLED

Tienes más información en el archivo de descargas (directorio sketches) disponible en el enlace situado al final de esta página.

Los pasos a realizar son los siguientes:

1 Instalar el sketch LEDSerial.pde en el Arduino

(El archivo LEDSerial.pde lo tienes en el archivo de descargas disponible en el enlace al final de esta página)


/*
  LED Serie

 Este ejemplo se muestra como encender diferentes leds en funcin de los datos que Arduino
 reciba por el puerto serie.  Los datos son enviados como bytes individuales, comprendidos en el rango de 0 a 255.


 Hardware:
 LEDs conectados entre los pines 6-13 a masa (con su correspondiente resistencia).
 Un Vibrador de 5v entre el pin 5 y masa
 Conexion serie (cable USB, Modulo bluetooth, Max232 ...)
 Terminal serie desde PC o movil

 creado en 2011
 Iñigo Zuluaga
 www.txapuzas.blogspot.com

 Este codigo es de dominio publico.


 */

const int BuzzerPin = 5;    // Pin en el que se conecta el vibrador
const int LedPin1 = 6;      // Pin en el que se conecta el LED 1
const int LedPin2 = 7;      // Pin en el que se conecta el LED 2
const int LedPin3 = 8;      // Pin en el que se conecta el LED 3
const int LedPin4 = 9;      // Pin en el que se conecta el LED 4
const int LedPin5 = 10;     // Pin en el que se conecta el LED 5
const int LedPin6 = 11;     // Pin en el que se conecta el LED 6
const int LedPin7 = 12;     // Pin en el que se conecta el LED 7
const int LedPin8 = 13;     // Pin en el que se conecta el LED 8
    
void setup()
{
  // configura la comunicacion serie:
  Serial.begin(9600);
  // configura los pines de los leds y buzzer como salida:
  pinMode(BuzzerPin, OUTPUT);
  pinMode(LedPin1, OUTPUT);
  pinMode(LedPin2, OUTPUT);
  pinMode(LedPin3, OUTPUT);
  pinMode(LedPin4, OUTPUT);
  pinMode(LedPin5, OUTPUT);
  pinMode(LedPin6, OUTPUT);
  pinMode(LedPin7, OUTPUT);
  pinMode(LedPin8, OUTPUT);
}

void loop() {
  byte dato;
  char* mensaje;

  // mira si se ha recibido algo del puerto serie:
  if (Serial.available()) {
    // lee el ultimo byte recibido (valor entre 0 y 255)
    dato=Serial.read();
    switch(dato){
      case 113: // q
        digitalWrite(LedPin1, HIGH);   // enciende el LED 1
        mensaje="LED 1 Encendido";
        break;
      case 97: // a
        digitalWrite(LedPin1, LOW);   // apaga el LED 1
        mensaje="LED 1 Apagado";
        break;
      case 119: // w
        digitalWrite(LedPin2, HIGH);   //  enciende el LED 2
        mensaje="LED 2 Encendido";
        break;
      case 115: //s
        digitalWrite(LedPin2, LOW);   // apaga el LED 2
        mensaje="LED 2 Apagado";
        break;
      case 101: // e
        digitalWrite(LedPin3, HIGH);   //  enciende el LED 3
        mensaje="LED 3 Encendido";
        break;
      case 100: // d
        digitalWrite(LedPin3, LOW);   // apaga el LED 3
        mensaje="LED 3 Apagado";
        break;
      case 114: // r 
        digitalWrite(LedPin4, HIGH);   //  enciende el LED 4
        mensaje="LED 4 Encendido";
        break;
      case 102: // f
        digitalWrite(LedPin4, LOW);   // apaga el LED 4
        mensaje="LED 4 Apagado";
        break;
      case 116: // t
        digitalWrite(LedPin5, HIGH);   //  enciende el LED 5
        mensaje="LED 5 Encendido";
        break;
      case 103: // g
        digitalWrite(LedPin5, LOW);   // apaga el LED 5
        mensaje="LED 5 Apagado";
        break;
      case 121: // y
        digitalWrite(LedPin6, HIGH);   // enciende el LED 6
        mensaje="LED 6 Encendido";
        break;
      case 104: // h
        digitalWrite(LedPin6, LOW);   // apaga el LED 6
        mensaje="LED 6 Apagado";
        break;
      case 117: // u
        digitalWrite(LedPin7, HIGH);   // enciende el LED 7
        mensaje="LED 7 Encendido";
        break;
      case 106: //j
        digitalWrite(LedPin7, LOW);   // apaga el LED 7
        mensaje="LED 7 Apagado";
        break;
       case 105: // i
        digitalWrite(LedPin8, HIGH);   // enciende el LED 8
        mensaje="LED 8 Encendido";
        break;
      case 107: // k
        digitalWrite(LedPin8, LOW);   // apaga el LED 8
        mensaje="LED 8 Apagado";
        break;
     case 122: // z
        digitalWrite(LedPin1, HIGH);   // enciende TODOS los LEDs
        digitalWrite(LedPin2, HIGH);
        digitalWrite(LedPin3, HIGH);
        digitalWrite(LedPin4, HIGH);
        digitalWrite(LedPin5, HIGH);
        digitalWrite(LedPin6, HIGH);
        digitalWrite(LedPin7, HIGH);
        digitalWrite(LedPin8, HIGH);
        mensaje="TODOS los LEDs Encendidos";
        break;
      case 109: // m
        digitalWrite(LedPin1, LOW);   // apaga TODOS los LEDs
        digitalWrite(LedPin2, LOW);  
        digitalWrite(LedPin3, LOW); 
        digitalWrite(LedPin4, LOW);  
        digitalWrite(LedPin5, LOW); 
        digitalWrite(LedPin6, LOW); 
        digitalWrite(LedPin7, LOW); 
        digitalWrite(LedPin8, LOW);  
        mensaje="TODOS los LEDs Apagados";
        break;
      default:
        Serial.print(dato);
        Serial.print(": ");
        mensaje="Tecla no admitida !";
        digitalWrite(BuzzerPin, HIGH);
        delay(200);
        digitalWrite(BuzzerPin, LOW);
        delay(200);
    }
    // Emite un pitido
    digitalWrite(BuzzerPin, HIGH);
    delay(200);
    digitalWrite(BuzzerPin, LOW);
    // Envia respuesta
    Serial.println(mensaje);
  }
}
 



El sketch hay que grabarlo a través del cable USB, y desconectando el módulo PaperBluetooth, ya que como el módulo utiliza los terminales TX y RX interfiere en la grabación.


2 Conectar en la placa Arduino el módulo bluetooth, los leds (PaperLED), y el vibrador.
3 Alimentar el arduino
4 Activar la Wifi en el móvil y desde el Market descargar el programa "BlueTerm"
5 Activar el Bluetooth
6 Ejecutar el programa "BlueTerm"
7 En el menú del programa seleccionar "Conectarse a un dispositivo"
8 La primera vez tendrás que apretar "Buscar dispositivos" y emparejarlo con el dispositivo SURE con la clave "1234" o "0000", posteriormente simplemente seleccionaremos "Sure" de la lista de dispositivos sincronizados.
9 Una vez sincronizados, puedes enviar comandos al Arduino.


Los teclas (Bytes) de control son:

LEDEncencerApagar
1q (113)a (97)
2w (119)s (115)
3e (101)d (100)
4r (114)f (102)
5t (116)g (103)
6y (121)h (104)
7u (117)j (106)
8i (105)k (107)
Todosz (122)m (109)



Nota: En el video no se aprecia el sonido del buzzer ya que la cámara no lo percibe.


Información legal

0. Fallos y txapuzas no controladas.
Los circuitos publicados se han comprobado y funcionan correctamente. No obstante en el caso de que en una página se publiquen varios montajes diferentes de un mismo circuito (sobre un stripboard, PCB, ...), pueden existir fallos que no se han detectado en alguno de los montajes, ya que normalmente sólo realizo un montaje. En ese caso por favor notificad el fallo para que pueda corregirlo. muchas gracias.

1. Propiedad intelectual
Todos los derechos de propiedad intelectual del contenido de Txapuzas eléctronicas, están bajo una licencia Creative Commons Share-Alike, cuyo contenido podéis revisar en este enlace.
Por tanto queda permitido copiar, distribuir, comunicar públicamente la obra y hacer obras derivadas de la misma, siempre que se respeten los términos de la licencia arriba reseñada.
3. Actualizaciones y modificaciones de Txapuzas electrónicas
El autor se reserva el derecho a actualizar, modificar o eliminar la información contenida en Txapuzas eléctrónicas, y la configuración o presentación del mismo, en cualquier momento, sin previo aviso, y sin asumir responsabilidad alguna por ello.
4. Indicaciones sobre aspectos técnicos
El autor no asume ninguna responsabilidad que se pueda derivar de problemas técnicos o fallos en los equipos informáticos, que se produzcan a causa de los circuitos e ideas expuestos en el blog de txapuzas electrónicas, así como de los daños que pudieran ocasionar.
El autor se exime de toda responsabilidad ante posibles daños o perjuicios que pueda sufrir el usuario a consecuencia de errores, defectos u omisiones en la información facilitada.


El esquema, descripción e imágenes están disponibles en el siguiente enlace:

Si tienes problemas con el enlace anterior, aquí puedes descargar todos los archivos de txapuzas

Notas
Para la realización de este proyecto se han utilizado los programas: Arduino, Inkscape, Openoffice, Gimp, Picasa, Fritzing
Si encuentras algún fallo, se te ocurre alguna mejora, o simplemente quieres hacer algún comentario, te lo agradeceré: Gracias :-)

41 comentarios:

  1. genial! llevo con la antenita BT como un mes, y yo la verdad que conecte la alimentación de 3,3v y el TX RX y me funciono! una pregunta, sabes como mandarle comandos AT, para por ejemplo, cambiarle el nombre, cambiarle la velocidad de sincronización y contraseña?

    ResponderEliminar
  2. Hola Santiago
    No sé si todos los módulos bluetooth pueden ser configurados mediante instrucciones AT, pero a continuación te dejo un enlace:

    http://www.ebay.com/itm/2X-Bluetooth-TTL-RS232-Transceiver-Module-master-slave-/280561668647?pt=BI_Electrical_Equipment_Tools&hash=item4152c75227

    Saludos

    ResponderEliminar
  3. Por si a alguien le sirve:

    http://my.opera.com/gatodrolo/blog/show.dml/20699632

    No lo he comprobado, sólo lo he encontrado buceando por la red.
    Suerte!

    ResponderEliminar
  4. A mi me da un problemita... se conecta..se empareja, pero cuando quiero conectar el puerto serie me dice que el dispositivo se ha añadido con exito, pero falló al conectar...

    ResponderEliminar
  5. Hola Ramón

    ¿Qué sistema operativo utilizas?
    ¿Que puerto serie seleccionas?

    ResponderEliminar
  6. Holae Iñigos estoy usando Lubuntu en un portatil, en cambio

    El puerto serie no llega a crearse, ya que al intentar crearlo me dice " did not receive a reply bla bla bla the reply timeout expired. En ubuntu y windows XP en el sobremesa si me funciona con el mismo adaptador usb bluetooth.

    ResponderEliminar
  7. Hola Ramón,
    Lo que comentas es bastante extraño.
    Si el módulo bluetooth está emparejado, es por que ha recibido y enviado comandos con el PC, por lo tanto lo reconoce, y además ha aceptado su clave.
    ???????????????????????????

    ResponderEliminar
  8. Hace dias compre uno de estos modulos Bluetooth, despues de darle muchas vueltas he descubierto que tiene un firmaware Linvor 1.5 (HC06).

    Lo unico que quiero hacer es cambiar los baudios y el nombre a mi bluetooth, pero como de momento no tengo ningun adaptador FTDI, queria utilizar mi arduino Nano 3.0. Esto es posible?

    Gracias y muy buen blog.

    ResponderEliminar
  9. Hola EXIT

    En la parte inicial del documento tienes un enlace para modificar los baudios y demás parámetros mediante comandos AT, yo no lo he intentado, pero puedes probar.

    Saludos

    ResponderEliminar
  10. na, que no es capaz de crear un puerto serie. Y si introduzco la contraseña y se enlaza pero cuando tiro a unir al puerto serie no se une...tenía Lubuntu le he instalado ubuntu 11.10 y nanai. He instalado el paquete bluetooth support y el blueman. Para mi que le falta algo por configurar o instalar al sistema...

    ResponderEliminar
  11. Segun el enlace que hay en esta pagina, que es para el modulo bluetooth BlueSmirf, hay que puentear CTS+RTS. A mi no me funciona...

    Buscando por internet, encontre un documento en que explican que a traves de un interfaz para modulo bluetooth conectan este a traves TX,RX,Vcc y GND a un arduino, y que para entrar en modo configuración ponen el PIO11(pin 34) a nivel alto, yo estoy muy verde en esto porque acabo de empezar, que quiere decir con: "poner a nivel alto"?
    Con el "PaperBluetooth" no hace falta hacer esto?
    Nadie ha tenido que cambiar los baudios o el nombre del modulo bluetooth con comandos AT?
    Estoy preguntando tonterias?

    ResponderEliminar
  12. Hola Exit

    La placa PaperBluetooth dispone el puente J1 para conectar CTS y RTS, y así poder programarlo.

    Cada módulo puede tener un modo diferente de programación (depende del programa que tenga cargado el micro que tiene el módulo bluetooth, incluso algunos módulos, pueden no tener modo programación y no permitir modificar ningún parámetro), deberías investigar y ver si tu módulo admite este modo y como se activa.

    "Poner a nivel alto" el pin 34 quiere decir que debes conectar el pin 34 a 3,3v.

    El módulo Sure no necesita poner a nivel alto el pin 34.

    Yo no he probado a cambiar ningún parámetro del módulo bluetooth, no he tenido necesidad.

    NOTA: No hay preguntas tontas, sólo respuestas imbéciles. :-)

    Saludos

    ResponderEliminar
  13. Gracias por contestar...

    Ya ves que esto me tiene loco son casi las 2 de la mañana y estoy aqui liado!!

    Te comento...

    El modulo que he comprado es el de DealExtreme, lo unico que se es que lleva el firmware Livor 1.5. Despues de mucho darle vueltas, tenia la solucion en mis narices. En la misma pagina de venta del modulo, hay unas imagenes de los usuarios que compraron este modelo, una de estas imagenes es un esquema para conectar el modulo a 5v. o mas, y efectivamente para poder configurarlo hay que utilizar el pin34.

    El problema de este esquema es que no se que valor tiene el diodo zener que utiliza.

    Por si te interesa aqui tienes el esquema:
    http://www.dealextreme.com/customerphotos/quarantined/201109/80711-05ddaa47-fb51-4965-91a2-32a56bdcc5b2.jpg

    Otra duda la tengo con el Pin de Reset. Segun el DataSheet si lo levamos a "Low" por unos 5ms, el modulo se resetea, entonces, hay que conectar el reset a 3,3v a traves de una resistencia de 10K?

    ResponderEliminar
    Respuestas
    1. Si tu firmware es el 1.5 no hay que poner el pin34 a High. si haces un upgrade entonces hay que poner el pin34 (cmd) a high. http://www.e-gizmo.com/KIT/images/EGBT-04/EGBT-045MS-046S%20Bluetooth%20Module%20Manual%20rev%201r0.pdf para que veas los distintos firmwares y sus comandos AT.

      Eliminar
  14. Hola EXIT
    El diodo Zener debería ser de 3,3v. Es simplemente un adaptador de tensión (junto con su resistencia) para utilizar el módulo con micros de 5v. (de 5v a 3,3v)
    En PaperBluetooth en vez de utilizar un zener y una resistencia, está hecho con un divisor de tensión realizado con dos resistencias, es exactamente lo mismo.

    Para garantizar que el módulo no se resetee aleatoriamente o ante picos de tensión, se suele conectar el pin de RESET a nivel alto (el nivel alto del módulo es 3,3v) mediante una resistencia de valor elevado (también se suele poner en sus cercanías algún condensador para evitar que algún pico lo resetee). Y en el caso de que quieras resetearlo debes conectar ese pin de RESET a masa (0v o GND) durante un tiempo mínimo de 5ms.

    Como Arduino tiene ya un chip regulador que genera 3,3v no es necesario utilizar el LM2937 para alimentar el módulo, ya que sacamos los 3,3v del propio Arduino (o si quieres un poco más txapuzas, colocando un par de diodos, tal y como tiene el PaperBluetooth, que generen una caída de tensión de 5v a 3,8v, que es una tensión compatible con el módulo).

    Saludos de nuevo

    ResponderEliminar
  15. Hola de nuevo EXIT
    Mirando tu esquema, me he dado cuenta que el sistema de resucción de tensión en la patilla RX mediante un diodo diodo no era la convencional para un diodo Zener (debería estar entre señal y masa) y me parece que es un diodo Schottky (Tensión inversa entre 0,2v y 0,4v en vez de 0,7v), podrías utilizar un BAT42 o similar.

    Tienes más información en:
    http://www.savagecircuits.com/forums/showthread.php?585-Mixed-Voltage-Systems-Interfacing-5V-and-3.3V-Devices

    Saludos

    ResponderEliminar
  16. Gracias Iñigo por tus explicaciones, pero sigo sin poder entrar en modo configuracion... :(

    Utilizando el esquema del "PaperBluetooth" he vuelto a montarlo todo (bueno sin los diodos, ya que cojo los 3,3v del arduino) y cambiando el jumper de las patillas 3 y 4, por un jumper entre la patilla 34 y Vcc (3,3v).

    Conecto el bluetooth a traves de la placa al arduino, pongo en nivel alto el pin 34, (incluso a veces ya lo dejo puesto antes de conectar el arduino), me voy al terminal y conecto por el puerto correspondiente, y al mandarle el comando "AT" y esperar la respuesta "ATok" o "ok", no responde nada...

    Ahora me pregunto, en teoria el puerto Com que debo usar, es el mismo que si conecto el arduino solo, no? (en mi caso el com3)
    Hay que tener en el arduino algun sketch para comunicarme con el modulo bluetooth? Si es asi, cual es? y si el arduino tiene que estar vacio, se pueden borrar los sketchs de este? como?

    Vamos que no hay manera, y necesito cambiar los baudios de 9600 a 57600 si o si...

    ResponderEliminar
  17. Hola EXIT

    El módulo Bluetooth utiliza las patillas Tx y Rx del Arduino, por lo que si estas alimentando al Arduino por USB, tambien estas utilizando esas patillas, y se volverá loco.
    El puerto serie NO es el mismo que el Bluetooth.
    Si mandas comandos AT por el puerto serie-USB le estaras mandando los comandos al Arduino, no al modulo.

    Cuando emparejas el modulo, y habilitas el servicio serie del módulo, se crea otro puerto serie Virtual, el correspondiente al modulo bluetooh, de la misma forma que cuando conectas el Arduino por el USB se crea otro puerto serie virtual (Los puertos series reales son los son los conectores RS232 de tu ordenador).

    Para utilizar el modulo bluetooth NO debes tener conectado el cable USB en el Arduino (debes alimentarlo con una pila de 9v), para que los datos serie enviados por el cable no interfieran con los datos enviados por bluetooth.

    Una vez que se ha creado el puerto serie virtual Bluetooth lo puedes utilizar como un puerto serie normal, es decir puedes enviarle datos al ordenador mediante Print, (tienes información en http://arduino.cc/es/Reference/Serial).

    Para leer los datos que el Arduino envía debes tener un programa monitor serie (o crear tu propio programa), tal vez puedas utilizar el que viene en el IDE del Arduino, pero debes utilizar el puerto serie virtual bluetooth.

    Los ejemplos de esta página reaccionan ante los datos que se le envíen al puerto serie Rx del Arduino, y como como está conectado el módulo bluetooth a él reaccionan ante los datos que recibe el módulo.

    Para cargar un sketch debes quitar el módulo bluetooth y cargarlo a través del cable USB (utilizando su puerto serie virtual).

    Saludos

    ResponderEliminar
  18. Gracias Iñigo
    Ahora voy entendiendo un poco mejor las cosas...

    Al final he optado por alimentar el arduino con 5v. sacados de un puerto USB, para ello he conectado solo los cables Vcc+GND del USB.

    He probado con el ejemplo que esta en la web (Dimmer), el modulo se conecta por bluetooth y al apretar la tecla "z" en el teclado, se enciende el led que le he puesto en el pin 9, el problema es que cuando apreto la tecla "retroceso" no veo ningun cambio de intensidad...

    Esto mismo tambien lo he probado con el arduino directamente y asi si que funciona!!

    Puede haber algun error en las comunicaciones? (TX,RX)

    Gracias

    ResponderEliminar
  19. Hola Exit
    Fijándote en la tabla ASCII de está página puedes ir enviando valores desde el teclado del pc no sólamente la tecla retroceso, prueba con otros valores, (del ASCII 0 al 255 que equivalen a señales de control, números y letras del teclado).
    Yo creo que el módulo si recibe datos, ya que se enciende el led con el la tecla "z".

    Si quieres, puedes enviar el dato que recibe el módulo bluetooth de nuevo al ordenador modificando el sketch de forma similar al ejemplo LEDSerial.pde

    Saludos

    ResponderEliminar
  20. Por fin!!
    Al final se me ha iluminado la bombilla...
    Al parecer, cuando recibi el modulo, empece a hacer pruebas con el, no recuerdo como lo hice, pero tal vez en una de esas pruebas logre cambiar los baudios del modulo sin darme cuenta, depues de esto empezo mi calvario...

    El error que tenia era muy sencillo, intentaba comunicarme con el modulo a 9600, cuando en realidad estaba a 57600.

    El problema es que no se como lo hice, porque no recuerdo haber conectado el modulo sin el cable USB del arduino. La unica explicacion que veo, es que antes de cargar ningun sketch, intente cambiar los baudios y el propio arduino me funciono como un simple FTDI...

    De todas formas gracias por tu paciencia. Tu trabajo es estupendo.

    Gracias.

    ResponderEliminar
  21. Según el esquema de dealextreme el rx y tx estan alrevés. Todavia no lo he conseguido hacer funcionar.

    ResponderEliminar
  22. EXIT si puedes pon una foto o esquema de tu montaje, yo tengo el mismo módulo que tu.

    ResponderEliminar
  23. Hola Nayma
    Debes de tener en cuenta que hay que conectar la patilla TX (Transmite) del módulo con la patilla RX(Recibe) de Arduino, y la RX(Recibe) del módulo con la TX(Transmite) del Arduino.
    Cuando hice este circuito estube mirando diferentes módulos similares, y todos tienen el patillaje similar, sólamente algunos tenían el LED en otro pin.
    Saludos

    ResponderEliminar
  24. Gracias Inizul,
    Vale, rx y tx correcto. El jumper, en que caso hay que ponerlo? por que creo que en este es entre el 34 y el positivo. Creo que ya lo tengo conectado pero no me hace caso :(

    ResponderEliminar
  25. voy avanzando, pero en el serial port no me dej aponer dev/rfcomm0
    el led del paper se queda conectado, me imagino que esta parejado.
    Exit a cuantos baudios lo tienes puesto?

    ResponderEliminar
  26. ya lo he conseguido!! La de horas que he pasado enredando y al final era que bastaba apagar el gestor de bluetooth.

    :) :) :)

    ResponderEliminar
  27. Hola Iñigo, estoy montando este circuito pero me est aencontrando donde comprar el modulo SURE GP-GC021.
    ¿Sabes donde puedo comprarlo?
    ¿Si utilizo http://www.sparkfun.com/products/10253 seria todo igual o tendria que cambiar algo en HW o SW?

    Gracias

    ResponderEliminar
  28. Hola Rul,
    Tal y como se indica en este blog, en ebay tienes un montón de módulos bluetooth compatibles desde 6€. Puedes hacer una búsqueda en ebay.com con "uart bluetooth module".

    Con el módulo que indicas, creo que sólo habría que conectar Rx y Tx.

    ResponderEliminar
  29. Buenas Iñigo
    Te cuento mi experiencia espero que le sirva de algo ha EXIT (Algo tarde)
    1º poder usar el terminal con la consola de arduino solo habría que crear un enlace una vez conectado a rfcomm0 (ln -s /dev/rfcomm0 /dev/ttSxx) donde xx es el primer número de consola libre que tengas, en mi caso el 32.
    2º Compré en su día un modulo bluetooth master firmaware Linvor 1.5 (HC06) (como el de EXIT).
    A pesar de que sincronizaba siguiendo tus instrucciones después no funcionaba en la consola terminal. Buscando encontre esto http://www.ebay.es/itm/Bluetooth-With-ExpansionBoard-Master-DIP-/280600004667?pt=LH_DefaultDomain_0&hash=item415510483b
    Como se aprecia en una de las fotos el modulo debería se esclavo, y no existe forma de cambiarlo por comandos AT con este firmware, (os pongo enlace a Hardware Manual y AT command para HC06 y HC05). http://www.e-gizmo.com/KIT/images/EGBT-04/EGBT-045MS-046S%20Bluetooth%20Module%20Manual%20rev%201r0.pdf
    En este manual se aprecian los dos modelos y sus diferentes comandos AT y configuraciones según el firmware que tengan.
    Por último y como solución en el blog http://byron76.blogspot.com/ nos cuenta como actualizar el firmware de nuestro dispositivo (con chip CSR) para así poder disponer de una amplia gama de comandos AT que nos permite comunicar a 115200 (tanto esclavo como maestro).
    Con este firmware el paperbluetooth funcionaría la parte de la comunicación pero no el led indicador, la cual habría que rediseñar.

    Perdón por el tocho, espero os sea de utilidad.

    ResponderEliminar
    Respuestas
    1. ln -s /dev/rfcomm0 /dev/ttySxx
      perdón por el error

      Eliminar
  30. Hola Iñigo.

    ¿La resistencia R1 de 5K6 de Rx podría ser sustituida por una de 4K7 ohm sin que afecte mucho a los cálculos? Es que casualmente de 5K6 no tengo ninguna y ahora mismo tampoco ninguna tienda de electrónica cerca. Si se pudiese usar una de 4K7 me facilitaría mucho todo, y si no, pues habrá que buscar una de 5K6 jeje o sino pongo una de 1K en serie con la de 4K7...

    Gracias, me encantan tus proyectos!

    ResponderEliminar
  31. Vaya lapsus he tenido, se nota que he dormido poco, me respondo solo.

    Con una sola resistencia de 4K7 trabajaría con una tensión de 3,4V que no parece apropiado. Añadiendo una resistencia de 560ohm en serie que tengo por aquí, si que estaría trabajando con 3,27V.

    Es menos elegante pero me ahorro el ir a buscar una resistencia de 5K6.

    Un saludo!

    ResponderEliminar
  32. Hola:

    ¡He encontrado una joya en lo que a Bluetooth se refiere aquí!

    Entiendo que una vez implementado tendría básicamente un "serial" por Bluetooth en vez de por cable USB. :/

    Mi pregunta es: ¿podría utilizar la conexión Bluetooth para enviar caracteres desde Arduino (esclavo) a, por ejemplo, mi movil Android (maestro)? Es decir, ¿podría hacer que Arduino se comportara como un teclado BlueTooth?

    Gracias,
    Rubén

    P.D. Igual alguien encuentra interesante este módulo BT un poquito (poco) más elaborado:
    http://www.dealextreme.com/p/jy-mcu-arduino-bluetooth-wireless-serial-port-module-104299

    ResponderEliminar
  33. Alguien me podría decir si este módulo sirve para usarse con Visual Basic 6.0 en el entorno Windows usando el COM. Gracias

    ResponderEliminar
    Respuestas
    1. Hola Eric
      La respuesta es SI.
      Este módulo simplemente crea un puerto serie virtual en el PC y el PC lo considerará un puerto serie normal (como si estuviera conectado con un cable RS232).
      Una vez que el PC reconoce la conexión, te puedes conectar (enviar y recibir datos) utilizando el método y/o programa que tu quieras,
      Saludos

      Eliminar
  34. Buenas,

    Soy muy nuevo en esto de la electronica y aun no me entero mucho... tengo una duda:

    ¿Para que sirve la resistencia R4 que esta conectada entre el catodo del led y la tierra?

    Muchas gracias

    Un saludo

    ResponderEliminar
    Respuestas
    1. Hola Kaze,
      La resistencia es para limitar el consumo del LED, y que no se estropee ni la puerta ni el LED.

      Tienes Info en: http://txapuzas.blogspot.com.es/2009/12/paperled-el-led-y-tarjeta-comprobacion.html

      Saludos

      Eliminar
    2. Gracias por la rapida respuesta

      Un saludo

      Eliminar
  35. buenas, haber si me pueden dar una mano.
    hace tiempo que vengo con esto y no lo consigo.
    cargar strechs al arduino via bluetooch, he visto que algunos lo
    han logarado , creo que el arduino BT, los cargas asi, o no ?
    tengo un arduino uno, y un bluetooch jy-mcu v1.05.
    En el publicado http://arduino.cc/forum/index.php/topic,65148.0.html , donde dice que lo ha logrado menciona
    unos pines que mi bluetooch tambien los posees ( ), lo he conectado como comentan pero no logro. aqui la info del bluetooch
    .

    Arduino Bluetooth mate
    Gnd/ BLK -> Gnd
    Gnd/CTS -> CTS - I
    Vcc -> Vcc
    RX -> TX
    TX -> RX


    http://www.aliexpress.com/item-img/WHOLESALE-100X-JY-MCU-3-3V-V1-03-BT-BOARDS-Serial-4-pin-Bluetooth-RF-Transceiver/581598394.html


    Omni

    ResponderEliminar