Pages Menu
TwitterFacebook



BANNER2_ALT

Posted by on Abr 15, 2014 in Comunicación, Proyectos de desarrollo | 17 comments

Comunicacion Arduino y Labview por Bluetooth

Comunicacion Arduino y Labview por Bluetooth

Comunicacion Arduino y Labview por Bluetooth

Ejemplo para el módulo bluetooth JY-MCU HeTPro.

a

OBJETIVO

Objetivo: Comunicar por medio de Bluetooth a un Arduino con LabView para obtener lectura de los sensores de Temperatura LM35 y MCP9701 de manera remota.

MATERIAL

–          Arduino Uno (Arduino Leonardo, Olimexino, etc.)

–          Convertidor TTL/CMOS-RS232 (o el MAX232)

–          Sensor de Temperatura LM35

–          Sensor de Temperatura MCP9701

–          Módulo de Bluetooth JY-MCU

–          Bluetooth USB para la computadora (En caso de que la PC no tenga Bluetooth)

DIAGRAMA ESQUEMATICO

arduino bluetooth

Figura 1: Conexión del Bluetooth con Arduino y los sensores de temperatura MCP9701 y LM35.

arduino bluetooth

Figura 2: Diagrama esquemático que muestra la conexión del Bluetooth con un convertidor TTL/CMOS  para la configuración del Bluetooth, ya sea para el cambio de velocidad de transmisión de datos, Nombre del dispositivo, etc. (El convertidor TTL/CMOS-RS232 puede ser remplazado por un MAX232).

INTRODUCCION

BLUETOOTH

Bluetooth es una especificación industrial para Redes Inalámbricas de Área Personal (WPAN) que posibilita la transmisión de datos entre diferentes dispositivos mediante un enlace por radiofrecuencia en la banda ISM de los 2,4 GHz. Los principales objetivos que se pretenden conseguir con esta norma son:

–  Facilitar las comunicaciones entre equipos móviles y fijos.

–  Eliminar los cables y conectores entre éstos.

–  Ofrecer la posibilidad de crear pequeñas redes inalámbricas y facilitar la sincronización de datos entre equipos personales.

Los dispositivos que con mayor frecuencia utilizan esta tecnología pertenecen a sectores de las telecomunicaciones y la informática personal, como PDA, teléfonos móviles, computadoras portátiles, ordenadores personales, impresoras o cámaras digitales.

Se denomina Bluetooth al protocolo de comunicaciones diseñado especialmente para dispositivos de bajo consumo, que requieren corto alcance de emisión y basados en transceptores de bajo costo.

Los dispositivos que incorporan este protocolo pueden comunicarse entre ellos cuando se encuentran dentro de su alcance. Las comunicaciones se realizan por radiofrecuencia de forma que los dispositivos no tienen que estar alineados y pueden incluso estar en habitaciones separadas si la potencia de transmisión es suficiente. Estos dispositivos se clasifican como “Clase 1”, “Clase 2” o “Clase 3” en referencia a su potencia de transmisión, siendo totalmente compatibles los dispositivos de una clase con los de las otras.

arduino bluetooth

Figura 3: Tabla de potencias del bluetooth.

En la mayoría de los casos, la cobertura efectiva de un dispositivo de clase 2 se extiende cuando se conecta a un transceptor de clase 1. Esto es así gracias a la mayor sensibilidad y potencia de transmisión del dispositivo de clase 1, es decir, la mayor potencia de transmisión del dispositivo de clase 1 permite que la señal llegue con energía suficiente hasta el de clase 2. Por otra parte la mayor sensibilidad del dispositivo de clase 1 permite recibir la señal del otro pese a ser más débil.

Los dispositivos con Bluetooth también pueden clasificarse según su ancho de banda:

arduino bluetooth

Figura 4: Tabla de ancho de banda del bluetooth.

MÓDULO DE BLUETOOTH  JY-MCU

Este pequeño módulo Bluetooth transmisor/receptor TTL fue diseñado para ser controlado a través de RS232. Permite tanto transmitir como recibir datos a través de tecnología bluetooth sin conectar cables a los dispositivos a comunicar. Es un dispositivo fácil de implementar y compacto.

