Yañez Peralta Leonardo - 5°5 - Reporte Control Bluetooth
Yañez Peralta Leonardo - 5°5 - Reporte Control Bluetooth
Yañez Peralta Leonardo - 5°5 - Reporte Control Bluetooth
Grado: 5° Grupo: 5
1) https://dl.espressif.com/dl/package_esp32_index.json
2) http://arduino.esp8266.com/stable/package_esp8266com_index.json
Una vez hecho lo anterior será necesario dar click en “OK” y reiniciar la IDE.
Una vez hecho lo anterior debemos dirigirnos a la sección
“Herramientas>Placa>ESP32 Arduino”, en donde se debe elegir entre las múltiples
alternativas disponibles. Para este caso será “DOIT ESP32 DEVKIT 1”
Dentro del “void loop ()” un “if” permite comprobar si hay alguna entrada de
información y de ser así la línea #22 asigna la entrada a la variable “dato”, y en la
#23 se emplea “serialBT.compareTo(“E”) ==0” para que, si el mensaje
efectivamente es “E”, se imprima en el “Monitor serial” la palabra “Hola” (línea
#24).
Código #1
Para realizar la prueba fue necesario descargar la aplicación creada por el
profesor:
Una vez instalado fue necesario también cargar el código al dispositivo ESP32
para lo cual hay que elegir el puerto al que está conectada la placa:
Al realizar esta configuración, se procede a dar click en compilar, y en subir, sin
olvidar que al mostrarse en la consola “Conectando…”, se debe presionar el botón
“BOOT” de la placa.
Dentro del “void loop ()” un “if” permite comprobar si hay alguna entrada de
información y de ser así la línea #20 asigna la entrada a la variable “Mensaje”, y
en la línea #21 y #25 se ejecuta un codicional, que garantiza que los mensajes de
entrada sean “E” o “A”.
Cuando “Mensaje=E” la línea #22 indica que el “pin 12” indicado por la variable
“Led” se coloque en estado alto, y en la línea #23 en lugar de usar
“Serial.println()”, empleamos “serialBT.println()”, lo que nos permitirá el grabar el
mensaje de respuesta (“Encender Led”) directamente en la interfaz de la
aplicación. Cuando “Mensaje=A“ la línea #26 indica que el “pin 12” indicado por la
variable “Led” se coloque en estado BAJO, y en la línea #27 en lugar de usar
“Serial.println()”, empleamos “serialBT.println()”, para grabar el mensaje de
respuesta (“Apagar Led”) directamente en la interfaz de la aplicación.
Código #3
Para conectar el LED a la placa ESP32 nos apoyamos de una protoboard (placa
de pruebas) el pin negativo del LED se conecta con el pin GND, y el pin positivo al
pin 12 de la siguiente manera:
**Una vez hecho lo anterior repetimos el proceso para cargar el código a la
placa ESP32 y conectar la App con la red Bluetooth, que se explicaron
anteriormente.
Lo que se obtiene es que al enviar la letra “E” se muestre en pantalla en mensaje
“Encender Led”, y se enciende el LED, y al enviar la letra “A” se muestra en pantalla
en mensaje “Apagar Led”, y se apaga el LED.
Caso #1:
Caso #2:
Creación de nuestra primera aplicación Bluetooth en App Inventor
(para encender y apagar un LED):
App Inventor es un sitio de internet que nos permite diseñar una aplicación
sencilla, y todo a través de elementos arrastrables ya sea para diseñar su interfaz
o realizar su programación (empleando bloques).
Al hacer esto se creará nuestro proyecto y nos envia a una serie de menus y barras donde
podemos elegir funciones, botones (User interface), API’s, arreglos de componentes
(Layout) y demas elementos necesarios para permitir al usuario interactuar con la
aplicación.
Los componentes que emplearemos para diseñar la App son:
Button (botones), label (cuadro de texto), ListPicker (muestra una lista de textos para que el
usuario elija en este caso las redes Bluetooth), HorizontalArrangement (permite acomodar
en posiciones espefificas varios componentes, de manera horizontal), VerticalArrangement
(permite acomodar en posiciones espefificas varios componentes, de manera vertical),
Clock (componente no visible que proporciona el instante en el tiempo utilizando el reloj
interno del teléfono), y BluetoothClient (componente que utiliza el perfil de puerto serie
(SPP) para la comunicación Bluetooth) siendo este ultimo el que nos permite asignar
propiedades, metodos, o eventos como la deteccion de la conexión bluetooth, la lectura de
algun mensaje, la inpresion de una respuesta en algun componente como “Label”, etc,
usando funciones basicas en su posterior proramación.
Para comenzar a dar forma a la aplicación tendremos que arrastrar los componentes, por
ejemplo, un “HorizontalArrangement”, para lo cual es necesario dar click sostenido en el
componente dentro de la lista Layout, y moverlo hacia la pantalla del celular.
Una vez hecho esto podemos arrastrar más componentes dentro del
“HorizontalArrangement”, en este caso deseamos un botón que abra la lista de redes
Bluetooth disponible y uno para desconectar el dispositivo, siendo las mejores opciones
para esto un componente ListPicker y un componente Button respectivamente:
Los ajustes son bastante explícitos por lo que no hay mucha dificultad para entender que
hace cada opción de la barra, y nos da la libertad de experimentar y personalizar la App,
por ejemplo, este es el mismo arreglo de componentes anterior, pero con unos ajustes de
tamaño, color forma, e incluso vista de la pantalla principal:
Para continuar se tuvo que arrastrar la siguiente lista de componentes y en el orden que se
indica, además de personalizar a nuestro la apariencia, posición, texto y tamaño de texto, el
lugar de cada componente, y sus dimensiones (en este caso la principal opción para esto
fue “Width>Fill parents” que ajusta automáticamente a la pantalla).
Después de esto se agrega un tercer conjunto, en este caso al igual que los anteriores se
deben escoger los componentes para los cuales se desea asignar alguna acción, y en este
caso es necesario elegir un bloque para el componente no visible “Clock1”, para el cual se
debe indicar que cuando clock esté como temporizador, se ejecute un condicional para
componente BluetoothClient1, que en este caso si se detecta que hay una conexión, y si se
corrobora la entrada de información (mediante un segundo condicional if) se asigne al
componente “Label4” una cadena de texto, que mediante el bloque “join” permite que
además del texto asignado en el cuadro Label4, se agregue la lectura de texto recibida por
Bluetooth.
Para concluir es necesario programar las acciones para los botones encargados de encender y
apagar el diodo LED, para ello se selecciona el componente tipo Botton deseado, una vez
hecho esto arrastramos el bloque “when().click” para indicar que cuando se pulsa el botón se
pase a la siguiente acción, en este caso ejecutar un condicional, alegimos el componente
BluetoothClient1 y arrastramos hacia el bloque condicional la opción “().isConnected”, para
indicar que si está conectado entonces se realice la siguiente acción para el mismo
componente Buetooth Client1 en este caso “call().SendText” que nos permite enviar un
mensaje de texto por Bluetooth, y agregamos un bloque de texto (A para el botón “Apaga
LED”, y E para “Enciende Led”).
Y finalmente seleccionamos la opción “Build>y el tipo de archivo que queremos generar” para
posteriormente recibir un código QR para su descarga, o la opción de descarga directa.
Para su instalación solo se debe dar permiso al administrador de archivos para la instalación
de fuentes desconocidas, dar click al archivo .apk y esperar su instalación:
**Una vez hecho lo anterior repetimos el proceso para cargar
el “Código #3” a la placa ESP32 para realizar pruebas con
la aplicación creada, además de la conexión del led con la
placa ESP32 -----------
Este código es muy similar al Código #3 primero cargamos las librerías Bluetooth,
luego en las tres líneas posteriores se crea un “if en línea” que permite comprobar si
existe la conexión Bluetooth, y de no ser así enviar un mensaje de error.
Posteriormente se crea el objeto “serialBT” y se declaran las variables “Led”, “Led2” y
“Led3” indicando valores =13, 12, y 14 respectivamente (corresponden a 3 pines de
salida), también asignamos nuestro nombre a la red Bluetooth e indicamos mediante
las variables declaradas 3 salidas digitales.
Dentro del “void loop ()” un “if” permite comprobar si hay alguna entrada de información
y de ser así se asigna la entrada a la variable “Mensaje”, y en la línea #21 y #25 se
ejecuta un codicional, que garantiza que los mensajes de entrada sean “E” o “A”.
Posteriormente hay una serie de condicionales de tipo “if” y en cada uno se permite
comparar si Mensaje es igual a alguna de las letras E,A,L,O,S, o N, que corresponden
al mensaje que recibe la placa, y a las cuales se les asigna una acción (prender o
apagar el LED correspondiente) colocando en estado alto o bajo los pines de salida
13,12, y 14.
void loop() {
if (serialBT.available()) {
char Mensaje = serialBT.read();
if (Mensaje == 'E') {
digitalWrite(Led, HIGH);
serialBT.println("Encender Led 1");
}
else if (Mensaje == 'A') {
digitalWrite(Led, LOW);
serialBT.println("Apagar Led 1");
}
El procedimiento para la creación de esta segunda App es el mismo que la anterior, solo que
ahora se han añadido a la interfaz 4 botones extra, y 2 componentes HorozontalArrangement
en donde se han colocado en pares los 4 nuevos botones, por ello no se repetirá cual es el
procedimiento para acomodar y personalizar los componentes disponibles en MIT App
Inventor.
La interfaz de esta aplicación (después de modificar tamaños, forma, tipo de letra, colores y
posición, y contenido de algunos elementos) y la lista de los componentes empleados, así
como el orden que les corresponde, son los siguientes:
Screen1
HorizontalArrangement1
ListPicker1
Button1
HorizontalArrangement2
Label1
Label2
VerticalScrollArrangement1
Label3
Label4
HorizontalArrangement3
Button2
Button3
HorizontalArrangement4
Button4
Button5
HorizontalArrangement5
Button6
Button7
Clock1
BluetoothClient1
Una vez hecho esto procedemos a realizar la programación, que si bien resulta prácticamente
igual a la anterior tiene algunas diferencias clave:
Después de esto se agrega un tercer conjunto, en este caso es necesario elegir un bloque
para el componente no visible “Clock1”, para el cual se debe indicar que cuando clock esté
como temporizador, se ejecute un condicional para componente BluetoothClient1, y si se
detecta que hay una conexión, y corrobora la entrada de información (mediante un segundo
condicional if) se le asigne al componente “Label4” una cadena de texto, que mediante el
bloque “join” permite que además del texto asignado en el cuadro Label4, se agregue la
lectura de texto recibida por Bluetooth.
Y finalmente seleccionamos la opción “Build>y el tipo de archivo que queremos generar” para
posteriormente recibir un código QR para su descarga, o la opción de descarga directa.