Medidor DE Condiciones Ambientales CON Arduino Y EL Sensor DE Bluetooth PDF

Title Medidor DE Condiciones Ambientales CON Arduino Y EL Sensor DE Bluetooth
Author Scofield Std
Course Fisica II
Institution Universidad Nacional Federico Villarreal
Pages 21
File Size 775.8 KB
File Type PDF
Total Downloads 110
Total Views 150

Summary

Download Medidor DE Condiciones Ambientales CON Arduino Y EL Sensor DE Bluetooth PDF


Description

MEDIDOR DE CONDICIONES AMBIENTALES CON ARDUINO Y EL SENSOR DE BLUETOOTH. FISICA DE SENSORES INFORME 05

Universidad Nacional Federico Villarreal

Lima-Perú-2018

INTRODUCCIÓN

En el presente laboratorio implementaremos un circuito que nos permitirá medir las condiciones ambientales mediante el uso de algunos sensores tales como el DHT 22 (temperatura y humedad), el BMP 180 (presión barométrica), una pantalla LCD, y un LDR (luminosidad) además del microcontrolador ATMEGA(arduino uno). En el capitulo I se mostrara el marco teórico, donde veremos la definicion de los diferentes sensores empleados en nuestro circuito, su funcion, sus características, entre otros. En el capitulo II se vera el marco experimental donde tenemos los materiales, procedimientos de nuestra experiencia durante el armado de nuestro circuito. Finalmente terminamos este informe con las referencia bibliografica.

CAPITULO I: MARCO TEÓRICO

El siguiente trabajo describe un proyecto que consiste en un circuito medidor de condiciones ambientales como humedad, temperatura, luminosidad, presión barométrica y altura relativa; los datos se muestran en una pantalla LCD. En esta presente investigación se elaborara un proyecto sencillo, pero muy instructivo. Aquí hemos unificado varios sensores en un solo dispositivo capaz de mostrar información en tiempo real acerca de las condiciones del medio ambiente que rodea a la persona que lo esté utilizando.

A continuación mostramos el diagrama del circuito del proyecto: un medidor de condiciones ambientales con Arduino.

BLUETOOTH EN ARDUINO Bluetooth es una especificación industrial para Redes Inalámbricas de Área Personal (WPAN) que posibilita la transmisión de voz y 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. Eliminar los cables y conectores entre estos. Ofrecer la posibilidad de crear pequeñas redes inalámbricas y facilitar la sincronización de datos entre equipos personales.

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 sí 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. Los dispositivos con Bluetooth también pueden clasificarse según su capacidad de canal: Versión

Ancho de banda

Versión 1.2

1 Mbit/s

Versión 2.0 + EDR

3 Mbit/s

Versión 3.0 + HS

24 Mbit/s

Versión 4.0

32 Mbit/s

La especificación de Bluetooth define un canal de comunicación a un máximo 720 kbit/s (1 Mbit/s de capacidad bruta) con rango óptimo de 10 m (opcionalmente 100 m con repetidores). Opera en la frecuencia de radio de 2,4 a 2,48 GHz con amplio espectro y saltos de frecuencia con posibilidad de transmitir en Full Duplex con un máximo de 1600 saltos por segundo. Los saltos de frecuencia se dan entre un total de 79 frecuencias con intervalos de 1 MHz; esto permite dar seguridad y robustez.

Tanto Bluetooth clásico como Bluetooth de baja energía aplican la característica de salto de frecuencia adaptativa (AFH – Adaptive Frequency Hopping) que detecta interferencias de. Por ejemplo, un dispositivo WLAN 802.11 b, g, n que transmite cercano, si se detecta tal interferencia, el canal se coloca automáticamente en la lista negra. Con el fin de manejar la interferencia temporal, un esquema implementado vuelve a intentar los canales de la lista negra y si la interferencia ha cesado el canal se puede utilizar. AFH impide que Bluetooth interfiera con otras tecnologías inalámbricas cercanas. El hardware que compone el dispositivo Bluetooth está compuesto por dos partes:  

