# Reto: comunicación Bluetooth

#### <span style="color: rgb(22, 145, 121);">**Montaje 21 Encender LEDs**</span>

El objetivo de esta práctica es encender los LEDs de EDUBASICA con el móvil:

- Cuando se pulsa la **flecha arriba**, la APP lanza el dato **U** y tiene que encenderse el led **ROJO.**
- Cuando se pulsa el botón **flecha derecha**, la APP lanza el dato **R**y tiene que encenderse el led **AMARILLO.**
- Cuando se pulsa la **flecha abajo**, la APP lanza el dato **D**y tiene que encenderse el led **VERDE.**
- Cuando se pulsa la **flecha izquierda**, la APP lanza el dato **L**y tienen que apagarse todos.

##### <span style="color: rgb(22, 145, 121);">**Montaje 21 SIN EDUBASICA**</span>

No pasa nada, con una placa Protoboard pon 3 leds en D3,D4 y D5 y el módulo Bluetooth.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-dk3mhw0q.png)

##### <span style="color: rgb(22, 145, 121);">**Montaje 21** </span><span style="color: rgb(22, 145, 121);">**CON EDUBÁSICA**</span>

No hay que hacer nada especial, sólo conectar el módulo Bluetooth

##### <span style="color: rgb(22, 145, 121);">**Montaje 21** </span>**<span style="color: rgb(22, 145, 121);">RESULTADO</span>**

<p class="callout info">El vídeo está realizado con otra APP ya desfasada, pero sirve igual de ejemplo, es increíble, sólo pasó un mes !</p>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--21" src="//www.youtube.com/embed/b6YviyYLsTk" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Montaje 21** </span><span style="color: rgb(22, 145, 121);">**PROGRAMA**</span>

Este es el programa que tienes que cargar en el Arduino. Súbelo, empareja tu móvil tal y como hemos visto anteriormente y conseguirás que **la APP** encienda los leds como en el vídeo.

[https://create.arduino.cc/editor/javierquintana/1724fd04-6b04-4c26-8cb1-1da9f8779f21/preview](https://create.arduino.cc/editor/javierquintana/1724fd04-6b04-4c26-8cb1-1da9f8779f21/preview)

<iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/1724fd04-6b04-4c26-8cb1-1da9f8779f21/preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

#### **Montaje 22 Encender LEDs sin EDUBASICA**  


Este ejemplo es más avanzado, pero no se puede hacer con edubásica: Vamos a ver un ejemplo implementando un **mosaico de LEDs**:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-c18lwzbs.png)

Las conexiones serán las siguientes:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-0cwtv0yv.png)

El objetivo es que según la tecla que presionemos en la aplicación “Blue Control”, se encenderá el led correspondiente: (arriba, abajo, izquierda, derecha y centro). Además si pulsamos alguno de los botones laterales, los leds deberán realizar una animación de todos los leds:

- Encendido de los leds en sentido horario.
- Encendido de los leds en sentido antihorario.
- Encendido intermitente de los leds exteriores y el interior.
- Encendido intermitente de todos los leds.

INVENTA MÁS ANIMACIONES PARA INCLUIRLAS EN LOS BOTONES QUE SOBRAN EN LA APLICACIÓN

Para simplificar el código, hemos creado funciones para ejecutar cada una de las animaciones, estas funciones están al final del programa.

La lectura se hace mediante 2 funciones:

- La función **Serial.available()** nos indica si hay un dato disponible en el puerto serie (verdadero/falso)
- Con la función **dato = Serial.read();** guardamos el dato en una variable (de typo byte)

Con esto tendremos el código ASCII del caracter enviado por el maestro, por ejemplo si hemos enviado una A tendremos el 65, B = 66, a = 97, b = 98, ... (ascii.cl/es/)

Lo único que nos queda es comparar el dato recibido y elegir la acción que tiene que hacer Arduino.

[https://create.arduino.cc/editor/javierquintana/6d9fd0f4-369a-486f-86ab-10098b3815c0/preview](https://create.arduino.cc/editor/javierquintana/6d9fd0f4-369a-486f-86ab-10098b3815c0/preview)

<iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/6d9fd0f4-369a-486f-86ab-10098b3815c0/preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

#### <span style="color: rgb(22, 145, 121);">**Montaje 23 Configuración no típica: HC-06 no conectado al D0 y D1 y otras configuraciones**</span>

Si quieres modificar cosas como la velocidad de conexión, el nombre o la contraseña de tu módulo, aquí te dejamos un código para que subas a tu arduino y mediante el monitor serie lo configures.

<p class="callout success">Nota: No se pretende que realices el montaje, pero creemos que es importante que veas que el módulo Bluetooth no es cerrado en su configuración.</p>

Para ello hemos creado un nuevo puerto serie para que no interfiera con el USB y podamos usarlo simultáneamente, lo haremos **en** **las patillas 10 y 11. LUEGO NO PUEDES USAR LA SHIELD EDUBÁSICA.**

Deberás conectar el módulo como ves en la figura, y luego cargar el código. Una vez súbido, abre la consola serie y (EN MAYÚSCULAS) ejecuta los comandos que necesites.

Una vez finalizado, puedes desconectar el módulo BT y usarlo con normalidad.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-k17xd44z.png)

[https://create.arduino.cc/editor/javierquintana/b175c6e8-9e49-493d-9c79-705a663975df/preview](https://create.arduino.cc/editor/javierquintana/b175c6e8-9e49-493d-9c79-705a663975df/preview)

<iframe frameborder="0" src="https://create.arduino.cc/editor/javierquintana/b175c6e8-9e49-493d-9c79-705a663975df/preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

#### <span style="color: rgb(22, 145, 121);">**Bluetooth maestro HC-05**</span>

El **HC-05** puede funcionar como maestro y esclavo. La diferencia con el módulo **HC-06** que sólo funciona como esclavo. El **HC-05** es por lo tanto un módulo técnicamente superior. Físicamente el **HC-05** tiene 6 pines mientras que el **HC-06** sólo 4. Esto le permite al **HC-05** trabajar con distintos modos de funcionamiento más avanzados, (ver [https://fgcoca.github.io/BlueTooth-HC-05-y-HC-06/modulos/)](https://fgcoca.github.io/BlueTooth-HC-05-y-HC-06/modulos/))

Para acceder a este modo especial en el master lo podemos hacer de 2 formas:

1. Conectando Key a 3.3v y encender el módulo. Así funciona a 38400 baudios.
2. Encendiendo el módulo y después conectando el key a 3.3v. Así funciona a 9600 baudios, (es más sencillo pues es el que usa por defecto).

Los comandos AT en HC-05, al contrario que en el HC-06 (esclavo), que es el que tendrá mucha gente , tienen que llevar el símbolo "=", por ejemplo:

En HC-06: AT+NAMEnombre

En HC-05: AT+NAME=nombre

El datasheet indica que por defecto vienen con el modo CMODE=1 (para conectarse a cualquier esclavo disponible), sin embargo hay que comporbarlo (AT+CMODE?) por si tienen el CMODE=0 por lo que se intenta conectar al último emparejado, (en este caso no se emparejaría con ningún esclavo), así que hay que cambiar el CMODE con AT+CMODE=1)

El HC-05 tiene 6 pines:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-m6q8amzh.jpeg)