### Proyecto 16: Control Remoto por Bluetooth

#### **(1)Descripción:**
En las últimas décadas, Bluetooth se ha convertido en el módulo de comunicación inalámbrica más popular porque es fácil de usar y ha encontrado amplias aplicaciones en la mayoría de los dispositivos alimentados por baterías.
Con el fin de adaptarse a los tiempos, la realidad y las necesidades de los clientes, Bluetooth ha sido actualizado varias veces. En los últimos años, ha experimentado muchas transformaciones en términos de velocidad de transferencia de datos, consumo de energía en dispositivos portátiles y dispositivos IoT, sistemas de seguridad, entre otros. Aquí, planeamos aprender sobre el DX-BT24 con la placa Arduino.
#### **(2)Parámetros:**
- Protocolo Bluetooth: Bluetooth Specification V5.1 BLE
- Envío y recepción por puerto serie sin límite de bytes
- Distancia de comunicación: 40m (entorno abierto)
- Frecuencia de operación: banda ISM 2.4GHz
- Método de modulación: GFSK (Gaussian Frequency Shift Keying)
- Características de seguridad: Autenticación y Cifrado
- Servicios compatibles: UUIDs Central y Periférico FFE0, FFE1, FFE2
- Consumo de energía: modo de suspensión automática, corriente en espera 400uA\~800uA, 8.5mA durante la transmisión.
- Alimentación: 5V
- Temperatura de operación: –10 a +65 grados Celsius
#### **(3)Diagrama de Conexión:**
1.STATE es el pin de prueba de estado conectado al diodo emisor de luz interno y generalmente permanece sin conectar.
2.RXD es la interfaz del puerto serie para el terminal receptor.
3.TXD es la interfaz del puerto serie para el terminal de envío.
4.GND es para tierra.
5.VCC es el polo positivo.
6.EN/BRK: la desconexión de este representa la desconexión del Bluetooth y generalmente permanece sin conectar.
(Nota: aquí el Bluetooth está conectado directamente al shield V2 y **por favor preste atención a la dirección**)

#### **(4)Descargar e instalar la APP:**
##### **Para sistema IOS**
1\. Abra App Store.
2\. Busque KeyesRobot en la Apple Store y haga clic en descargar.

3\. Después de instalar la aplicación, verá el siguiente ícono en el escritorio de su teléfono.

**Cómo conectar el teléfono iOS al módulo Bluetooth:**
1\. Active el Bluetooth y los servicios de ubicación en el teléfono a través de la configuración.

2\. Permita que la APP KeyesRobot acceda al Bluetooth a través de la configuración.

3\. Haga clic para abrir la App KeyesRobot.

4\. KeyesRobot App es una APP universal, que se aplica a múltiples robots keyestudio. Si la interfaz no muestra "TANK ROBOT", puede hacer clic en los botones izquierdo y derecho para encontrar "TANK ROBOT".
5\. Haga clic en el botón Bluetooth  en la esquina superior derecha para escanear el bluetooth

6\. Verá un Bluetooth llamado **BT24**, haga clic en el botón Connect.

7\. Si el LED integrado en el módulo Bluetooth deja de parpadear y permanece encendido, significa que su teléfono se ha conectado exitosamente al módulo Bluetooth.