un dispositivo de radio, encargado de modular y transmitir la señal. un controlador digital, compuesto por una CPU, un procesador de señales digitales (DSP – Digital Signal Processor) llamado Link Controller (o controlador de Enlace) y de las interfaces con el dispositivo anfitrión.

El LC o Link Controller se encarga del procesamiento de la banda base y del manejo de los protocolos ARQ y FEC de la capa física; además, se encarga de las funciones de transferencia tanto asíncrona como síncrona, la codificación de audio y el cifrado de datos. Bluetooth de baja energía, también denominada como Bluetooth LE, Bluetooth ULP (Ultra Low Power) y Bluetooth Smart, es una nueva tecnología digital de radio (inalámbrica) interoperable para pequeños dispositivos desarrollada por Bluetooth. Los dispositivos BlueTooth pueden actuar como Masters o como Slaves. La diferencia es que un BlueTooth Slave solo puede conectarse a un master y a nadie más, en cambio un master BlueTooth, puede conectarse a varios Slaves o permitir que ellos se conecten y recibir y solicitar información de todos ellos, arbitrando las transferencias de información (Hasta un máximo de 7 Slaves).

Cada uno de los dispositivos que se identifican vía BlueTooth presentan una dirección única de 48 bits y además un nombre de dispositivo que nos sirva para identificarlo cómodamente a los humanos. Por eso cuando configuras tu móvil puedes especificar un nombre propio que será el que mostrarás a los demás cuando busquen tu teléfono en la inmediaciones. La dirección propia también se puede identificar pero lógicamente, es un poco menos cómoda y tiene menos utilidad. Tampoco es raro establecer un protocolo IP sobre transporte BlueTooth, con lo que además de su identificación interna BlueTooth (Equivalente al MAC Ethernet) dispondrá de una dirección IP para conectarse a Internet. Por eso puedes conectarte vía Bluetooth a tu PC, por ejemplo, y a través de él conectarte a internet. Así pues un nodo BlueTooth puede ser Master o Slave y dispone de una dirección única, así como de un nombre para identificarse y muy habitualmente también incluye un PIN de conexión o número de identificación que debe teclearse para ganar acceso al mismo. Como el BlueTooth lo desarrolló Nokia para conectar teléfonos móviles, a otros dispositivos como auriculares, micrófonos o conexiones al audio del coche, existe un procedimiento definido que se llama Pairing (o emparejamiento) que vincula a dos dispositivos Bluetooth. Cuando vinculas dos dispositivos BT, se inicia un proceso en el que ellos se identifican por nombre y dirección interna y se solicitan la clave PIN para autorizar la conexión. Si el emparejamiento se realiza con éxito, ambos nodos suelen guardar la identificación del otro y cuando se encuentran cerca se vuelven a vincular sin necesidad de intervención manual. (Aunque para que tu BlueTooth pueda enviar o recibir música, debe aceptar otra norma posterior llamada Advanced Audio Distribution Profile (A2DP) y que en caso de ser algún sistema antiguo te impedirá la reproducción.) Para manejar los módulos Bluetooth usamos comandos Hayes o AT: https://es.wikipedia.org/wiki/Conjunto_de_comandos_Hayes Comandos AT básicos  

AT+VERSION, versión del Firmware AT+NAMEXXX, Programa el nombre que queremos presentar cuando alguien nos busque

            

AT+BAUDX, Fija la velocidad de comunicación entre el modulo y la consola según a la siguiente tabla: 1 configura 1200bps 2 configura 2400bps 3 configura 4800bps 4 configura 9600bps (Default) 5 configura 19200bps 6 configura 38400bps 7 configura 57600bps 8 configura 115200bps AT+PINXXXX, configura el número de identificación personal, que se requerirá para establecer la vinculación AT+ROLE Nos informa de si está configurado como Maestro 1, o como esclavo 0. AT+ROLE1 Configura el modulo como Master. AT+ROLE0 Configura el modulo como Slave.

