Sensor Ultrasonido y Bluot
Sensor Ultrasonido y Bluot
Sensor Ultrasonido y Bluot
En este tutorial, vamos a conocer de forma detallada las características del sensor HC-SR04,
como calibrar el sensor, como conectarlo y como utilizarlo con Arduino.
Para empezar a utilizar el sensor HC-SR04 solo necesitas una placa Arduino, en este tutorial
utilizaremos un Arduino Uno R3, pero puedes utilizar cualquier placa de Arduino, el
procedimiento es el mismo.
void setup() {
Serial.begin(9600);//iniciailzamos la comunicación
pinMode(Trigger, OUTPUT); //pin como salida
pinMode(Echo, INPUT); //pin como entrada
digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
}
Ahora en el bucle void loop() empezamos enviando un pulso de 10us al Trigger del sensor
digitalWrite(Trigger, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger, LOW);
Seguidamente recibimos el pulso de respuesta del sensor por el pin Echo, para medir el pulso
usamos la función pulseIn(pin, value)
Donde Velocidad es la velocidad del sonido 340m/s, pero usaremos las unidades en cm/us
pues trabajaremos en centímetros y microsegundos, tiempo es el tiempo que demora en
llegar el ultrasonido al objeto y regresar al sensor, y la distancia recorrida es dos veces la
distancia hacia el objeto, reemplazando en la formula tenemos:
void setup() {
Serial.begin(9600);//iniciailzamos la comunicación
pinMode(Trigger, OUTPUT); //pin como salida
pinMode(Echo, INPUT); //pin como entrada
digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
}
void loop()
{
digitalWrite(Trigger, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger, LOW);
t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso
d = t/59; //escalamos el tiempo a una distancia en cm
Serial.print("Distancia: ");
Serial.print(d); //Enviamos serialmente el valor de la distancia
Serial.print("cm");
Serial.println();
delay(100); //Hacemos una pausa de 100ms
}
Después de esto el Arduino y sensor ya deben estar trabajando, para poder visualizar los datos
vaya a herramientas y habrá el monitor serial
En el monitor serial le aparecerán los valores de la distancia que sensa el HC-SR04, ponga un
objeto al frente y varíe su distancia respecto al sensor y verifique que la distancia mostrada en
el monitor serial sea la correcta.
CONFIGURACIÓN DEL MÓDULO BLUETOOTH HC-05
USANDO COMANDOS AT
406927
En este tutorial aprenderemos como configurar nuestro módulo Bluetooth HC-05, explicaremos
cómo trabajar como dispositivo maestro o esclavo, cambiar la velocidad de transmisión, el
nombre y código de vinculación de nuestro HC-05 entre otras cosas.
Este tutorial es un equivalente a este otro tutorial para el HC-06, pero en este caso aplicado
específicamente al módulo Bluetooth HC-05.
Existen varios modelos y versiones del módulo Bluetooth HC-05, el que usaremos es el que se
muestra en las siguientes imágenes, que como vemos tiene un pulsador que nos servirá para
entrar en Modo AT y así poder configurar el módulo.
1. Dispositivos Bluetooth:
El módulo Bluetooth HC-05 viene configurado de fábrica como "Esclavo" (slave), pero se puede
cambiar para que trabaje como "maestro" (master), además al igual que el HC-06, se puede
cambiar el nombre, código de vinculación, velocidad y otros parámetros más.
Cuando está configurado de esta forma, se comporta similar a un HC-06, espera que un
dispositivo bluetooth maestro se conecte a este, generalmente se utiliza cuando se necesita
comunicarse con una PC o Celular, pues estos se comportan como dispositivos maestros.
En este modo, EL HC-05 es el que inicia la conexión. Un dispositivo maestro solo se puede
conectarse con un dispositivo esclavo. Generalmente se utiliza este modo para comunicarse
entre módulos bluetooth. Pero es necesario antes especificar con que dispositivo se tiene que
comunicar, esto se explicará más adelante
Estado Desconectado:
- Entra a este estado tan pronto alimentas el modulo, y cuando no se ha establecido una
conexión bluetooth con ningún otro dispositivo
- EL LED del módulo en este estado parpadea rápidamente
- En este estado a diferencia del HC-06, el HC-05 no puede interpretar los comandos AT
- Entra a este estado cuando se establece una conexión con otro dispositivo bluetooth.
- Todos los datos que se ingresen al HC-05 por el Pin RX se trasmiten por bluetooth al
dispositivo conectado, y los datos recibidos se devuelven por el pin TX. La comunicación es
transparente
Modo AT 1
- Para entrar a este estado después de conectar y alimentar el modulo es necesario presionar
el botón del HC-05.
- En este estado, podemos enviar comandos AT, pero a la misma velocidad con el que está
configurado.
- EL LED del módulo en este estado parpadea rápidamente igual que en el estado
desconectado.
Modo AT 2
- Para entrar a este estado es necesario tener presionado el botón al momento de alimentar el
modulo, es decir el modulo debe encender con el botón presionado, después de haber
encendido se puede soltar y permanecerá en este estado.
Para configurar el modulo necesitamos enviar los comandos AT desde una computadora, esto
lo podemos hacer de dos formas:
3.1. Hacer la comunicación entre la PC y el módulo de forma indirecta a
través de un Arduino:
void setup()
{
BT.begin(9600); // Inicializamos el puerto serie BT (Para Modo AT 2)
Serial.begin(9600); // Inicializamos el puerto serie
}
void loop()
{
if(BT.available()) // Si llega un dato por el puerto BT se envía al monitor
serial
{
Serial.write(BT.read());
}
Como se observa los datos le llegan directamente desde la PC a través del módulo USB a
Serial, para esto se pueden usar cualquier modelo de conversor como
el CP2102 y PL2303 pero también se puede hacer a través de un módulo MAX232 en caso
tengan un puerto físico serial en su PC.
-Para entrar al modo AT 1, después de alimentar el modulo y haber encendido tan solo basta
presionar el botón que tiene el módulo HC-05, el LED del módulo seguirá parpadeando
rápidamente, por lo que para saber si hemos entrado al Modo AT 1 es necesario enviar
comandos AT y ver si responde, estos comandos se verán más adelante.
En este tutorial enviaremos los comandos AT usando el Modo AT 2, pero también es válido si
están en el Modo AT 1, con la diferencia que tendrán que cambiar a la velocidad con la que
tienen configurado su Bluetooth (si es la primera vez que configuran, la velocidad por defecto
es de 9600).
Ahora abrimos nuestro Monitor serial del IDE de Arduino, pero puedes usar cualquier monitor
serial.
En la parte inferior debemos escoger “Ambos NL & CR” y la velocidad “38400 baud” (la
velocidad para comunicarse en el MODO AT 2)
Test de comunicación
Enviar: AT
Recibe: OK
Si recibimos como respuesta un OK entonces podemos continuar, sino verificar las conexiones
o los pasos anteriores.
Por defecto nuestro bluetooth se llama “HC-05” esto se puede cambiar con el siguiente
comando AT
Respuesta: OK
Por defecto viene con el código de vinculación (Pin) “1234”, para cambiarlo hay que enviar el
siguiente comando AT
Respuesta: OK
Se puede saber cuál es el pin actual de nuestro modulo, para eso hay que enviar el siguiente
comando: AT+ PSWD?
La velocidad por defecto es de 9600 baudios, con Stop bit =0 (1 bit de parada), y sin Paridad,
para cambiar estos parámetros, se hace uso del siguiente comando AT:
Respuesta: OK
Donde :
< Baud > equivale a una velocidad, los valores pueden ser: 4800, 9600, 19200, 38400, 57600,
115200, 23400, 460800, 921600 o 1382400.
< StopBit> es el Bit de parada, puede ser 0 o 1, para 1 bit o 2 bits de parada respectivamente,
Para aplicaciones comunes se trabaja con 1 bit por lo que este parámetro normalmente se lo
deja en 0.
< Parity> Es la paridad, puede ser 0 (Sin Paridad), 1 (Paridad impar) o 2 (Paridad par). Para
aplicaciones comunes no se usa paridad, por lo que se recomienda dejar este parámetro en 0.
Ejemplo:
Enviar: AT+UART=9600,0,0
Respuesta: OK
Se puede saber cuál es la configuración actual, para eso hay que enviar el siguiente
comando: AT+UART?
Por defecto nuestro HC-05 viene como esclavo, el Siguiente comando nos permite cambiar
esto:
Respuesta: OK
Donde:<Role>
0 -> Esclavo
1 -> Maestro
Para saber cuál es la configuración actual, enviar el siguiente comando: AT+ ROLE?
Esta configuración aplica para cuando el modulo está trabajando como maestro, el modulo
necesita saber si se va a conectar con un dispositivo en particular o con cualquiera que esté
disponible.
Respuesta: OK
Donde: < Mode >
0 -> Conectarse a un dispositivo con la dirección especificada(Se utiliza otro comando AT para
especificar esta dirección).
Enviar el siguiente comando para averiguar el modo actual de conexión: AT+ CMODE?
Esta configuración aplica cunado nuestro modulo está configurado como maestro, y a la vez el
modo de conexión está en 0 (CMODE=0) el cual indica que nos vamos a conectar al
dispositivo esclavo en particular. Para especificar la dirección al cual nos vamos a conectar se
usa el siguiente comando AT
Enviar: AT+BIND=<Address>
Respuesta: OK
Donde:
< Address > Es la dirección del dispositivo al cual nos vamos a conectar, la dirección se envía
de la siguiente forma: 1234,56,ABCDEF la cual equivale a la dirección 12:34:56:AB:CD:EF
Ejemplo:
Enviar: AT+BIND=E668,46,9277F2
Respuesta: OK
Para ver la dirección actual en este parámetro hay que enviar el siguiente comando: AT+
BIND?
Enviar: AT+VERSION?
Enviar: AT+ADDR?
Respuesta: +ADDR:<dirección> Resp Ej: +ADDR: 98d3:31:2052e6
Enviar: AT+RESET
Respuesta: OK
Enviar: AT+ORGL
Respuesta: OK
*Al hacer esto todos los parámetros del módulo se restablecen, a los valores por defecto de
fábrica. En algunas versiones la velocidad cambia a 38400 baudios y en otros a 9600.
Ahora veremos Dos ejemplos prácticos, con los pasos para configurar nuestro HC-05 como
maestro y esclavo:
- Nombre: Robot
- Código de emparejamiento: 1212
Enviar: AT
Recibe: OK
Respuesta: OK
Enviar: AT+NAME=Robot
Respuesta: OK
Enviar: AT+PSWD="1212"
Respuesta: OK
- Configura la Velocidad
Enviar: AT+UART=9600,0,0
Respuesta: OK
Enviar:
AT+ROLE?
AT+PSWD?
AT+UART?
Respuesta:
+ROLE:0
OK
+PSWD:1212
OK
+UART:9600,0,0
OK
- Resetear el modulo
Enviar: AT+RESET
Respuesta: OK
En la siguiente imagen podemos ver la secuencia de datos recibidos por el monitor serial en el
mismo orden en que se realizaron los pasos anteriores.
-Nombre: Naylamp
-Código de emparejamiento: 1465 (La misma que el dispositivo a conectarse)
Enviar: AT
Recibe: OK
Enviar: AT+ROLE=1
Respuesta: OK
Enviar: AT+NAME=Naylamp
Respuesta: OK
Enviar: AT+PSWD="1465"
Respuesta: OK
- Configura la Velocidad
Enviar: AT+UART=57600,0,0
Respuesta: OK
Enviar: AT+CMODE=0
Respuesta: OK
- Especificar la dirección del dispositivo a conectarse
Enviar: AT+BIND=98D3,31,203AD0
Respuesta: OK
Enviar:
AT+ROLE?
AT+PSWD?
AT+UART?
AT+CMODE?
AT+BIND?
Respuesta:
+ROLE:1
OK
+PSWD:1465
OK
+UART:57600,0,0
OK
+CMOD:0
OK
+BIND:98d3:31:203ad0
OK
- Resetear el modulo
Enviar: AT+RESET
Respuesta: OK
En la siguiente imagen podemos ver la secuencia de datos recibidos por el monitor serial en el
mismo orden en que se realizaron los pasos anteriores.
Después de haber hecho las configuraciones, nuestro modulo se comporta como un dispositivo
maestro, el cual estará constantemente buscando el dispositivo especificado hasta encontrarlo
y conectarse. Para que el Maestro pueda conectarse con el dispositivo esclavo, ambos deben
tener el mismo código de vinculación.