Arduino + Android con App InventorAbraham Sánchez Hernández
M a n u a l e sy t u t o r i a l e s
P A R T E 2
Barra reguladora
Arduino + Android con AppInventor 83
Este programa utiliza una barra reguladora para manipular la intensidad de luz emitida por una tira de LEDs. Hacia la extrema izquierda se apaga por completo la tira y hacia la extrema derecha se enciende con un brillo máximo de 100, si lo prefieres, se puede cambiar ese valor a 255 en el programa de Arduino.
Arduino + Android con AppInventor 84
[App_Ard_4]
[App_Ard_4]
Para manipular el comportamiento causado al deslizar la barra, carga el bloque sldBrillo.PosiciónCambiada y carga dentro 2 bloques: el primero es para ver en pantalla el nuevo valor numérico generado por la barra y el segundo para enviar ese valor a través de bluetooth hacia el Arduino. Entonces carga el bloque etqSlider.Texto como / sldBrillo.PosiciónDelPulgar para poder ver como texto el valor de posición de la barra. Para enviar esos datos carga llamar Cliente-Bluetooth1.EnviarTexto; texto / sldBrillo.PosiciónDelPulgar
Arduino + Android con AppInventor 85
Arduino + Android con AppInventor 86
[App Inventor_4]
Arduino + Android con AppInventor 87
Este programa utiliza una barra reguladora para manipular la intensidad de luz que emite una tira/matriz de NeoPixeles; aunque el programa de App Inventor es el mismo, se ha modificado el programa de Arduino y la forma de conectar la matriz es diferente
Arduino + Android con AppInventor 88
[App_Ard_4]
Arduino + Android con AppInventor 89
[App Inventor_5]
Revisa el ejercicio en:https://youtu.be/qWZ5UNwrgmo
Barra reguladora¡Agrega colores!
Arduino + Android con AppInventor 92
Arduino + Android con AppInventor 93
Es un programa similar al anterior pero se ha agregado un selector de color para aprovechar la principal característica de los NeoPixeles: cambiar de color.
Arduino + Android con AppInventor 94
[App_Ard_5]
[App_Ard_5]
Este es un programa parecido a App_Ard_4, pero en esta ocasión el texto que envías se ha concatenado utilizando el bloque unir con un bloque de texto, al cual debes escribirle un “/”. Esto se conoce como bandera y sirve como identificador dentro del bus de datos enviados por bluetooth para filtrar la información recibida y así saber el tipo de acción a realizar por Arduino dependiendo de la bandera recibida. Como puedes ver, para cada color hay una bandera, esta expresa el color elegido (r para rojo p.e.) y viene acompañada de esta bandera “|”, la cual se ha utilizado para marcar un cambio de color.
Con lo anterior, Arduino entiende que “/” sea para cuando esta recibiendo un dato proveniente de la barra deslizante y si lee “|r” quiere decir que se presionó el botón rojo y por tanto cambiará la luz a ese color.
Arduino + Android con AppInventor 96
[App_Ard_5]
Para cada botón de color se han agrupado los bloques de manera similar, por ejemplo, para el color rojo debes cargar cuando btnRojo.Clic / llamar BluetoothClient1.EnviarTexto; texto / “Texto” y, como se explicó antes, cada uno tiene un símbolo diferente correspon-diente al color del que se trate.
Estas banderas se usan con frecuencia en la comunicación serial para poder programar en el Arduino distintas tareas determinadas por las banderas asignadas para ellas. Por lo general se usan letras para las banderas y se dejan los números para valores analógicos, pero, de hecho, en el primer programa “App_Ard_1” usaste “1” y “2” como banderas. Todo depende de la necesidad de tu proyecto aunque debes tener en cuenta que la transmisión serial está basada en el código ASCII, así que mientras no puedas usar “楽” , si puedes usar “?”
Arduino + Android con AppInventor 97
[App Inventor_5-1]
Arduino + Android con AppInventor 98
Revisa el ejercicio en:https://youtu.be/S7kzpULOHlc
Mensaje interactivo
Arduino + Android con AppInventor 101
Arduino + Android con AppInventor 102
Este programa le pide al usuario introducir texto y una vez que lo tenga, presione enviar para verlo reflejado en la matriz de NeoPixel
Arduino + Android con AppInventor 103
[App_Ard_5_2]
Arduino + Android con AppInventor 104
[App_Ard_5_2]
Este programa retoma lo que ya has practicado con banderas, pero se ha incorporado un nuevo componente, el CampoDeTexto. Este componente pide al usuario introducir texto para procesarlo después.
Para utilizar el componente, carga los bloques cuando txtMensaje.ObtenerFoco / poner txtMensaje.Texto como / txtMensaje.Texto con ello se muestra en pantalla lo que el usuario escribió, se mantiene así hasta la introducción de un nuevo texto por el usuario.
Después, al presionar el botón de Enviar, se envía ese texto por bluetooth con los bloques cuando btnEnviar.Clic / llamar Cliente-Bluetooth1.EnviarTexto; texto / txtMensaje.Texto
Arduino + Android con AppInventor 105
[App Inventor_5-2]
Para que este programa funcione correctamente, debes instalar la biblioteca Adafruit_Neomatrix y Adafruit_GFX,, la puedes descargar de estos links:
https://github.com/adafruit/Adafruit_NeoMatrix/archive/master.zip
https://github.com/adaf ruit/Adaf ruit-GFX-Library/archive/master.zip
Si el link deja de funcionar se puede buscar por su nombre.
Para verificar si la instalación fue correcta, Adafruit_Neopixel aparecerá en naranja, de otro modo, la instalación está incompleta.
Arduino + Android con AppInventor 106
Revisa el ejercicio en:https://youtu.be/-xZVEGfUfao
Arduino + Android con AppInventor 108
ACTIVIDAD 4: SENSORES
Briefing- Creación de una aplicación para leer botones- Creación de una aplicación para leer un potenciómetro- Creación de una aplicación de dimmer con LEDs
Arduino + Android con AppInventor 109
Pulsadores
Arduino + Android con AppInventor 110
Arduino + Android con AppInventor 111
En este programa se ha propuesto que el teléfono responda a la pulsación de push-buttons en el Arduino, mostrando en pantalla como si se prendieran y apagaran unas bombillas dependiendo cual push-button se presione; sin embargo, se puede jugar con las imágenes para la pantalla.
Arduino + Android con AppInventor 112
[App_Ard_6]
[App_Ard_6]
En este caso, utiliza un temporizador (Reloj1.Temporizador) con la condición de que el cliente de bluetooth esté conectado.
Si está conectado carga un si, entonces / llamar ClienteBluetooth1.BytesDisponiblesParaRecibir / > 0 para condicionar a la siguiente acción sólo si hay algo de información en el bus de datos recibidos. Si los cargas a la variable global input con los datos recibidos con los bloques llamar ClienteBluetooth1.RecibirTexto; númeroDeBytes / llamar ClienteBluetooth1.BytesDisponiblesParaRecibir.
Después evalúa si recibes una a o una b con global input / = / a o si global input / = / b utilizando una condición si, entonces; si no, si, entonces para delimitar únicamente a esas 2 banderas. En cualquier caso, si se ejecuta a el procedimiento FocoA y carga el texto de A en pantalla. Igual con b.
[App_Ard_6]
Con este conjunto de bloques agrupados en procedimientos logras generar el efecto de que en pantalla parezca como si uno de los focos prendiera y el otro se apagara.
Según el procedimiento, se ha programado las imágenes seleccio-nadas para superponerse en ese procedimiento y de esta manera, al seleccionar otro procedimiento, se logra la animación de cambiar de apariencia.
En cualquier caso, siempre se cargan los mismos bloques, estos corresponden a imgFoco1 y a imgFoco2. Como ejemplo, para imgFoco1 se han usado los siguientes bloques.
imgFoco1.Foto como y Texto con el nombre exacto de la imagen a mostrar. En este caso, FcON.jpg, seguido de poner imgFoco1.Visible como y el bloque lógico cierto. Para ImgFoco2 es lo mismo.
Arduino + Android con AppInventor 115
[App_Ar_d6]
Revisa el ejercicio en:https://youtu.be/9sBm2oxw6pU
Arduino + Android con AppInventor 117
Potenciómetro
Arduino + Android con AppInventor 118
Arduino + Android con AppInventor 119
Este programa utiliza una barra deslizadora la cual responde a las ordenes enviadas por el Arduino desde bluetooth. En principio se ve muy simple, pero en vez de potenciómetro, puedes usar sensores analógicos como de temperatura, de humedad, de sonido y poder visualizar sus niveles en pantalla
Arduino + Android con AppInventor 120
[App_Ard_7]
Arduino + Android con AppInventor 121
[App_Ard_7]
Como en el ejercicio anterior, debes cargar un Reloj condicionado y carga a la variable input lo recibido del Arduino, sin embargo, como vas a recibir números, utiliza el bloque seleccionar elemento de la lista; índice y después, lo que haya en el bus de datos en formato int con llamar ClienteBluetooth1.RecibirBytesConSgino; númeroDeBytes / llamar ClienteBluetooth1.BytesDisponiblesPa-raRecibir y un número 1 con el bloque matemático para seleccionar únicamente el primer número de todos los bytes recibidos, pues, para dar la sensación de tiempo real, enviarás gran cantidad de datos desde el Arduino por tanto, para evitar la sobrecarga, carga a la variable input con un único valor.
Arduino + Android con AppInventor 122
Revisa el ejercicio en:https://youtu.be/fVBCWYWCy3Q
Potenciómetro(Gráfica)
Arduino + Android con AppInventor 125
Arduino + Android con AppInventor 126
En el caso de querer generar un histórico, este programa puede ser muy útil porque muestra una gráfica en el tiempo de los valores de nuestro sensor. Para esta práctica se usa un potenciómetro pero, como se mencionó, podría ser otro sensor analógico
Arduino + Android con AppInventor 127
[App_Ard_8]
Arduino + Android con AppInventor 128
[App_Ard_8]
Los nuevos bloques se refieren al trazado de la línea para generar tu gráfica.
Para generar la gráfica debes crear 4 variables X_2,X_1, Y_2, Y_1, que corresponden a los valores de X y Y (X_1, y_1); y a los nuevos valores de X y Y (x_2, Y_2). Al principio todos valen 0, pero conforme avances en el tiempo se irán actualizando. X incrementará en 1, y Y se cargará con los datos recibidos del Arduino. Como el alto de la gráfica es de 100 y buscas representar 5 volts como valor máximo divide lo recibido entre 20.
Al bloque llamar Lienzoq.DibujarLínea cárgalo con X_1 donde pide x1, con X_2 en x2. Para Y invierte su comportamiento, para ello, carga un bloque matemático (-) para restar el valor de Y al Lienzo1.Ato porque de otro modo, al subir el voltaje al máximo dirá 0 volts y al bajarlo todo dirá 5 volts.
Arduino + Android con AppInventor 129
La última parte de este bloque permite que cuando la gráfica llegue al final de la pantalla, esta se reinicie y regrese al principio en vez de seguir graficando en un área invisible.
Pasa eso, se une un bloque condicional si, entonces y se evalúa si X_2 > Lienzo1.Ancho para saber si ya llegó al límite de la pantalla, de ser verdadero, se pone el bloque llamar Lienzo1.Limpiar para borrar la grafica trazada y tener espacio para una nueva gráfica. Después se carga a X_1 y X_2 con cero para vuelva a comenzar.
[App_Ard_7]
Revisa el ejercicio en:https://youtu.be/eGy6-r9EiBs
Termopar(Gráfica)
Arduino + Android con AppInventor 132
Arduino + Android con AppInventor 133
Como se ha mencionando antes, puedes reemplazar el potenció-metro con un termopar (sensor de temperatura), pero dado que la señal del termopar es muy pequeña, debe acondicionarse para poder ser leída por el Arduino, por eso se ha usado el circuito MAX6675 junto con el termopar.
Arduino + Android con AppInventor 134
[App_Ard_8_2]
Arduino + Android con AppInventor 135
Para que este programa funcione correctamente, debes instalar la biblioteca max6675, esta puede descargarse de este link:
https://github.com/adafruit/MAX6675-library/archive/master.zip
Si el link deja de funcionar, la puedes buscar por su nombre.
Para verificar si la instalación fue correcta, mxx6675 aparecerá en naranja, de otro modo, la instalación está incompleta.
Dimmer
Arduino + Android con AppInventor 137
Arduino + Android con AppInventor 138
En esta ocasión se han combinado sensores discretos (botones) y analógicos para ver las capacidades que tendrás al enviar señales por bluetooth.
En este caso se selecciona el nivel de intensidad de luz del LED y luego se selecciona el LED al cual aplica ese nivel.
Arduino + Android con AppInventor 139
[App_Ard_9]
[App_Ard_1]
Se crean dos conjuntos de bloques similares para btnFoco1 y btnFoco2, por lo que se ha tomado btnFoco1 para explicar la programación.
Se carga un bloque de control si, entonces para condicionar esta acción a que el cliente de bluetooth esté conectado. Después, pon dos condiciones; si ningún botón ha sido presionado, únicamente a la variable acvFoco1 se carga un 1 y se carga FcOn a btnFoco, pero si ya se había presionado btnFoco2, entonces acvFoco1 = 1 y acvFoco2 = 0, se carga fcON a btnFoco1 y fcOFF a btnFoco2. En cualquier caso, se envía una bandera “a” al Arduino para indicarle que manipule al LED 1.
Arduino + Android con AppInventor 141
[App Inventor_8]
Arduino + Android con AppInventor 142
Revisa el ejercicio en:https://youtu.be/QF42OMCvLV8
Arduino + Android con AppInventor 144
ACTIVIDAD 5: ROBOTO
Briefing
- Creación de una aplicación para controlar un robot pequeño.
Roboto
Arduino + Android con AppInventor 146
Arduino + Android con AppInventor 147
Arduino + Android con AppInventor 148
Esta aplicación se desarrolló como exhibición de las capacidades del bluetooth para manipular un robot con ruedas.
Este robot tiene comandos básicos: adelante, atrás, izquierda, derecha. Prender y apagar luces
Arduino + Android con AppInventor 149
[App_Ard_9]
Arduino + Android con AppInventor 150
Arduino + Android con AppInventor 151
Arduino + Android con AppInventor 152
Arduino + Android con AppInventor 153
Bibliografía Nuñez Montes, José Luis. “Desarrollo de Aplicaciones móviles
Android con App Inventor”. Udemy. Última modificación Abril de 2019. https://www.udemy.com/course/desarrollo-de-aplica-ciones-moviles-con-app-inventor/
Wolber, David et al. App Inventor 2: Create Your Own Android Apps, California: Ed. O’Reilly, 2018.
El profe García (Nombre de usuario). “Como crear su propia App en Android para controlar Arduino (Bluetooth) Tutorial”. 22 de octubre de 2014. Video. 11:05. https://www.youtube.com/watch?v=S8q1vbVMV2Q.
ELECTRONOOBS (Nombre de usuario). “Create a Bluetooth App and control the Arduino”. 12 de Octubre de 2016. Video. 12:19. https://www.youtube.com/watch?v=evVRCL9-TWs.
¿Necesitas ayuda con tu proyecto?
El Centro Multimedia ofrece asesorías gratuitas en línea. Es necesario entrar en http://cmm.cenart.gob.mx/cursos/asesorias.html y completar el formulario.
**Las asesorías en línea estarán disponibles por poco tiempo**
Arduino + Android con App Inventor
Laboratorio de Interfaces Electrónicas y Robótica
Abraham Sánchez Hernández
C D M X / 2 0 2 0
CENTRO NACIONAL DE LAS ARTES