Protocolo base de Bluetooth 802.15: https://es.wikipedia.org/wiki/IEEE_802.15 Los módulos HC-05 y HC-06 son Bluetooth V2. Pero con el tiempo han ido apareciendo módulos como los que conocemos que soportan el protocolo Bluetooth V4.0 o Low Energy al alcance de todos los bolsillos y los fabricantes chinos han empezado a suministrarlos de forma accesible, tales como los modelos HC-08 y HC-10. El nuevo Bluetooth 4.0 es un nuevo protocolo diseñado pensando en disminuir todo lo posible las necesidades de energía de los dispositivos que lo usan, y de sobre todo de la propia comunicación que tradicionalmente ha sido de consumo insaciable. Se le suele llamar también BLE por Bluetooth Low Energy, o simplemente Bluetooth LE. Mejora bastante el consumo previo, pero la distancia también disminuye.

Los módulo más frecuentes en el mercado son los módulos HC-06 y HC-05 que son muy económicos y están disponibles independientes o en modo SHIELD y para zocalo XBEE.

Manual del módulo: https://core-electronics.com.au/attachments/guides/ProductUser-Guide-JY-MCU-Bluetooth-UART-R1-0.pdf Como el módulo BlueTooth es básicamente un nodo BT conectado a un interface serie, podríamos en principio conectar los pines RX y Tx a los equivalentes de Arduino en los pines 0 y 1 digitales, sin más que cruzarlos (BT Tx a Arduino Rx y BT Rx a Aduano Tx) y de hecho muchos ejemplos en Internet utilizan este esquema y se comunican con el BT mediante las familiares instrucciones de Serial.print (). Sin embargo, puesto que los pines 0 y 1 se utilizan en la comunicación serie de Arduino con el PC a través del USB y por tanto, si los usamos para comunicar con el modulo BT, perderíamos la conexión con el PC, es mejor usar otros pines. Para ello tenemos que importar una librería que habilite la comunicación serie con otros pines como es la librería SoftwareSerial. NOTA el módulo HC-06, a diferencia del HC-05, no espera un terminador de línea como \n, si no que salta por tiempo y debemos tenerlo en cuenta a la hora de hacer el programa de conexión con Arduino. Un ejemplo de cómo convertir un coche RC en bluetooth:  

https://www.hackster.io/jegatheesan/easy-hack-rc-to-rc-and-bt-car-using-linkitone-aab56b Y la app: https://play.google.com/store/apps/details? id=braulio.calle.bluetoothRCcontroller&hl=en

Ejercicios Bluetooth El módulo que vamos a usar para las prácticas es el HC-05 que tiene 6 patillas.

El módulo HC-05, que puede configurarse tanto como Master que como Slave, y que además dispone de bastante más parámetros de configuración y capacidades de interrogación. Mientras que el HC-06 entra en modo de programación en cuanto lo enciendes y mientras no haya nadie conectado por Bluetooth, el HC-05 es ligeramente más complicado de colocar en modo comandos y requiere una cierta manera de arrancado, concretamente requiere que el pin KEY, (que no estaba conectado el caso del HC-06) esté en HIGH cuando encendemos el módulo. Conexión a Arduino

Como el módulo HC-05 funciona a 3,3 V hay bastante controversia en internet respecto a si debemos o no, poner divisores de tensión para acceder a los pines del módulo con Arduino. Pero por las pruebas hechas y los tutoriales en principio no es necesario usar un divisor de tensión y los pines son tolerantes a 5V, pero hacerlo bajo vuestra responsabilidad. Fijaros que al hacer esta conexión, el LED del módulo HC-05, parpadea continuamente. Esto indica que no está pareado o vinculado. Cuando conectes algo al módulo, esta luz se quedará fija y es la forma de saber si hay conexión o no. También usaremos un terminal bluetooth en nuestro móvil como:

  

