Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
io
ISBN: 978-60-538-403-0
Derechos reservados:
Esta obra es propiedad intelectual de su autor y los derechos de publicación en lengua española han sido legalmente
transferidos al editor. Prohibida su reproducción parcial o total por cualquier medio sin permiso por escrito del propie-
tario de los derechos del copyright.
Nota importante:
La información contenida en esta obra tiene un fin exclusivamente didáctico y, por lo tanto, no está previsto su aprove-
chamiento profesional o industrial. Las indicaciones técnicas y programas incluidos han sido elaborados con gran cui-
dado por el autor y reproducidos bajo estrictas normas de control. ALFAOMEGA GRUPO EDITOR, S.A. de C.V. no será
jurídicamente responsable por: errores u omisiones; daños y perjuicios que se pudieran atribuir al uso de la información
comprendida en este libro, ni por la utilización indebida que pudiera dársele. Los nombres comerciales que aparecen en
este libro son marcas registradas de sus propietarios y se mencionan únicamente con fines didácticos, por lo que AL-
FAOMEGA GRUPO EDITOR, S.A. de C.V. no asume ninguna responsabilidad por el uso que se dé a esta información, ya
que no infringe ningún derecho de registro de marca. Los datos de los ejemplos y pantallas son ficticios, a no ser que
se especifique lo contrario. d e s c a r g a do en: e y b o oks. c o m
México: Alfaomega Grupo Editor, S.A. de C.V. – Dr. Isidoro Olvera (Eje 2 sur) No. 74, Col. Doctores, C.P. 06720,
Del. Cuauhtémoc, Cd. de Méx.
Tel.: (52-55) 5575-5022 – Fax: (52-55) 5575-2420 / 2490. Sin costo: 01-800-020-4396
E-mail: atencionalcliente@alfaomega.com.mx
Colombia: Alfaomega Colombiana S.A. – Calle 62 No. 20-46, Barrio San Luis, Bogotá, Colombia
Tels.: (57-1) 746 0102 / 210 0415 – E-mail: cliente@alfaomega.com.co
Chile: Alfaomega Grupo Editor, S.A. – Av. Providencia 1443. Oficina 24, Santiago, Chile
Tel.: (56-2) 2235-4248 – Fax: (56-2) 2235-5786 – E-mail: agechile@alfaomega.cl
Argentina: Alfaomega Grupo Editor Argentino S.A. - Av. Córdoba 1215 Piso 10 - C.P. 1055
Ciudad Autónoma de Buenos Aires, Argentina
Tel./Fax: (54-11) 4811-0887 – E-mail: ventas@alfaomegaeditor.com.ar
www.alfaomegaeditor.com.ar
Acerca de los autores
A Dios, por brindarme sabiduría y humildad para colaborar en el desarrollo de esta obra.
A Rubén, mi hermano, por invitarme a emprender esta aventura. A mi esposa, Brenda Lilia-
na, por su compañía, respaldo y amor al integrarme a este proyecto. A mis hijas, María Re-
gina, María Renata y a mi hijo Ángel Tadeo, que con cada sonrisa y espontaneidad detonan
mi felicidad y compromiso por buscar cada día lo mejor para ellos ¡Los amo! A Rosalía, mi
hermana, por su valioso apoyo y sugerencias en cada proyecto. A mis padres, Rubén y Ro-
salía; por cada cosa que han hecho para que sea la persona que soy.
Consciente del alto nivel competitivo que debe de adquirir el estudiante durante su for-
mación profesional, Alfaomega aporta un fondo editorial que se destaca por sus lineamien-
tos pedagógicos que coadyuvan a desarrollar las competencias requeridas en cada profe-
-
tenido de esta obra, cada capítulo inicia con el planteamiento de los objetivos del mismo
y con una introducción en la que se plantean los antecedentes y una descripción de la es-
tructura lógica de los temas expuestos, asimismo, a lo largo de la exposición se presentan
ejemplos desarrollados con todo detalle y cada capítulo concluye con un resumen y una se-
rie de ejercicios propuestos.
Los libros de Alfaomega están diseñados para ser utilizados en los procesos de enseñan-
za aprendizaje, y pueden ser usados como textos en diversos cursos o como apoyo para re-
forzar el desarrollo profesional, de esta forma Alfaomega espera contribuir a la formación
-
pañera profesional en este viaje de por vida por el mundo del conocimiento.
Contenido
Introducción ........................................................................................................... X
Capítulo 1
Introducción a Android Studio y preparación del workspace .................................... 1
Introducción ............................................................................................................. 2
1.2 Requerimientos de software ............................................................................ 2
1.3 Creación del primer proyecto en Android Studio .............................................. 9
...................................... 12
........................................................................... 14
1.6 Cómo aprender a utilizar la librería aREST ..................................................... 14
Resumen ................................................................................................................ 21
Capítulo 2
Introducción a los dispositivos wearable ................................................................ 23
2.1 Introducción .................................................................................................. 24
2.2 Introducción a los dispositivos wearable Android ......................................... 27
Resumen ................................................................................................................ 35
Capítulo 3
Conectividad con Bluetooth .................................................................................... 37
3.1 Introducción .................................................................................................. 38
3.2 Comunicación Android-Arduino (maestro-esclavo) ........................................ 51
................................................................... 52
Resumen ................................................................................................................ 94
Capítulo 4
............................................................................................. 95
................. 96
4.2 Desarrollo de aplicación en Android Studio .................................................. 104
4.3 Cómo mejorar la aplicación .......................................................................... 114
..................................... 115
Resumen .............................................................................................................. 127
Capítulo 5
Control mediante Ethernet ................................................................................... 129
5.1 Introducción a los servicios web Restful ....................................................... 130
5.2 App Inventor ................................................................................................ 135
5.3 Proyectos de aplicaciones entre APP Inventor y Arduino .............................. 138
Resumen .............................................................................................................. 159
Capítulo 6
Aplicaciones de control para smartwatches .......................................................... 161
6.1 Android wear ............................................................................................... 162
...................................................... 164
............................. 167
Resumen .............................................................................................................. 186
Capítulo 7
Aplicaciones de control para Smart Tv .................................................................. 187
7.1 Creación de interfaces para Android TV ....................................................... 188
7.2 Introducción al led infrarrojo IR ................................................................... 190
7.3 Control remoto de dispositivos infrarrojos IR ............................................... 206
Resumen .............................................................................................................. 224
Capítulo 8
Estadística para adquirir datos de un sensor de pulso cardíaco ............................ 225
8.1 Introducción ................................................................................................ 226
8.2 El análisis estadístico ................................................................................... 226
8.3 Uso de estadística descriptiva para lecturas de sensores
de pulso cardíaco ......................................................................................... 241
8.4 Control estadístico de procesos en lecturas censadas por el pulso
de ritmo cardíaco ......................................................................................... 260
Resumen .............................................................................................................. 266
Capítulo 9
Integración de aplicaciones: Proyectos wearable .................................................. 267
9.1 Un vistazo al Internet de las cosas ................................................................ 268
9.2 Uso del Internet de las Cosas en ciudades inteligentes e industria
automotriz ................................................................................................... 274
9.3 El Internet de las Cosas y el rol del Bluetooth Low Energy ............................ 276
9.4 El Futuro del Internet de las Cosas ............................................................... 277
9.5 Desarrollo de proyectos wearable ................................................................ 280
9.6 Podómetro o contador de pasos ................................................................... 344
Resumen .............................................................................................................. 375
Capítulo 10
Integración con dispositivos industriales .............................................................. 377
10.1 Introducción ................................................................................................ 378
10.2 Protocolo RS485 y módulos ......................................................................... 378
10.3 Conexión de un termopar a Arduino ............................................................. 389
10.4 Modbus RTU ................................................................................................ 400
10.5 Aplicaciones Android para control y monitoreo de dispositivos
industriales .................................................................................................. 426
Resumen .............................................................................................................. 439
VIII Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
Contenido
Capítulo 2: Se trata de una introducción a los dispositivos wearable. En este capítulo el lector
conocerá los conceptos clave y las características de la plataforma de dichos dispositivos, los
antecedentes y aplicaciones en los entornos tecnológicos, además de la relación que existe en-
tre dispositivos actuales, entorno y los Android Wear; las tarjetas de desarrollo y dispositivos
compatibles con Arduino que se pueden implementar en dispositivos wearable respecto de
proyectos de aplicación y desarrollo tecnológico.
Capítulo 4:
-
vo es conocer los aspectos fundamentales en el desarrollo de proyectos de aplicación mediante
las tarjetas de Arduino CC3000 y Arduino YUN, además de cubrir las partes esenciales y reque-
Capítulo 5: Trata sobre el control mediante Ethernet. En este capítulo se utilizará el shield
ethernet para interactuar desde una aplicación Android; se desarrollarán aplicaciones para
monitorear y controlar la tarjeta Arduino desde un teléfono móvil a través de comunicación de
red Ethernet; se explicarán los aspectos fundamentales de los servicios web para interactuar
entre las plataformas Arduino y Android. El lector realizará varios proyectos con la integración
de ambas tecnologías.
X Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
Introducción
Capítulo 7: Es sobre aplicaciones de control para smart TV. En este capítulo el lector conoce-
rá los aspectos fundamentales y la arquitectura de una aplicación para smart TV y Android TV,
con el objetivo de desarrollar aplicaciones de control y monitoreo para televisiones con An-
droid. Se realizará un ejemplo de aplicación en el ambiente de Android Studio, además de algu-
nos proyectos con dispositivos electrónicos y Arduino para lograr el control y automatización
de una televisión e integrarla a un esquema de conectividad; para ello, se usará como medio de
control una tarjeta Arduino y una aplicación Android desde un smartphone.
Capítulo 10: Es acerca de la integración con dispositivos industriales. En este capítulo se de-
sarrollarán las habilidades para utilizar y crear aplicaciones en la plataforma de Android para
monitoreo y control de equipos industriales, tales como controladores lógicos programables
(PLC) y la integración de Arduino en el ámbito industrial; lo cual a su vez permitirá emplearlo
en redes y protocolos industriales. Asimismo, esta herramienta añadirá convergencia transpa-
rente a equipos de comunicación, como variadores de velocidad, actuadores y sensores, con lo
-
rará y realizará el software requerido en esta placa a través del uso de shield Ethernet y módu-
-
tegrar una gran cantidad de aplicaciones con las herramientas vistas en este capítulo.
Capítulo 11 (en la web): Contiene proyectos de aplicación Android. En este capítulo se pon-
drá en práctica lo aprendido en los anteriores, además de conocer qué tipo de aplicaciones An-
droid se pueden realizar con las plataformas actuales de Android Studio y Arduino. Se desarro-
llarán aplicaciones para control de sensores del teléfono Android y su integración con Arduino;
además, en cada proyecto se podrá interactuar con los elementos del celular, por ejemplo, el
uso del dispositivo de comunicación NFC y el control por voz.
Capítulo 12 (en la web): Contiene la segunda parte de los proyectos de aplicación Android.
En este capítulo se abordará una serie de trabajos por medio de la plataforma Android con
aplicaciones hacia el desarrollo de dispositivos de tecnología aplicada, integrando Arduino y
Android.
Capítulo 13 (en la web): Contiene la tercera parte de proyectos de aplicación Android. En este
capítulo se practicará la integración de las herramientas Android con Arduino y se menciona-
rán algunas tecnologías que marcarán el futuro de las aplicaciones móviles con el entorno de
desarrollo hacia diferentes tipos.
1. Ir a la página: http://libroweb.alfaomega.com.mx
2. Ir a la sección Catálogo y seleccionar la imagen de la portada del libro, al dar doble clic sobre
ella, tendrá acceso al material descargable.
Nota: Se recomienda respaldar los archivos descargados de la página web en un soporte .ísico.
XII Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
Capítulo
ANDROID STUDIO
1
Introducción a
Contenido Objetivo
1.1 Introducción En este capítulo el lector pondrá en marcha
1.2 Requerimientos de software y preparará el entorno de desarrollo IDE de
Android Studio para la elaboración de los
1.3 Creación del primer proyectos planteados, además de cubrir
proyecto en Android Studio
los requerimientos necesarios para reali-
1.4 Instalación de la app en el zar la integración entre Arduino y Android
dispositivo físico Android Studio y con ello desarrollar aplicaciones.
1.5 Configuración del hardware Además, podrá crear y simular dispositivos
virtuales en el entorno de Android Studio,
1.6 Cómo aprender a utilizar la
con la herramienta del AVD Manager dentro
librería aREST
del mismo IDE que posteriormente se po-
Resumen drá utilizar.
Capítulo 1 · Introducción a Android Studio y preparación del workspace
Este primer capítulo establecerá los fundamentos de Arduino y desarrollo de Android para
contar con los elementos básicos en el manejo de tutoriales avanzados, mostrados en el resto
de la obra.
Se construirá un proyecto simple con un módulo de relé (un interruptor que se puede ma-
nejar con Arduino) y un sensor de temperatura y humedad. También se verán los fundamentos
del IDE (Entorno de Desarrollo Integrado) de Arduino y los comandos de aREST. Se utilizará
esta biblioteca en varios capítulos del libro para facilitar el control de la placa Arduino desde
un dispositivo Android.
Además, se probarán los comandos de aREST con dicha tarjeta conectada a la computadora
a través del puerto USB. Para lograr lo anterior, se deberá asegurar que el equipo y el disposi-
tivo Android estén listos para el proceso. Se realizará una sencilla aplicación de Android que
muestra el famoso programa Hello World.
Android Studio está en versión beta, pero el software se actualiza de forma frecuente y regu-
lar, hecho que lo convierte en la opción natural para nuestros proyectos de Android.
La siguiente lista de comprobación le guiará en lo esencial para el diseño y desarrollo de esta
aplicación, así como para cualquier otro proyecto:
Java –versión
2 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
1.2 · Requerimientos de software
byYako1976 identi.io
Pantalla de versión Windows
Instalación de Java
Si no tiene instalado Java, o si su versión está por debajo de 6.0, instale Java JDK con un clic en
el siguiente enlace personalizado y abreviado, elija la versión que se aplica para su sistema.
http://j.mp/javadevkit-download
La principal recomendación para estos proyectos es que instale una versión de JDK 6.0 o su-
perior.
En el caso de Windows, para ver si su computadora ejecuta una versión de 32-bit o 64-bit,
debe hacer lo siguiente:
2. Dar clic en Android Studio. Se dirigirá a la página de destino donde se detectará automá-
ticamente la versión del sistema operativo, como se muestra en la siguiente captura de
pantalla:
4 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
1.2 · Requerimientos de software
Acuerdo de uso
Windows
de Android Studio para completar el proceso de instalación:
Asistente de conguración
enormemente con la introducción de Android Studio, ya que los últimos SDK vienen preinstala-
-
guientes, sería muy útil comprender cómo se puede instalar (o incluso desinstalar) SDK den-
tro de Android Studio.
Hay varias maneras de acceder al SDK Manager. El más directo es a través de la siguiente ba-
rra principal de herramientas de Android Studio:
6 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
1.2 · Requerimientos de software
Otra forma es a través del menú de lanzamiento, donde se mostrarán las siguientes opciones:
muestra abajo. A continuación debe hacer clic en SDK Manager:
La pantalla anterior muestra cómo es SDK Manager. Para instalar cualquier paquete, se nece-
sita comprobar la marca del mismo en particular, para esto se deberá hacer clic en Instalar pa-
Aceptación de licencias
A continuación, se enlistan los tres pasos que se deben ejecutar para habilitar el dispositivo An-
-
rato, y es importante descargar primero los drivers de comunicación para que el sistema ope-
rativo Windows reconozca el dispositivo Android:
8 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
1.3 · Creación del primer proyecto en Android Studio
Se debe aceptar la tecla RSA en el teléfono o tableta antes de transmitir cualquier dato en el
dispositivo a través de Android Debug Bridge (ADB). Esto se logra conectando el dispositivo a
debe seleccionar Permitir siempre desde este equipo, luego hacer clic en Aceptar.
-
-
10 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
1.3 · Creación del primer proyecto en Android Studio
Una vez realizados los pasos anteriores, aparecerá la bienvenida al espacio de trabajo, lo que
da una buena visión general del árbol del proyecto, editor de código principal, y el dispositi-
vo que muestra una vista previa de la interfaz de usuario (UI), como se observa en la siguiente
captura de pantalla:
-
co Android.
fl
-
principal, como se muestra en la siguiente barra:
Posteriormente, se debe dar un clic en Android Application y activar la opción USB device, lue-
go presionar el botón OK:
aplicación sobre la que se ha trabajado y se presiona el botón Play (triángulo verde), como se
muestra en la siguiente captura de pantalla:
12 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
1.4 · Instalación de la app en el dispositivo físico Android
Botón Play
Sin embargo, en este momento no hay emuladores virtuales que soporten Bluetooth, los cua-
les se requieren para la serie de proyectos mencionados en este libro. Así que sólo se realizará
-
-
vo Android:
Aparición de leyenda
conectado a la placa Arduino.
Conexiones nales
fl
Ahora que el hardware ya se encuentra montado, se verán los fundamentos del Ambiente de
-
14 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
1.6 · Cómo aprender a utilizar la librería aREST
Sin esta biblioteca, se tendrá que reescribir el mismo código varias veces para todos los ca-
pítulos del libro; para encontrar una documentación completa sobre la misma, se puede visitar
el sitio https://github.com/marcoschwartz/aREST.
// DHT sensor
#dene DHTPIN 7
#dene DHTTYPE DHT11
// CreateaREST instance
aREST rest = aREST( );
// DHT instance
DHT dht(DHTPIN, DHTTYPE);
void setup(void)
{
// Start Serial
Serial.begin(115200);
}
voidloop( ) {
temperature = (int)t;
humidity = (int)h;
-
rial y cambiar la velocidad de transferencia a 115200, como se muestra a continuación:
16 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
1.6 · Cómo aprender a utilizar la librería aREST
El siguiente paso es enviar los comandos de comunicación desde la pantalla del monitor serial.
Este comando muestra los datos del dispositivo y que se encuentra conectado:
/id
/temperature
/humidity
18 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
1.6 · Cómo aprender a utilizar la librería aREST
Para controlar el módulo revelador conectado a la salida digital 8 del Arduino, es necesario
/mode/8/o
Conguración de salida
/digital/8/1
Activación de salida 8
/digital/8/0
Desactivación de salida 8
Estos fueron los fundamentos de la biblioteca aREST que se usarán en toda la obra.
Se debe tomar en cuenta que por ahora se consideran estos comandos a través de comuni-
caciones en serie pero, más adelante, los mismos se utilizarán a través de Bluetooth y luego a
Ahora que se sabe cómo funciona la biblioteca aREST y se ha creado el primer proyecto An-
droid; cabe resaltar que en este capítulo introductorio no se conectaron ambos, pues ello se
20 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Resumen
RESUMEN
Se construyó un proyecto que comprende: una placa Arduino, un módulo de relé, un sensor de
temperatura y un sensor de humedad. Se conectaron estos componentes para controlar el relé
como una salida y leer los datos del sensor. También se estudiaron los fundamentos de la bi-
blioteca aREST, que se utilizarán para controlar la placa Arduino desde un dispositivo Android.
Por el lado de Android, se preparó un dispositivo IDE y Android para el desarrollo, que ser-
virá para los próximos proyectos que se han preparado en este libro y que ayudarán a tener
una experiencia satisfactoria.
2
Introducción a los
DISPOSITIVOS
byYako1976 identi.io
wearable
Contenido Objetivo
2.1 Introducción En este capítulo el lector conocerá los con-
2.2 Introducción a los ceptos clave y las características de la pla-
dispositivos wearable taforma de los dispositivos wearable, los
Android antecedentes y su relación con los entornos
tecnológicos respecto de los dispositivos
Resumen
actuales y los Android Wear, las tarjetas de
desarrollo y aquellos que son compatibles
con Arduino para implementar en los dispo-
sitivos wearable cuando se hacen proyectos
de aplicación y desarrollo tecnológico.
Capítulo 2 · Introducción a los dispositivos wearable
En este capítulo se analizará la evolución de la computación portátil y su relación con otros ele-
mentos, como las computadoras de escritorio, móviles y ubicuas. Además, se abordarán algu-
nos aspectos de la nueva era de los dispositivos wearable y sus aplicaciones en ambientes para
Android y, por último, se describirán las plataformas electrónicas wearable para la construc-
ción de proyectos de este tipo.
La computación portátil, aunque ampliamente considerada como la última innovación tecno-
lógica, había existido incluso durante los días del ábaco, una herramienta tipo calculadora que
se usó durante siglos por comerciantes. Según el sitio Chinaculture.org se cree que un ábaco
incrustado en un anillo fue utilizado como calculadora durante la dinastía Qing.
Fue muy popular y se consideró una maravilla tecnológica, en comparación con los relojes
digitales manuales o sencillos disponibles en ese momento. No sólo se utilizó para ver la hora
-
cuperar información del contacto almacenada en la memoria.
Reloj Casio
Los innovadores siempre han encontrado fascinación en nuevos accesorios, por ejemplo, en
la chaqueta Burton Amp, primer dispositivo para vestir que controla iPods, o en el último ar-
tefacto llamado Whistle utilizado por los propietarios de mascotas para el seguimiento de la
ubicación y de su actividad. Los dispositivos wearable son ya algo común y son utilizados en
diversos lugares.
24 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
2.1 · Introducción
Como antecedente, Gordon Moore (1929), cofundador de Intel, predijo hace cincuenta años que
el número de transistores montado en circuitos integrados más pequeños se duplicaría por un
lapso aproximado de cada dos años. Ese era el punto de partida para el crecimiento explosivo
de las potencias informáticas. El tamaño de los componentes electrónicos se redujo lentamente
y el poder de procesamiento de los dispositivos se hizo más fuerte con el paso del tiempo.
Los ordenadores mainframe, utilizados durante las décadas de los sesenta y setenta del siglo
pasado para dirigir empresas y corporaciones, ocupaban el tamaño de una sala de estar. Pos-
teriormente, se redujeron a rangos medios los servidores y computadoras de escritorio. Los
chips de circuitos integrados, los microprocesadores y las computadoras se hicieron cada vez
más poderosas, el tamaño de los dispositivos de almacenamiento se hizo mucho más pequeño
y el tamaño de la capacidad de almacenamiento aumentó.
Luego llegó la era de los teléfonos inteligentes. Cuando Steve Jobs (1955-2011) introdujo el
iPhone en 2007, otros smartphones ya estaban disponibles en el mercado. Sin embargo, la in-
troducción de iPhones de Apple y el posterior lanzamiento de la plataforma Android de Goo-
gle condujeron a una fuerte y sana competencia en la industria de los teléfonos inteligentes.
La es un paradigma computacional donde la interacción humana con
una computadora pasa en cualquier lugar y a través de cualquier dispositivo a su alrededor.
Se observa por ejemplo que se está trabajando en una importante propuesta de negocio en
escuela y llevarla a la práctica de natación. Mientras ella practica, usted continúa trabajando en
la oferta de negocio en su teléfono inteligente a partir de donde se quedó, envía el documento
al cliente justo antes de terminar la práctica de la natación.
Mientras conduce a casa, usted recibe un correo electrónico de respuesta del cliente. La compu-
tadora integrada en el automóvil está equipada con una aplicación o sistema como Siri o Alexa,
que lee el mensaje de correo electrónico recibido en voz alta. Cuando llega a casa, responde a
la propuesta comercial del cliente utilizando su smartwatch e incluso establece una fecha y lu-
gar para la próxima reunión.
Este ejemplo puede sonar un tanto exagerado, pero lo importante es notar que la tecnología
no se hace cargo de las vidas humanas, sino que los humanos hacen lo que necesitan en cual-
de la computación ubicua.
Una vez entendido el contexto del usuario y la necesidad de interacción con el dispositivo, es
muy importante crear aplicaciones que proporcionen grandes experiencias al usuario. Por ejem-
plo, puede no ser práctico tener un componente de interfaz de usuario similar al teclado en una
aplicación de reloj debido a su tamaño y factor de forma, mientras que puede ser factible utilizar
la entrada de voz mediante una función de texto a voz proporcionada por las plataformas.
Durante la última década, los teléfonos inteligentes se han convertido en una parte integral
de la vida cotidiana. Son ya una extensión casi natural y nos han hecho llevarlos a todas par-
tes en nuestros bolsillos, bolsos de mano, o monederos, para ayudarnos a cumplir con tareas
cotidianas. Se utilizan para tareas sencillas o relevantes. Las labores que antes se realizaban
mediante computadoras personales o portátiles, ahora se realizan principalmente a través de
dispositivos de bolsillo como smartphones o tabletas.
La razón por la que los teléfonos inteligentes han alcanzado un alto nivel de aceptación y
popularidad se debe a su portabilidad. Son ligeros en relación con las computadoras portáti-
les, más fácil de transportar y los usuarios pueden utilizarlos prácticamente en cualquier sitio.
Aunque los teléfonos móviles y las tabletas pueden satisfacer la mayoría de las necesidades
informáticas, existen situaciones en las que no son convenientes. Por ejemplo, requerir las ma-
nos para realizar otras tareas, o bien que no se está en el medio adecuado para sacar el disposi-
26 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
2.2 · Introducción a los dispositivos wearable Android
tivo del bolsillo donde esté guardado. Es por eso que los dispositivos wearable pueden ayudar
a hacer las tareas con mayor rapidez por medio de interacciones más simples.
El cómputo portátil es la próxima gran frontera en la innovación informática. Tiene todo tipo
de posibilidades y ventajas. Aunque los teléfonos inteligentes se consideran dispositivos muy
personales, no son tan íntimos como otros, tipo smartwatches o rastreadores de actividad de
ejercicio, que tienen la ventaja de estar sobre el cuerpo todo el tiempo y tienen funciones im-
portantes, por ejemplo, medir el ritmo cardíaco, número de pasos dados y la temperatura cor-
poral. Tienen un enorme potencial en el mercado de la salud, donde pueden controlar los sig-
nos cada minuto y guían a los usuarios para llevar un estilo de vida más saludable.
Los dispositivos wearable también se pueden utilizar para la autenticación biométrica. Por
ejemplo el innovador Nymi band, que utiliza un lector del corazón y genera un electrocardio-
¿Qué tal si fuera posible dejar de llevar tarjetas de acceso basadas en RFID para entrar en
necesidad de recordar todo tipo de contraseñas para varios sitios web en línea y, en su lugar, se
podrían usar datos biométricos como el corazón y el reconocimiento del iris, es decir, construir
Cuando Google anunció Android Wear en su conferencia de Google I/O en marzo de 2014, los
desarrolladores estaban entusiasmados y adoptaron esta tecnología para ver qué tipos de apli-
caciones podrían crear para comunicarse entre el dispositivo portátil y Android wearable, que
lograra realizar las tareas del día a día de un modo más sencillo.
Los dispositivos wearable de Android brindan un toque personal al permitir a los consumi-
dores interactuar con los mismos en un nivel diferente; tienen como objetivo reducir el uso de
los teléfonos móviles. Esto podría incluir la recepción de un simple mensaje que recuerde re-
coger algo en el camino del trabajo a casa, o recordar una próxima cita. Incluso hay capacidad
para recibir mensajes de la aplicación de redes sociales favoritas, por ejemplo Facebook.
Android Wear es una versión especial del sistema operativo Android básico, que se ha diseña-
do para dispositivos informáticos portátiles tales como smartwatches. Estos dispositivos cuen-
tan con una nueva interfaz de usuario, la cual es resultado del trabajo de Google con sus clientes
para entender cómo usan sus teléfonos hoy y así puedan tener más contacto con su entorno.
Android Wear ofrece a los consumidores una interacción más personal con sus dispositivos.
Estas diminutas supercomputadoras pueden mostrar información y dar sugerencias cuando
se necesite.
-
nos de velocidad, distancia y duración en tiempo real de su paseo o ciclo. Todo esto posible en
un dispositivo llevado en la muñeca.
Android Wear también permite acceder y controlar otras máquinas desde el dispositivo en
la muñeca mediante una instrucción de voz como OK Google, por ejemplo, para activar una lis-
ta de reproducción de música en el teléfono o proyectar una película directamente en el tele-
dando a la tarea de hacer algunas aplicaciones impresionantes que serán de gran utilidad en
un futuro inmediato.
Android Wear es el puerto de Google del sistema operativo Android diseñado para dispositivos
portables como smartwatches. En el momento de escribir este texto, hay más de una docena
de fabricantes, como: LG, Motorola, Huawei, Asus, Fossil y TAG Heuer, por nombrar algunos,
que fabrican relojes Android Wear.
28 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
2.2 · Introducción a los dispositivos wearable Android
Los
el cuerpo, los cuales pueden hacer cálculos de cualquier tipo. Algunos consideran que los relo-
los wearables han estado a nuestro alrededor por siglos. Los relojes de bolsillo fueron inven-
tados en el siglo XVI, y un reloj es básicamente un pequeño dispositivo que calcula el tiempo.
Los lentes son también un ejemplo de la tecnología wearable que se puede usar en el rostro,
los materiales y adaptado sus cuerpos para obtener nuevas funcionalidades.
Si tenemos frío nos vestimos para mantenernos calientes, si nos rompemos una pierna usa-
mos muletas para movernos, o incluso si un órgano falla se puede implantar un dispositivo que
replique su actividad. El hombre tiene una larga tradición en el desarrollo de tecnología para
extender la funcionalidad del cuerpo humano y el cuidado de la salud, así como herramientas
para áreas deportivas y militares.
En los últimos años, muchos dispositivos han sido desarrollados para el mercado de consu-
mo. Actualmente, hay relojes, gafas y diferentes tipos de ropa. En esta obra se describirán tales
aplicaciones y se desarrollarán algunos proyectos para aprender sobre electrónica y progra-
Las plataformas portátiles de código abierto han impulsado en gran medida el avance del desa-
rrollo de hardware y software en el campo de la electrónica. Además de ser dispositivos inno-
de baja potencia, que pueden utilizarse en otras aplicaciones, algunas de las cuales incluyen el
registro de datos de sensores, entre otros.
Plataformas portátiles
Hay varias plataformas portátiles de código abierto, pueden ser fabricadas por diferentes em-
presas, pero su funcionamiento casi es el mismo. Además, se basan en una popular platafor-
ma de programación de código abierto: Arduino. Sin embargo, esto no los hace completamente
idénticos. Hay varios elementos que los separan. Aquí una revisión de algunas de las platafor-
mas portables más comunes de código abierto.
Flora
Flora es una popular plataforma de electrónica portátil diseñada por la industria Adafruit. Es un
tablero redondo compatible con Arduino que puede ser cosido sobre ropa y otras piezas texti-
les. Varias características hacen a Flora ideal para los proyectos wearable, como son: su tama-
ño de 1,8 pulgadas de diámetro, lo que permite que se pueda adjuntar a una prenda de vestir.
Placa Flora
Tiene una forma redonda que permite que las espigas se extiendan alrededor del tablero para
evitar la congestión. El aumento de espacio entre los pines asegura pastillas grandes que faci-
30 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
2.2 · Introducción a los dispositivos wearable Android
litan una conexión de hilo de acero inoxidable a la junta. Esto elimina la necesidad de cables y
soldadura. Así que no se requiere utilizar otros métodos de adhesión, como pegamento o velcro.
Flora se ejecuta en el microcontrolador ATMega 32U4 que tiene 28k de memoria Flash y
2.5kb de SRAM. Esto lo hace ideal para proyectos grandes. Además, tiene 8 pines de E/S que
le permiten conectar varios sensores Flora-compatibles; por ejemplo, las placas que incluyen
sensor GPS, de movimiento y de luz, así como pixeles LED direccionables, entre otros. Por lo
que puede usarse para diversas aplicaciones.
Gemma
Gemma es como el hermano pequeño de Flora. También está diseñado por las industrias Ada-
fruit y tiene un diámetro de 1 pulgada. Es alimentado por el microcontrolador ATtiny85 y es
compatible con Arduino; en cuanto al tamaño, es de 1,1 pulgadas de diámetro. Al igual que la
mayoría de plataformas portátiles de código abierto, Gemma es redonda en su forma y esto le
da un gran espacio para sus pines. Las almohadillas son grandes, lo que facilita el uso de su hilo
de acero inoxidable. Debido a su pequeño tamaño, tiene 3 pines de E/S, por lo que sólo puede
adjuntar algunos componentes electrónicos adicionales.
Placa Gemma
En el aspecto negativo, Gemma sólo puede soportar algunos sensores simples como el ve-
puede contener bocetos pequeños, lo que limita el número de aplicaciones que puede hacer.
Además, Gemma no tiene un puerto serie, no puede enviar datos a la computadora a través
de USB; por lo tanto, debe utilizar otra tarjeta con un puerto serie para calibrar sus valores de
sensor antes de transferir el código a la tarjeta Gemma; además, su cargador de arranque no es
reconocible cuando la placa está conectada a puertos USB v3.
Otro aspecto es que no tiene un interruptor de alimentación a bordo; sin embargo, tiene un
regulador de voltaje y polaridad inversa, límite de corriente y protección térmica. Por esto, no
debe preocupar conectar las terminales de la batería en sentido inverso. La placa puede mane-
jar hasta 16v de entrada.
Trinket
Trinket es otra plataforma portátil diseñada por Adafruit. Al igual que Gemma, tiene un micro-
controlador ATtiny85, esto lo hace muy pequeño e ideal para los proyectos wearable; es el más
barato de las tres plataformas usables abiertas de la fuente de Adafruit industries. La baratija
es de 1,2 pulgadas de largo por 0,6 pulgadas de ancho. Es de forma rectangular, los pines están
-
ble. Tiene 5 pines de E/S, algunos de ellos son de entrada y salida analógica PMW.
Trinket
La versión 3v funciona a 8 MHz y es ideal para aplicaciones que involucran sensores que
operan en lógica 3v, al encender la placa de una batería lipo. Por otro lado, la versión 5v fun-
ciona a 8 MHz o 16 MHz y es ideal en aplicaciones que implican el uso de sensores que operan
en lógica 5v.
Trinket comparte las mismas desventajas que Gemma. No tiene conexión de puerto serie y
algunos puertos USB v3 de computadora no reconocen su cargador de inicio.
32 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
2.2 · Introducción a los dispositivos wearable Android
Hay un regulador de voltaje a bordo. De modo que se puede aplicar 16v a la tabla sin arries-
garse a un daño. Además del regulador de voltaje, Trinket también tiene polaridad inversa, lí-
mite de corriente y protección térmica.
LilyPad
El Arduino LilyPad es una placa redonda, sewable (que se puede coser), ejecutable en el AT-
mega328P o ATmega168 microcontrolador. Hay variaciones del tablero que se pueden utili-
zar también en proyectos wearable. Son el LilyPad Arduino Simple Board y el Lilypad Arduino
USB- Atmega32U4. Ambas tarjetas tienen menos clavijas (5 clavijas de E/S digitales y 4 clavijas
de E/S analógicas), la placa Atmega32U4 funciona con el chip ATmega32U4 y tiene un puerto
USB a bordo.
LilyPad
Una desventaja es que no tiene un puerto USB a bordo; por lo tanto, es preciso conectar una
tarjeta de derivación FTDI para programarla.
esto es la mitad del tamaño de la memoria Flash Flora, el LilyPad todavía puede manejar boce-
tos y aplicaciones medianamente grandes. Como es característico de la mayoría de plataformas
portátiles de fuente abierta, hay módulos de sensores y actuadores diseñados para trabajar
con esta placa. Algunos de ellos incluyen el zumbador, interruptor deslizante, pulsador, sensor
de luz y LED, entre otros.
El voltaje de funcionamiento para el LilyPad está entre 2.7v y 5.5v; la placa no tiene un re-
gulador de voltaje o circuito de protección a bordo, por lo tanto, hay que cerciorarse de que
no se encienda con más de 5.5v o conectar las terminales de la batería de forma inversa, ya
que se dañará.
TinyLily
Ahora bien, si se busca una placa muy pequeña, TinyLily es lo que se necesita. Se trata de una
plataforma portátil de código abierto Arduino-compatible que es fabricada por la empresa Tin-
yCircuits; se asemeja al LilyPad pero es 1/12 a escala de su tamaño.
TinyLily es redonda y tiene 8 pines de E/S y 4 pines de alimentación. Tiene pequeñas almo-
hadillas en sus pasadores que hacen fácil el uso del hilo conductor para conectarlo a sensores
actuadores y otros componentes electrónicos. TinyLily también es lavable, lo cual reduce la
molestia de desconectarla cada vez que sea necesario lavar la prenda a la que se adjunta.
TinyLily
Al igual que LilyPad, carece de un puerto USB y se necesita tener una placa de breakout USB
para programarla.
Se trata de una placa de un tamaño con gran potencial, ya que cuenta con un microprocesa-
dor ATmega328p. Con los 32kb de memoria Flash y 2kb de SRAM se puede hacer mucho con
este pequeño tablero. También tiene algunos componentes compatibles como LED, un inte-
rruptor y adaptador de batería que se puede utilizar para aumentar su funcionalidad.
34 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Resumen
RESUMEN
En este capítulo se analizó el paradigma de la computación portátil y se contrastó con los mó-
viles y las computadoras de escritorio. Se exploraron las características y los conceptos clave
de la plataforma Android Wear. También se dieron a conocer algunas plataformas electrónicas
de placas wearable compatibles con Arduino.
3
ConeCtividad
con Bluetooth
Contenido Objetivo
3.1 Introducción En este capítulo el lector conocerá los aspec-
3.2 Comunicación Android- tos fundamentales de la tecnología bluetooth
Arduino (maestro-esclavo) para desarrollar aplicaciones de control y mo-
nitoreo entre la plataforma de Arduino y
3.3 Configuración de App en
Android; implementará los principios de comu-
Android
nicación entre varios dispositivos para desa-
3.4 Desarrollo de aplicaciones rrollar proyectos propios con esta tecnología.
con Android vía bluetooth
Resumen
Capítulo 3 · Conectividad con Bluetooth
3.1
-
rarlo para enlazarlo a otros dispositivos wearable que manejan el mismo tipo de comunica-
ción; esto con el objetivo de construir dispositivos que se puedan conectar con otros de la mis-
ma manera para enviar y recibir datos entre sí.
Para realizar lo anterior, es necesario tener una tarjeta Arduino y el módulo de comunica-
ción bluetooth; con ello se elaborarán varios ejemplos de conexión entre tarjetas Arduino UNO
y también con un dispositivo móvil. Se estudiarán las tarjetas Bluno Beetle y Bluno Nano que
permitirá realizar aplicaciones de monitoreo y control con dispositivos.
Bluetooth
-
-
Ericsson, realizaron un consorcio para profundizar en el estudio de dicha conexión y formaron
enlaces sencillos. Como alternativa a los protocolos estándar que se introdujeron en Bluetooth
Diversos diseños de chips permiten dos tipos de implementación: de modo dual y de modo úni-
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.1 · Introducción
Al comparar con módulos anteriores de bluetooth, los módulos BLE tienen bajo consumo de
en modo maestro es el módulo el que se conecta con un dispositivo.
de vinculación, velocidad y otros parámetros.
Desconectado
Conectado o de comunicación
Entra a este estado cuando se establece una conexión con otro dispositivo bluetooth.
El LED hace un doble parpadeo.
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.1 · Introducción
transparente.
Modo AT 1
Modo AT 2
3.1.3 Comandos AT
instrucciones que permiten cambiar los baudios del módulo, el pin, el nombre, etc.
-
-
Enviar:
Recibe: OK
-
car las conexiones o los pasos anteriores.
Enviar:
Respuesta: OK
-
Enviar
Respuesta: OK
-
mando: AT+ PSWD?
Enviar
Respuesta: OK
Donde:
Para aplicaciones comunes no se usa paridad, por lo que se recomienda dejar este
Ejemplo:
Enviar
Respuesta: OK
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.1 · Introducción
Enviar:
Respuesta: OK
AT+ ROLE?
-
ta saber si se conectará con un dispositivo en particular o con cualquiera que esté disponible.
Enviar:
Respuesta: OK
AT+ CMODE?
-
-
ticular.
Enviar
Respuesta: OK
Donde:
-
ma: 1234,56,ABCDEF
Ejemplo:
Enviar
Respuesta: OK
AT+ BIND?
Enviar
Respuesta
Enviar
Respuesta
Enviar
Respuesta: OK
Enviar
Respuesta: OK
Al hacer esto, todos los parámetros del módulo se restablecen a los valores por defecto de fá-
-
-
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.1 · Introducción
Conexión a Arduino
-
Programación de Arduino
#include <SoftwareSerial.h>
#dene RxD 11
#dene TxD 10
#dene KEY 9
SoftwareSerialBTSerial(RxD, TxD);
void setup( )
{
pinMode(KEY, OUTPUT);
digitalWrite(KEY, HIGH); // Como se mencionó en conguración colocar a KEY
en estado alto.
delay(500);
BTSerial.ush( );
delay(500);
BTSerial.begin(38400); // comunicación directa al módulo.
Serial.begin(9600); // comunicación directa al monitor.
Serial.println(“Enter AT commands:”);
BTSerial.print(“AT\r\n”);
delay(100);
}
void loop( )
{
if (BTSerial.available( ))
Serial.write(BTSerial.read( ));
if (Serial.available( ))
BTSerial.write(Serial.read( ));
}
serial.
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.1 · Introducción
En caso contrario, se debe revisar la conexión; usualmente puede ser un error con los
Nombre: Slave
Enviar:
Respuesta:
OK
OK
OK
Resetear el módulo:
mismo orden en que se realizaron los pasos anteriores.
Secuencia de datos
-
clavo, el cual estará siempre en espera de una conexión por parte de un dispositivo bluetooth
maestro.
-
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.1 · Introducción
Dirección del dispositivo esclavo con el que se desea conectar:
Enviar:
Respuesta: OK
Enviar:
Respuesta: OK
Enviar
Respuesta: OK
Enviar
Respuesta: OK
Enviar:
Respuesta: OK
Enviar98D3,31,203AD0
Respuesta: OK
Enviar:
Respuesta
OK
OK
OK
OK
OK
Enviar
Respuesta: OK
-
-
nectarse. Para que el maestro pueda conectarse con el dispositivo esclavo, ambos deben tener
Código de vinculación
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.2 · Comunicación Android-Arduino (maestro-esclavo)
-
lará a un dispositivo Android con bluetooth y se enviarán datos al Arduino mediante la apli-
-
desde https://play.google.com/store/apps/details?id=es.pymasde.blueterm&hl=es
charvalorleido;
int salida = 4;
int salida1 = 5;
int salida2 = 6;
void setup( ) {
blue.begin(9600); // initialization
pinMode(salida, OUTPUT);
pinMode(salida1,OUTPUT);
pinMode(salida2,OUTPUT);
}
void loop( ) {
if (blue.available( ) > 0) { // if the data came
valorleido = blue.read( ); // read byte
switch(valorleido){
case ‘0’:
digitalWrite(salida,HIGH);
delay(500);
blue.println(“Salida 4 prendida”);
break;
case ‘1’:
digitalWrite(salida1,HIGH);
delay(500);
blue.println(“Salida 5 prendida”);
break;
case ‘2’:
digitalWrite(salida2,HIGH);
delay(500);
blue.println(“Salida 6 prendida”);
break;
case ‘3’:
digitalWrite(salida,LOW);
digitalWrite(salida1,LOW);
digitalWrite(salida2,LOW);
delay(500);
blue.println(“Salida 4, 5 y 6 apagadas”);
break;
default:
delay(500);
blue.print(valorleido);
blue.println(“ No es una orden válida. Introduzca la opción correcta”);
}
}
}
un dispositivo.
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.3 ·Conguración de app en Android
Conexión a un dispositivo
-
byYako1976 identi.io
Inserción de pin
-
tá asociado al dispositivo Android con el módulo bluetooth y el led de éste dejará de parpadear
Fijación de módulo
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.3 ·Conguración de app en Android
-
ve a escribir.
Este proyecto consiste en aplicar lo aprendido en los puntos anteriores: por un lado se tiene
módulo esclavo y de forma automática se conectan entre sí.
Sketch maestro
#include<SoftwareSerial.h>
void setup( )
{//inicializa la comunicación serial
Serial.begin(9600);
mySerial.begin(9600);
}
void loop( )
{
mySerial.write(‘1’); Serial.println(“LED: on”);
delay(2000);
mySerial.write(‘0’); Serial.println(“LED: off”);
delay(2000);
}
Sketch esclavo
void setup( ) {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(9600);
}
voidloop( ) {
//si el módulo a manda dato, guardarlo en estado.
if(Serial.available( ) > 0){
state = Serial.read( );
} // esta parte del código es solo para 1 carácter o
unidad.
Descarga de dispositivo
Termómetro inalámbrico
-
Topología de conectividad
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.3 ·Conguración de app en Android
Dispositivo maestro
#include <SoftwareSerial.h>
#include “DHT.h”
#dene DHTPIN 7
#dene DHTTYPE DHT11
voidsetup( )
{//inicializa la comunicación serial
Serial.begin(9600);
mySerial.begin(9600);
dht.begin( );
}
void loop( )
{
oat temperature = dht.readTemperature( );
mySerial.print(temperature);
delay(500);
}
Dispositivo esclavo
#include <LiquidCrystal.h>
void setup( ) {
lcd.begin(16, 2);
Serial.begin(9600);
lcd.setCursor(0,0);
lcd.print(“Temperatura:”);
}
void loop( ) {
if(Serial.available( ) > 0){
dato = Serial.parseInt( );
lcd.setCursor(12,0);
lcd.print(dato);
lcd.print(char(223));
lcd.print(“C”);
}
}
Códigos de dispositivos
Otras aplicaciones
inalámbrica mediante las bases aprendidas en este apartado, y con ello se puedan usar sobre
-
den realizar dicha función:
Bocinas-bluetooth
Anillo para control de acceso
Playera interactiva
Cuidador de niños para cuna
Collar rastreador
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
3.4
En este apartado se estudiarán las aplicaciones directamente elaboradas con Android median-
-
nitoreo en los que se utiliza la comunicación bluetooth, donde la tarjeta Arduino será el esclavo
Cables macho-hembra para conectar el módulo al Arduino
http://www.amarino-toolkit.net/index.php/download.html
Adición de un dispositivo
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
Detección de dispositivo
Captura de código
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
<LinearLayoutxmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“ll_parent”
android:layout_height=“ll_parent”
android:orientation=“vertical” >
<ScrollView
android:id=“@+id/scrollView1”
android:layout_width=“match_parent”
android:layout_height=“wrap_content” >
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical”>
<ImageView
android:id=“@+id/imageView1”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:src=“@drawable/conector” />
<TextView
android:id=“@+id/textView1”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:gravity=“center”
android:text=“Android - Arduino”
android:textSize=“15pt” />
<Button
android:id=“@+id/button3”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:onClick=“conectar”
android:text=“Connect...”
android:textSize=“15pt” />
<TextView
android:id=“@+id/textView2”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:gravity=“center”
android:textSize=“15pt”
android:text=“Enespera....” />
<ImageView
android:id=“@+id/imageView2”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:gravity=“center”
android:src=“@drawable/off” />
<Button
android:id=“@+id/button4”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:onClick=“desconectar”
android:textSize=“15pt”
android:text=“Disconnect” />
<TextView
android:id=“@+id/textView3”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:background=“#FFFF33”
android:textAppearance=“?android:attr/textAppearanceLarge” />
<Button
android:id=“@+id/button1”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:onClick=“encender”
android:text=“ON Pin 8”
android:textSize=“15pt” />
<Button
android:id=“@+id/button2”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:onClick=“apagar”
android:textSize=“15pt”
android:text=“OFF Pin 8” />
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
</LinearLayout>
</ScrollView>
</LinearLayout>
packageror.meetandroid;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.graphics.Color;
importandroid.view.Menu;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.ImageView;
importandroid.widget.TextView;
importat.abraxas.amarino.Amarino;
Amarino.sendDataToArduino(this, DEVICE_ADDRESS,’A’,on);
}
#include<MeetAndroid.h>
MeetAndroidmeetAndroid;
intonboardLed = 8;
void setup( )
{
// use the baud rate your bluetooth module is congured to
// not all baud rates are working well, i.e. ATMEGA168 works best with 57600
Serial.begin(9600);
meetAndroid.registerFunction(on, ‘A’);
meetAndroid.registerFunction(off, ‘B’);
pinMode(onboardLed, OUTPUT);
}
void loop( )
{
meetAndroid.receive( ); // you need to keep this in your loop( ) to receive
events
}
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
packageror.rgb;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.graphics.Color;
importandroid.view.Menu;
importandroid.view.View;
importandroid.widget.SeekBar;
importandroid.widget.SeekBar.OnSeekBarChangeListener;
importandroid.widget.TextView;
importat.abraxas.amarino.Amarino;
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
SeekBar rojo;
SeekBar verde;
SeekBar azul;
TextViewpwmrojo;
TextViewpwmverde;
TextViewpwmazul;
intvalor_inicial_rojo= 0;
intvalor_inicial_verde= 0;
intvalor_inicial_azul= 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
publicbooleanonCreateOptionsMenu(Menu menu) {
// Inate the menu; this adds items to the action
bar if it is present.
getMenuInater( ).inate(R.menu.main, menu);
return true;
}
@Override
public void onProgressChanged(SeekBarseekBar,
intprogress,booleanfromUser) {
// TODO Auto-generated method stub
valor_inicial_rojo = rojo.getProgress( );
Amarino.sendDataToArduino(this, DEVICE_
ADDRESS,’r’,valor_inicial_rojo);
Amarino.sendDataToArduino(this, DEVICE_
ADDRESS,’v’,valor_inicial_verde);
Amarino.sendDataToArduino(this, DEVICE_
ADDRESS,’a’,valor_inicial_azul);
@Override
public void onStartTrackingTouch(SeekBarseekBar) {
// TODO Auto-generated method stub
@Override
public void onStopTrackingTouch(SeekBarseekBar) {
// TODO Auto-generated method stub
}
public void conectar(View view){
Amarino.connect(this, DEVICE_ADDRESS);
rojo.setProgress(valor_inicial_rojo);
verde.setProgress(valor_inicial_verde);
azul.setProgress(valor_inicial_azul);
#include <MeetAndroid.h>
MeetAndroidmeetAndroid;
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
void setup( )
{
Serial.begin(9600);
meetAndroid.registerFunction(red,’r’);
meetAndroid.registerFunction(verde,’v’);
meetAndroid.registerFunction(azul,’a’);
}
void loop( )
{
meetAndroid.receive( );
}
-
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
Código en Arduino:
#include<MeetAndroid.h>
#include<LiquidCrystal.h> // incluir la libreria para LCD
LiquidCrystallcd(12,11,5,4,3,2);
MeetAndroidmeetAndroid;
void setup( )
{
delay(500); // pausa requerida para inicializar el LCD
lcd.begin(16, 2); // selecciona el número de renglones y columnas
Serial.begin(9600);
lcd.setCursor(0, 0);
lcd.print(“ Motor CD ”);
lcd.setCursor(0, 1);
lcd.print(“Arduino-Android”);
pinMode(pin,OUTPUT);
pinMode(EN1,OUTPUT);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
digitalWrite(pin,LOW);
}
void loop( )
{
meetAndroid.receive( );
}
voidVelocidad(byte ag, byte numOfValues)
{
//Con esta instrucción le estamos diciendo al Arduino
//Que va a recibir el valor enviado desde Android
//Por el pin No. 9 va a enviar el valor PWM recibido
pwm = meetAndroid.getInt( );
analogWrite(EN1,pwm);
lcd.clear( );
lcd.setCursor(0, 0);
lcd.print(“ Motor -ON- “);
lcd.setCursor(0, 1);
lcd.print(“ PWM = “);
lcd.print(pwm);
}
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
lcd.clear( );
lcd.setCursor(0, 0);
lcd.print(“ Motor -ON- “);
lcd.setCursor(0, 1);
lcd.print(“ PWM = “);
lcd.print(pwm);
}
lcd.setCursor(0, 0);
lcd.print(“ Motor CD “);
lcd.setCursor(0, 1);
lcd.print(“Arduino-Android”);
}
vel = control.getProgress( );
intcontrolbarra = vel;
control.setProgress(vel);
pwm.setText(“Value PWM: “+controlbarra);
giro.setTextColor(Color.GREEN);
adelante.setTextColor(Color.GREEN);
giro.setText(“Motor: Left”);
control.setEnabled(true);
Conectar.setEnabled(false);
atras.setTextColor(Color.BLACK);
detener.setTextColor(Color.BLACK);
Amarino.sendDataToArduino(this, DEVICE_ADDRESS,’i’,vel);
}
intcontrolbarra = vel;
control.setProgress(vel);
Conectar.setEnabled(false);
detener.setEnabled(true);
control.setEnabled(true);
adelante.setTextColor(Color.BLACK);
detener.setTextColor(Color.BLACK);
Amarino.sendDataToArduino(this, DEVICE_ADDRESS,’d’,vel);
}
public void Detener(View view) {
intvel = 0;
intcontrolbarra = 0;
control.setProgress(vel);
pwm.setText(“Value PWM: “+controlbarra);
giro.setTextColor(Color.RED);
detener.setTextColor(Color.RED);
giro.setText(“Motor: Stopped”);
Amarino.sendDataToArduino(this, DEVICE_ADDRESS,’s’,vel);
Desconectar.setEnabled(true);
detener.setEnabled(false);
control.setEnabled(false);
adelante.setTextColor(Color.BLACK);
}
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
Interfaz nal
Conexiones nales
Código en Arduino:
MeetAndroidmeetAndroid;
LiquidCrystallcd(12,11,5,4,3,2);
oatanalogico = 0;
void setup( )
{
delay(500); // pausa requerida para inicializar el LCD
lcd.begin(16, 2); // selecciona el número de renglones y columnas
Serial.begin(9600);
}
void loop( )
{
meetAndroid.receive( );
analogico = analogRead(0);
oat volts = (5.00 * analogico) / 1024;
lcd.setCursor(0, 0);
lcd.print(“ Volts = ”);
lcd.print(volts,2);
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
if (dataType == AmarinoIntent.STRING_EXTRA){
data = intent.getStringExtra(AmarinoIntent.EXTRA_DATA);
if (data != null){
temp.setText(data);
}
}
}
}
}
Interfaz de la aplicación
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
LiquidCrystallcd(12,11,5,4,3,2);
MeetAndroidmeetAndroid;
Servo miservo;
int sensor = 0;
oattemp = 0;
oat temp1;
oattemp_prom = 0; // resultado de la temperatura promedio.
oat valor1 = 0;
oatspt = 30.0;
int valor;
intval;
voidsetup( )
{
delay(500); // pausa requerida para inicializar el LCD
lcd.begin(16, 2); // selecciona el número de renglones y columnas
Serial.begin(9600);
lcd.setCursor(0, 1);
lcd.print(“SP: “);
lcd.print(spt,1);
//SALIDAS RELEVADORES
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(13,OUTPUT);
miservo.attach(10);
}
void loop( )
{
meetAndroid.receive( );
leertemperatura( );
}
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
digitalWrite(8,HIGH);
}
void s8off(byte ag, byte numOfValues)
{
digitalWrite(8,LOW);
}
voiduno(byte ag, byte numOfValues)
{
analogWrite(6, meetAndroid.getInt( ));
}
voidsp(byte ag, byte numOfValues)
{
spt = meetAndroid.getFloat( );
lcd.setCursor(0, 1);
lcd.print(“SP: “);
lcd.print(spt,1);
lcd.print(“ “);
}
voidleertemperatura( ){
temp1 = analogRead(sensor);
temp1 = (temp1 * 0.0048) * 100;
// restablece valores
valor1 = 0;
temp = 0;
delay(200);
alertatemp( );
}
}
if (((ToggleButton)toggles7).isChecked( ))
{
intval = 0;
s7.setImageResource(R.drawable.ons7);
Amarino.sendDataToArduino(this, DEVICE_
ADDRESS,’d’,val);
}
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
else {
intval = 1;
s7.setImageResource(R.drawable.offs7);
Amarino.sendDataToArduino(this, DEVICE_
ADDRESS,’e’,val);
}
}
if (((ToggleButton)toggles8).isChecked( ))
{
intval = 0;
s8.setImageResource(R.drawable.ons8);
Amarino.sendDataToArduino(this, DEVICE_
ADDRESS,’f’,val);
}
else {
intval = 1;
s8.setImageResource(R.drawable.offs8);
Amarino.sendDataToArduino(this, DEVICE_
ADDRESS,’g’,val);
}
}
String mensaje;
mensaje = Enviar.getText( ).toString( );
sp = Float.parseFloat(mensaje);
Amarino.sendDataToArduino(this, DEVICE_ADDRESS,’c’,sp);
}
(AmarinoIntent.EXTRA_DEVICE_ADDRESS);
nalintdataType = intent.getIntExtra(AmarinoIntent.
EXTRA_DATA_TYPE, -1);
if (dataType == AmarinoIntent.STRING_EXTRA){
data = intent.getStringExtra(AmarinoIntent.EXTRA_DATA);
if (data != null){
temp.setText(data);
doubletemperatura = Double.
parseDouble(data);
if (temperatura>sp)
{
mensajetemp.setText(“STATUS
TEMPERATURE: HIGH”);
mensajetemp.setTextColor
(Color.RED);
mVibrator.vibrate(5000);
else
{
mensajetemp.setText(“STATUS
TEMPERATURE: LOW”);
mensajetemp.setTextColor
(Color.BLACK);
mVibrator.cancel( );
}
}
}
}
}
}
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
android:versionName=“1.0” >
<uses-sdk
android:minSdkVersion=“8”
android:targetSdkVersion=“18” />
<uses-permissionandroid:name=“android.permission.VIBRATE”/>
<application
android:allowBackup=“true”
android:icon=“@drawable/android”
android:label=“@string/app_name”
android:theme=“@style/AppTheme” >
<activity
android:name=“ror.androidcontrol.MainActivity”
android:label=“@string/app_name” >
<intent-lter>
<action android:name=“android.intent.action.MAIN” />
<category android:name=“android.intent.category.LAUNCHER” />
</intent-lter>
</activity>
<receiver android:name=“MyReceiver”>
<intent-lter>
<action android:name=“android.AmarinoIntent.ACTION_CONNECT”>
</action>
</intent-lter>
</receiver>
</application>
</manifest>
-
-
-
da, es conveniente atornillar el conductor en él, pues podría ser una buena opción en el mer-
cado wearable.
Pines
SDA A4 SDA
SCL A5 SCL
D2 2
D3 3 3
D4 4
D5 5 5
A0 A0 A0
A1 A1 A1
A2 A2 A2
A3 A3 A3
Características:
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
Características de alimentación
Terminal Descripción
5V 5 volts positivo
GND GND
diarios y se convierten en sociales; los complementos de la cámara controlados por el teléfono
-
-
convierte en una plataforma de prototipos ideal para desarrolladores de software y hardwa-
proyecto hecho con él puede ser directamente inalámbrico. Además, se desarrolló la App para
-
llar una plataforma propia de hardware y software.
Comunicación transparente a través de puerto serial
Bootloader: Arduino Uno
Compatible con pines del Arduino UNO
Bluno Nano
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
Cable micro USB
https://play.google.com/
store/apps/details?id=com.redrobe.robotremote&hl=es
Pasos requeridos:
voidsetup( ) {
Serial.begin(115200); //initialthe Serial
}
voidloop( ) {
if (Serial.available( )) {
placa Arduino UNO
En Android:
Detección de bluetooth
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
3.4 ·Desarrollo de aplicaciones con Android vía Bluetooth
Ejecución de aplicación:
Ejecución de aplicación
Dar clic en el botón Scan para buscar el dispositivo; aparece el encontrado, se selecciona y aho-
ra se habrá de conectar.
Conexión de dispositivo
Botón Connected
RESUMEN
En este capítulo se estudiaron aspectos de la comunicación bluetooth, sus bases y las formas
de configuración. Asimismo, se realizó una serie de proyectos donde se empleó la comunica-
ción entre dispositivos para construir equipos que utilizan conectividad bluetooth, para el mo-
nitoreo y control. Se destacó el uso de estos dispositivos en la vida cotidiana para ponerlos
sobre la ropa o como accesorios, mediante el uso de los sensores requeridos. Asimismo, se
comprobó la conectividad entre la tarjeta Arduino y una aplicación realizada en Android Studio
para el envío de datos a un dispositivo móvil y la recepción de los mismos.
En los siguientes capítulos se construirán distintos tipos de dispositivos wearable para diver-
sos usos, con esta forma de conectividad y la integración de tecnología, con el fin de desarro-
llar un dispositivo inteligente que permita al usuario concentrar en él diversas cuestiones como
la salud, el deporte, diversión o trabajo.
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
Capítulo
4
ConeCtividad
por Wi
Contenido Objetivo
4.1 Switch controlado por Wifi y En este apartado se desarrollarán proyec-
monitoreo de consumo de tos con la integración de la plataforma de
corriente Arduino y Android a través del enlace por
4.2 Desarrollo de aplicación en Wifi; el objetivo es conocer los aspectos
Android Studio fundamentales en el desarrollo de proyec-
tos de aplicación mediante las tarjetas de
4.3 Cómo mejorar la aplicación
Arduino CC3000 y Arduino YUN, además
4.4 Monitoreo de cámara de de cubrir las partes esenciales y requeri-
seguridad remota por Wifi das de configuración para la correcta inte-
4.4.1 Cómo ir más allá con gración con Android.
Android
Resumen
Capítulo 4 · Conectividad por Wifi
En este capítulo se creará una versión de código abierto de un dispositivo, es decir, un enchufe
-
-
-
Creación de switch
Requerimientos de hardware y software
-
Módulo de relé
-
96 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.1 · Switch controlado por Wifi y monitoreo de consumo de corriente
Placa
-
Shield Wi
98 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.1 · Switch controlado por Wifi y monitoreo de consumo de corriente
Resultado
-
Router inalámbrico
// Relay state
constintrelay_pin = 8;
// These are the pins for the CC3000 chip if you are using a breakout board
#dene ADAFRUIT_CC3000_IRQ 3
#dene ADAFRUIT_CC3000_VBAT 5
#dene ADAFRUIT_CC3000_CS 10
// CreateaREST instance
aREST rest = aREST( );
// Server instance
Adafruit_CC3000_Server restServer(LISTEN_PORT);
void setup(void)
{
// Start Serial
Serial.begin(115200);
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.1 · Switch controlado por Wifi y monitoreo de consumo de corriente
while (!cc3000.checkDHCP( ))
{
delay(100);
}
// Start server
restServer.begin( );
Serial.println(F(“Listening for connections...”));
// Enable watchdog
wdt_enable(WDTO_4S);
}
void loop( ) {
// Convert to current
amplitude_current = (oat)(sensor_value-zero_sensor)/1024*5/185*1000000;
effective_value = amplitude_current/1.414;
effective_power = abs(effective_value*effective_voltage/1000.);
power = (int) effective_power;
// Check connection
if(!cc3000.checkConnected( )){while(1){}}
wdt_reset( );
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.1 · Switch controlado por Wifi y monitoreo de consumo de corriente
}
avgSensor = avgSensor/oat(nb_measurements);
returnavgSensor;
}
-
Monitor serie
-
http://192.168.1.101/digital/8/1
http://192.168.1.101/digital/8/0
http://192.168.1.101/power
4.2
-
-
-
Creación de diseño
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.2 · Desarrollo de aplicación en Android Studio
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Declare our View Variables and assign them to the layout elements
Button checkPowerButton = (Button) ndViewById(R.id.checkPowerButton);
Button openTheGateButton = (Button) ndViewById(R.id.openGateButton);
Button switchOnButton = (Button) ndViewById(R.id.switchOnButton);
Button switchOffButton = (Button) ndViewById(R.id.switchOffButton);
checkPowerButton.setOnClickListener(new View.OnClickListener( ) {
@Override
public void onClick(View v) {
if (isNetworkAvailable( )) {
checkPowerTaskgetPowerTask = new checkPowerTask( );
getPowerTask.execute( );
}
}
});
openTheGateButton.setOnClickListener(new View.OnClickListener( ) {
@Override
public void onClick(View v) {
if (isNetworkAvailable( )) {
SwitchOpenTaskswitchOpenTask = new SwitchOpenTask( );
switchOpenTask.execute( );
}
}
});
switchOnButton.setOnClickListener(new View.OnClickListener( ) {
@Override
public void onClick(View v) {
if (isNetworkAvailable( )) {
SwitchOnTaskswitchOnTask = new SwitchOnTask( );
switchOnTask.execute( );
}
}
});
switchOffButton.setOnClickListener(new View.OnClickListener( ) {
@Override
public void onClick(View v) {
if (isNetworkAvailable( )) {
SwitchOffTaskswitchOffTask = new SwitchOffTask( );
switchOffTask.execute( );
}
}
});
}
-
-
-
-
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.2 · Desarrollo de aplicación en Android Studio
responseCode = connection.getResponseCode( );
Log.i(TAG, “Code” + responseCode);
}
catch(MalformedURLException e) {
Log.e(TAG, “Malformed Exception Caught:”, e);
}
catch(IOException e) {
Log.e(TAG, “IO Exception Caught:”, e);
e.printStackTrace( );
}
catch(Exception e){
Log.e(TAG, “Generic Exception Caught:”, e);
}
return “Code: “ + responseCode;
}
}
@Override
protected String doInBackground(Object... arg0) {
intresponseCode = -1;
try {
URL restApiUrl = new URL(“http://” + URL + “/digital/8/1”);
HttpURLConnection connection = (HttpURLConnection) restApiUrl.
openConnection( );
connection.connect( );
responseCode = connection.getResponseCode( );
Log.i(TAG, “Code” + responseCode);
}
catch(MalformedURLException e) {
Log.e(TAG, “Malformed Exception Caught:”, e);
}
catch(IOException e) {
Log.e(TAG, “IO Exception Caught:”, e);
e.printStackTrace( );
}
catch(Exception e){
Log.e(TAG, “Generic Exception Caught:”, e);
}
return “Code: “ + responseCode;
}
}
@Override
protected String doInBackground(Object... arg0) {
intresponseCode = -1;
try {
URL restApiUrl = new URL(“http://” + URL + “/digital/8/0”);
HttpURLConnection connection = (HttpURLConnection) restApiUrl.
openConnection( );
connection.connect( );
responseCode = connection.getResponseCode( );
Log.i(TAG, “Code” + responseCode);
}
catch(MalformedURLException e) {
Log.e(TAG, “Malformed Exception Caught:”, e);
}
catch(IOException e) {
Log.e(TAG, “IO Exception Caught:”, e);
e.printStackTrace( );
}
catch(Exception e){
Log.e(TAG, “Generic Exception Caught:”, e);
}
@Override
protected String doInBackground(Object... arg0) {
intresponseCode = -1;
String result = null;
try {
URL restApiUrl = new URL(“http://” + URL + “/power”);
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.2 · Desarrollo de aplicación en Android Studio
InputStream is = null;
//http post
try{
String postQuery = “http://” + URL + “/power”;
HttpClienthttpclient = new DefaultHttpClient( );
HttpPosthttppost = new HttpPost(postQuery);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity( );
is = entity.getContent( );
}catch(Exception e){
Log.e(“log_tag”, “Error in http connection “+e.toString( ));
}
is.close( );
result=sb.toString( );
Log.v(TAG,result);
} catch(Exception e){
Log.e(“log_tag”, “Error converting result “+e.toString( ));
}
activity.runOnUiThread(new Runnable( ) {
@Override
public void run( ) {
TextViewpowerOutput = (TextView) ndViewById(R.id.powerOutput);
powerOutput.setText(powerOutputText + “W”);
}
});
} catch(JSONException e){
Log.e(TAG, “JSON Exception Caught:”, e);
}
}
catch(MalformedURLException e) {
Log.e(TAG, “Malformed Exception Caught:”, e);
}
catch(IOException e) {
Log.e(TAG, “IO Exception Caught:”, e);
e.printStackTrace( );
}
catch(Exception e){
Log.e(TAG, “Generic Exception Caught:”, e);
}
return “Code: “ + responseCode;
}
}
-
privatebooleanisNetworkAvailable( ) {
ConnectivityManager manager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfonetworkInfo = manager.getActiveNetworkInfo( );
booleanisAvailable = false;
if (networkInfo != null &&networkInfo.isConnected( )) {
isAvailable = true;
}
returnisAvailable;
}
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.2 · Desarrollo de aplicación en Android Studio
<uses-permissionandroid:name=“android.permission.INTERNET”/>
<uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE” />
<uses-permission android:name=“android.permission.ACCESS_WIFI_STATE” />
<RelativeLayout
android:layout_width=“ll_parent”
android:layout_height=“ll_parent”
xmlns:android=“http://schemas.android.com/apk/res/android”
android:background=“#ffff2722”>
<Button
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“Prender”
android:id=“@+id/switchOnButton”
android:layout_marginBottom=“100dp”
android:layout_alignParentBottom=“true”
android:layout_alignRight=“@+id/openGateButton”
android:layout_alignEnd=“@+id/openGateButton”
android:layout_marginRight=“66dp”
android:background=“@drawable/button”
android:textColor=“#ffe22e1a”
android:textSize=“15sp”
android:textStyle=“bold”/>
<Button
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“Apagar”
android:id=“@+id/switchOffButton”
android:layout_alignTop=“@+id/switchOnButton”
android:layout_alignLeft=“@+id/openGateButton”
android:layout_alignStart=“@+id/openGateButton”
android:layout_marginLeft=“75dp”
android:background=“@drawable/button”
android:textColor=“#ffe22e1a”
android:textSize=“15sp”
android:textStyle=“bold”/>
<Button
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“Potencia”
android:id=“@+id/checkPowerButton”
android:layout_below=“@+id/switchOffButton”
android:layout_centerHorizontal=”true”
android:background=“@drawable/button”
android:textSize=“15sp”
android:layout_marginTop=“25dp”
android:layout_marginBottom=“25dp”
android:textColor=“#ffe22e1a”
android:textStyle=“bold”/>
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“100W”
android:textSize=“100sp”
android:id=“@+id/powerOutput”
android:textAlignment=“center”
android:layout_alignParentTop=“true”
android:layout_centerHorizontal=“true”
android:layout_marginTop=“78dp”
android:textColor=“#ffe22e1a”
android:background=“#ff000000” />
<Button
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“Abrir compuerta”
android:id=“@+id/openGateButton”
android:layout_above=“@+id/switchOffButton”
android:layout_centerHorizontal=“true”
android:background=“@drawable/button”
android:textSize=“15sp”
android:layout_marginTop=“25dp”
android:layout_marginBottom=“25dp”
android:textColor=“#ffe22e1a”
android:textStyle=“bold”/>
</RelativeLayout>
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.2 · Desarrollo de aplicación en Android Studio
<?xml version=“1.0” encoding=”utf-8”?>
<shape xmlns:android=“http://schemas.android.com/apk/res/android”>
android:shape=“rectangle” >
<corners
android:radius=“30dp”
/>
<solid
android:color=“#ff000000”
/>
<padding
android:left=“0dp”
android:top=“0dp”
android:right=“0dp”
android:bottom=“0dp”
/>
<size
android:width=“120dp”
android:height=“60dp”
/>
<stroke
android:width=“2dp”
android:color=“#4A90E2”
/>
</shape>
Para obtener la lectura de la potencia del dispositivo, se deberá primero hacer clic sobre el bo-
-
4.3
-
-
-
-
-
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.4 · Monitoreo de cámara de seguridad remota por Wifi
4.4
-
-
Requerimientos de hardware y software
-
Arduino Yun
-
http://192.168.240.1
http://arduino.local
Pantalla de bienvenida
Conguración de la tarjeta
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.4 · Monitoreo de cámara de seguridad remota por Wifi
Pantalla de comandos
Solicitud de usuario
Solicitud de password
-
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.4 · Monitoreo de cámara de seguridad remota por Wifi
Conexión
Ejecución de comando
-
-
-
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.4 · Monitoreo de cámara de seguridad remota por Wifi
nano /etc/cong/mjpg-streamer
congmjpg-streamer core
option enabled “1”
option device “/dev/video0”
option resolution “640x480”
option fps “30”
option www “/www/webcam”
option port “8080”
/etc/init.d/mjpg-streamer enable
/etc/init.d/mjpg-streamer stop
/etc/init.d/mjpg-streamer start
-
http://arduino.local:8080
Pantalla Stream
<uses-permissionandroid:name=“android.permission.ACCESS_WIFI_STATE”/>
<uses-permissionandroid:name=“android.permission.INTERNET”/>
<application
android:allowBackup=“true”
android:icon=“@drawable/ic_launcher”
android:label=“@string/app_name”
android:theme=“@style/AppTheme” >
<activity
android:name=“.StreamActivity”
android:label=“@string/app_name” >
<intent-lter>
<action android:name=“android.intent.action.MAIN” />
<category android:name=“android.intent.category.LAUNCHER” />
</intent-lter>
</activity>
</application>
</manifest>
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.4 · Monitoreo de cámara de seguridad remota por Wifi
Clase StreamActivity.java
public class StreamActivity extends Activity {
private static nal String TAG = “MjpegActivity”;
privateMjpegView mv;
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow( ).setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
mv = new MjpegView(this);
setContentView(mv);
newDoRead( ).execute(URL);
}
public void onPause( ) {
super.onPause( );
mv.stopPlayback( );
}
public class DoRead extends AsyncTask<String, Void, MjpegInputStream> {
protectedMjpegInputStreamdoInBackground(String... url) {
//TODO: if camera has authentication deal with it and don’t just
not work
HttpResponse res = null;
DefaultHttpClienthttpclient = new DefaultHttpClient( );
Log.d(TAG, “1. Sending http request”);
try {
res = httpclient.execute(new HttpGet(URI.create(url[0])));
Log.d(TAG, “2. Request nished, status = “ + res.getStatusLine( ).getStatus-
Code( ));
if(res.getStatusLine( ).getStatusCode( )==401){
//You must turn off camera User Access Control before this
will work
return null;
}
return new MjpegInputStream(res.getEntity( ).getContent( ));
} catch (ClientProtocolException e) {
e.printStackTrace( );
Clase MjpegInputStream.java
publicMjpegInputStream(InputStream in) {
super(new BufferedInputStream(in, FRAME_MAX_LENGTH));
}
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
4.4 · Monitoreo de cámara de seguridad remota por Wifi
} else {
seqIndex = 0;
}
}
return -1;
}
está disponible en http://git.io/_Mu_Gw
-
-
4.4.1
incluir la capacidad de tomar una foto instantánea cuando se detecta movimiento delante de
-
http://opencv.org/platforms/android.html
Además, la interfaz de usuario podría mejorarse para incluir la capacidad de tomar una imagen
-
-
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
Resumen
RESUMEN
Se ha creado una versión DIY de un interruptor de alimentación inteligente basado en Ardui-
no y controlado por una aplicación de Android vía Wifi. Se conectaron todos los componentes
necesarios, se escribió un boceto de Arduino para aceptar comandos vía Wifi y, finalmente, se
creó una aplicación de Android para controlar el switch de forma remota.
Se aprendió cómo conectar una cámara USB a la tarjeta ArduinoYun, a configurar la tarjeta
Arduino para que transmita el video a la red Wifi local. Luego se creó una nueva aplicación
de Android para verificar la secuencia de video de la cámara en el teléfono o tablet Android;
por lo tanto, se creó una sencilla cámara de seguridad Wifi basada en Arduino y Android.
MEDIANTE
5
byYako1976 identi.io
Control
Ethernet
Contenido Objetivo
5.1 Introducción a los servicios web En este capítulo se utilizará el shield ether-
RESTful net para interactuar desde una aplicación
5.1.1 Los cuatro principios de Android; se desarrollarán aplicaciones pa-
REST ra monitorear y controlar la tarjeta Arduino
desde un teléfono móvil a través de comu-
5.1.2 aREST framework en
nicación de red ethernet, se explicarán los
aplicaciones para Arduino
aspectos fundamentales de los servicios
5.2 App Inventor web para interactuar entre las plataformas
5.2.1 Código en forma de Arduino y Android, el lector realizará varios
bloques proyectos de aplicación con la integración
de ambas tecnologías.
5.2.2 Descarga de App Inventor
5.3 Proyectos de aplicaciones entre
APP Inventor y Arduino
Resumen
Capítulo 5 · Control mediante Ethernet
La Transferencia de Estado Representacional (REST-Representational State Transfer) ganó
amplia aceptación en toda la web como una alternativa más simple a SOAP y a los servicios
web basados en el Lenguaje de Descripción de Servicios Web (Web Services Descripcion Lan-
guage-WSDL). Actualmente grandes proveedores de Web 2.0 migran a esta tecnología, como
Yahoo, Google y Facebook, quienes marcaron como obsoletos a sus servicios SOAP y WSDL, y
ahora usan un modelo más fácil orientado a los recursos.
la web que prácticamente desplazó a SOAP y a las interfaces basadas en WSDL, ello por tener
un estilo más simple de usar.
-
damentales:
JSON
-
nas es fácil interpretarlo y generarlo. Está basado en un subconjunto del Lenguaje de Progra-
-
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.1 · Introducción a los servicios web RESTful
las soportan de una forma u otra. Es razonable que un formato de intercambio de datos que es
independiente del lenguaje de programación se base en estas estructuras.
Objeto
Un
(corchete derecho). Los valores se separan por, (coma).
Arreglo
Un puede ser una cadena de caracteres con comillas dobles o un número, o bien, true, fal-
se, null, un objeto o un arreglo. Estas estructuras pueden anidarse.
Valor
Cadena de caracteres
Un -
males.
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.1 · Introducción a los servicios web RESTful
Número
AREST fue creado para comunicar a través de servicios RESTful varias tarjetas y dispositivos
embebidos y plataformas. En pocas palabras, la librería permite enviar comandos a una tabla
dada donde se ejecutan aREST, provocan una acción (o simplemente obtienen algunos datos),
-
vía el comando:
Funciones básicas
el estado de los pines, etc., a continuación se explican las funciones para cada caso:
/{device_id}/mode/{pin_number}/o
/{device_id}/mode/{pin_number}/i
:
-
/{device_id}/digital/{pin_number}/1
/{device_id}/digital/{pin_number}/0
:
192.168.1.104/digital/6/1
/{device_id}/digital/{pin_number}
192.168.1.104/digital/6
/{device_id}/analog/{pin_number}
192.168.1.104/analog/0
/{device_id}/analog/{pin_number}/{value}
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· App Inventor
192.168.1.104/analog/6/200
rest.variable(“temperature”, &temperature);
192.168.1.104/temperatura
donde: temperatura es la variable que se publicó con el valor asignado.
es un entorno de desarrollo de software creado por Google Labs para la elabo-
ración de aplicaciones destinadas al sistema operativo Android. El usuario puede, de forma vi-
sual y a partir de un conjunto de herramientas básicas, enlazar una serie de bloques para crear
la aplicación.
-
ciones como si fueran piezas de un rompecabezas. Se utilizará App inventor para realizar pro-
gramas propios. Lo que sí es necesario es estar conectado a Internet para utilizar App inventor.
En la siguiente imagen se hace referencia a la manera en que se lleva a cabo la programación
por bloques:
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· App Inventor
Sirve para realizar operaciones lógicas, true y false, AND, OR, Not.
Realiza operaciones matemáticas.
Realiza operaciones con caracteres y cadenas de texto.
Permite establecer colores.
Permiten guardar el estado de un valor, se asigna un valor o se obtiene.
App Inventor no es un programa que se tenga que bajar de la computadora. Funciona en cloud
computing mediante la conexión a Internet: se trabaja con el programa conectado directamen-
te al servidor de App Inventor. Es una especie de página web y en ella se realizan las operacio-
A continuación se desarrollarán algunos proyectos con base en lo visto en el presente y ante-
riores apartados.
Desde un dispositivo móvil se realizará el control de un relevador conectado a la tarjeta Ardui-
no a través de la red Ethernet.
Objeto Connectivity
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.3 · Proyectos de aplicaciones entre APP Inventor y Arduino
Interfaz de control
Se tienen dos botones que se agregaron a la pantalla.
Botones de la interfaz
Bloque setweb1
// Libraries
#include <SPI.h>
#include <Ethernet.h>
#include <aREST.h>
#include <avr/wdt.h>
// Libraries
#include “DHT.h”
// DHT sensor
#dene DHTPIN 7
#dene DHTTYPE DHT11
// DHT instance
DHT dht(DHTPIN, DHTTYPE);
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.3 · Proyectos de aplicaciones entre APP Inventor y Arduino
// Ethernet server
EthernetServer server(80);
void setup(void)
{
// Start Serial
Serial.begin(115200);
// Init DHT
dht.begin( );
pinMode(2,INPUT_PULLUP);
pinMode(7,OUTPUT);
rest.variable(“temperature”,&temperature);
rest.variable(“humidity”,&humidity);
// Function to be exposed
rest.function(“led”,ledControl);
// Start watchdog
wdt_enable(WDTO_4S);
}
void loop( ) {
digitalWrite(6,state);
return 1;
}
apagarlo desde la aplicación, a continuación se muestra la pantalla del teléfono:
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.3 · Proyectos de aplicaciones entre APP Inventor y Arduino
-
duino para leer la temperatura y humedad en el mismo dispositivo móvil.
Interfaz de la aplicación
Se insertaron dos botones, cada uno solicita el valor de la temperatura y humedad respectiva-
mente:
byYako1976 identi.io
Botones de temperatura y humedad
Diagrama a bloques
obtener la lectura del sensor es necesario presionar los botones.
Paleta de sensores
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.3 · Proyectos de aplicaciones entre APP Inventor y Arduino
Diagrama a bloques
Pantalla de monitoreo
En este proyecto se obtiene la lectura del estado del botón a través de la petición GET desde la
aplicación en Android, a continuación se muestra la interfaz del proyecto.
Diagrama a bloques
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.3 · Proyectos de aplicaciones entre APP Inventor y Arduino
Diagrama a bloques
Es importante considerar que se está concatenando el valor que se envía a través de la direc-
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.3 · Proyectos de aplicaciones entre APP Inventor y Arduino
Tarjeta ESP8266
-
Arquitectura de la tarjeta
Topología de comunicación
A continuación se muestra la arquitectura de comunicación entre ambos dispositivos, mismos
Arquitectura de la comunicación
Interfaz de la aplicación
En la siguiente imagen se muestra la pantalla para controlar las dos salidas de la tarjeta
dirección IP permite guardar la dirección a la que se desea conectar, mientras que la etiqueta
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.3 · Proyectos de aplicaciones entre APP Inventor y Arduino
Objeto TinyDB
Manda llamar el objeto TinyDB con su valor previamente almacenado, en Tag se es-
cribe la variable donde se guardó el dato.
Inicio de pantalla
Guardar dirección
Muestra de dirección
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.3 · Proyectos de aplicaciones entre APP Inventor y Arduino
d) Botones de control.
Código de Arduino:
// Librerias a utilizar
#include <ESP8266WiFi.h>
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.3 · Proyectos de aplicaciones entre APP Inventor y Arduino
void setup( ) {
// Inicializa Serial
Serial.begin(115200);
delay(10);
// Congura GPIOS
pinMode(output_pin, OUTPUT);
digitalWrite(output_pin, 0);
pinMode(output_pin2, OUTPUT);
digitalWrite(output_pin2, 0);
// si ya se conectó:
Serial.println(“”);
Serial.println(“WiFi conectado”);
// Inicializa el servidor
server.begin( );
Serial.println(“Iniciando Servidor”);
if (!client) {
return;
}
// Compara la respuesta:
if (req.indexOf(“D1_LED_H”) != -1){
// activa el Led
digitalWrite(output_pin, 1);
}
if (req.indexOf(“D1_LED_L”) != -1){
// apaga el led
digitalWrite(output_pin, 0);
}
if (req.indexOf(“D2_LED_H”) != -1){
// activa el Led
digitalWrite(output_pin2, 1);
}
if (req.indexOf(“D2_LED_L”) != -1){
// apaga el led
digitalWrite(output_pin2, 0);
}
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
5.3 · Proyectos de aplicaciones entre APP Inventor y Arduino
Después de descargar el sketch en la placa, se debe abrir el monitor serial de Arduino, presio-
nar el botón Reset y si todo se cargó correctamente, el dispositivo se conectó al router inalám-
brico por lo que debe de aparecer la pantalla siguiente:
Pantalla de resultado
La dirección IP que asignó el router de forma automática se muestra en el monitor serial, esa
dirección se debe de colocar en la aplicación de Android para conectarse.
-
ción IP es necesario hacer clic en el botón Guardar dirección IP, después se debe de capturar la
Aplicación de control
A continuación se muestra la pantalla de control donde se pueden ver las etiquetas de los esta-
dos en que se encuentran las salidas GPIO a controlar:
Pantalla de control
Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
Resumen
RESUMEN
En este capítulo se estudiaron los aspectos de la comunicación en Ethernet con la aplicación
de los servicios web en la plataforma de Arduino; ello con el fin de realizar aplicaciones en el
ambiente IDE de APP inventor y desarrollar proyectos para instalarlos en teléfonos móviles con
sistema operativo Android. La integración de ambas plataformas permite escalar las áreas de
oportunidad para interactuar con ambas tecnologías y luego llevar a cabo proyectos reales.
DE CONTROL PARA
6Aplicaciones
smartwatches
Contenido Objetivo
6.1 Android Wear Identificar la arquitectura de una aplicación
6.1.1 Aplicación de Android Wear, es decir, los elementos que
Android Wearables contiene. Se creará un ejemplo en el entor-
no IDE de Android Studio, se estudiará su
6.1.2 Arquitectura de
configuración y se generará un dispositivo
Android Wear
virtual simulado en el AVD Manager de An-
6.2 Configuración del entorno droid Studio. Se integrarán ambas aplicacio-
de desarrollo nes para la comunicación entre la tarjeta Ar-
6.3 Instalación y configuración duino, un dispositivo móvil y un smartwatch.
del emulador Android (AVD) Asimismo, se conocerán los aspectos fun-
damentales para tener las herramientas y
Resumen
habilidades en el desarrollo de proyectos de
aplicación por medio de estas tecnologías.
Capítulo 6 · Aplicaciones de control para smartwatches
Una de las características importantes de la plataforma de Android Wear es la capacidad de de-
sarrollo que se puede tener con estos dispositivos; cuando Google anunció su elaboración, en
marzo de 2014, los desarrolladores se entusiasmaron pues tendrían oportunidad de compro-
bar qué tipo de aplicaciones se podrían crear para comunicar el dispositivo portátil Android y
-
vos que se pudieran añadir a la ropa y que vienen con el sistema Android, tuvieran la ventaja
de que, al estar conectados entre sí, se pudieran manejar desde un smartwatch al recibir un
-
cesarias para la plataforma Android Wear de Google, la cual permite que el dispositivo weara-
-
Android Wear
Arquitectura de Android Wear
Creación de un proyecto Android Wear
Android y Android Wear, por lo que en las secciones siguientes se creará una aplicación de no-
-
les en el mundo de los dispositivos inteligentes basado en el sistema operativo Android, el cual
se ha diseñado para dispositivos informáticos portátiles tales como smartwatches, lo cual les
162 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
6.1 · Android Wear
Android Wear funciona mediante la comunicación inalámbrica a través de Bluetooth entre un
-
-
-
documentos de guía de diseño que se centran principalmente en material de este tema para
para crear interacción visual y de movimiento a través de cada una de las diversas plataformas
-
sarrolladores tienen la necesidad de asegurar que al diseñar sus aplicaciones, éstas funcionan
-
te al diseñar el reloj personalizado con aplicaciones que usan la funcionalidad del servicio de
-
nodos conectados o desconectados que se hayan establecido en el wearable, utiliza
-
rable al dispositivo de mano con el que está sincronizado, y con el que el usuario ha
mensajes cortos a cada uno de los nodos de red conectados entre el wearable y el disposi-
conectados con Android y el dispositivo de mano, y se encarga de proporcionar el me-
encuentra en modo desconectado en el teléfono inteligente emparejado, los datos son transfe-
-
164 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
6.2 · Configuración del entorno de desarrollo
SDK Manager
Instalación de paquetes
aplicaciones aprovechar las características nuevas y mejoradas de los dispositivos con Android
-
-
166 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Instalación y configuración del emulador Android [AVD]
-
Ventana de conguración
Hacer clic en el botón Create a virtual device, aparecen los diferentes tipos de dispositi-
vos en sus respectivas categorías para crear un dispositivo virtual, en este caso creare-
Tipos de dispositivos
Vericación de la conguración
168 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
6.3 · Instalación y configuración del emulador Android [AVD]
Dispositivos creados
Start a new
Android Studio Project
Aparece la ventana donde se crearán las aplicaciones en los dispositivos y en sus plataformas,
-
Selección de elementos
170 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
6.3 · Instalación y configuración del emulador Android [AVD]
172 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
6.3 · Instalación y configuración del emulador Android [AVD]
-
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.support.wearable.view.WatchViewStub;
importandroid.widget.TextView;
publicclassMainActivityextendsActivity {
privateTextViewmTextView;
@Override
protectedvoidonCreate(BundlesavedInstanceState) {
uper.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nal WatchViewStubstub = (WatchViewStub) ndViewById(R.id.watch_view_stub);
stub.setOnLayoutInatedListener(new WatchViewStub.OnLayoutInatedListener( )
{
@Override
publicvoidonLayoutInated(WatchViewStubstub) {
mTextView = (TextView) stub.ndViewById(R.id.text);
}
});
}
}
<TextView
android:id=“@+id/text”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“@string/hello_square”
android:textColor=“@color/black” />
</LinearLayout>
Interfaz de aplicación
174 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
6.3 · Instalación y configuración del emulador Android [AVD]
Instalación de la aplicación
Dispositivo de descarga
-
bre del dispositivo emulador creado en el administrador de dispositivos virtuales de Android
176 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
6.3 · Instalación y configuración del emulador Android [AVD]
-
-
Una vez que el emulador se ha lanzado y después de unos momentos, se muestra la aplicación
Funcionamiento de la aplicación
Código de aplicación
178 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
6.3 · Instalación y configuración del emulador Android [AVD]
Recepción de noticación
Actividad principal
package com.ejemplos.weardemo5;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.net.Uri;
import android.support.v4.app.NoticationCompat;
import android.support.v4.app.NoticationManagerCompat;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NoticationCompat.BuildernoticationBuilder =
new NoticationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_noticacion)
.setContentTitle(“Alerta”)
.setContentText(“Este es un avisocorto”)
.setContentIntent(actionPendingIntent)
.setStyle(bigStyle)
.addAction(android.R.drawable.ic_menu_send, “Enviar
SMS”, smsPendingIntent);
NoticationManagerCompatnoticationManager = NoticationManagerCompat.
from(this);
180 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
6.3 · Instalación y configuración del emulador Android [AVD]
Aplicación
Botón Aplicación
182 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
6.3 · Instalación y configuración del emulador Android [AVD]
Opción de abrir
Recepción de la noticación
-
184 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
6.3 · Instalación y configuración del emulador Android [AVD]
Notificaciones:
-
tablecido
Cuando está lloviendo
Cuando está nublado
Acciones de control:
Otros escenarios:
Crear una operadora de llamadas
y contestar
RESUMEN
En este capítulo se abordaron temas de suma importancia respecto de las aplicaciones en
smartwatches y su relación con los dispositivos móviles con Android, se crearon aplicacio-
nes en el ambiente de desarrollo de Android Studio y un proyecto para Android Wear, ade-
más de ciertas funciones como son: notificación de acontecimientos desde la lectura de un
sensor de temperatura, conocimiento del estado de un sensor y notificación en un dispositi-
vo Android Wear.
186 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
Capítulo
7
DE CONTROL
Aplicaciones
para Smart TV
Contenido Objetivo
7.1 Creación de interfaces para Android TV Conocer los aspectos fundamentales y la ar-
7.1.1 Creación de una aplicación quitectura de una aplicación para Smart TV
Android TV y Android TV, con el objetivo de desarrollar
7.2 Introducción al led infrarrojo IR aplicaciones de control y monitoreo para te-
7.2.1 ¿Qué es un led IR? levisiones con Android.
7.2.2 Aplicaciones del led IR/
Se realizará un ejemplo de aplicación pa-
comunicación IR
ra Smart TV en el ambiente de Android Stu-
7.2.3 Sensores IR
7.2.4 Programación básica de un dio, además de algunos proyectos con dis-
sensor IR positivos electrónicos y Arduino para lograr
7.3 Control remoto de dispositivos el control y automatización de una televisión
infrarrojos IR e integrarla a un esquema de conectividad;
7.3.1 Control de volumen de la para ello, se usará como medio de control
televisión infrarrojo con una tarjeta Arduino y una aplicación Android
Arduino y remoto desde un Smartphone.
Resumen
Capítulo 7 · Aplicaciones de control para Smart TV
En este capítulo se proporcionan los antecedentes y la comprensión de cómo se puede
efectivamente diseñar y personalizar interfaces de usuario para Android TV. Cuando Google
anunció la plataforma de Android TV durante su conferencia Google I/O en 2014, su visión
era crear una experiencia de televisión altamente interactiva y conectada que aprovechara
la funcionalidad existente en la plataforma de Android.
Android TV esencialmente aporta aplicaciones y funcionalidades con las que los usuarios
disfrutan al trabajar en sus dispositivos Android más pequeños, pero con la capacidad adicio-
nal de descargar aplicaciones de Android TV desde Google Play Store.
También proporciona una plataforma que admite Google Cast, ello permite emitir contenido
desde el smartphone o tablet a un dispositivo Android TV para que la experiencia de visualiza-
ción sea mucho más emocionante y utilizable desde un sofá en la comodidad del hogar.
En esta sección se verá cómo crear una aplicación de Android TV con el uso de una plantilla
predeterminada que proporciona Android Studio.
En primer lugar, se debe generar un nuevo proyecto en Android Studio con los siguientes pasos:
1. Iniciar Android Studio y, a continuación, hacer clic en Archivo | Nuevo proyecto Opción
del menú.
2. Enseguida, ingresar AndroidTVInterfaces para el campo Nombre de la aplicación.
3. Luego, proporcionar el nombre del campo de dominio de la empresa.
4. Ahora, elegir la ubicación del proyecto donde se desea guardar el código de la aplicación:
188 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.1 · Creación de interfaces para Android TV
tivos Android que la aplicación ejecutará. En esta pantalla se elegirá la versión SDK
mínima para el televisor.
6. Hacer clic en la opción TV y elegir API 21: Android 5.0 (Lollipop) para SDK mínimo:
Opción TV
byYako1976 identi.io
10. Por último, hacer clic en el botón Finalizar y el asistente generará el proyecto, después de
unos momentos éste aparecerá en la ventana de Android Studio.
En la próxima sección se verá cómo crear actividad y fragmentos para personalizar la aparien-
cia de una interfaz de usuario de Android TV.
En el mundo de la tecnología inalámbrica, los led IR (infrarrojos) son comunes, de bajo costo y
fáciles de usar. Un televisor remoto utiliza led IR para enviar la señal. Como la longitud de onda
de la luz emitida por el led es más larga que la luz visible, no se puede ver a simple vista. Pero,
si se mira a través de la cámara del teléfono o de cualquier otra cámara, se puede ver la luz emi-
tida cuando se oprime cualquier tecla del mando a distancia.
Un led IR (infrarrojo), también conocido como un transmisor IR (infrarrojo), genera ondas in-
frarrojas en el rango de 875 nm a 950 nm. Por lo general, los led IR están compuestos de arse-
190 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.2 · Introducción al led infrarrojo IR
niuro de galio o arseniuro de aluminio y galio. El plomo más largo del led es el ánodo y el más
corto es el cátodo, como se muestra aquí:
Plomos de led
Además de utilizar la comunicación por infrarrojos en los mandos a distancia de la TV, hay una
serie de otras aplicaciones que también los usan para transferir datos entre dispositivos elec-
trónicos. Aunque la luz infrarroja es invisible para el ojo, las cámaras digitales y otros sensores
pueden ver esta luz por lo que la emplean para sistemas de seguridad y la tecnología de visión
nocturna. Aparte de los usos técnicos, el Departamento de Administración de Alimentos y Me-
dicamentos de los Estados Unidos aceptó varios productos con led IR para uso en algunos pro-
cedimientos médicos y cosméticos.
Se han aprendido los fundamentos de la comunicación por infrarrojos y los led de este tipo, por
lo que ahora se hará un sensor propio de infrarrojos.
Existen varios tipos de sensores IR, dependiendo de la aplicación. Los sensores de proximi-
dad, los de obstrucción y los de contraste (utilizados en el robot seguidor de línea) son algu-
nos ejemplos.
Después de entender el funcionamiento básico de un sensor IR, se aprenderá a programarlo.
Sobre la base del principio de incidencia directa, se desarrollará una alarma antirrobo.
Una vez conectado el circuito, como se muestra en el siguiente diagrama, se debe cargar el
código en Arduino:
int IRTransmitter = 8;
int IRReceiver = A0; //IR Receiver is connected to pin 5
void setup( )
{
pinMode(IRReceiver,INPUT);
pinMode(IRTransmitter,OUTPUT);
pinMode(buzzer,OUTPUT);
digitalWrite(IRTransmitter,HIGH);
}
void loop( )
{
output = analogRead(IRReceiver);
// If anything comes in between the IR Transmitter and IR receiver
// IR receiver will not give the output. Make an alarm.
192 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.2 · Introducción al led infrarrojo IR
makeAlarm(50);
}
}
void makeAlarm(unsigned char time)
{
analogWrite(buzzer,170);
delay(time);
analogWrite(buzzer,0);
delay(time);
}
En la siguiente imagen se observa el momento en que una señal se transmite realmente des-
de el mando a distancia del televisor, es decir, se verá como una serie de ondas:
Transmisión de la señal
-
tivo TSOP38238 IC el cual se parece a un transistor, pero en realidad combina una fotocé-
-
mático. En este caso, la fotocélula sensible a infrarrojos funciona como un receptor de éstos
-
dulada recibida.
continuación, donde es mucho más limpia y fácil de leer:
Además, TSOP38238 está cubierto en el marco del epoxi del paquete del plomo que actúa co-
-
A continuación se muestra un IC con sus tres pines. Hay dos clavijas de alimentación y un pin
para la señal de salida:
TSOP38238 puede alimentarse con 2,5v a 5,5v; esto lo hace adecuado para todo tipo de aplica-
ciones. Además, puede recibir señales de casi cualquier control remoto.
Para comenzar, se manipulará un solo led mediante un control IR. Para ello, se usará la bi-
blioteca IRRemote disponible en https://github.com/z3t0/Arduino-IRremote. Una vez descar-
gado y extraído el código en la carpeta de bibliotecas de Arduino, se podrán ver los ejemplos en
el IDE de Arduino. Es necesario registrar el valor de todos los botones para uso futuro.
194 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.2 · Introducción al led infrarrojo IR
#include <IRremote.h>
const int IR_RECEIVER = 11;
IRrecv receiver(IR_RECEIVER);
decode_results buttonPressed;
void setup( )
{
Serial.begin(9600);
receiver.enableIRIn( ); // Start the receiver
}
void loop( )
{
if (receiver.decode(&buttonPressed))
{
Serial.println(buttonPressed.value); //Printing values coming from the IR
Remote
receiver.resume( ); // Receive the next value
}
delay(100);
}
Una vez eliminado el archivo duplicado, debería ser capaz de compilar correctamente el códi-
go. Después de cargar el código anterior, se debe abrir el monitor en serie. Como se pretende
manipular un solo led mediante control remoto, se tendrá que saber el valor del botón oprimi-
do. Por lo tanto, es necesario anotar los valores de todos los botones uno tras otro.
Por ejemplo, el dígito 1 tiene 54.528 códigos para un cierto control remoto. Puede ser que se
deba comprobar el telecontrol que se tiene. Ahora se controlará el led mediante el mando a dis-
tancia IR. Junto con el receptor IR se conectará un led, como se muestra en el siguiente circuito:
Conexión de led
Se debe actualizar el código para controlar el led con base en las lecturas del ejercicio
anterior:
#include <IRremote.h>
const int IR_RECEIVER = 11;
IRrecv receiver(IR_RECEIVER);
decode_results buttonPressed;
long int buttonValue = 0;
const long int buttonOne = 54528; //Update value one according to your readings
const long int buttonTwo = 54572; //Update value two according to your readings
int LEDpin = 9;
void setup( )
{
Serial.begin(9600);
receiver.enableIRIn( ); // Start the receiver
pinMode(LEDpin,OUTPUT);
}
void loop( )
{
if (receiver.decode(&buttonPressed))
{
buttonValue = buttonPressed.value;
Serial.println(buttonValue);
switch (buttonValue){
case buttonOne:
digitalWrite(LEDpin,HIGH);
break;
case buttonTwo:
digitalWrite(LEDpin,LOW);
break;
default:
Serial.println(“Waiting for input. “);
}
receiver.resume( ); // Receive the next value
}
delay(100);
}
Ahora se podrá manipular un solo led mediante el control remoto IR; de manera similar, se
-
trolar la retroiluminación del televisor mediante un mando a distancia IR. Se desarrollará una
196 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.2 · Introducción al led infrarrojo IR
retroiluminación de TV mediante una tira de led. Por lo tanto, ahora se verá cómo controlar
una matriz de led.
Debido a que proporcionan más modularidad, las tiras digitales son bastante caras. Además,
Tira de leds
Internamente, los led RGB están conectados entre sí en paralelo, una sección de la tira los
contiene. Una tira de led completa está formada por una serie RGB paralelos conectados en
Conexión en bloque
Como una sección contiene varios led, se requiere más corriente para ejecutarse, no se pue-
de ejecutar en la corriente proporcionada desde Arduino. En el caso de blanco completo, cada
segmento requerirá aproximadamente 60 mA de corriente por bloque/sección. Así que para
ejecutar la tira de led completa, se puede necesitar una corriente de hasta 1.2 A por metro. Pa-
ra el funcionamiento de una tira de led, se requiere una fuente de alimentación externa de 12v.
Se usará MOSFET de canal N, que es muy económico y funciona con una lógica de 3.3v a 5v.
Estos FET pueden conmutar más de 60 A y 30v.
La conexión a la tira es relativamente fácil: es necesario soldar los alambres a los cuatro per-
nos/cojines de cobre de la tira del led; para utilizarla con Arduino, se requerirán también al-
gunas resistencias y con ello se podrá limitar la corriente, como se muestra a continuación:
Se debe conectar el transistor de potencia con la resistencia entre el pin de salida PWM y la ba-
se. En el caso de los transistores NPN, el pin 1 es la base; el 2 es el colector y el 3 es el emisor.
Ahora bien, para la alimentación de Arduino y la tira de led, conectar una fuente de alimenta-
ción de 9 -12v al Arduino, de modo que Vin (entrada de voltaje en el la tarjeta Arduino) sumi-
nistre el alto voltaje al led.
198 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.2 · Introducción al led infrarrojo IR
la de Arduino/MOSFET. Conectar el pin de salida de Arduino a la base del MOSFET (pin 1) con
y conectar el pin 3 del MOSFET a tierra (GND).
Comprobar todas las conexiones y escribir el siguiente código en la ventana del editor de Ar-
duino. En este caso se utilizan las salidas 5, 6 y 3 de Arduino para controlar los led rojo, verde
y azul de la tira led respectivamente:
int redLed = 5;
int greenLed = 6;
int blueLed = 3;
int redValue = 0;
int greenValue = 0;
int blueValue = 0;
void setup( ){
randomSeed(analogRead(0));
}
void loop( ) {
redValue = random(0,256); // Randomly generate 1 to 255
greenValue = random(0,256); // Randomly generate 1 to 255
blueValue = random(0,256); // Randomly generate 1 to 255
analogWrite(redLed,redValue);
analogWrite(greenLed,greenValue);
analogWrite(blueLed,blueValue);
// Incrementing all the values one by one after setting the random values.
for(redValue = 0; redValue < 255; redValue++){
analogWrite(redLed,redValue);
analogWrite(greenLed,greenValue);
analogWrite(blueLed,blueValue);
delay(10);
}
for(greenValue = 0; greenValue < 255; greenValue++){
analogWrite(redLed,redValue);
analogWrite(greenLed,greenValue);
analogWrite(blueLed,blueValue);
delay(10);
}
for(blueValue = 0; blueValue < 255; blueValue++){
analogWrite(redLed,redValue);
analogWrite(greenLed,greenValue);
analogWrite(blueLed,blueValue);
delay(10);
}
//Decrementing all the values one by one for turning off all the LEDs.
for(redValue = 255; redValue > 0; redValue--){
analogWrite(redLed,redValue);
analogWrite(greenLed,greenValue);
analogWrite(blueLed,blueValue);
delay(10);
}
for(greenValue = 255; greenValue > 0; greenValue--){
analogWrite(redLed,redValue);
analogWrite(greenLed,greenValue);
analogWrite(blueLed,blueValue);
delay(10);
}
for(blueValue = 255; blueValue > 0; blueValue--){
analogWrite(redLed,redValue);
analogWrite(greenLed,greenValue);
analogWrite(blueLed,blueValue);
delay(10);
}
}
Si todo está en su lugar, se podrá ver la tira de led y su color seguirá cambiando.
Hasta ahora se ha aprendido acerca de todo lo necesario para controlar la retroiluminación del
televisor mediante el control remoto por infrarrojos, por lo que ese conocimiento se integrará.
Como ya se hizo, es preciso conectar TSOP38238 al pin 11, 5v, y el pin de tierra de Arduino.
Una vez que se realicen todas las conexiones, se debe cargar el siguiente código en Arduino:
#include <IRremote.h>
const int IR_RECEIVER = 11; // Connect output pin of TSOP38238 to pin 11
IRrecv receiver(IR_RECEIVER);
decode_results buttonPressed;
long int buttonValue = 0;
200 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.2 · Introducción al led infrarrojo IR
int redLed = 5;
int greenLed = 6;
int blueLed = 3;
int redValue = 0;
int greenValue = 0;
int blueValue = 0;
int colors[3];
analogWrite(redLed, redValue);
analogWrite(greenLed, greenValue);
analogWrite(blueLed, blueValue);
colors[0] = redValue;
colors[1] = greenValue;
colors[2] = blueValue;
}
//Decrementing all the values one by one for turning off all the LEDs.
for (; redValue > 0; redValue--) {
analogWrite(redLed, redValue);
delay(10);
}
for (; greenValue > 0; greenValue--) {
analogWrite(greenLed, greenValue);
delay(10);
}
for (; blueValue > 0; blueValue--) {
analogWrite(blueLed, blueValue);
delay(10);
}
colors[0] = redValue;
colors[1] = greenValue;
colors[2] = blueValue;
}
redValue += FADE_AMOUNT;
greenValue += FADE_AMOUNT;
blueValue += FADE_AMOUNT;
colors[0] = redValue;
colors[1] = greenValue;
202 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.2 · Introducción al led infrarrojo IR
colors[2] = blueValue;
}
blueValue = colors[2];
redValue -= FADE_AMOUNT;
greenValue -= FADE_AMOUNT;
blueValue -= FADE_AMOUNT;
if (redValue <= 5) {
redValue = 0;
}
if (greenValue <= 5) {
greenValue = 0;
}
if (blueValue <= 5) {
blueValue = 0;
}
analogWrite(redLed, redValue);
analogWrite(greenLed, greenValue);
analogWrite(blueLed, blueValue);
colors[0] = redValue;
colors[1] = greenValue;
colors[2] = blueValue;
}
redValue = colors[0];
greenValue = colors[1];
blueValue = colors[2];
colors[0] = redValue;
colors[1] = greenValue;
colors[2] = blueValue;
}
204 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.2 · Introducción al led infrarrojo IR
void setup( ) {
Serial.begin(9600);
receiver.enableIRIn( ); // Start the receiver
randomSeed(analogRead(0));
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(blueLed, OUTPUT);
}
void loop( ) {
if (receiver.decode(&buttonPressed))
{
buttonValue = buttonPressed.value;
Serial.println(buttonValue);
switch (buttonValue) {
case POWER_BUTTON:
if (!isOn) {
powerUp(colors);
isOn = true;
}
else {
powerDown(colors);
isOn = false;
}
break;
case PLUS_BUTTON:
decreaseBrightness(colors);
break;
case MINUS_BUTTON:
increaseBrightness(colors);
break;
case CHANGE_COLOR:
changeColor(colors);
break;
default:
Serial.println(“Waiting for input. “);
}
receiver.resume( ); // Receive the next value
}
delay(100);
}
En el código anterior se utiliza el botón de encendido para prender y apagar la luz de fondo,
y los botones de volumen hacia arriba y hacia abajo para aumentar y disminuir el brillo, res-
-
mutación.
La mayoría de los dispositivos electrónicos de consumo vienen con un control remoto de mano
con el que se puede operar el dispositivo inalámbricamente desde una distancia corta.
-
nes de botones, como Potencia, Volumen, Canal, Temperatura, etc. Sin embargo, ¿es posible ex-
tender la distancia de control entre el dispositivo y el mando a distancia? Sí es posible si se usa
Arduino IoT (Internet de las cosas) junto con algunos componentes electrónicos. A continua-
ción se explicará cómo construir de manera incremental un control remoto infrarrojo contro-
lado por Internet con Arduino.
Con Arduino y algunos componentes electrónicos básicos, se puede construir fácilmente una
grabadora de infrarrojos y control remoto, lo cual permite grabar cualquier comando de infra-
rrojos (código) enviado por un control remoto de este tipo.
206 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.3 · Control remoto de dispositivos infrarrojos IR
Arduino Uno: R3
Arduino Ethernet Shield
Una luz LED: Infrarrojo 950 nm
Un diodo receptor IR: TSOP38238
Un resistor de 330 ohms
Un botón pulsador
Un socket IR que se puede encontrar en http://www.ebay.com/itm/IR-Infrared-
Power-Adapter-Remote-Control-AC-Power-Socket-Outlet-Switch-Plug-/311335598809,
o uno similar.
Hacer clic en el botón Descargar ZIP, extraer el archivo descargado y colocarlo en la unidad
local de la computadora. Se obtendrá la carpeta Arduino-IRremote-master; el nombre de la
carpeta puede cambiarse.
Dentro de esta carpeta, hay otra llamada Arduino-IRremote-master. Este nombre de carpe-
ta también puede ser diferente. Ahora se debe copiar y pegar esta carpeta en la de bibliotecas
Arduino.
#include <IRremote.h>
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup( )
{
208 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.3 · Control remoto de dispositivos infrarrojos IR
Serial.begin(9600);
irrecv.enableIRIn( ); // Start the receiver
}
Es preciso obtener el control remoto del televisor y apuntarlo hacia el sensor de infrarrojos
TSOP382, luego pulsar cualquier tecla del mando a distancia del televisor; aparecerá un núme-
ro hexadecimal en el monitor en serie para cada pulsación de tecla, mientras que cada una del
mando del televisor tiene un valor hexadecimal único. Los valores capturados serán requeri-
dos en el siguiente paso.
-
lo: UA24H4100) para capturar los valores de comando IR de los botones de aumento y reduc-
ción de volumen. La siguiente imagen muestra la salida capturada:
Salida capturada
Los valores de comando para subir y bajar el volumen en un formato hexadecimal son los si-
guientes:
En primer lugar, es preciso construir un módulo IR simple emisor añadiendo una luz led infra-
rrojo y una resistencia de 330 ohmios.
El siguiente esquema de Fritzing muestra cómo conectar cada componente junto con el Ar-
duino para construir el módulo receptor IR. También muestra la conexión entre cada compo-
nente electrónico.
Conexión de componentes
#include <IRremote.h>
IRsend irsend;
int pushButton = 7; //push button connected to digital pin 7
int val = 0; // variable for reading the button status
void setup( )
{
pinMode(pushButton, INPUT);
}
210 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.3 · Control remoto de dispositivos infrarrojos IR
void loop( ) {
Diagrama de conexión
#include <SPI.h>
#include <Ethernet.h>
#include <IRremote.h>
EthernetServer server(80);
IRsend irsend;
String HTTP_REQUEST;
unsigned int rawData[69] = {47536, 4700,4250, 750,1500, 700,1500, 700,1550,
700,400, 700,400, 700,400, 700,450, 650,450, 650,1600, 600,1600, 650,1600,
600,500, 600,500, 600,550, 600,500, 600,500, 600,1650, 550,1650, 600,1650,
550,550, 550,600, 500,600, 500,600, 550,550, 550,600, 500,600, 500,600,
500,1750, 500,1700, 500,1750, 500,1700, 500,1750, 500,0}; // SAMSUNG E0E0E01F
void setup( )
{
Serial.begin(9600);
Ethernet.begin(mac, ip);
Serial.print(“Web Server at: ”);
Serial.println(Ethernet.localIP( ));
server.begin( );
}
void loop( )
{
EthernetClient client = server.available( );
if (client) {
boolean currentLineIsBlank = true;
while (client.connected( )) {
if (client.available( )) {
char c = client.read( );
HTTP_REQUEST += c;
212 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.3 · Control remoto de dispositivos infrarrojos IR
client.println(“<head>”);
client.println(“<title>IR Remote - Internet</title>”);
client.println(“</head>”);
client.println(“<body>”);
client.println(“<form method=\”get\”>”);
2. -
ción de red.
3. Conectar el blindaje Ethernet al enrutador, o cambiar a través de un cable Ethernet Cat 6.
4.
5. Apuntar el LED IR hacia el televisor.
6. Abrir un nuevo navegador web (o una nueva pestaña), escribir la dirección IP del Ardui-
no Ethernet Shield, http://192.168.1.177/ y pulsar Enter. Si se desea controlar el dispo-
7. Se observará la siguiente página web con un botón denominado VOLUME UP:
Botón VOLUME UP
Barra de dirección
Si se requiere controlar un dispositivo que no tiene ninguna función de recepción infrarroja in-
corporada se puede hacer con el uso de un zócalo infrarrojo. Un enchufe de infrarrojos es un
dispositivo que se puede conectar en una toma de corriente eléctrica y por ende, el dispositivo
eléctrico se puede conectar en él. Además, el zócalo IR tiene una unidad de recepción IR simple
y puede funcionar en un lugar donde la señal de infrarrojos se reciba correctamente.
214 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.3 · Control remoto de dispositivos infrarrojos IR
Un tipo genérico de toma IR viene con un control remoto básico con una sola tecla para encen-
der y apagar:
Botón Power
Barra de direcciones
216 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.3 · Control remoto de dispositivos infrarrojos IR
Esquema de conectividad
void setup( ) {
Serial.begin(9600);
irrecv.enableIRIn( ); // Start the receiver
}
{
// decode_results *results = (decode_results *)v
void dump(decode_results *results)
if (results->decode_type == UNKNOWN)
218 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.3 · Control remoto de dispositivos infrarrojos IR
Serial.print(“ ”); }
Serial.println(“”); }
void loop( )
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
dump(&results);
irrecv.resume( ); // Receive the next value
}
}
Obtención de códigos
Después de haber construido el circuito para capturar los códigos, se debe abrir el monitor en
serie en el Arduino IDE, presionar el botón deseado en el mando a distancia y ver qué valores
recibe el Arduino, como se muestra en la imagen 7.28. Arduino recibirá el protocolo, el código
y los códigos en bruto.
Guardar o copiar los códigos recibidos por cada botón que se desee utilizar para controlar
los dispositivos. Estos son los botones para TV: POWER, VOLUMEN +, VOLUMEN-, CHANNEL +
y CHANNEL – y los botones TV/ DVD.
Para el sistema de audio si sólo se pretende controlar el poder, reproducir CD y presets o bo-
tones pulsadores, estos códigos se utilizarán en el siguiente boceto.
Diagrama de conexiones
220 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.3 · Control remoto de dispositivos infrarrojos IR
unsigned int powerEquipo[32]={300, 750, 300, 1800, 300, 700, 350, 700, 350,
1750, 350, 700, 300, 1800, 250, 1800, 350, 700, 300, 1800, 350, 700, 300,
700, 350, 700, 350, 1750, 300, 750, 300}; //unsigned int chEmisoraUp[32]=
{300, 750, 300, 750, 300, 1750, 250, 800, 300, 750, 300, 750,250, 800, 300,
750, 250, 1800, 250, 1850, 300, 750, 250, 800, 200, 800, 300, 1800, 300, 750,
300}; unsigned int chEmisoraUp[32] ={300, 750, 300, 750, 300, 1800, 200, 850,
300,750,250, 750, 300, 750, 300, 750, 300, 1800, 300, 1750, 300, 750, 300, 750,
300, 750, 300, 1800, 250, 750, 300}; unsigned int chEmisoraDown[32] = {350,
700, 400, 650, 300, 1750,350,700,350,700,350,700,300, 750, 300, 700, 350, 700,
300, 750, 350, 1750, 400, 650, 300, 700, 350, 1750, 300, 750, 300};
unsigned int playCd[32] = {400, 650, 400, 650, 350, 1750, 350, 700, 350, 650,
350, 1750, 350, 1750, 300, 1750, 400, 1700, 350, 1750, 350, 700, 350, 650, 400,
650, 350, 1750, 450, 600, 350};
unsigned int pwrTv[68]={4600, 4350, 700, 1550, 650, 1550, 650, 1600, 650, 450,
650, 450, 650, 450, 650, 450, 700, 400, 700, 15, 50, 650, 1550, 650, 1600,
650, 450, 650, 450, 650, 450, 700, 450, 650,450, 650, 450, 650, 1550, 700,
450, 650, 450, 650, 450, 650, 450, 650, 450, 700, 400, 650, 1600, 650, 450,
650, 1550, 650, 1600, 650, 1550, 650, 1550, 700, 1550, 650, 1550, 650}; // vo-
lume up unsigned int
volDownTv[68]={4600,4350,700,1550,650,1550,700,1500,700,450,650,450,
700,400,700,400, 700,400, 700, 1550,700, 1500, 700, 1550, 700, 400, 700, 400,
700, 400, 700, 450, 650, 450, 650, 1550, 700, 1500, 700, 450, 650, 1550, 700,
400, 700, 400,700, 450, 700, 400, 700, 400, 700, 400, 700, 1550, 700, 400,
700,1500, 700, 1500, 700, 1550, 700, 1500, 700}; // channel up unsigned int
chUpTv[68]={4600, 4350, 700, 1500, 700,1500,700, 1550, 700, 450, 650, 400,
700, 450, 650, 450, 700, 400, 700, 1500, 700, 1550, 650, 1550, 700, 450, 650,
450, 700, 400, 700, 400, 700, 400, 700, 400, 700, 1550, 700, 400, 700, 400,
700, 1550, 650, 450, 700, 400, 700, 1550, 650, 450, 650, 1600, 650, 1550, 650,
450, 700, 1500, 700, 1500, 700, 1550, 650}; // channel down unsigned int
chDownTv[68]={4650, 4300, 700, 1550, 700, 1500, 700, 1550, 700, 400, 700, 400,
700, 400, 700, 450, 650, 450, 650, 1550, 700, 1500, 700, 1550, 700, 400, 700,
400, 700, 400, 700, 450, 700, 400, 700, 400, 700, 400, 700, 450, 650, 450,
650, 1550, 700, 400, 700, 450, 650, 400, 700, 1550, 700, 1500, 700, 1550, 700,
1500, 700, 400, 700, 1550, 650, 1550, 700, 1500, 700};
// Tv/Video unsigned int videoTv[68]={4500, 4300, 650, 1600, 650, 1550, 650,
1600, 650, 500, 600, 500, 650, 500, 650, 500, 650, 500, 600, 1650, 600, 1600,
650, 1550, 650, 500, 650, 500, 650, 500, 600, 500, 650, 500, 650, 1600, 600,
500, 650, 500, 650, 500, 650, 500, 600, 550, 600, 500, 650, 500, 650, 500, 650,
1550, 650, 1600, 650, 1550, 650, 1600, 650, 1550, 650, 1600, 650, 1550, 650};
void setup( )
{
Serial.begin(9600);
}
void loop( )
{
if(Serial.available( )>0)
{ dato=Serial.read( );
switch (dato)
{ case ‘R’:
ir.sendRaw(powerEquipo,32,38);
delay(500);
break;
case ‘T’:
ir.sendRaw(chEmisoraUp,32,38);
delay(100);
break;
case ‘U’:
ir.sendRaw(chEmisoraDown,32,38);
delay(100);
break;
case ‘V’:
ir.sendRaw(playCd,32,38);
delay(100);
break;
case ‘K’:
222 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
7.3 · Control remoto de dispositivos infrarrojos IR
//Power the TV
ir.sendRaw(pwrTv,68,38);
delay(100);
break;
case ‘L’:
//Volume +
ir.sendRaw(volUpTv,68,38);
delay(100);
break;
case ‘M’:
//Volume -
ir.sendRaw(volDownTv,68,38);
delay(100);
break;
case ‘N’:
//Channel +
ir.sendRaw(chUpTv,68,38);
delay(100);
break;
case ‘O’:
//Channel -
ir.sendRaw(chDownTv,68,38);
delay(100);
break;
case ‘P’:
// Tv/Video
ir.sendRaw(videoTv,68,38);
delay(100);
break;
case ‘A’:
for (int i = 0; i < 3; i++)
{
ir.sendNEC(0xFF30CF, 32); // Power the DVD
delay(40);
}
break;
case ‘B’:
case ‘C’:
for (int i = 0; i < 3; i++)
{
ir.sendNEC(0xFF52AD, 32); // Play
delay(40);
}
break;
case ‘D’:
for (int i = 0; i < 3; i++)
{
ir.sendNEC(0xFF728D, 32); // Stop
delay(40);
}
break;
} // n del switch
} //n del if
}//n del loop
RESUMEN
En este capítulo se estudió cómo crear una aplicación para Android TV en Android Studio, con
el objetivo de integrar esta tecnología en el control de dispositivos Android y Arduino.
También se desarrollaron algunos proyectos donde se utiliza la tarjeta Arduino para control
a través del sensor infrarrojo, la recepción de la codificación del control remoto y el envío de
la señal para manejo de televisiones, equipos de audio y DVD, donde se construyó el emisor
y receptor.
En la última parte se creó un proyecto donde se usó un teléfono móvil y mediante bluetooth
se controlaron los dispositivos electrónicos desde la aplicación.
En el siguiente capítulo se verán los proyectos wearable y sus aplicaciones con el uso de
Android-Arduino.
224 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
Capítulo
8
Estadística para adquirir
DATOS DE UN SENSOR
de pulso cardíaco
Contenido Objetivo
8.1 Introducción En este capítulo el lector integrará las he-
8.2 El análisis estadístico rramientas estadísticas para el análisis y
8.3 Uso de estadística descriptiva registro en la adquisición de datos de un
para lecturas de sensores de pulso sensor de pulso cardíaco; con el objetivo
cardíaco de obtener lecturas tomadas y guarda-
8.3.1 Aplicación de la estadística das en un microSD conectado a la tarjeta
descriptiva Arduino. Asimismo, se analizará y aplica-
8.3.2 Resumen gráfico de la rá la estadística para el correcto estudio
estadística descriptiva para de la información, para uso futuro en apli-
las lecturas censadas caciones para medicina y dispositivos
8.3.3 Medidas de asociación entre wearable a través de la integración de la
dos variables aplicadas a las plataforma Arduino, a efecto de una co-
lecturas censadas rrecta toma de decisiones.
8.4 Control estadístico de procesos en
lecturas censadas por el pulso de
ritmo cardíaco
Resumen
Capítulo 8 · Estadística para adquirir datos de un sensor de pulso cardíaco
En nuestros días se generan grandes volúmenes de información numérica que es necesario
manejar a través de diversos métodos sistemáticos, los cuales pueden ser utilizados para orga-
nizar, presentar, analizar e interpretar la información efectivamente. De esta manera, pueden
extraerse conclusiones válidas y tomarse decisiones razonables. A partir de lo anterior, con la
estadística es posible conocer la manera en que se puede emplear la información además de
establecer una guía de acción si existe incertidumbre en determinada situación.
Por otro lado, hay que resaltar que cuando se emplea la estadística y se logra conectar con
una situación en particular de la electrónica, ingeniería u otra disciplina, no se está ante una
herramienta más sino que se convierte en la única que, hoy por hoy, permite dar luz y obtener
fl
-
ra cualquier situación de la vida real y principalmente para un proceso, ya sea de servicios o
de transformación de algún artículo (Centeno, 2016). Un elemento medular e imprescindible
-
colectar de alguna actividad que se desee estudiar, es decir, si se considera el monitoreo de la
humedad en una camisa de un corredor o jugador a través de un sensor, las lecturas adquiridas
serán la información y a ésta se le conocerá como datos estadísticos censados. Estos datos se
recolectaron de una forma y, para obtenerla, se empleó algún método o técnica, a lo cual se le
llama técnicas estadísticas. (Centeno, 2016)
El análisis de las lecturas de humedad en la camisa es aquel que emplea una serie de técnicas
estadísticas, para interpretar numéricamente las humedades censadas en la prenda.
226 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.2 · El análisis estadístico
Como primer paso se realizó una prueba con el sensor que se muestra a continuación y a través
de la herramienta Serial Plotter del entorno de Arduino, esta herramienta aparece en la insta-
lación de Arduino a partir de la versión 1.6.6. Enseguida se observan algunas imágenes del sen-
sor conectado a la tarjeta Arduino Uno, al canal analógico A0. El cable morado es la señal del
sensor, el color rojo (+5v) y tierra (GND) el cable negro.
Conexión sensor-dedo
This an Arduino project. It’s Best Way to Get Started with your PulseSensor™
& Arduino.
-------------------------------------------------------------
1) This shows a live human Heartbeat Pulse.
2) Live visualization in Arduino’s Cool “Serial Plotter”.
3) Blink an LED on each Heartbeat.
4) This is the direct Pulse Sensor’s Signal.
5) A great rst-step in troubleshooting your circuit and connections.
6) “Human-readable” code that is newbie friendly.”
*/
// Variables
int PulseSensorPurplePin = 0; // Pulse Sensor PURPLE WIRE connected
to ANALOG PIN 0
int LED13 = 13; // The on-board Arduion LED
228 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.2 · El análisis estadístico
Menú Herramientas
MicroSD
Pines
Pin del módulo SD Pin Arduino Uno
CS/SS Pin D4
SCK/CLK Pin D13
MOSI Pin D11
MISO Pin D12
VCC 5V
GND GND
230 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.2 · El análisis estadístico
Conexión a Arduino
#include <SD.h>
#include <SPI.h>
int Signal;
void setup( ) {
// Open serial communications
Serial.begin(9600);
// Init SD card
Serial.println(“Inicializando Tarjeta SD...”);
if (!SD.begin(chipSelect)) {
Serial.println(“Tarjeta no presente”);
// don’t do anything more:
return;
}
Serial.println(“Memoria SD inicializada.”);
}
void loop( ) {
Signal = analogRead(0); // Read the PulseSensor’s value.
// Open le
File dataFile = SD.open(“sensor.txt”, FILE_WRITE);
La imagen que se muestra a continuación es el archivo TXT de las lecturas del sensor de pul-
so cardíaco.
Archivo TXT
232 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.2 · El análisis estadístico
Para trabajar en el entorno de Excel y generar el análisis estadístico de las lecturas censadas
que se muestran en la imagen anterior, es pertinente llevar a cabo el siguiente procedimiento.
2. Si se considera que el archivo donde se almacenan las lecturas es uno de texto, será ne-
cesario utilizar el menú Datos de Excel. Ahí se empleará la opción Obtener datos exter-
nos y se seleccionará la alternativa desde un archivo de texto, en la siguiente imagen se
muestra con mayor detalle.
Menú Datos
Archivo Sensor
4.
hacer.
Instrucciones
234 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.2 · El análisis estadístico
5.
Botón Siguiente
8. La imagen anterior pregunta en qué lugar de la hoja de Excel se desea situar los datos. Si
de aquí es posible elegir en qué celda se desea posicionar los valores.
Posicionamiento en celdas
236 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.2 · El análisis estadístico
9. Por último, se da clic en Aceptar y automáticamente aparecerán todos los valores censa-
dos que se almacenaron en el archivo de texto:
Valores censados
El archivo con las 4766 lecturas censadas se podrá encontrar como material de apoyo en anexo.
Para emplear todas las herramientas de estadística aplicadas a las lecturas censadas se uti-
lizará el archivo de Excel llamado: análisis_estadistico_sensor.
Análisis rápido
Despliegue de Menú
238 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.2 · El análisis estadístico
4. El primer análisis rápido a calcular será el promedio, el cual se obtiene con la selección
de la opción Total y después Promedio, como se muestra en la siguiente imagen.
Cálculo de Promedio
5. Posteriormente, se calcularán los valores censados que estén por arriba del promedio.
Valores mayores
Los valores que se muestran en color rojo son todos los que están por arriba del promedio.
240 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.3 · Uso de estadística descriptiva para lecturas de sensores de pulso cardíaco
forma:
fl
fl
Mediante la estadística es posible reunir, organizar y analizar datos numéricos, en este caso
-
tir de ellas.
Gráco de lecturas
-
Lecturas censadas
Frecuencias
Clase Frecuencia % Acumulado % Acumulado
(10-10) 25 0.00534 25 0.53%
242 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.3 · Uso de estadística descriptiva para lecturas de sensores de pulso cardíaco
4683 100.00%
de un histograma.
Selección de columnas
Histograma
-
tab para generar uno.
244 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.3 · Uso de estadística descriptiva para lecturas de sensores de pulso cardíaco
media está por arriba del valor objetivo y de algún modo las lecturas de pulso cardíaco que es-
tán por debajo de 570, cumplen con el objetivo establecido.
Pareto. A continuación, se explica cómo se obtuvo.
Selección de columnas
Diagrama de Pareto
El diagrama que se obtuvo a través de Excel indica el número de lecturas censadas presentes
en cada una de las clases, es decir, 21 lecturas están en el rango de 2 a 232; 5 lecturas están en-
tre 232 a 462 y así respectivamente. La siguiente imagen describe un diagrama de Pareto que
se obtuvo a través de Minitab.
246 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.3 · Uso de estadística descriptiva para lecturas de sensores de pulso cardíaco
Con ayuda de este diagrama de Pareto es necesario considerar que se debe centrar la aten-
ción en la clase 590-610, debido a que en ella se concentra el mayor número lecturas censadas.
La estadística descriptiva analiza, estudia y describe a la totalidad de los individuos de una po-
Tabla de Excel
2.
Selección de columna C
248 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.3 · Uso de estadística descriptiva para lecturas de sensores de pulso cardíaco
3. Es preciso apoyarse del menú Datos y enseguida buscar la opción Análisis de datos y se-
leccionarla.
Menú Datos
Completar recuadros
6. Por último, se da clic en Aceptar y se obtiene la estadística descriptiva para las lecturas
censadas por el sensor de pulso cardíaco.
250 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.3 · Uso de estadística descriptiva para lecturas de sensores de pulso cardíaco
A través del análisis de estadística descriptiva que se empleó para las lecturas censadas por el
sensor de pulso cardíaco, es posible tomar más y mejores decisiones a partir de los datos que
un sensor envíe en tiempo real.
las lecturas censadas
Con apoyo del software Minitab se obtuvo el resumen que a continuación se mostrará. Es váli-
do considerar que algunos valores de la estadística descriptiva también se calcularon en el te-
ma anterior, sin embargo, el siguiente se complementa porque se presentan el histograma y el
diagrama de cajas y bigotes para las lecturas censadas.
censadas; a continuación se describe.
está relacionada con un diagrama de cajas y la segunda es un diagrama de bigotes.
Mediante el diagrama se puede visualizar en qué punto se encuentra la media de las
lecturas y la mediana de éstas, con un intervalo de 95%.
que son aceptables las lecturas censadas son los siguientes: límite inferior= 582.53,
límite medio= 585.70 y el límite superior = 588.87. Si alguna de las lecturas está por
arriba o por debajo de los límites, indica que está fuera de control.
Más adelante se abundará en el tema del límite de control para la muestra de lecturas censadas.
Resumen de lecturas
a las lecturas censadas
En este tema se presentarán las herramientas y métodos para determinar si existe una correla-
ción o asociación entre dos variables y, de ser así, si es lineal, es decir, se emplearán las lecturas
censadas para conocer si existe una correlación o asociación entre ellas. En el caso de las corre-
y utilizarse para predecir el valor de una variable a partir del valor de otra.
252 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.3 · Uso de estadística descriptiva para lecturas de sensores de pulso cardíaco
-
Obtención de gráca
las lecturas censadas. También es pertinente resaltar que algunas de las lecturas pueden consi-
derarse como atípicas o aberrantes, es decir, por el valor que generan no es común encontrar-
las. Tal es el caso de aquellas que se encuentran más dispersas de toda la muestra de lecturas
Gráca de dispersión
gran variación, es decir, existen valores atípicos o aberrantes y otros muy dispersos.
través de los siguientes pasos.
1.
2. Dar clic derecho y seleccionar Agregar línea de tendencia.
3. Elegir las siguientes opciones: Lineal, Agregar línea de tendencia y Presentar R cuadrado.
Opciones a elegir
254 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.3 · Uso de estadística descriptiva para lecturas de sensores de pulso cardíaco
Ecuación gracada
Interpretación
Al obtener la ecuación de regresión es posible obtener la proyección de alguna lectura censa-
da. Por otro lado, la línea de tendencia indica que las lecturas censadas se podrían ajustar a esa
tendencia.
El R 2
Respecto del valor del R2 (porcentaje de variación de la variable de respuesta que se explica
por su relación con una o más variables predictoras) se puede establecer que el modelo de la
ecuación no se ajusta bien a las lecturas censadas debido a que su valor es muy bajo, es decir,
mientras más cercano esté a 1 o a 100%, el modelo se ajustará mejor.
correspondientes.
Cuando se elige Regresión se mostrará la siguiente pantalla, y donde aparece Rango Y de en-
trada se seleccionarán todos los valores que se encuentran en la columna Lecturas censadas.
256 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.3 · Uso de estadística descriptiva para lecturas de sensores de pulso cardíaco
Opción Regresión
byYako1976 identi.io
Opciones a elegir
Resumen de regresión
lineal entre los valores cuantitativos pareados x, y en la muestra.
Gráca de la curva
258 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.3 · Uso de estadística descriptiva para lecturas de sensores de pulso cardíaco
Si en esta misma curva ahora se incluye la ecuación y el R2 , se puede obtener un mejor resulta-
Si se considera la línea de tendencia obtenida es pertinente observar que ahora los valores de
las lecturas censadas sí tienen una correlación y, por lo tanto, la ecuación es un buen modelo
para llevar a cabo un pronóstico de otras lecturas que sean susceptibles de censar.
-
re Minitab, es posible mostrar el patrón aproximado lineal que concuerda con una distribu-
El histograma indica que los datos podrían tener valores atípicos, lo cual se muestra me-
en esa clase se concentra el mayor número de valores censados y es necesario poner mayor
atención en ella.
Histograma
8.4fl
fl
En muchos procesos de la industria, así como en los negocios que ofrecen servicios se emplea
de manera habitual principios de control estadístico de procesos para supervisar la calidad de
los bienes que producen y de los servicios que se ofrecen.
Una de las características importantes de las lecturas censadas es que su patrón cambia
con el paso del tiempo y también algunos datos, por lo tanto, también cambian los valores de
los parámetros. A continuación se describirá el empleo de datos censados y cómo construir e
lecturas censadas que cambian, todo lo cual servirá para mejorar la calidad del proceso.
260 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.4 · Control estadístico de procesos en lecturas censadas por el pulso de ritmo cardíaco
ver y comprender algunas propiedades de las lecturas censadas que, de otra forma, serían muy
-
tadístico es dar a conocer su relevancia cuando se generan datos a partir de un sensor, además
de conocer cómo es el comportamiento de ellos.
El objetivo primordial de emplear el control estadístico de procesos a las lecturas del sensor
-
les causas de variación y si es posible corregirlas.
Para aplicar el control estadístico a las lecturas, será necesario establecer un método de tra-
bajo y apoyarse con Minitab:
Considerando que el tamaño de la muestra es de 354 lecturas, ahora sí es posible tomar este
valor a partir de la población.
Muestra
262 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.4 · Control estadístico de procesos en lecturas censadas por el pulso de ritmo cardíaco
que los valores de las lecturas censadas se capturen de la siguiente forma.
Valores de lecturas
1 2 428 3 4 658
1 3 450 3 5 650
1 4 466 4 1 635
1 5 484 4 2 620
2 1 498 4 3 596
2 2 504 4 4 578
2 3 566 4 5 565
2 4 769 5 1 556
2 5 700 5 2 540
3 1 695 5 3 503
3 2 680 5 4 454
264 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
8.4 · Control estadístico de procesos en lecturas censadas por el pulso de ritmo cardíaco
La tabla mostrada anteriormente sólo da a conocer hasta la quinta muestra, sin embargo, es
necesario calcular hasta la muestra 71 de las lecturas censadas.
Después de seleccionar la opción X-barra, aparecerá la tabla que se muestra en la imagen. Es ne-
-
Gráca de resultados
RESUMEN
En este capítulo se aplicaron algunas herramientas de la estadística descriptiva para la ge-
neración de análisis y toma de decisiones a partir de los valores obtenidos por un sensor de
pulso cardíaco.
266 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
Capítulo
9
Integración de aplicaciones:
PROYECTOS
wearable
Contenido
9.1 Un vistazo al Internet de las cosas
9.1.1 Componentes IoT
9.1.2 El día moderno de IoT Objetivo
9.1.3 Ejemplos del Internet de las Cosas
9.2 Uso del Internet de las Cosas en ciudades En este capítulo se aplicarán y desarrolla-
inteligentes e industria automotriz rán proyectos para dispositivos wearable
9.2.1 Retos técnicos con el uso de herramientas estudiadas en
9.3 El Internet de las Cosas y el rol del Bluetooth los capítulos anteriores. Asimismo, se inte-
Low Energy grarán las plataformas relativas a proyectos
9.4 El Futuro del Internet de las Cosas de tecnología para aplicaciones Android y
9.4.1 Otras tecnologías Arduino con la finalidad de crear dispositi-
9.4.2 Redes Bluetooth Mesh vos wearable: desde el análisis de la idea,
9.5 Desarrollo de proyectos Wearable el desarrollo, hasta la integración. Esto per-
9.5.1 SmartBand para niños mitirá impulsar la creatividad para nuevos
9.5.2 Reloj con GPS productos de esta índole.
9.6 Podómetro o contador de pasos
9.6.1 Podómetro con Arduino
9.6.2 Arduino Genuino 101
9.6.3 Pulsera-botón de pánico
9.6.4 Módulo GSM
9.6.5 Comandos AT
Resumen
Capítulo 9 · Integración de aplicaciones: Proyectos wearable
, o brevemente IoT, es una tendencia prometedora en tecnología. Según ana-
listas, esta herramienta puede ser perjudicial en la próxima década; tendrá un gran impacto en
-
Dispositivos wearable
Industria
Cuidado de la salud
Transporte
Fabricación
Agricultura
Ciudades inteligentes
-
nes, tablets y computadoras conectados entre sí.
IoT es un ecosistema en el que los objetos están interconectados y, al mismo tiempo, tienen
una conexión a Internet; incluye todos los aparatos que potencialmente pueden conectarse e
-
tá en cualquier lugar.
9.1.1
entender el papel que desempeñan en dicho entorno. Fundamentalmente, IoT es un objeto in-
teligente, puede ser desde un sensor simple que mida una cantidad tal como presión, tempera-
a desarrollar el Internet de las cosas.
-
tuar con ellos.
-
Bluetooth
268 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
9.1 · Un vistazo al Internet de las cosas
Zigbee
Red celular
NB-IoT
-
MQTT
Rest
Stomp
9.1.2
2013, esta idea evolucionó debido a la integración de las tecnologías inalámbricas, el aumento
-
-
seguridad y servicios de emergencia.
-
Cabe destacar que IoT es una red de dispositivos conectados conscientes de su entorno,
responsabilidad. Tales dispositivos pueden ser automóviles, sensores, luces, paneles solares,
-
-
9.1.3
bombillas y otros dispositivos que antes eran demasiado simples, ahora están conectados y
-
so tiene sólo tres años, y no es improbable que la tasa de adopción de esta tecnología sea algo
nunca antes visto.
los primeros mil millones en 2005, el segundo en 2010 y el tercero en 2014. Actualmente, hay
3,400 millones de usuarios de Internet en el mundo. Aunque esta tendencia parece poco rea-
50 mil millones de dispositivos conectados en el mundo y 90% de los vehículos lo estará a In-
los wearable se convertirán en un mercado de 6 mil millones de dólares, con 171 millones de
dispositivos vendidos.
-
Wearables
-
270 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
9.1 · Un vistazo al Internet de las cosas
tecnología wearable se compone desde accesorios de moda hasta relojes inteligentes; Apple
-
-
-
-
Fitness Tracker
son monitoreadas y mantenidas. Fitness wearables no se limitan sólo a las bandas, hay camisas
-
a través de la ropa.
Amazon Echo
-
-
Amazon Echo
ejecutar los comandos y bluetooth para conectarse a otros dispositivos en el hogar, por ejem-
-
Google en el mercado doméstico inteligente.
Focos inalámbricos
-
-
272 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
9.1 · Un vistazo al Internet de las cosas
Focos inalámbricos
Refrigeradores inteligentes
-
de IoT, ya que está completamente conectado a Internet y proporciona varios controles a los
Refrigerador inteligente
-
-
-
ministración implica la gestión de los activos de una ciudad, por ejemplo, centrales eléctricas,
sistemas de atención médica, de transporte, escuelas, bibliotecas, sistemas de alcantarillado,
de gestión de residuos y hasta de aplicación de la ley.
-
aumentar la calidad de la comunicación con nuevos medios.
-
-
274 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
9.2 · Uso del Internet de las Cosas en ciudades inteligentes e industria automotriz
Tesla Model S
9.2.1
-
-
-
se puede esperar que la misma converja en una gran burbuja de IoT.
-
sarrollo que adopten el concepto de ciudades inteligentes.
Bluetooth siempre ha sido una tecnología atractiva en electrónica de consumo, cuando ésta
velocidades de transmisión de datos y alcance, es ideal para convertirse en parte de IoT y ya
-
-
-
adopten ampliamente la baja energía bluetooth para producir cosas inteligentes, pueden tam-
la misma tasa de adopción que bluetooth. También tiene una velocidad rápida, un alcance ma-
veces, con una aceleración de dos. También se anunció la inclusión de una malla con una co-
-
276 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· El Futuro del Internet de las Cosas
Con lo anterior, el dispositivo Beacon Bluetooth es incluso más barato; su único trabajo es
Nearables consiste en una especie de calcomanías que pueden proporcionar transmisiones
-
tooth en IoT.
admitirán bluetooth en 2021, lo que lo convierte en alrededor de un tercio del mercado total
de Internet de las Cosas. Como se mencionó anteriormente, esta tecnología coexistirá con otras
-
reducido y mayor alcance y velocidad, por lo que su uso va en aumento y además brinda nuevas
oportunidades para que las empresas la utilicen de maneras innovadoras.
que juegan un papel importante en la revolución de IoT.
área personal con radios digitales de baja potencia, con lo cual logra distancias de transmi-
sión de 10 a100 metros a través de la línea de comunicación visual. Zigbee tiene una velocidad
-
Zigbee Hue
Operación de Zigbee
-
dos en una malla de comunicación, donde existe un dispositivo central que establece comuni-
278 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· El Futuro del Internet de las Cosas
cación con los demás nodos de su alrededor; ésta permite crear redes de dispositivos que pue-
den estar interconectados entre sí.
Control de dispositivos
Productos
-
nectada a una red como red en una casa y permite la interacción con dispositivos móviles.
Google Home
-
Conexiones de hardware
1.
2. Colocar el módulo en la placa de pruebas
3.
-
Finalmente, conectar el pasador RDY al pasador Arduino 2 y el pin RST Arduino pin 9
280 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Diagrama de conexiones
Ahora, se debe conectar el sensor de pulso cardíaco, lo cual es realmente muy simple. Se
al pin Arduino A0
Proyecto nal
// Raw signal
volatile int Signal;
void setup( ){
// Update pin that will blink to your heartbeat
pinMode(blinkPin,OUTPUT);
// Start Serial
Serial.begin(115200);
void loop( ){
// If heart beat is found
if (QS == true) {
282 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
// Fade LED
ledFadeToBeat( );
// Wait 20 ms
delay(20);
}
// LED fade
void ledFadeToBeat( ){
fadeRate -= 15; // set LED fade value
fadeRate = constrain(fadeRate,0,255); // keep LED fade value from going into
negative numbers!
analogWrite(fadePin,fadeRate); // fade LED
}
// Print data
void sendDataToProcessing(char symbol, int data ){
Serial.print(symbol); // symbol prex tells Processing what type of data
is coming
Serial.println(data); // the data to send culminating in a carriage
return
}
-
// Pins
#dene ADAFRUITBLE_REQ 10
#dene ADAFRUITBLE_RDY 2 // This should be an interrupt pin, on Uno thats #2
or #3
#dene ADAFRUITBLE_RST 9
// BLE instance
Adafruit_BLE_UART BTLEserial = Adafruit_BLE_UART(ADAFRUITBLE_REQ,
ADAFRUITBLE_RDY, ADAFRUITBLE_RST);
// Raw signal
volatile int Signal;
// Interval between beats
volatile int IBI = 600;
void setup( ){
// Start Serial
Serial.begin(115200);
// Start BLE
BTLEserial.begin( );
284 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
void loop( ){
// Assign BPM variable
bpm = BPM;
-
Agregado en la aplicación
-
-
http://android-
graphview.org/. Una captura de pantalla de cómo esta aplicación podría ver con Android grá-
-
rio, donde los datos se actualicen en tiempo real a través de implementaciones de controlado-
-
adultos tienen diversas opciones para elegir, pero no los niños.
Con el creciente interés de los padres en la tecnología, los wearables para niños son un mer-
-
muestran algunas tendencias.
286 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Asimismo, se elaborará un dispositivo que se coloque sobre la piel de un bebé para detec-
tar su temperatura, el dato se enviará a una aplicación en Android; se apreciará como en la si-
Dispositivo de temperatura
Arduino LilyPad
-
-
tiles o textiles interactivos, que son telas en las que se puede incrustar electrónica y com-
proyectos de computación portátiles que implican el uso de textiles electrónicos.
-
pié en la integración de telas con electrónicos como microcontroladores, sensores y actuado-
res. Además, los e-textiles no necesitan ser portátiles, pues también se encuentran en el diseño
de interiores.
de la moda que algunos diseñadores ya han incorporado en sus creaciones de prendas, bolsos
y accesorios. Dichas creaciones representan un desarrollo en las telas y materiales inteligentes
-
-
-
288 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Chip a programar
// the setup function runs once when you press reset or power the board
void setup( ) {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
Vericación de puerto
290 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Selección de la placa
Módulo bluetooth
Conexiones
292 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Topología de la aplicación
const int Tempsensor = A0; // connect output pin of lm35 to A0 pin of arduino
void setup( ) {
pinMode(Tempsensor, INPUT);
Serial.begin(9600);// serial communication begins
bluetooth.begin(9600);// bluetooth communication begins
}
void loop( ) {
oat temp = analogRead(Tempsensor); // read temperature sensor voltage
temp = temp * 0.48828125; // (5*1000)/1024 = 0.48828125 from sensor data sheet
Serial.println(“ “); //
Serial.println(temp); // watch the current temperature in serial monitor
bluetooth.print(“ “);
bluetooth.println(temp); // send temperature to bluetooth device
delay(1000);
}
Conexión al sistema
294 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
byYako1976 identi.io
Conexiones nales
Lectura de la señal
Datos en la nube
https://dweet.io/
Servicio en la nube
-
ciones para el registro de datos.
https://dweet.io/dweet/for/my-thing-name?hello=world
296 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
https://dweet.io/get/latest/dweet/for/my-thing-name
https://dweet.io/get/dweets/for/my-thing-name
http://dweet.io/dweet/
for/temperature
Propiedades de conexión
http://dweet.io/dweet/for/temperatura?
temp=25 donde el valor de 25 es la lectura del sensor.
Control Clock
Monitoreo de temperatura
298 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Registro de datos
https://freeboard.io/
Pantalla de visualización
Generación de cuenta
Pantalla de monitoreo
300 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Link de Add
Seleccionar Dweet.io
Selección de Dweet.io
Opción Salvar
Creación de gráco
302 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Selección de Gauge
Captura de información
Gráca de la temperatura
304 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
A continuación se creará un prototipo de otra índole. ¿Qué tal la idea de conectar el proyecto
que se mueve y la altitud sobre el nivel del mar.
-
Actualmente existen 27 satélites que orbitan la Tierra, los cuales brindan a cualquier perso-
y latitud. Hoy existe una amplia gama de dispositivos para coches, aviones, barcos y pronto en
el reloj.
-
-
Materiales a utilizar:
Soldadura
Cables
Batería de litio de 3.3v 150mA
Cinta de tela
Conexión de la pantalla
-
-
-
sea la hora local, es preciso sumar o restar horas al parámetro de Greenwich.
satélites que es posible encontrar y su velocidad medida en minutos por segundo.
306 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Cortes de plástico
Armado de partes
Conexión de módulos
308 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_GPS GPS(&Serial1);
#dene OLED_RESET 6
Adafruit_SSD1306 display(OLED_RESET);
#dene NUMFLAKES 10
#dene XPOS 0
#dene YPOS 1
#dene DELTAY 2
#dene LOGO16_GLCD_HEIGHT 16
#dene LOGO16_GLCD_WIDTH 16
void setup( )
{
// connect at 115200 so we can read the GPS fast enough and echo without
dropping chars
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C
addr 0x3C (for the 128x32)
// Clear the buffer.
display.clearDisplay();
Serial.println(“Testing GPS”);
delay(1000);
// Ask for rmware version
Serial1.println(PMTK_Q_RELEASE);
}
// char
if (millis( ) - timer > 1000) {
//
timer = millis( );
display.clearDisplay( );
//
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print(GPS.hour, DEC);
display.print(‘:’);
//
if(GPS.minute<10){
display.print(‘0’);
display.print(GPS.minute, DEC);
}
else{
display.print(GPS.minute, DEC);
}
display.print(‘:’);
//
if(GPS.seconds<10){
display.print(‘0’);
display.print(GPS.seconds, DEC);
}
else{
310 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
display.print(GPS.seconds, DEC);
}
//
display.print(“ ”);
display.print(GPS.day, DEC);
display.print(‘/’);
display.print(GPS.month, DEC);
display.print(“/20”);
display.println(GPS.year, DEC);
//
// if (GPS.x) {
//
display.print(“Longitude:”);
display.print(GPS.latitude, 4);
display.println(GPS.lat);
display.print(“Latitude:”);
display.print(GPS.longitude, 4);
display.println(GPS.lon);
//
display.print(“Speed:”);
display.print(GPS.speed);
display.print(“ Alt:”);
display.println(GPS.altitude);
// }
//
display.display( );
}
}
Rastreador de mascota
se requiera soldadura.
Rastreador de GPS
Diagrama de circuito
312 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Cocido de circuito
//This code is intended for use with Arduino Leonardo and other ATmega32U4-
based Arduinos
#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>
// Set GPSECHO to ‘false’ to turn off echoing the GPS data to the Serial console
// Set to ‘true’ if you want to debug and listen to the raw GPS sentences
#dene GPSECHO false
void setup( )
{
while (!Serial); // the Leonardo will ‘wait’ until the USB plug is connected
// 9600 NMEA is the default baud rate for MTK - some use 4800
GPS.begin(9600);
// You can adjust which sentences to have the module emit, below
// Default is RMC + GGA
GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
// Default is 1 Hz update rate
GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);
// the nice thing about this code is you can have a timer0 interrupt go off
// every 1 millisecond, and read data from the GPS for you. that makes the
// loop code a heck of a lot easier!
useInterrupt(true);
while (true) {
314 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Serial.print(“Starting logging....”);
if (GPS.LOCUS_StartLogger( )) {
Serial.println(“ STARTED!”);
break;
} else {
Serial.println(“ no response :(“);
}
}
}
else
Serial.print(“OFF, ”);
Serial.print((int)GPS.LOCUS_records); Serial.print(“ Records, ”);
Serial.print((int)GPS.LOCUS_percent); Serial.print(“% Used ”);
}//if (GPS.LOCUS_ReadStatus( ))
}//if (millis( ) > updateTime)
}//loop
/******************************************************************/
// Interrupt is called once a millisecond, looks for any new GPS data, and
stores it
SIGNAL(TIMER0_COMPA_vect) {
char c = GPS.read( );
// if you want to debug, this is a good time to do it!
if (GPSECHO && c) {
#ifdef UDR0
UDR0 = c;
// writing direct to UDR0 is much much faster than Serial.print
// but only one character can be written at a time.
#endif
}
}
void useInterrupt(boolean v) {
if (v) {
// Timer0 is already used for millis( ) - we’ll just interrupt somewhere
// in the middle and call the “Compare A” function above
OCR0A = 0xAF;
TIMSK0 |= _BV(OCIE0A);
usingInterrupt = true;
} else {
// do not call the interrupt function COMPA anymore
TIMSK0 &= ~_BV(OCIE0A);
usingInterrupt = false;
}
}
316 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
//This code is intended for use with Arduino Leonardo and other ATmega32U4-
based Arduinos
#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>
void setup( )
{
while (!Serial); // Leonardo will wait till serial connects
// 9600 NMEA is the default baud rate for MTK - some use 4800
GPS.begin(9600);
GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_OFF);
while (mySerial.available( ))
mySerial.read( );
delay(1000);
GPS.sendCommand(“$PMTK622,1*29”);
Serial.println(“----------------------------------------------------”);
}
318 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Selección de lecturas
Página de Adafruit
Conversión de texto
320 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
My places
Importación de archivo
Diagrama de sistema
322 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Módulo requeridos
Conexión nal
/***************************************************************************
* External Libraries
**************************************************************************/
#include <SPI.h>
#include <WiFi.h>
#include <TinyGPS.h>
#include <SoftwareSerial.h>
/***************************************************************************
* Internet Connectivity Setup - Variables & Functions
**************************************************************************/
WiFiClient client;
324 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
void connectToInternet( )
{
status = WiFi.status( );
// Connection successful
Serial.print(“[INFO] Connection Successful”);
Serial.print(“”);
printConnectionInformation( );
Serial.println(“-----------------------------------------------”);
Serial.println(“”);
}
void printConnectionInformation( )
{
// Print Network SSID
Serial.print(“[INFO] SSID: ”);
Serial.println(WiFi.SSID( ));
Serial.print(“:”);
Serial.print(bssid[2], HEX);
Serial.print(“:”);
Serial.print(bssid[1], HEX);
Serial.print(“:”);
Serial.println(bssid[0], HEX);
/***************************************************************************
* GPS Setup - Variables & Functions
**************************************************************************/
326 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
TinyGPS gps;
SoftwareSerial ss(2, 3); // GPS TX = Arduino D2, GPS RX = Arduino D3
void getGPSCoordinates( )
{
oat latitude;
oat longitude;
unsigned long age = 0;
smartdelay(10000);
/***************************************************************************
* Data Publish - Variables & Functions
**************************************************************************/
lastConnectionTime = millis( );
328 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Serial.println(“-----------------------------------------------”);
}
/***************************************************************************
* Standard Arduino Functions - setup( ), loop( )
**************************************************************************/
void setup( )
{
// Initialize serial port
Serial.begin(115200);
void loop( )
{
// Get GPS Coordinates
getGPSCoordinates( );
}
<?php
$servername = “localhost”;
$dbname = “codifyth_iot_book_db”;
$username = “codifyth_admin”;
$password = “Codify20!5”;
<?php
include(‘util-dbconn.php’);
$clientID = $_GET[‘clientID’];
$latitude = $_GET[‘latitude’];
$longitude = $_GET[‘longitude’];
echo $sql;
if (!$result = $mysqli->query($sql))
{
echo “[Error] “ . mysqli_error( ) . “\n”;
exit( );
}
$mysqli->close( );
330 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
<html lang=”en”>
<head>
<title>Livestock Tracking System</title>
<script>
function init( )
{
<?php
include(‘util-dbconn.php’);
$zoomLatitude = “”;
$zoomLongitude = “”;
if ($resultCount > 0)
{
$currentRow = 0;
while($row = $result->fetch_assoc( ))
{
$currentRow = $currentRow + 1;
$clientID=$row[“CLIENT_ID”];
$latitude=$row[“LATITUDE”];
$longitude=$row[“LONGITUDE”];
if($currentRow == 1)
{
$zoomLatitude = $latitude;
$zoomLongitude = $longitude;
}
echo “[‘”.$clientID.”’,”.$latitude.”,”.$longitude.”]”;
{
echo “,”;
}
}
}
echo “];”;
$mysqli->close( );
?>
var marker, i;
332 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
</head>
<script type=“text/javascript”>
init( );
</script>
</body>
</html>
Ejecución de archivo
http://proyectomonitoreo.com.mx/gpstracker cambiar el nombre de la
carpeta y poner los archivos dentro de la misma, también se deberá cambiar el nombre de do-
minio según corresponda.
aplicaciones, aunque la más común es probablemente como un sistema de pago. Con NFC en
-
tradora. Diversos transportes públicos de todo el mundo usan NFC para pagar en autobuses y
trenes, aunque también se encuentra en una tarjeta de plástico.
shield y los TAGS.
Materiales a usar
334 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Tablero MDF de 6 mm
Madera u otros materiales sólidos para el anillo
Cable USB
Soldadura
Servomotor
Cables macho-macho
void setup(void) {
Serial.begin(115200);
Serial.println(“Starting the NFC shield”);
nfc.begin( );
//Check the rmware version of the shield
uint32_t versiondata = nfc.getFirmwareVersion( );
if (! versiondata) {
Serial.print(“Cant nd the shield, check you connection”);
while (1); // wait
}
void loop(void) {
//Decalre a variable to store state
boolean success;
//Buffer to store the ID of the card
byte uid[ ] = { 0, 0, 0, 0, 0, 0, 0 };
//Keychain that stores the card information
byte keyID[ ] = {39, 246, 64, 175};
int counter=0;
//Variable to store the length of the ID
byte uidLength;
// Waits for and tag and reads the lenght of the ID and the ID
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0],
&uidLength);
if (success) {
}
Serial.println( );
//If 4 out of 4 i right we unlock
if(counter==4){
Serial.println(“unlocked”);
//if not the card is wrong
}else{
Serial.println(“wrong card try again”);
}
// Wait 1 second before continuing
delay(1000);
}
}
336 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
-
mensaje de desbloqueo en caso de que la comparación sea igual; es importante dar clic en la
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.h>
void setup(void) {
Serial.begin(115200);
Serial.println(“Starting the NFC shield”);
nfc.begin( );
//Check the rmware version of the shield
uint32_t versiondata = nfc.getFirmwareVersion( );
if (! versiondata) {
Serial.print(“Cant nd the shield, check you connection”);
void loop(void) {
//Decalre a variable to store state
boolean success;
//Buffer to store the ID of the card
byte uid[ ] = { 0, 0, 0, 0, 0, 0, 0 };
//Keychain that stores the card information
byte keyID[ ] = {39, 246, 64, 175};
int counter=0;
//Variable to store the length of the ID
byte uidLength;
// Waits for and tag and reads the lenght of the ID and the ID
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0],
&uidLength);
if (success) {
}
Serial.println( );
338 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Servomotor
#include <Servo.h>
//Create servo object
Servo myservo;
void setup( )
{
//Name the signal pin
myservo.attach(9);
}
void loop( )
{
//Rotate the motor from position 0 to 180 degrees
myservo.write(0);
delay(1000);
myservo.write(180);
delay(1000);
}
Prototipo
340 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Conexión de partes
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.h>
#include <Servo.h>
void setup(void) {
Serial.begin(115200);
Serial.println(“Starting the NFC shield”);
nfc.begin( );
myservo.attach(9);
myservo.write(0);
delay(1000);
}
void loop(void) {
//Decalre a variable to store state
boolean success;
//Buffer to store the ID of the card
byte uid[ ] = { 0, 0, 0, 0, 0, 0, 0 };
//Keychain that stores the card information
byte keyID[ ] = {39, 246, 64, 175};
int counter=0;
//Variable to store the length of the ID
byte uidLength;
// Waits for and tag and reads the length of the package and the //ID
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0],
&uidLength);
if (success) {
342 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Desarrollo de proyectos Wearable
Serial.println( );
//If 4 out of 4 i right we unlock
if(counter==4){
Serial.println(“Open door”);
myservo.write(180);
TAG
Un podómetro es un dispositivo electrónico o electromecánico generalmente portátil, que
cuenta cada
por el usuario si se desea la presentación de la distancia recorrida en una unidad de longitud
-
en el cinturón durante todo el día, de manera que registre la cantidad de pasos recorridos y, por
Algunos podómetros también registran erróneamente los movimientos que no son un paso,
-
-
-
-
Conexión al Arduino
344 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
void setup( ){
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop( ){
// Read the 3 values
int xVal = analogRead(xPin);
int yVal = analogRead(yPin);
int zVal = analogRead(zPin);
if (xVal < 310 || xVal > 350 || yVal < 310 || yVal > 350 || zVal < 380 ||
zVal > 420)
{
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
}
-
duino 101; se usarán las características y sensores que posee la tarjeta.
-
Características
346 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
Lectura de un potenciómetro
Diagrama de conexión
Diagrama de conexión
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
void loop(void) {
a=analogRead(A0); //read potentiometer value
sprintf(dato,”%04d”,a); //convert potentiometer value to string u8g2.
clearBuffer( ); // clear the internal
memory
u8g2.setFont(u8g2_font_inr38_mf); // choose a suitable font
u8g2.drawStr(0,60,dato); // write something to the internal memory
u8g2.sendBuffer( ); // transfer internal memory to the display
delay(1000);
}
Conexiones nales
348 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
-
CurieIMU.h es la biblioteca que da acceso a todos los parámetros, características y lecturas del
también de tres ejes. Asimismo, la biblioteca es parte del núcleo de 101 tableros y se carga jun-
de detección de pasos, mismos que se leen con interrupción o sondeo.
contrario, el nuevo valor se imprime en el monitor serie y se almacena.
#include “CurieIMU.h”
const int ledPin = 13;
void setup( ) {
Serial.begin(9600); // initialize Serial communication
while(!Serial) ; // wait for serial port to connect.
// pinMode(13, OUTPUT);
// intialize the sensor:
CurieIMU.begin( );
// turn on step detection mode:
CurieIMU.setStepDetectionMode(CURIE_IMU_STEP_MODE_NORMAL);
// enable step counting:
CurieIMU.setStepCountEnabled(true);
if (stepEventsEnabeled) {
// attach the eventCallback function as the
// step event handler:
CurieIMU.attachInterrupt(eventCallback);
350 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
construirá un botón que se puede poner sobre alguna prenda de vestir y portarse como apoyo
para protegerse en alguna situación de emergencia. A continuación, se presenta el esquema del
Esquema wearable
-
-
-
-
-
municaciones 2G y 3G.
Módulo GSM
son simples comandos de texto que se pueden enviar a través de conexio-
nes en serie a varios chips electrónicos ajustados a las instrucciones del mismo. Históricamente,
-
Descripción de comandos AT
Este comando ordena al módem que establezca una llamada de voz con
un teléfono (llamada telefónica).
ATD1234567890;
El número de teléfono 1234567890 que se muestra en el comando debe
reemplazarse por un número de teléfono que recibirá la llamada.
352 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
354 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
delay(2000);
If (digitalread(5) == 0)
{
EnviaSMS( );
}
void EnviaSMS( )
{
Serial.println(“Enviando SMS”);
356 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
delay(1000);
Internet, desde un sitio web y también desde la aplicación.
https://ifttt.com/
Pantalla de IFTTT
Ingreso de password
358 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
Conectar; el usuario deberá tener al alcance el número donde desea se le envíe el
mensaje de texto SMS, es preciso anteponer 0052 para el caso de México y el número
SMS Settings
360 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
Condición IFTTT
Servicio Webhooks
362 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
Creación de la condición
Selección de la acción
364 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
Aparición de la acción
-
366 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
https://maker.ifttt.com/trigger/{event}/with/key/kUF8xV-qsqV2AaECaP1A-
LFl6DoDleGW2QZJlQNoUQT
https://maker.ifttt.com/trigger/boton_presionado/with/key/kUF8xV-qsqV2AaECaP1A-
LFl6DoDleGW2QZJlQNoUQT
// Libraries
#include <ESP8266WiFi.h>
// WiFi settings
const char* ssid = “wi-name”;
const char* password = “wi-pass”;
// IFTTT settings
const char* host = “maker.ifttt.com”;
const char* eventName = “boton_presionado”;
const char* key = “key”;
void setup( ) {
pinMode(D1,INPUT_PULLUP);
Serial.begin(115200);
delay(10);
WiFi.begin(ssid, password);
void loop( ) {
Serial.print(“connecting to ”);
Serial.println(host);
368 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
// Read all the lines of the reply from server and print them to Serial
while(client.available( )){
String line = client.readStringUntil(‘\r’);
Serial.print(line);
}
Serial.println( );
Serial.println(“closing connection”);
}
}
-
370 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
Sensor
https://www.dfrobot.com/product-83.html
Sensor de sonido
-
te para detectar el volumen en ambiente. Arduino puede recoger la señal de salida imitando la
Pines
void setup( )
{
Serial.begin(9600); // open serial port, set the baud rate to 9600 bps
}
void loop( )
{
372 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Podómetro o contador de pasos
int val;
val=analogRead(0); //connect mic sensor to Analog 0
Serial.println(val,DEC);//print the sound value to serial
delay(100);
}
Interfaz
#include <SoftwareSerial.h>
void setup( )
{
Serial.begin(9600); // open serial port, set the baud rate to 9600 bps
bluetooth.begin(9600);// bluetooth communication begins
}
void loop( )
{
int val;
val = analogRead(0); //connect mic sensor to Analog 0
bluetooth.print(val,DEC);
delay(1000);
}
Condiciones para detección de llanto
Detector de sonido
Bloques de la aplicación
374 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
Resumen
Marcaje de número
RESUMEN
En este capítulo se desarrollaron varios proyectos relacionados con los dispositivos weara-
ble aplicados al mundo real; cada uno representó casos que se tomaron como referencia
para otros posibles proyectos. Se proporcionaron las herramientas necesarias para efec-
tuarlos, y cada uno de ellos se basó en la utilización de placas Arduino que se pueden usar
para wearables.
Se ilustró con dispositivos como smartwatches que cuentan con tecnología del tipo senso-
res, GPS, pulseras, etc.; además, se brindó una idea de cómo desarrollar dispositivos inteli-
gentes para diversos usos, desde personal, en la vida diaria o de tipo industrial.
En el siguiente capítulo se verán las aplicaciones industriales donde se usará Android, con
un enfoque en el control y monitoreo de dispositivos.
Integración con
DISPOSITIVOS
industriales
Contenido Objetivo
10.1 Introducción En este capítulo se desarrollarán las habili-
10.2 Protocolo RS485 y módulos dades para utilizar y crear aplicaciones en
10.2.1 Esquema de montaje la plataforma de Android para monitoreo y
10.2.2 Comunicación RS485 con control de equipos industriales, tales como
Arduino controladores lógicos programables (PLC)
y la integración de Arduino en el ámbito in-
10.3 Conexión de un termopar a Arduino
dustrial; lo cual a su vez permitirá aplicar-
10.3.1 Rangos y límites de error de lo a redes y protocolos industriales. Asimis-
termopar mo, esta herramienta añadirá convergencia
10.4 Modbus RTU transparente a equipos de comunicación,
10.4.1 Aplicaciones industriales con como variadores de velocidad, actuadores
protocolo Modbus RTU y sensores, con lo que será posible crear
10.4.2 Modbus TCP escenarios donde Arduino interactúe con
10.5 Aplicaciones Android para control y equipo industrial, se configurará y realizará
monitoreo de dispositivos industriales el software requerido en esta placa a través
10.5.1 Modbus Droid del uso de Shields Ethernet y módulos Wifi
10.5.2 Scada Touch Lite ESP82266 y de comunicación RS485, mos-
10.5.3 ESP8266 conectado a una trados en la figura 10.1. Al final, se podrá
red industrial integrar una gran cantidad de aplicaciones
con las herramientas vistas en este capítulo.
Resumen
Capítulo 10 · Integración con dispositivos industriales
En la actualidad los dispositivos industriales juegan un papel muy importante en el ámbito
de procesos; sin duda alguna, los dispositivos electrónicos se deben de integrar a estas tec-
nologías para poder satisfacer las necesidades actuales de la industria. Por tal motivo, vere-
mos aplicada la plataforma de desarrollo Arduino en la adaptación e integración de equipos
industriales, con ello se llevará a cabo una comunicación y convergencia entre los dispositi-
vos actuales.
El RS485 es un estándar de comunicaciones ampliamente usado en la industria de microcon-
troladores como Arduino para leer o escribir en otros dispositivos. Es sencillo, robusto y, a di-
ferencia de otras tecnologías, su uso es gratuito. Por estos motivos, muchos otros sensores y ac-
tuadores lo han adoptado como forma de comunicación, y es frecuente en el ámbito industrial.
Una de las ventajas del RS485 es la larga distancia de transmisión: el alcance depende de la
velocidad, es posible conseguir 35 Mbps en distancias inferiores a 10 metros y hasta 100 Kbps
en hasta 1200 metros.
-
tanto, se puede emplear para enviar cualquier tipo de señal, como una digital, PWM, puerto
Un bus RS485 dispone de dos conductores denominados A y B (inversora); para ellos se sue-
le utilizar un cable de par trenzado y así aumentar la inmunidad al ruido. Es posible acceder
hasta 32, 128 o 254 estaciones con un único par trenzado.
receptor y emisor en cada terminal.
El RS485 se emplea frecuentemente en combinación con UART para enviar señales a largas
-
lo Modbus.
378 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
10.2 · Protocolo RS485 y módulos
Protocolo RS485
Por otro lado, es preciso emplear los conductores A y B del par trenzado, que constituyen el
propio bus RS485 y al que estarán conectados todos los dispositivos que pertenezcan al mis-
mo bus.
-
nes RE (Receiver Enable) y DE (Driver Enamble). Si se conectan estos pines a Vcc, el módulo
-
-
Cambio de tensión
-
380 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
10.2 · Protocolo RS485 y módulos
Conexión half-duplex
te) se tendrán que usar dos conversores RS485 en cada dispositivo y dos bus RS485 paralelos
32 dispositivos. El siguiente es el módulo de comunicación RS485 ya con el circuito que nivela
los voltajes para establecer la comunicación.
-
la bornera.
Por las salidas A y B se envían los datos; B es la negación de A, se envían los mismos datos
pero en la línea B están negados, de esta forma se pueden restar ambas señales y eliminar el
ruido para quedarse sólo con la señal de datos. El encargado de esta transmisión diferencial
382 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
10.2 · Protocolo RS485 y módulos
Módulo RS485
Conexión simplex
void loop( )
{
int lectura = analogRead(0);//leemos el valor del potenciómetro (de 0 a 1023)
byte angulo= map(lectura, 0, 1023, 0, 180); // escalamos la lectura a un
valor de ángulo (entre 0 y 180)
Serial.write(angulo); //enviamos el ángulo correspondiente
delay(50);
}
#include <Servo.h>
Servo myservo; // creamos el objeto servo
void setup( )
{
Serial.begin(9600);
myservo.attach(9); // asignamos el pin 9 para el servo.
}
void loop( )
{
384 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
10.2 · Protocolo RS485 y módulos
if (Serial.available( )) {
int angulo = Serial.read( ); //Leemos el dato recibido
if(angulo<=180) //vericamos que sea un valor en el rango del servo
{
myservo.write(angulo); //movemos el servomotor al ángulo correspondiente.
}
}
}
y en el código únicamente hay que tener en cuenta las direcciones de los esclavos.
enviar la dirección del esclavo, la cual queda de la siguiente forma:
El esclavo interpreta esta trama y, si coincide su dirección, entonces realiza la función corres-
pondiente; si es una función que necesite responder, en la trama también agrega la dirección,
es de la forma:
En este caso, entre la dirección y el valor se envía una coma como separador, puesto que ambos
void loop( )
{
386 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
10.2 · Protocolo RS485 y módulos
//----------------------------
delay(50);
//----------n de la respuesta----------
}
void funcion(int dato)
{
if(dato>500)
digitalWrite(ledPin, HIGH);
else
digitalWrite(ledPin, LOW);
}
#include <Servo.h>
void loop( )
{
if(Serial.available( ))
{
if(Serial.read( )==’I’) //Si recibimos el inicio de trama
{
int direccion=Serial.parseInt( ); //recibimos la direccion
if(direccion==mydireccion) //Si direccion es la nuestra
{
char funcion=Serial.read( ); //leemos el carácter de función
388 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
10.3 · Conexión de un termopar a Arduino
else if(funcion==’L’)
{
if(Serial.read( )==’F’) //Si el n de trama es el correcto
{
int lectura = analogRead(0); //realizamos la lectura del
sensor
digitalWrite(EnTxPin, HIGH); //rs485 como transmisor
Serial.print(“i”); //inicio de trama
Serial.print(mydireccion); //direccion
Serial.print(“,”);
Serial.print(lectura); //valor del sensor
Serial.print(“f”); //n de trama
Serial.ush( ); //Esperamos hasta que se envíen los datos
digitalWrite(EnTxPin, LOW); //RS485 como receptor
}
}
}
}
}
delay(10);
}
Si se desea que un código para un segundo esclavo tenga la misma función, sólo se debe cam-
biar la dirección.
Un
-
en forma de alambre.
Debido a que un termopar mide en amplios rangos de temperatura y puede ser relativamente
pueden seleccionar:
Rango de temperatura
Resistencia química del termopar o material de la funda
Resistencia a la abrasión y a la vibración
Requisitos de instalación (es posible que sea necesaria la compatibilidad del equipo
entorno circundante. Este tipo ofrece el mejor tiempo de respuesta, pero está limitado al uso
en aplicaciones en seco, no corrosivas y no presurizadas.
390 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
10.3 · Conexión de un termopar a Arduino
Acero inoxidable 304 900 °C (1650 °F) Muy buena Buena Muy buena Muy buena
Inconel 600 1148 °C (2100 °F) Muy buena Buena Muy buena Muy buena
Cobre - Constantan
T -200°C a 370°C
Cobre - Constantan
Cromel - Alunsel
K -190°C a 260°C
(Cromo - Niquel) - (Aluminio - Niquel)
En este proyecto se utilizará un termopar tipo K para conectarse a la placa Arduino y sensar
las temperaturas detectadas; para ello, se utilizará un módulo de acondicionamiento de señal
marca Adafruit.
Módulo MAX31855
https://github.com/
adafruit/Adafruit-MAX31855-library
//tipo K
//conexion cable blanco - (negativo)
//conexion cable rojo + (positivo)
#include “Adafruit_MAX31855.h”
392 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
10.3 · Conexión de un termopar a Arduino
int thermoDO = 3;
int thermoCS = 4;
int thermoCLK = 5;
void setup( ) {
Serial.begin(9600);
Serial.println(“MAX31855 test”);
// wait for MAX chip to stabilize
delay(500);
}
void loop( ) {
double c = thermocouple.readCelsius( );
if (isnan(c)) {
Serial.println(“Something wrong with thermocouple!”);
} else {
Serial.print(“Temperatura Grados centigrados = ”);
Serial.println(c);
}
delay(1000);
}
Pantalla de descarga
agregar el Arduino y el módulo de comunicación, el sensor se adapta a la necesidad para comu-
nicarse y así puede interactuar con otro dispositivo. En este ejemplo el dispositivo se conectará
que monitoree las temperaturas.
Arduino (esclavo), módulo con acondicionador de señal y termopar
Red de datos RS485
Aplicación wearable
Si se considera el siguiente esquema, se puede emplear este tipo de comunicación para una
aplicación industrial donde haya intercambio con un dispositivo wearable, como un teléfono
móvil o un smartwatch:
394 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
10.3 · Conexión de un termopar a Arduino
Red RS485
Sensor ultrasónico
El sensor ultrasónico URM04 está desarrollado con base en el popular sensor URM37, que uti-
liza una interfaz RS485, ésta permite el uso simultáneo de múltiples sensores; con la interfaz
RS485 es posible que varios sensores trabajen juntos, hasta 32 URM04 se pueden conectar a
la vez en una red.
es posible diseñar compensadores para controlar perfectamente los motores según la distan-
cia del obstáculo.
: Este sensor requiere una interfaz RS485. No se puede conectar directamente a un Ar-
duino.
396 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
10.3 · Conexión de un termopar a Arduino
398 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
10.3 · Conexión de un termopar a Arduino
Es posible realizar una red de sensores de la siguiente manera:
Red de sensores
# Editor : Lauren
# Date : 2012.2.8
# Ver : 0.3
# Product: URM04 Ultrasonic sensor
# Specication
* Detecting range: 4cm-500cm
* Resolution : 1cm
* Interface : RS485
* Units: Range reported in cm
* Temperature sensor: 12 bits reading from serial port
# Description:
# nish driving single URM function
# if use the IO expansion shield to drive the urm sensors, the measuring rate
may be 20Hz or slower[if you want].
# The sample code is compatible with the Arduino IDE 1.0 and also the earlier
version.
*/
#include “Urm4parser.h”
void setup( ){
urmInit( ); // Init the URM04 sensor
}
void loop( ){
static unsigned long timePoint = 0;
runUrm4( ); // Drive URM04 Sensor and transmit the protocol to the sen-
sor via RS485 interface
// (IO Expansion shield V5 for arduino)
decodeURM4( ); // Read and get the distance value from the sensor
}
void PrintData( ){
Serial.print(“Distance value: ”);
for(int i = 0; i < urmAccount; i++){
Serial.print(urmData[i]);
Serial.print(“ ”);
}
/*
for(int i = 0; i < urmAccount;i ++){
Serial.print(urmID[i],HEX);
Serial.print(“ ”);
}
*/
Serial.println( );
}
Modbus suele ir sobre RS485; es un protocolo de comunicaciones situado en el nivel 7 del mo-
-
-
vertido en un protocolo de comunicaciones estándar de facto en la industria, es el que goza de
400 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
-
nes son:
Es público
Su implementación es fácil y requiere poco desarrollo
Maneja bloques de datos sin suponer restricciones
Modbus es un protocolo de comunicación que se puede usar para enviar y recibir datos a través
de una línea de bus serie, como RS232 y RS485. En este capítulo, se aprenderá a usar el proto-
colo de comunicación Modbus a través de una línea de bus RS485 para conectar dispositivos
-
todos los dispositivos (esclavos) al nodo maestro.
-
tocolo en común, es que la placa Arduino puede interactuar con dispositivos de tipo industrial;
esto conduce a otro nivel de control, ya que de esta forma el Arduino puede leer, escribir valo-
res a los otros dispositivos y también leer de los mismos equipos.
-
guientes:
Un variador de velocidad controlado desde Arduino.
Tener todos los dispositivos anteriores conectados en una misma red industrial,
interactuando entre ellos, enviando y recibiendo datos.
07: READ STATUS
402 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
Diagrama de conexiones
byYako1976 identi.io
Pantalla de la interfaz
Aplicación en marcha
ADC0,
ADC1,
INDIG0,
INDIG1,
INDIG2,
INDIG3,
OUTD0,
OUTD1,
OUTD2,
OUTD3,
AOUT0,
TOTAL_ERRORS,
TOTAL_REGS_SIZE
// total number of registers for function 3 and 16 share the same
register array
};
void setup( )
{
modbus_congure(38400, 1, 2, TOTAL_REGS_SIZE);
//digital outputs
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
404 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
//modbus led
pinMode(8, OUTPUT);
//PWM
pinMode(9, OUTPUT);
holdingRegs[TOTAL_ERRORS] = modbus_update(holdingRegs);
holdingRegs[0]=analogRead(0);
holdingRegs[1]=analogRead(1);
//digital inputs
for (int i=0; i < 4; i++){
holdingRegs[i+2]=digitalRead(10+i);
}
//PWM
analogWrite(9, holdingRegs[10]);
Cable RS485
Interfaz de pantalla
406 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
Pantalla de control
#dene TIMEOUT 500 //Timeout for a failed packet. Timeout need to larger
than polling
#dene POLLING 2 //Wait time to next request
total_requests,
total_failed,
transfer_rate,
transfer_delay,
led_grn,
led_blue,
led_red,
graph,
TOTAL_REGS //=15
};
//Modbus packet
Packet packets[NO_OF_PACKET];
int graph_value = 0;
int slider_value = 0;
long sm,em,dm;
uint16_t temp,num;
const uint8_t hmiID = 1; //ID of HMI. The ID need to match, unless program
will not work
void setup( )
{
408 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
//Start Modbus
master.begin(&Serial1, BAUD, BYTE_FORMAT, TIMEOUT, POLLING, RETRIES, TxE-
nablePin);
pinMode(13, OUTPUT);
}
void loop( )
{
master.update( ); //polling
sm = millis( );
}//end loop
410 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
Pantalla de conguración
En este proyecto se conectará la placa Arduino con un módulo de comunicación RS485 para
enlazarlo a una red con la comunicación de un sensor de temperatura.
más de un dispositivo industrial a Arduino con sólo dos cables compartidos, se pueden conec-
Módulo R2485
412 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
Sensor de temperatura
Conguración de jumper
414 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
3.
una fuente de alimentación de pared.
Conexiones nales
Sketch de Arduino
// Include these libraries for using the RS-485 and Modbus functions
#include <RS485.h>
#include <ModbusMaster485.h>
#include <SPI.h>
void setup( )
{
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
void loop( )
{
// This variable will store the result of the communication
// result = 0 : no errors
// result = 1 : error occurred
int result = node.readHoldingRegisters(address, bytesQty);
416 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
if (result != 0) {
// If no response from the slave, print an error message
Serial.println(“Communication error”);
delay(1000);
}
else {
// If all OK
Serial.print(“Read value : ”);
Serial.print(“\n”);
delay(2000);
Pantalla de temperatura
Es importante mencionar que este módulo shield multiprotocolo de radio permite conectarse
con otros medios, como se muestra a continuación:
caso, la placa puede interactuar con un dispositivo de tipo industrial y entre sí misma. Para
este proyecto es necesario un módulo de comunicación serial que se conectará a la placa. El
418 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
Interfaz de comunicación
byYako1976 identi.io
Esquema de conexión
Seleccionar Baud rate a 9600
Escribir la dirección del nodo con 1
420 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
Pasos de conguración
Código de Arduino:
#include <DF1.h>
#dene DF1destination 1
#dene DF1baud 9600
#dene DF1format SERIAL_8N1
#dene DF1timeout 1000
enum
{
DF1PACKET1,
DF1PACKET2,
DF1TOTAL_NO_OF_PACKETS
};
DF1Packet DF1packets[DF1TOTAL_NO_OF_PACKETS];
#dene AnalogOutputPin 9
void setup( ) {
DF1_construct(DF1packet1, DF1destination, DF1_READ_N7, 0, 1, DF1readRegs);
void loop( ) {
DF1_update( );
//wrire N7:1
int sensorValue = analogRead(A0);
int outputValue = map(sensorValue, 0, 1023, 0, 32767);
DF1writeRegs[0] = outputValue;
//Read N7:0
unsigned int N7_0 = DF1readRegs[0];
N7_0 = map(N7_0, 0, 32000, 0, 255);
analogWrite(AnalogOutputPin, N7_0);
}
-
léfono móvil, un smartwatch, etc., y de esta manera interactuar para llevar a cabo monitoreo
y supervisión entre dispositivos, todo esto con la integración de los elementos y tecnología
requerida.
422 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
Actuadores
Esquema de interacción
-
colo de comunicaciones estándar de facto en la industria, es el que goza de mayor disponibili-
Modbus permite el control de una red de dispositivos, por ejemplo, un sistema de medida de
temperatura y humedad, y con ello comunica los resultados a una computadora. Modbus tam-
-
-
Modbus tiene la dirección del dispositivo destinatario de la orden; todos los dispositivos reci-
ben la trama pero sólo el destinatario la ejecuta (salvo un modo especial denominado Broad-
Modbus son entramados (separados) por periodos inactivos (silenciosos).
Conexión de Arduino a una red Modbus TCP con el módulo Ethernet shield
Ethernet shield interactuará en una red industrial.
Red de interacción
424 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Modbus RTU
// conguraciones
void setup( )
{
byte mac[ ] = {0x90, 0xA2, 0xDA, 0x00, 0x0A, 0xC2 };
byte ip[ ] = {192,168,1,150};
void loop( )
{
Mb.Run( ); // inicia la comunicación modbus
analogWrite(9,Mb.R[2]);
Mb.R[3] = map(Mb.R[0],0,1021,0,32767);
Mb.R[4] = map(Mb.R[0],0,1021,-127,127);
Mb.R[5] = map(Mb.R[0],0,1021,0,100);
-
dio visual y de manipulación (interfaz) que permite la interacción humana (hombre) con un
-
pantalla.
-
quier otro dispositivo a través de una red industrial.
para uso personal o pequeñas aplicaciones, están fuera del alcance.
426 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Aplicaciones Android para control y monitoreo de dispositivos industriales
Dispositivos HMI
Sin embargo, gracias a los avances tecnológicos en la actualidad es posible contar con herra-
mientas de desarrollo relativamente económicas para realizar estas terminales con platafor-
mas muy comerciales y de uso común, por ejemplo las tablet y celulares. Se puede usar la pla-
taforma Android, que cuenta con diversas aplicaciones, algunas muy económicas e inclusive
gratuitas aunque con ciertas limitaciones.
plataformas como Arduino que, mediante la programación adecuada, puede interconectarse a
asociadas a un control.
Modbus-Droid
Scada Touch Basic ($90 pesos, sin límite de objetos 3 páginas, 1 proyecto)
Es una aplicación que se utiliza como herramienta para monitorear los principales registros
Modbus dentro de una red.
indican las direcciones Modbus a monitorear.
-
Es una aplicación gratuita en modo demo con sus limitantes. Es posible adquirir la versión
428 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Aplicaciones Android para control y monitoreo de dispositivos industriales
Pantalla de monitoreo
Parámetros
Pantalla de conguración
Pantalla nal
ESP8266 inalámbricos; desde una aplicación para Android Modbus Droid se puede monitorear
y controlar el estado de las entradas y las salidas del dispositivo.
430 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Aplicaciones Android para control y monitoreo de dispositivos industriales
Conexión de ESP8266
void datos_modbus( )
{
// (en Arduino son registros HR 0-5)
Mb.MBHoldingRegister[0] = analogRead(A0); // canal A0
Mb.MBHoldingRegister[1] = random(0,128); // valor random 0-128
Mb.MBHoldingRegister[2] = random(-32768,32767); // valor random +-32768
Mb.MBHoldingRegister[3] = !digitalRead(D1); // estado del botón 1,0 en en-
trada D1
digitalWrite(D2,Mb.MBHoldingRegister[4]); // activa/apaga led en salida D2
int PWM = map(Mb.MBHoldingRegister[5],0,100,0,255);
analogWrite(D5,PWM); // envia valor PWM a salida D5
}
void setup( )
{
pinMode(D1, INPUT_PULLUP);
pinMode(D2,OUTPUT);
Mb.begin(“Nombre_RED”, “contraseña”); // datos del access point a conectarse
datosWiFi( ); // rutina que congura datos de red
delay(100);
}
void loop( )
{
Mb.Run( );
delay(10);
void datosWiFi( )
{
IPAddress local_IP(192, 168, 1, 40); // modica la dirección IP
IPAddress gateway(192, 168, 1, 1); // modica el gateway
IPAddress subnet(255, 255, 255, 0); // modica la subnet
WiFi.cong(local_IP, gateway, subnet);
}
Pantalla de monitoreo
432 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Aplicaciones Android para control y monitoreo de dispositivos industriales
En el siguiente proyecto se verán los aspectos generales de cómo controlar y monitorear des-
de una aplicación en Android un controlador lógico programable conectado a una red Modbus
Pantalla de conguración
-
-
nicación.
Canales de conguración
434 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Aplicaciones Android para control y monitoreo de dispositivos industriales
Registros a congurar
B9: Sólo lectura (representa entradas)
N7: Sólo lectura (representa números enteros)
holding registers)
N15-N19
registers
Si en un momento dado se requiere leer un valor, por ejemplo, de un timer o contador, se debe
asignar el valor a una de estas localidades de memoria mostradas en la tabla anterior o a cual-
Registro N19/0
436 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
· Aplicaciones Android para control y monitoreo de dispositivos industriales
Temporizador
Salida y monitoreo
Escritura de COIL
Para poder leer o escribir es necesario conocer los registros Modbus, que tienen como nomen-
clatura:
Registros Modbus
A continuación se presentan las lecturas de los registros Modbus desde la aplicación en An-
droid:
438 Arduino y Android. Proyectos wearable para smart watches, smart tv y dispositivos móviles.
Resumen
RESUMEN
En este capítulo se vieron aspectos relacionados con aplicaciones industriales enfocadas al
manejo de dispositivos móviles Android, la integración de la placa Arduino como plataforma
y la convergencia con equipos industriales como PLC, actuadores industriales, variadores de
velocidad, pantallas HMI, etc.
Se describió la conexión de un sensor termopar en una red industrial para después enviar
valores a un smartwatch o teléfono móvil. El enfoque principal de este capítulo fue dar a co-
nocer una serie de escenarios en los cuales se mostró la comunicación de equipos industria-
les entre sí para utilizarse en un proceso o situación real. Otro aspecto importante fue el uso
de una placa Arduino para llevarla a otro nivel: darle una aplicación con equipos industriales y
convivir entre ellos para el envío y recepción de información.
Con lo anterior, el lector podrá desarrollar proyectos; por ejemplo, interconectar el Arduino
y converger con equipos industriales a través de protocolos de comunicación, es decir, un Ar-
duino podría leer la temperatura y después de que ocurra cierta condición enviar un estado
de activación a un PLC, luego activar un proceso, como un contador o temporizador. Con es-
tos escenarios se pueden realizar diferentes aplicaciones para enviar estados de escritura y
lectura entre sí.
En los siguientes tres capítulos de contenido Web se desarrollará una serie de proyectos de
aplicación con la plataforma de Android y Arduino.