Especificaciones

  • Módulo inalámbrico bluetooth TTL controlado por RS232.
  • De fácil uso y completamente encapsulado.
  • Antena impresa en el PCB.
  • Chipset: CSR.
  • Versión de bluetooth: V2.0.
  • Voltaje de operación: 3.3V.
  • Corriente de operación: 20 a 30mA.
  • Baud rates definidos por el usuario: 1200, 2400, 4800, 9600, 19200, 38400, 57600 y 115200.
  • Default 9600, N, 8, 1.
  • Password: 1234
  • Ideal para proyectos de robótica, sensores, instrumentación, transmisión de datos, etc.

ARDUINO

Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Se creó para electrónicos, artistas, diseñadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos.

Arduino puede tomar información del entorno a través de sus pines de entrada de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores. El Microcontrolador en la placa Arduino se programa mediante el lenguaje de programación Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Los proyectos hechos con Arduino pueden ejecutarse sin necesidad de conectar a un ordenador, si bien tienen la posibilidad de hacerlo y comunicar con diferentes tipos de software (p.ej. Flash, Processing, MaxMSP).

Las placas pueden ser hechas a mano o compradas montadas de fábrica; el software puede ser descargado de forma gratuita. Los diseños Del PCB están disponibles bajo la licencia abierta.

SENSOR DE TEMPERATURA MPC9701

EL MPC9701 es una familia de termistores activos lineales. Es un sensor análogo de temperatura que convierte la temperatura en un voltaje análogo. Es de bajo costo, bajo consumo con una precisión de ±4°C desde 0°C a +70°C con un consumo típico de  6 µA.

Comparados con los sensores resistivos, los termistores lineales activos no requieren un circuito acondicionador de señal. El pin de salida de voltaje (Vout) puede ser conectado directamente a una entrada ADC de un Microcontrolador.

Los coeficientes de temperatura están escalados para proporcionar una resolución de 1°C/bit para un ADC de 8 bits con una referencia de voltaje de  5V.

Este sensor provee una solución de bajo costo para aplicaciones que requieran mediciones del cambio de temperatura relativa.

Esta familia es inmune a los efectos parásitos de la capacitancia y pueden manejar grandes cargas capacitivas. Esto provee de una gran flexibilidad al momento de diseñar un PCB, permitiendo que el dispositivo se encuentre alejado del Microcontrolador.

APLICACIONES

–          Discos Duros y periféricos de la PC

–          Sistemas de entretenimiento

–          Aplicaciones para el hogar

–          Equipos de oficina

–          Paquetes de baterías y equipos portables

–          Propósito general para el monitoreo de temperatura

ESPECIFICACIONES

–          Tamaño reducido

–          Encapsulado: TO-92-3

–          Rango de medición: -40°C to +125°C

–          Precisión: ±4°C (max.), 0°C to +70°C

–          Optimizado para conversores ADC 19.5 mV/°C

–          Amplio voltaje de operación:  VDD = 3.1V to 5.5V

–          Bajo corriente: 6 µA

–          Optimizado para trabajar cargas capacitivas grandes.

arduino bluetooth

Figura 5: Grafica del voltaje de salida contra la temperatura para el sensor de temperatura MCP7901.

SENSOR DE TEMPERATURA LM35

Es un sensor de temperatura con una precisión calibrada de 1ºC. Su rango de medición abarca desde -55°C hasta 150°C. La salida es lineal y cada grado centígrado equivale a 10mV, por lo tanto:

150 °C  = 1500 mV

-40°C = -400 mV

ESPECIFICACIONES

–          Esta calibrado directamente en grados Celsius.

–          La tensión de salida es proporcional a la temperatura.

–          Tiene una precisión garantizada de 0.5°C a 25°C.

–          Opera entre 4 y 30 volts de alimentación.

–          Baja impedancia de salida.

–          Baja corriente de alimentación (60uA).

–          Bajo costo.

LM35

Figura 6: Grafica de la Temperatura vs Voltaje del sensor de temperatura LM35.

LABVIEW