##### **Para Sistema Android**
1\. Busque **KeyesRobot** en Google Play, o abra el siguiente enlace para descargar e instalar la aplicación.
[https://play.google.com/store/apps/details?id=com.keyestudio.keyestudio](https://play.google.com/store/apps/details?id=com.keyestudio.keyestudio)

2\. Active el Bluetooth y los servicios de ubicación del teléfono móvil

3\. Encuentre la aplicación Bluetooth KeyesRobot en la configuración, haga clic en las opciones de permisos de la aplicación y
habilite los permisos de Ubicación y dispositivos cercanos.(Nota: Algunos teléfonos móviles no tienen la función de permisos de dispositivos cercanos.)

4\. Haga clic para abrir la App KeyesRobot.

5\. KeyesRobot App es una APP universal, que se aplica a múltiples robots keyestudio. Si la interfaz no muestra "TANK ROBOT", puede hacer clic en los botones izquierdo y derecho para encontrar "TANK ROBOT".
6\. Haga clic en el botón Bluetooth  en la esquina superior derecha para escanear el bluetooth

7\. Verá un Bluetooth llamado **BT24**, haga clic en el botón Connect.

8\. Cuando su teléfono se haya conectado exitosamente al módulo Bluetooth, el LED integrado en el módulo Bluetooth dejará de parpadear y permanecerá encendido.


#### **(5)Probar la APP Bluetooth:**
(**Nota:** No conecte el módulo Bluetooth antes de cargar el código, porque la carga del código también usa comunicación serial, y puede haber conflictos con la comunicación serial Bluetooth, lo que puede causar que la carga falle.)
```C
/*
Keyestudio Mini Tank Robot V3 (Popular Edition)
lesson 16.1
Bluetooth
http://www.keyestudio.com
*/
char ble_val; // Variable de tipo caracter (usada para almacenar el valor recibido por Bluetooth)
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available() > 0) // Determinar si hay datos en el buffer del puerto serie
{
ble_val = Serial.read(); // Leer los datos en el buffer del puerto serie
Serial.println(ble_val); // Imprimir
}
}
```
Cargue el código en la placa de desarrollo, luego conecte el módulo Bluetooth, y después conecte el teléfono móvil al módulo Bluetooth.
Después de que el teléfono móvil se haya conectado exitosamente al módulo Bluetooth, haga clic para abrir la APP Bluetooth y haga clic en el botón Select en la página principal.

La interfaz principal de la aplicación Bluetooth se muestra en la figura a continuación.

Después de que el código anterior se haya cargado exitosamente, abra el monitor serial del arduino IDE y configure la velocidad de baudios a 9600. Haga clic en el ícono de la interfaz de la APP y el monitor serial mostrará el comando enviado por el botón.

**Nota: El método de conexión de la APP es el mismo que se describe a continuación.**
#### **(6)Explicación del Código:**
**Serial.available()** representa el número de caracteres que quedan actualmente en el buffer del puerto serie.
Esta función generalmente se usa para determinar si hay datos en esta área. Cuando Serial.available()\>0, significa que el puerto serie ha recibido datos y puede ser leído.
**Serial.read()** se refiere a extraer y leer un Byte de datos del buffer del puerto serie. Por ejemplo, si un dispositivo envía datos al Arduino a través del puerto serie, podemos usar Serial.read() para leer los datos enviados.
#### **(7)Proyecto de Expansión:**
Aquí usamos el comando enviado por el teléfono móvil para encender o apagar una luz LED. Mirando el diagrama de cableado, un LED está conectado al pin D9.

**Código de Prueba**
(Nota: No conecte el módulo Bluetooth antes de cargar el código, porque la carga del código también usa comunicación serial, y puede haber conflictos con la comunicación serial del Bluetooth, lo que puede causar que la carga del código falle.)
```C
/*
Keyestudio Mini Tank Robot V3 (Popular Edition)
lesson 16.2
Bluetooth
http://www.keyestudio.com
*/
int LED = 9;
char ble_val; // Variable entera usada para almacenar el valor recibido por Bluetooth
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop()
{
if (Serial.available() > 0) // Determinar si hay datos en el buffer del puerto serie
{
ble_val = Serial.read(); // Leer datos del buffer del puerto serie
Serial.print("DATA RECEIVED:");
Serial.println(ble_val);
if (ble_val == 'a')
{
digitalWrite(LED, HIGH);
Serial.println("led on");
}
if (ble_val == 'b')
{
digitalWrite(LED, LOW);
Serial.println("led off");
}
}
}
```

Después de que el código anterior se haya cargado exitosamente, abra el monitor serial del arduino IDE y configure la velocidad de baudios a 9600. Haga clic en  para controlar el LED. Al hacer clic en él, se enviará el caracter a, y el LED se encenderá. Si se presiona este botón nuevamente, el LED se apagará.


Debe retirar el módulo BT si termina los proyectos.