Arduino Bluetooth terminal: https://play.google.com/store/apps/details? id=appinventor.ai_el_profe_garcia.Arduino_Bluetooth_Terminal Bluetooth Terminal: https://play.google.com/store/apps/details? id=Qwerty.BluetoothTerminal Bluetooth spp tools pro: https://play.google.com/store/apps/details? id=mobi.dzs.android.BLE_SPP_PRO

Para esta práctica usaremos esta configuración:

En primer lugar, para que el HC-05 entre en modo comandos AT, requiere que cuando se enciende el módulo, el pin KEY este HIGH. Por eso hemos conectado la tensión Vcc del módulo BlueTooth al pin 8 de nuestro Arduino. NOTA: El módulo que vamos a usar tiene un botón, este botón es el que debemos pulsar para poner el módulo en modo configuración (comandos AT). También para usar algunos de los comandos importantes como AT+NAME, es necesario pulsar el botón al ejecutar el comando y que guarde los cambio. El consumo del módulo es mínimo y nuestro Arduino es capaz de alimentarlo sin problemas, por eso el módulo se encenderá cuando pongamos HIGH en el pin 8. Esto nos permitirá poner en HIGH el pin digital 9, al iniciar nuestro programa y después levantar el pin 9, de este modo cuando arranque entrará sin más en el modo de comandos AT. El resto de los pines se conectan de forma que Txd y Rxd se deben conectar cruzados con los pines de comunicación de Arduino, que usaremos mediante la librería software Serial. El pin State refleja, la situación en la que se encuentra el módulo y por ahora no vamos a utilizarlo. Con este procedimiento garantizamos que el modulo HC-05 entra solo en modo AT comandos, y que nuestra consola nos va a servir para programarlo. Para mandar comandos AT usaremos este sketch: 1 #include

2

SoftwareSerial BT1(10, 11); // RX | TX

3

void setup()

4

{ pinMode(8, OUTPUT);

5

pinMode(9, OUTPUT);

6

digitalWrite(9, HIGH);

7

delay (500) ;

8

Serial.begin(9600);

9

Serial.println("Levantando el modulo HC-06");

10

digitalWrite (8, HIGH); //Enciende el modulo

11

Serial.println("Esperando comandos AT:");

12

BT1.begin(38400);

13

// Al poner en HIGH forzaremos el modo AT // cuando se alimente de aqui

// Espera antes de encender el modulo

}

14 15 16

void loop() { if (BT1.available()) Serial.write(BT1.read());

17

if (Serial.available())

18

BT1.write(Serial.read());

19 20

}

También podemos usar directamente el FTDI con el siguiente pineado:

Si todo está bien conectado veremos en consola:

CAPITULO II: MARCO EXPERIMENTAL MATERIALES          

Arduino Uno Pantalla LCD 16×2 Sensor de temperatura DHT22 Fotorresistencia (LDR) Potenciómetro de 10K (cualquier valor funciona) Sensor de presión barométrica BMP180 2 Resistencias de 10K (cualquier valor por encima de 4.7K funciona, entre más alto mejor). Batería de 9 voltios Protoboard Sensor de bluetooth

DIAGRAMA DEL CIRCUITO PROCEDIMIENTO Paso1: paso uno implementamos el circuito mostrado en la figura (6). Paso2: Las resistencias son de 220 Ω y se colocan en serie con los LEDs. Paso3: El sensor ultrasónico Arduino se conecta a dos pines digitales, uno para el trigger o disparador y otro para el echo o receptor. Paso4: El buzzer Arduino se conecta a una salida PWM. Paso5: Programando el sensor ultrasónico Arduino para medir distancia Paso6: verificamos y subimos el programa en el microcontrolador ATMEGA (arduino uno).

PROGRAMA EN ARDUINO CÓDIGO #include LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE);

#include #include #include #define I2C_ADDRESS 0x77 BMP180I2C bmp180(I2C_ADDRESS);

const int ldr=A0;