LabVIEW es una herramienta gráfica para pruebas, control y diseño mediante la programación. El lenguaje que usa se llama lenguaje G, donde la G simboliza que es lenguaje Gráfico.

Este programa fue creado por National Instruments (1976) para funcionar sobre máquinas MAC, salió al mercado por primera vez en 1986. Ahora está disponible para las plataformas Windows, UNIX, MAC y GNU/Linux. La última versión es la 2011.

Los programas desarrollados con LabVIEW se llaman Instrumentos Virtuales, o VIs, y su origen provenía del control de instrumentos, aunque hoy en día se ha expandido ampliamente no sólo al control de todo tipo de electrónica (Instrumentación electrónica) sino también a su programación embebida. Un lema tradicional de LabVIEW es: “La potencia está en el Software”, que con la aparición de los sistemas multinúcleo se ha hecho aún más potente. Entre sus objetivos están el reducir el tiempo de desarrollo de aplicaciones de todo tipo (no sólo en ámbitos de Pruebas, Control y Diseño) y el permitir la entrada a la informática a profesionales de cualquier otro campo. LabVIEW consigue combinarse con todo tipo de software y hardware, tanto del propio fabricante (tarjetas de adquisición de datos, PAC, Visión, instrumentos y otro Hardware) como de otros fabricantes.

Principales usos

  • Adquisición de datos y análisis matemático.
  • Comunicación y control de instrumentos de cualquier fabricante.
  • Automatización industrial y programación de PACs (Controlador de Automatización Programable).
  • Diseño de controladores: simulación, prototipaje rápido, hardware-en-el-ciclo (HIL) y validación.
  • Diseño embebido de micros y chips.
  • Control y supervisión de procesos.
  • Visión artificial y control de movimiento.
  • Robótica.

DESARROLLO DEL EJEMPLO

A continuación tenemos el programa en lenguaje C, el cual fue desarrollado para Arduino. En el código se describe la comunicación entre el Arduino y el Bluetooth con la computadora.

La comunicación es de modo serial (USART), y la conexión del Arduino con el Bluetooth se hizo a través de los pines Rx y Tx del Arduino, estos son para escritura y lectura serial.

Para la comunicación entre la computadora y el Bluetooth y el Arduino primero hay que  configurar el Bluetooth como puertos COM (serie) y hacer el emparejamiento como si se fuera hacer una transferencia de datos entre un celular y la computadora.

En la Figura 5 se muestra los puertos COM para comunicar el Arduino (con el módulo bluetooth) con la Computadora. Estos puertos COM son los del Bluetooth JY-MCU. Esta ventana aparece al darle click derecho, propiedades en el dispositivo bluetooth desde el administrador de dispositivos.

arduino bluetooth

Figura 7: Propiedades del dispositivo bluetooth en el administrador de dispositivos donde se muestra los puertos COM asignados al mismo.

COMANDOS PARA CONFIGURAR EL BLUETOOTH

Para utilizar las siguientes instrucciones es necesario tener el hardware conectado como se muestra en la figura 2.

Parámetros default:

  • Baude rate: 9600N81
  • ID: Linvor
  • Password: 1234

Test de comunicación:

  • Enviar: AT
  • Regresa: OK
  • Resetear el  Bluetooth para cambiar la velocidad de transmisión
  • Enviar: AT + BAUD1
  • Regresa: OK1200
  • Enviar: AT + BAUD2
  • Regresa: OK2400

1————1200

2————2400

3————4800

4————9600 (DEFAULT)

5————19200

6————38400

7————57600

8————115200

9————230400

A————460800

B————921600

C————1382400

PROGRAMA EN LENGUAJE C PARA ARDUINO 1.0.1

//Este programa enviara temperatura por Bluetooth
//Se declaran las variables VALOR, SELECT y VALOR2 como entero

int valor = 0;   // Variable en la que se guarda el valor leído del ADC 0 que pertenece al LM35
int select = 0; // Variable en la cual se guarda el caracter enviado del LabView y así leer los sensores
int valor2 = 0; // Variable en la que se guarda el valor leído del ADC 1 que pertenece al MCP9701

void setup()
{
Serial.begin(9600);  // La velocidad de Transmicion será de 9600 Baudios
}

void loop()
{
if(Serial.available() > 0) // Si no hay una escritura serial no entra en el ciclo
{
// Se guarda en la variable "select" lo que se escriba en el puerto serial
select = Serial.read();
//Segun sea el caso de lo que se escriba en el LabView será la informacion que veamos
switch(select)
{
case 'a':    //Si se escribe "a" nos enviara la temperatura del LM35
valor = analogRead(A0); // Se lee el ADC 0 y el valor se guarda en la variable “valor”
Serial.print((5.0 * valor * 100)/1023);
delay(10); // Retardo de 10 milisegundos
Serial.println("°C LM35");
delay(5000); // Retardo de 5 segundos
break;
case 'b':    //Si se escribe "b" nos enviara la temperatura del MCP9701
valor2 = analogRead(A1); // Se lee el ADC 1 y el valor se guarda en la variable “valor2”
Serial.print((5 * valor2 * 100)/1023);
delay(10); // Retardo de 10 milisegundos
Serial.println("°C MCP9701");
delay(5000); // Retardo de 5 segundos
break;
default:   //Si se escribe "cualquier otro caracter" nos enviara error
Serial.println("error");
delay(500); //Retardo de 0.5 segundos
}
}
}

PROGRAMA EN LABVIEW

Como se mencionó anteriormente el LabView es una herramienta gráfica para pruebas, control, etc. Se optó por utilizar este software debido su facilidad en establecer la comunicación con el microcontrolador de modo serial, para el procesamiento y una rápida presentación de datos obtenidos de los sensores.

En la figura 8 se muestra una lectura que se hizo del sensor de temperatura LM35. Sí se escribe el carácter “a” nos arrojara la lectura del sensor LM35.

arduino bluetooth labview

Figura 8: Lectura del sensor LM35.

En la figura 9 se muestra una lectura que se hizo del sensor de temperatura MCP9701. Sí se escribe el carácter “b” nos arrojara la lectura del sensor MCP9701.

arduino bluetooth labview

Figura 9: Lectura del sensor MCP9701.

En las siguientes imágenes se muestra el diagrama de bloques, que es el programa en sí, donde se define su funcionalidad. Observando la figura 8, vemos el flujo del programa en labview siguiendo las interconecciones de los bloques de control, primero se puede observar que se tiene el bloque VISA Serial el cual configura el puerto serial de la computadora, el bloque tienen parámetros de entrada como constantes las cuales son el nombre del puerto, baud rate, bits de datos, paridad, bit de paro, entre otros. Posteriormente tenemos una condición TRUE/FALSE, si la condición es true, esto es, que se presione el botón OK, entonces labview escribirá en el puerto serie lo que este en la ventana “write buffer”. Insertamos un pequeño delay. Por ultimo tenemos otra condición la cual si llega un dato al puerto serie (el dato seria la información que manda el arduino a través de bluetooth con la temperatura capturada del sensor), este aparece en la ventana “read buffer”. Al finalizar se cierra el puerto serie.

arduino bluetooth labview

Figura 10: Diagrama a bloques en LabView.

arduino bluetooth labview

Figura 11: En esta parte del diagrama de bloques se configura el puerto serial para la lectura y escritura serial, la velocidad de transmisión de datos, paridad, los bits que se transmitirán por dato, etc.

arduino bluetooth labview

Figura 12: Parte del diagrama donde se realiza la escritura para mandar el carácter, solo se enviara este si está habilitado con el botón OK, ya que está en una estructura Falso Verdadero.

arduino bluetooth labview

Figura 13: Ciclo para que el dato se retarde en el tiempo que determine el usuario.

arduino bluetooth labview

Figura 14: Diagrama a bloques que muestra la información leída del puerto y el número de bytes leídos, después cierra la sesión de la comunicación.

DUDAS, QUEJAS O SUGERENCIAS:

contacto@hetpro.com.mx

HeTPro

www.hetpro.com.mx

ENLACES DE INTERES:

Hojas de datos del sensor LM35

http://www.hetpro-store.com/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=39&category_id=17&option=com_virtuemart&Itemid=4&lang=en&vmcchk=1&Itemid=4