void setup() { pinMode(ldr,INPUT); dht.begin(); lcd.begin(16, 2);

// Fijamos el numero de caracteres y filas

Serial.begin(9600); while (!Serial); Wire.begin(); if (!bmp180.begin()) { Serial.println("begin() failed. check your BMP180 Interface and I2C Address."); while (1); } bmp180.resetToDefaults(); bmp180.setSamplingMode(BMP180MI::MODE_UHR); Serial.println(""); Serial.println(""); Serial.println(""); Serial.println("-----------"); lcd.print("Fisica"); Serial.println("Fisica"); lcd.setCursor(3,2); lcd.print("Experimental"); Serial.println("Experimental"); delay(2000); lcd.clear();

Serial.println(""); lcd.print("Docente"); Serial.println("Docente"); lcd.setCursor(1,2); lcd.print("Ruben Bruna"); Serial.println("Ruben Bruna"); delay(2000); lcd.clear(); Serial.println(""); lcd.print("Alumnos"); Serial.println("Alumnos"); lcd.setCursor(1,2); lcd.print("Laguna Tello"); Serial.println("Laguna Tello"); delay(2000); lcd.clear();

lcd.print("Alumnos"); lcd.setCursor(0,2); lcd.print("Cespedes Herrera"); Serial.println("Cespedes Herrera"); Serial.println(""); Serial.println("-----------"); delay(2000); lcd.clear();

Serial.println("P: Presion (KPa)");

lcd.setCursor(0,0); lcd.print("P: Presion KPa"); Serial.println("T: Temperatura promedio BMP+DHT"); lcd.setCursor(0,1); lcd.print("T: (BMP+DHT)/2"); delay(3000); lcd.clear();

Serial.println("H: Humedad Relativa"); lcd.setCursor(0,0); lcd.print("H: Hum.Rel (%)"); Serial.println("L: % de luz ldr"); lcd.setCursor(0,1); lcd.print("L: % de Luz LDR"); Serial.println(""); Serial.println("-----------"); Serial.println(""); delay(3000); lcd.clear();

lcd.setCursor(0,1); lcd.print("T:"); lcd.setCursor(0,0); lcd.print("P:"); lcd.setCursor(8,0); lcd.print("H:"); lcd.setCursor(15,0); lcd.print("%");

lcd.setCursor(9,1); lcd.print("L:"); }

void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); float f = dht.readTemperature(true); float lux=analogRead(ldr)/1023.0; float hi = dht.computeHeatIndex(f, h);

if (!bmp180.measureTemperature()) { Serial.println("Error, conecte el sensor"); return; }

do { delay(100); } while (!bmp180.hasValue());

Serial.print("T_BMP: "); Serial.print(bmp180.getTemperature()); Serial.print(" *C,"); lcd.setCursor(2,1); lcd.print((bmp180.getTemperature()+t)/2.0);

if (!bmp180.measurePressure()) { Serial.println("could not start perssure measurement, is a measurement already running?"); return; }

do { delay(100); } while (!bmp180.hasValue());

Serial.print("Presion: "); Serial.print(bmp180.getPressure()/1000); Serial.print(" KPa,"); lcd.setCursor(2,0); lcd.print(bmp180.getPressure()/1000);

Serial.print("HR "); Serial.print(h); lcd.setCursor(10,0); lcd.print(h); Serial.print(" %\t"); Serial.print(", T: "); Serial.print(t); Serial.print(" *C "); Serial.print("Luz:"); Serial.print(lux);

Serial.println(" %"); lcd.setCursor(11, 1); lcd.print(lux); lcd.setCursor(15,1); lcd.print("%"); delay(1000); }

REFERENCIA BIBLIOGRAFICA 1. Medidor de Condiciones Ambientales con Arduino disponible en http://panamahitek.com/medidor-de-condiciones-ambientales-con-arduino/ 2. Bluetooth en Arduino disponible en https://aprendiendoarduino.wordpress.com/2016/11/13/bluetooth-enarduino/...


Similar Free PDFs