Hoja de datos del sensor MCP9701

http://www.hetpro-store.com/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=43&category_id=17&option=com_virtuemart&Itemid=4&lang=en

Pagina de Arduino

http://www.arduino.cc/

Pagina de Olimexino

https://www.olimex.com/Products/Duino/AVR/OLIMEXINO-32U4/

Conversor TTL/CMOS-RS232

http://www.hetpro-store.com/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=82&category_id=19&option=com_virtuemart&Itemid=4&lang=en

Módulo bluetooth JY-MCU

http://www.hetpro-store.com/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=180&category_id=19&option=com_virtuemart&Itemid=4&lang=en

17 Comments

  1. Hola, lo primero de todo felicidades por el blog la verdad es que sirve de mucha ayuda a los que no sabemos mucho de este tema.

    Tengo una pequeña duda. Para comunicar Arduino con Labview hay que instalar la toolkit específica y ejecutar previamente el firmware LIFA_Base. Si empleas un módulo o shield específico de wifi o bluetooth, como en este caso, ¿necesitas un firmware distinto o con el LIFA_Base ya se puede comunicar Labview con ese módulo de Arduino?

    • Hola que tal el toolkit basico de arduino para Labview solo es para cosas muy primitivas como encender/apargar leds, activar motores etc. Si necesitas otro shield tendras que hacer tu propio “toolkit”, es decir, realizar una conexion con arduino con comando seriales, tu esperarias en arduino recibir esos comandos y clasificarlos para realizar la accion determinada, saludos.

  2. hola que tal disculpa me gustaria saber si el domulo puede conectarse a un arduino nano y si la programacion seria la misma y que diferencias habria entre el JY-MCU Y HC-06

    • Que tal, solo verfica la compatibilidad de voltajes, es el mismo el JY-MCU y el HC-06. Saludos

  3. Y si quisiéramos mandarle información al arduino desde labview?
    Es que estoy realizando un proyecto parecido pero cuando llegue a una temperatura especifica necesito que arduino mande un pulso

    de antemano muchas gracias 😀

    • Que tal LABVIEW tiene un subvi especialmente diseñado para arduino puedes buscar por ahi, saludos.

  4. Hola, soy nueva en esto, pero no hay otro programa que se pueda usar para leer los datos por blutooth ó crear un nuevo programa

    • Abi, claro que si, básicamente cualquier programa que te soporte comunicación serial te puede llegar a servir, por ejemplo visual studio, matlab, terminales virtuales, etc. Si tienes alguna duda nos avisas.

  5. Hola,

    Estoy haciendo un proyecto parecido para la lectura de un sensor con un microcontrolador pic y labview, para la comunicacion sin fio pretendo usar el bluetooth y este artigo me estas siendo muy conveniente, gracias. Pero como nunca he usado bluetooth anteriormente me gustaria perguntar por donde (si hay un software especifico o cuando si abre la pantalla de configuracion del bluetooth si és posible hacer-lo por allá o otra cosa) he enviado los comandos AT para el bluetooth?

    • Nara, no me quedo clara tu pregunta, la puedes reformular? Gracias.

  6. La verdad me hicieron la vida muchachos, esto me sirve excelente para mis proyectos enserio gracias!!!

    • Muchas gracias por tu comentario Chisco, los comentarios y compartir el material es lo que nos hace crecer como comunidad. Saludos.

  7. Buenas tardes, ¿De casualidad no cuentan con el VI de este proyecto para Labview? de antemano muchas gracias.

    • Arturo, no, tenemos ya rato de este tutorial y perdimos los archivos pero igual te puedes basar en las imagenes. Saludos

  8. ¿El módulo JY-MCU puede ser reemplazado por el HC-05, para interfazar el arduino con la computadora por medio de bluetooth… o es exclusivo el uso del JY-MCU para este proyecto?

  9. Me gustó mucho tu post, la información es muy clara y específica. Me gustaría saber que es lo que va en las estructuras true-false en la parte false, ya que solo muestras las de true. Igual te agradesco de sobremanera por compartir esta información tan buena.

Post a Reply

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *