Está en la página 1de 161

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA


UNIDAD PROFESIONAL “ADOLFO LÓPEZ MATEOS”

INGENIERÍA EN COMUNICACIONES Y ELECTRÓNICA

“Diseño y Construcción De Un Sistema De Comunicación Vía


Bluetooth”

PROYECTO TERMINAL

QUE PARA OBTENER EL TÍTULO DE:


INGENIERO EN COMUNICACIONES Y ELECTRÓNICA

PRESENTA:

Oswaldo Rodríguez Pérez

ASESORES:

Dra. Carmen Beatriz Rodríguez Estrello


Ing. Guillermo Santillán Guevara

MÉXICO, D.F. ENERO 2015


AGRADECIMIENTOS:

A mi madre, por estar en los momentos importantes de mi vida, por ser el ejemplo para salir adelante
y por los consejos que me han sido de gran ayuda para mi vida y crecimiento. Gracias por tus
guardias, por tus desvelos, por la dedicación que tienes por todos tus hijos y por confiar en mí al
darme la oportunidad de culminar esta etapa de mi vida.

A l Dr. Vladimir por su apoyo, interés y paciencia para que se llevaran a cabo este proyecto,

Un agradecimiento muy grande a mis asesores de Tesis la Dra. Carmen Beatriz Rodríguez
Estrello y el Ing. Guillermo Santillán Guevara pues ellos fueron los que guiaron este proyecto.

Al INSTITUTO POLITÉCNICO NACIONAL por ser mi segunda casa y


brindarme la oportunidad de formarme y mostrarme el sentido de su lema “la técnica al servicio
de la patria”
Instituto Politécnico Nacional ESIME

“Diseño y
Construcción De Un
Sistema De
Comunicación Vía
Bluetooth”

I | Página
Instituto Politécnico Nacional ESIME

INTRODUCCIÓN

En los últimos años, los teléfonos móviles han experimentado una gran evolución, desde los
primeros equipos grandes y pesados, pensados sólo para hablar por teléfono en cualquier
parte, a los últimos modelos, que permiten la comunicación, no solo por voz, sino el envío de
datos. Para ello, en los teléfonos actuales se ha utilizado Android, que es un sistema
operativo y una plataforma de software libre, basado en Linux para teléfonos móviles.
Además, también usan este sistema operativo tablets, netbooks, reproductores de música e
incluso PC’s. Android permite programar en un entorno de trabajo para aplicaciones sobre
una máquina virtual Dalvik (una variación de la máquina de Java con compilación en tiempo
de ejecución). Además, lo que le diferencia de otros sistemas operativos, es que Android es
de código libre.

Actualmente existen en el mercado una serie de tecnologías mediante las cuales podemos
enviar información o incluso realizar conexiones entre diferentes aparatos electrónicos sin la
necesidad del uso de cables, los cuales funcionan de forma eficiente pero su instalación y
configuración en ocasiones es bastante engorrosa, tal es el caso del estándar Bluetooth para
redes personales inalámbricas

El trabajo desarrollado en esta Tesis se basa en la conexión de dispositivos en una red de


área personal con el fin de controlar y monitorear una casa habitación de manera remota a
través de un teléfono inteligente.

II | Página
Instituto Politécnico Nacional ESIME

PLANTEAMIENTO DEL PROBLEMA

El monitoreo y control remoto de las casas habitación es un tema de actualidad en aumento


constante, la demanda de mejorar la calidad de vida de las personas ha exigido un desarrollo
tecnológico continuo. Se han diseñado diferentes elementos que día a día pasan de ser lujos
a necesidades.

El control y monitoreo de una casa habitación es una de las necesidades que actualmente se
pueden solucionar con redes de área personal, en combinación con el uso de teléfonos
celulares.

La idea principal en esta Tesis es investigar sobre el monitoreo remoto y local, aplicando los
conceptos en una vivienda colocando equipos para soluciones automatizadas, haciendo que
interactúen en base a un sistema de seguridad y que tengan la capacidad de ser
controlados por medio de un teléfono celular, ya sea mediante el uso de la tecnología
Bluetooth o mediante Mensajes de Texto.

III | Página
Instituto Politécnico Nacional ESIME

OBJETIVO GENERAL

Diseñar y construir un sistema de comunicación bidireccional vía Bluetooth entre un


microprocesador (sistema de control) y un teléfono inteligente (acceso remoto y local) para
monitorear procesos de una casa habitación.

OBJETIVOS PARTICULARES
Con el objetivo de realizar un sistema que permita el monitoreo remoto y/o local, se pretende
realizar una conexión simple entre un teléfono inteligente y un microcontrolador mediante la
tecnología Bluetooth y Mensajes de Texto. Para ello, es necesario dividir este trabajo en 4
partes fundamentales para el buen entendimiento del mismo:

• Se dará una visión global de la tecnología Bluetooth y cuáles son sus


principales características, así como el funcionamiento y la estructura de los elementos que
ocuparemos en este trabajo (teléfonos celulares y microcontroladores).

• Se expondrán los conceptos más importantes para la elaboración de una


aplicación para Android, se realizará mediante 2 Aplicaciones; la primera realizará una
conexión inalámbrica entre teléfono celular inteligente y un microcontrolador vía Bluetooth,
para enviar información entre ellos, la segunda Aplicación, a través de la validación de un
Mensaje de Texto, mandará señales de control al microcontrolador vía Bluetooth

• Se diseñará un programa para el microcontrolador MSP430 de Texas


Instruments, explotando sus principales características y, recopilando todos los datos
enviados por los sensores una vez que el usuario así lo requiera.

• Se pondrán a prueba los elementos del sistema de comunicación,


ejemplificando las características elementales de los sensores que utilizamos para censar las
variables a controlar de una casa habitación.

IV | Página
Instituto Politécnico Nacional ESIME

JUSTIFICACIÓN

A lo largo de los estudios de Ingeniería en Comunicaciones y Electrónica, con especialidad


en Comunicaciones se estudian diferentes lenguajes de programación y mecanismos de
comunicación, así como el uso de microcontroladores. Actualmente, es factible programar
los teléfonos celulares como cualquier PC, lo que nos permite usar un teléfono celular para
un número infinito de aplicaciones.

Los microcontroladores están conquistando el mundo, están presentes en nuestro trabajo, en


nuestra casa y en nuestra vida, en general. Pero la invasión acaba de comenzar y el
nacimiento del siglo XXI será testigo de la conquista masiva de estas diminutas
computadoras, que gobernarán la mayor parte de los aparatos que fabricamos y usamos los
humanos.

Por otro lado, los dispositivos móviles disponen de diferentes herramientas de comunicación
como Bluetooth, 3G, Wi-Fi, herramientas de medición como acelerómetro, giroscopio,
barómetro concentrados en un dispositivo que cabe en la palma de la mano; tal es el abanico
de posibilidades que en algunas misiones espaciales han sido utilizados como un aparato
más de medición.

Por estas razones, en este trabajo de Tesis se desarrollan 2 aplicaciones para un teléfono
celular con sistema operativo Android capaz de enviar y transmitir información vía remota y
local, así como enviar y procesar mensajes de texto para decidir y leer el estado de las
diferentes variables que interactúan en una casa habitación. Este trabajo de Tesis no
consiste únicamente en la captura de datos y su presentación al usuario mediante el uso de
texto, sino en aplicar técnicas como programación orientada a objetos, analizar y generar
una clasificación sobre los estilos de operación en base a un análisis de las características
de los sensores sobre los que se ha diseñado este proyecto. El objetivo final es permitir el
control y monitoreo de una casa habitación.

V | Página
Instituto Politécnico Nacional ESIME

METODOLOGÍA

La obtención de la información necesaria para la presente investigación es realizada por


medio de una investigación en las ciencias de la ingeniería. Se presentan una serie de
elementos que vinculan la forma habitual para el monitoreo y control a distancia de una casa
habitación. A través del uso de cotidiano de los teléfonos celulares y la amplia gama de
conectividad que estos nos permiten, se elige la tecnología Bluetooth como medio de
conexión. Gracias a la versatilidad que presentan los microcontroladores y al uso de
ellos en la práctica estudiantil, es posible proponer un modelo de conexión mediante un
módulo Bluetooth el cual permite una comunicación bidireccional, esta última función
marca la pauta para la elección de mecanismos (sensores) que permitan interpretar los
diferentes procesos que se llevan a cabo en una casa habitación y así detallar los
siguientes bloques definidos.

 Realizar una investigación sobre: teléfonos celulares, comunicación Bluetooth,


microcontroladores y sensores.

 Identificar los componentes idóneos en base a los requerimientos del monitoreo


de una casa habitación.

 Diseñar una serie de programas que permitan la conexión entre un teléfono


celular y un microcontrolador para la obtención de datos y su presentación.

La información para el desarrollo de este proyecto es de fuentes principalmente


primarias: como lo son libros, artículos de revistas científicas y materias cursadas
durante la carrera de ingeniería en comunicaciones y electrónica, permitiendo la
elaboración de esta Tesis.

VI | Página
Instituto Politécnico Nacional ESIME

ANTECEDENTES
BeeWi:

La compañía BeeWi Simply Wireless se dedica a ofrecer productos con la última tecnología
en Wi-Fi y Bluetooth en Europa. Esta compañía tiene un vehículo a escala, copia de un Mini
Cooper, controlado por smarthphones (incluye la plataforma Android). La transferencia de
datos se lleva a cabo mediante Bluetooth, lo que limita su espacio de trabajo entre 10-15
metros.

Tiene dos formas de controlarlo, la primera es usando la pantalla táctil de manera que
mediante presionar la pantalla se indica la dirección y sentido de giro de las llantas. Por su
parte; la segunda forma es usando los acelerómetros del teléfono móvil para indicar sentido
de giro y dirección (Figura A y B).

Figura A [1]. Figura B [1].

En la Figura A y se observa la interfaz para el control mediante la pantalla táctil y en la Figura


B Interfaz para el control usando los acelerómetros (Motion Control). Este vehículo utiliza tres
baterías AA, es compatible con versiones iguales o superiores a Android 2.1 y hace uso de
servomotores para la dirección. Es necesario descargar la aplicación para el dispositivo
móvil desde el Android/Play Store, sin ningún costo.

VII | Página
Instituto Politécnico Nacional ESIME

AR.Drone:

La compañía Parrot, se dedica a la creación y desarrollo de dispositivos controlados por


teléfonos celulares cuenta con las siguientes certificaciones en calidad: ISO 9001, ISO TS
16949 e ISO 14001. El proyecto a analizar es el AR Drone. Es una cuadricóptero controlado
por teléfonos móviles incluyendo plataforma Android. Sin duda alguna es el invento con
más tecnología y desarrollo actualmente (Figura C). Los controles y la transmisión de video
se llevan a cabo por conexión Wi–Fi, tiene control táctil y de igual forma utilizando los
acelerómetros. Para la seguridad del dispositivo se cuenta con una pantalla de emergencia
en el celular y sensores de contacto para bloquear las hélices. Cuenta con 2 cámaras,
horizontal y vertical con una cobertura de 93º y 64º respectivamente.

Tiene sensores de distancia como el altímetro (6 metros), sensores de posición como los
acelerómetros y el girómetro, finalmente cabe mencionar que tiene piloto automático y
estabilizador automático también. Sin duda es el producto más completo de nuestros
días, la batería es de litio y tiene una duración de 12 minutos en el aire, tiempo razonable
tomando en cuenta todo lo que contiene.

Figura C [2]

El AR Drone está construido de fibra de carbón y plástico de alta resistencia PA66. Tiene
tecnología MEMS (Micro electro-mechanical systems; Sistema Micro Electro-Mecánico).
Los motores que utiliza son de tipo brushless (4 motores), finalmente, es importante
conocer que la resolución es VGA (640x480 pixeles).

VIII | Página
Instituto Politécnico Nacional ESIME

Índice

INTRODUCCIÓN .................................................................................................................... II

PLANTEAMIENTO DEL PROBLEMA ................................................................................... III

OBJETIVO GENERAL ......................................................................................................... IV

OBJETIVOS PARTICULARES............................................................................................. IV

JUSTIFICACIÓN ................................................................................................................... V

METODOLOGÍA................................................................................................................... VI

ANTECEDENTES................................................................................................................ VII

CAPÍTULO 1 | MARCO TEÓRICO...................................................................................... 2

1.1 Redes De Comunicaciones. ............................................................................... 2

1.1.1 Redes De Área Personal (PAN). .................................................................. 5

1.1.2 Redes De Área Local (LAN). ........................................................................ 5

1.1.3 Redes De Área Amplia (WAN). .................................................................... 6

1.2 La Tecnología Bluetooth..................................................................................... 6

1.2.1 Protocolos Utilizados En El Estándar Bluetooth............................................. 9

1.2.2 Canales. ...................................................................................................... 10

1.2.3 Trama y Paquete. ....................................................................................... 12

1.2.4 Principios Operativos. ............................................................................... 14

1.2.5 Modos Bluetooth. ....................................................................................... 16

1.3 Teléfonos Celulares. ........................................................................................... 20

1.3.1 Generaciones De Los Teléfonos Celulares. .................................................. 20

1.3.2 Arquitectura De Los Teléfonos Celulares. ............................................... 22

1.3.3 Sistemas Operativos De Los Teléfonos Celulares................................... 25

1.3.4 Versiones De Android. ............................................................................... 28

1.4 Microcontroladores. .......................................................................................... 30

1.4.1 Tipos De Microcontroladores. ................................................................... 30

IX | Página
Instituto Politécnico Nacional ESIME

1.4.2 Arquitectura De Los Microcontroladores. ................................................ 31

1.5 Mensajes De Texto. ........................................................................................... 32

1.6 Funcionamiento De Los SMS En Android. ...................................................... 33

CAPÍTULO 2 | ESTRUCTURA DEL PROGRAMA EN ANDROID. ................................... 35

2.1 Android. ............................................................................................................. 35

2.2 Plataformas De Desarrollo. ............................................................................... 35

2.3 Aplicaciones En Android. ................................................................................. 38

2.3.1 Estructura De Las Aplicaciones Para Android. ........................................ 39

2.3.2 Estructura De Un Proyecto Para Android Con ECLIPSE. ........................ 40

2.4 Manejo De Bluetooth En Android. .................................................................... 42

2.5 Transmisión De Datos Utilizando Bluetooth. .................................................. 44

2.6 Descripción De La Aplicación Realizada En Android. .................................... 49

2.6.1 Validación De Usuario. .............................................................................. 52

2.6.2 Comunicación Bluetooth. .......................................................................... 53

2.6.3 Comunicación Remota. ............................................................................ 56

2.6.4 Recepción y Procesamiento. ..................................................................... 57

CAPÍTULO 3 | ESTRUCTURA DEL PROGRAMA EN EL MICROCONTROLADOR. ...... 61

3.1 Tarjeta De Desarrollo. ....................................................................................... 61

3.2 Entorno De Desarrollo Para El MSP340. .......................................................... 66

3.3 Lenguaje De Programación. ............................................................................. 68

3.4 Descripción Del Programa Realizado Para El Microcontrolador MSP430 ..... 74

CAPÍTULO 4 | IMPLEMENTACIÓN Y PRUEBAS. ........................................................... 83

4.1 Sensores. ........................................................................................................... 83

4.1.1 Descriptores Estáticos De Un Sensor ...................................................... 83

4.1.2 Tipos De Sensores. ................................................................................... 84

4.2 Puesta En Marcha. ............................................................................................ 90

X | Página
Instituto Politécnico Nacional ESIME

Conclusiones ................................................................................................................. 100

Bibliografía .................................................................................................................... 102

Glosario de Términos.................................................................................................... 104

Glosario de Acrónimos ................................................................................................. 106

Anexo 1 Identificador Base Único Universal (UUID) ................................................. 111

Anexo 2 Código Fuente De Las App´s ......................................................................... 122

Anexo 3 Programa En Energía ..................................................................................... 135

Anexo 4 Especificaciones De Los Sensores ............................................................... 142

Anexo 5 Módulo Bluetooth ........................................................................................... 147

XI | Página
Instituto Politécnico Nacional ESIME

CAPÍTULO 1 |“MARCO
TEÓRICO”

1 | Página
Instituto Politécnico Nacional ESIME

CAPÍTULO 1 | MARCO TEÓRICO

1.1 Redes De Comunicaciones.

El objetivo de las redes de comunicaciones es ofrecer servicios de transferencia de información


entre equipos terminales a través de señales eléctricas. Por lo tanto, los equipos terminales son
aquellos elementos de red usados para acceder a los servicios de transferencia de información
que ofrece la red [3].

Las redes de información o datos varían en tamaño y capacidad, pero todas las redes tienen
cuatro elementos básicos en común:

 Protocolos y estándares. Utilizados para regular cómo se envían, direccionan, reciben e


interpretan los mensajes.

 Los mensajes o unidades de información que viajan de un dispositivo a otro.

 La forma de interconectar los dispositivos a través de un medio físico que puede


transportar los mensajes de un dispositivo a otro.

 Los dispositivos de la red que intercambian mensajes entre sí.

Modelo OSI.

El modelo de referencia para la interconexión de sistemas abiertos OSI (Open Systems


Interconnection) es un marco de referencia para definir la arquitectura de redes, en términos de
los cuatro elementos descritos anteriormente. El modelo OSI surge de la necesidad de
interconectar sistemas de procedencia diversa para el intercambio de información. Los
estándares definidos en el modelo OSI describen las reglas generales que deben seguir los
equipos de comunicaciones para que el intercambio de datos sea posible dentro de una
infraestructura que esté compuesta de una gran variedad de equipos de diferentes proveedores
[4]. El modelo OSI se divide en capas; en la Figura 1.1 se muestran las siete capas numeradas,
cada una de las cuales realiza una función específica.

2 | Página
Instituto Politécnico Nacional ESIME

Figura 1.1 Capas del modelo OSI.

Las funciones definidas en cada capa son:

 Física: Establece las especificaciones para realizar la transmisión, tales como medio de
transmisión, conectores, interfaces.
 Enlace de datos: Establece los protocolos del control directo de enlaces y acceso al
medio.
 Red: Especifica los protocolos de conectividad y selección de ruta entre sistemas.
 Transporte: Establece los protocolos de conexiones extremo a extremo, detección de
fallas y control de flujo.
 Sesión: Establece los protocolos de administración y terminación de sesiones entre
aplicaciones.
 Presentación: Establece la estructura y formato de los datos garantizando que sean
legibles.
 Aplicación: Define las especificaciones para suministrar los servicios de la red a los
procesos de aplicaciones.

3 | Página
Instituto Politécnico Nacional ESIME

Las reglamentaciones y los estándares permiten la interoperabilidad de todas las redes


existentes. La IEEE es la principal generadora de estándares y son creados en el marco de las
reglamentaciones creadas por el FCC (Federal Communications Commission; Comité Federal
de Comunicaciones). Estos son algunos estándares de los cuales están integrados las
normativas para la interoperabilidad de los medios alámbricos e inalámbricos.

 802.1 Definición Internacional de Redes. En este estándar se establece la relación entre


los estándares 802 del IEEE y el Modelo de Referencia para Interconexión de Sistemas
Abiertos OSI de la ISO (Organización Internacional de Estándares).

 802.2 Control de Enlaces Lógicos. Define el protocolo de control de enlaces lógicos


(LLC) del IEEE, el cual asegura que los datos sean transmitidos de forma confiable por
medio del enlace de comunicación.

La Figura 1.2 muestra los elementos de una red típica, incluyendo dispositivos, medios y
servicios unidos por reglas, que trabajan en forma conjunta para enviar mensajes.

CAMBIAR REGLAS POR PROTOCOLOS

Figura 1.2 Elementos de la red.

4 | Página
Instituto Politécnico Nacional ESIME

La estructura de las redes pueden variar dependiendo de factores como:

• El tamaño del área cubierta.


• La cantidad de usuarios conectados.
• La cantidad y tipos de servicios disponibles.

Dependiendo de estos factores, las redes pueden clasificarse como redes de área local, redes
de área amplia y redes de área personal.

1.1.1 Redes De Área Personal (PAN).

La red de área personal es una red para una persona. Su configuración básica está integrada
por los dispositivos que están situados en el entorno personal y local del usuario, con un
alcance limitado a un par de metros. Permite establecer una comunicación con diferentes
dispositivos capaces de proporcionar servicios de intercambio de datos, aplicaciones de control
y compartir recursos. Para aumentar la movilidad de los usuarios en la PAN se crearon las
redes WPAN (Wireless Personal Area Network, Red Inalámbrica de Área Personal) orientados a
dispositivos portátiles, donde el estándar mas conocido es el Bluetooth [5].

1.1.2 Redes De Área Local (LAN).

Una red de área local se caracteriza por el área que cubre, están limitadas a distancias
comprendidas de cientos de metros y escasos kilómetros. Están instaladas en edificios o
complejos formados por varios edificios cercanos entre sí. Las LAN ya sea cableada o
inalámbrica WLAN (Wireless Local Area Network, Red de Área Local Inalámbrica) están
diseñadas para transportar datos entres terminales, PC´s y otros dispositivos; incorporan la
capacidad de transportar señales de voz y video. La mayoría de las redes LAN son
estrictamente privadas y el control administrativo que rige las políticas de seguridad y control de
acceso está implementado en el nivel de red del modelo OSI [6].

5 | Página
Instituto Politécnico Nacional ESIME

1.1.3 Redes De Área Amplia (WAN).

Para interconectar las redes LAN separadas por grandes distancias, los proveedores de
servicios de telecomunicaciones TSP, operan grandes redes regionales que pueden abarcar
largas distancias. Tradicionalmente, los TSP transportan las comunicaciones de voz y de datos
en redes separadas; estas redes que conectan las redes LAN en ubicaciones separadas
geográficamente que se conocen como redes WAN (Wide Area Network, Redes De Área Amplia).

Aunque la organización mantiene todas las políticas y la administración de las redes LAN en
ambos extremos de la conexión, las políticas dentro de la red del proveedor del servicio de
comunicaciones son controladas por el TSP. Las redes WAN utilizan dispositivos de red
diseñados específicamente para realizar las interconexiones entre las redes LAN. Las LAN y
WAN son de mucha utilidad para las organizaciones individuales, conectan a los usuarios
dentro de la organización y permiten gran cantidad de formas de comunicación.

1.2 La Tecnología Bluetooth.

Bluetooth empezó a concebirse en Ericsson Mobile Communications AB (Suecia) en 1994


como el efecto colateral de un proyecto sobre enlaces de comunicadores múltiples conectados
a la red celular mediante teléfonos. En el año 2002, apareció el grupo de interés en la
tecnología Bluetooth SIG (Special Interest Group; Grupo de Interés Especial) en el que
aparecían Ericsson, Toshiba, IBM e Intel como empresas promotoras de la tecnología; más
tarde se sumaron otros promotores como 3Com, Lucent, Microsoft y Motorola generándose el
consorcio Bluetooth; actualmente el Bluetooth SIG cuenta con más de 2000 empresas.

El objetivo de este grupo fue favorecer actividades relativas a mejorar la interoperabilidad entre
dispositivos diseñados para redes personales inalámbricas y con ello favorecer el desarrollo de
procesos de comunicación. Para tratar el tema de la interoperabilidad en términos únicamente
de métrica/evaluación en cuanto a características técnicas, se realizan las pruebas de
productos Bluetooth mediante los protocolos denominados Blue Units.

6 | Página
Instituto Politécnico Nacional ESIME

Se basan en kits de desarrollo producidos por la firma inglesa CSG parte de la firma
estadounidense Cadence Design Systems a los que se puede acceder a través de Ericsson
Microelectronics AB (Suecia), AU System y Sigma ComTec.

Actualmente, para que un producto pueda considerarse que cumple con el estándar Bluetooth
tiene que cumplir una serie de protocolos y perfiles.

Los protocolos describen cómo se realizan las tareas básicas como señalización, gestión de
enlace y lo que se conoce como SDP (Service Discovery , Descubrimiento de Servicio),
determina qué servicios están disponibles desde y a través de otros dispositivos Bluetooth.

Los perfiles describen la forma en que diferentes protocolos y procedimientos básicos funcionan
conjuntamente en diferentes productos y aplicaciones Bluetooth, los perfiles están considerados
como la primera aproximación en términos de conseguir la interoperabilidad.

Además, se ha creado recientemente el Bluetooth Measurement Initiative (Iniciativa de Medición


Bluetooth) dentro del Bluetooth SIG cuyo objetivo es desarrollar hardware y software para
las pruebas de interoperabilidad. En la actualidad, Bluetooth es utilizado como un estándar para
el desarrollo de redes de área personal (PAN).

En el estándar IEEE 802.15.1 se describe la arquitectura de una WPAN basada en Bluetooth.


Este estándar consta solamente de dos capas:, PHY ( Physical Layer ; Capa Física) y las
subcapas MAC (Medium Access Control; Control de Acceso al Medio) y LLC (Logical Link
Control; Control de Enlace Lógico).

En la Figura 1.3 se muestra la pila de capas del modelo OSI , en las capas de enlace de datos
y física de modelo se presenta la tecnología inalámbrica Bluetooth y su relación con este
estándar. Como se puede observar las subcapas LLC (Logical Link Control; Control de Enlace
Lógico) y la MAC, abarcan las funciones deseadas para la Capa de Enlace de Datos.

7 | Página
Instituto Politécnico Nacional ESIME

Figura 1.3 Capas del protocolo Bluetooth.

El objetivo del estándar IEEE 802.15 es establecer las bases para permitir la comunicación
inalámbrica entre dispositivos en áreas reducidas (concretamente cables de telefonía,
auriculares, teclados y ratones) mediante un protocolo de comunicaciones inalámbricas de corta
distancia, que opere en la banda libre ISM (Industrial, Científica y Mecánica) de 2.4 GHz y
permita la transmisión de voz y datos en rangos de distancia pequeña [7].

Dependiendo de la radiofrecuencia usada, el alcance puede variar desde 1 metro hasta incluso
100 metros.

La velocidad de transferencia también varía en función de la versión de Bluetooth, habiendo


aumentado desde 1 Mbps en sus orígenes, hasta 24 Mbps de las últimas versiones.

8 | Página
Instituto Politécnico Nacional ESIME

1.2.1 Protocolos Utilizados En El Estándar Bluetooth.

Los protocolos definidos en el estándar 802.15.1 se describen a continuación:

LMP (Protocolo de Gestión del Enlace): Este protocolo se encarga de labores de


enlace, en este caso, control y configuración, negociación y control del tamaño de los
paquetes. Del mismo modo se encarga de tareas de seguridad, como
autentificación y encriptación.

HCI (Interfaz de Control de Host): Provee de una interfaz de comandos a la


capa de banda base y del protocolo LMP. En general, ofrece un método uniforme para
acceder a las capacidades de los distintos módulos Bluetooth de banda base, que
pueden ser muy heterogéneos. De esta forma se abstrae al host de labores dependientes
del medio físico y de la tecnología más concreta.

L2CAP (Capa de Adaptación y Control de Enlace Lógico): Esta capa se encarga del
multiplexado de diversas fuentes heterogéneas. Al ser heterogéneas, los paquetes que
se reciben de capas superiores pueden ser muy distintos. Así esta capa se encarga de
la segmentación y reensamblado eficientes. Por último entre capas L2CAP hay
intercambio sobre calidad de servicio (QoS), de forma que se controlan los recursos que
se usan y se controla que se cumpla.

Sobre la base que aportan los protocolos anteriores se pueden desarrollar aplicaciones.
El objetivo que se plantean los desarrolladores de Bluetooth es que los usuarios tienen
que poder disfrutar de las mismas aplicaciones y herramientas con las que han
trabajado y que les han dado buenos resultados.

El cambio se produce sin que se aprecien diferencias, de forma transparente, sino más
bien por el disfrute de la nueva capacidad inalámbrica que les aporta BT. De esta
forma encontramos los siguientes protocolos adoptados:

RFCOMM: Es un conjunto simple de protocolos de transporte , se basa en la idea de ofrecer


los mismos servicios que aporta la comunicación por cable mediante Bluetooth. Sobre la
base de L2CAP, se trata de emular puertos serie. Esta es una de las claves del éxito de
BT: Se emulan las conexiones RS232 entre dispositivos mediante un enlace inalámbrico.

9 | Página
Instituto Politécnico Nacional ESIME

PPP, TCP/IP: Son los protocolos clásicos definidos por la IETF en el modelo de Internet.
En este caso se sustentan sobre la base de Bluetooth.

OBEX: Se trata de un protocolo de intercambio de datos, originalmente pensado para


usarse con tecnología infrarroja. Se ha adaptado este protocolo para usarse sobre Bluetooth.

SDP (Protocolo de Descubrimiento de Servicio): Este protocolo no puede


considerarse un protocolo adoptado como tal, ya que permite descubrir los servicios
que proporciona un determinado dispositivo Bluetooth. Usando la información que ofrece
SDP, podemos encontrar los servicios y características que brinda, tras el
establecimiento del enlace.

HID (Dispositivos de Interfaz Humana): Es una especificación originaria de USB


(Bus Universal en Serie) para controlar dispositivos como teclados, controles de video juego ,
ratones. Siguiendo con su filosofía, Bluetooth dio soporte a esta tecnología, prestando los
mismos servicios. El usuario final no nota la diferencia, salvo por el hecho de que ahora su
ratón no tiene cable.

1.2.2 Canales.

La tecnología inalámbrica de Bluetooth proporciona una cobertura de corto alcance que ha sido
optimizado para el ahorro de energía, operación adecuada de la batería, tamaño pequeño y
para ser utilizada en aparatos personales de bajo peso.

El estándar Bluetooth especifica que una red construida bajo este estándar debe ser capaz de
soportar canales síncronos de comunicación para telefonía de voz y canales de comunicación
asíncronas para comunicación de datos. Dichas facilidades permiten una amplia gama de
aplicaciones y de aparatos que trabajen en una WPAN.

Por ejemplo, un teléfono celular puede usar canales circuit-switched (conmutación de circuitos)
para transportar audio desde y para un receptor en el encabezado mientras se encuentra
utilizando un canal packet-switched (conmutación de paquetes) para intercambiar datos con
una computadora portátil.

10 | Página
Instituto Politécnico Nacional ESIME

Para solucionar las interferencias Bluetooth utiliza un método de salto de frecuencia pseudo-
aleatoria llamado FH/TDD (Frequency Hop/Time-Division Duplex; Salto de Frecuencia/División
de Tiempo Dúplex.

Se utiliza un transceptor de FFH (Fast Frequency-Hop; Modulación por Salto de Frecuencia) de


1600 saltos/s y modulación binaria FSK (Frequency Shift Keying; Modulación por
Desplazamiento de Frecuencia) para transmitir símbolos con una tasa de 1 símbolo/s.

La técnica del salto de frecuencias, basada en FSK, cuando se combina con una modificación
del canal seleccionado dinámicamente, se denomina AFH (Adaptive Frequency Hopping; Salto
de Frecuencia Adaptable), y permite reducir las interferencias con otras tecnologías
inalámbricas (muy frecuentes en ese rango del espectro, en el que abundan las redes Wi-Fi),
aprovechando las frecuencias que presenten mejores características como canal de
comunicación en cada momento.

Se utiliza también una trama rápida de TDD (Time Division Duplex; Dúplex por División de
Tiempo) para permitir enlaces Full Dúplex en capas superiores. El sistema es dúplex,
dividiendo el uso del canal en intervalos temporales de 625 µs llamados slots o ranuras de
tiempo, de forma que los paquetes puedan utilizar slots de transmisión y de recepción, de
manera alternativa.

Esto da lugar a una frecuencia de salto de 1600 veces por segundo, en la que un paquete de
datos ocupa un slot para la emisión y otro para la recepción y que pueden ser usados
alternativamente, dando lugar a un esquema de tipo TDD, (como se puede ver en la Figura 1.4).
De esta manera se pueden conseguir transceptores de banda estrecha con una gran inmunidad
a las interferencias.

11 | Página
Instituto Politécnico Nacional ESIME

Figura 1.4 Ranuras de transmisión y recepción.

En el canal, la información se intercambia a través de paquetes. Cada paquete se transmite en


una frecuencia diferente dentro de la secuencia de espera. Un paquete normalmente cubre una
sola ranura, pero se puede extender de tres a cuatro ranuras.

Para tráfico de datos, de manera unidireccional es posible transmitir un máximo de 723.2 kbps
entre dos dispositivos. El canal asíncrono puede soportar un enlace asimétrico de 721 kbps
como máximo en cualquier dirección, mientras que permite 57.6 kbps en la dirección de
retorno. También puede soportar un enlace simétrico de 432.4 kbps.

Un canal bidireccional soporta un tráfico de voz entre dos dispositivos con una velocidad de
hasta 64 kbps. La inestabilidad para el tráfico de voz se mantiene bajo al usar ranuras de
tiempo pequeñas en la transmisión. En países donde la banda está abierta a 80 canales o más,
espaciados todos ellos a 1 MHz. Se han definido 79 saltos de portadora, y en aquellos donde la
banda es más estrecha se han definido 23 saltos.

1.2.3 Trama y Paquete.

La Figura 1.5 muestra el formato general del contenido de una ranura de tiempo, trasmitida al
aire en una WPAN de Bluetooth.

12 | Página
Instituto Politécnico Nacional ESIME

Figura 1.5 - Trama de información.

La mayoría de los paquetes incluyen una cabecera del paquete. El encabezado del paquete
está siempre presente en los paquetes transmitidos en los canales con características físicas
que soportan los enlaces físicos, comunicaciones lógicas, y enlaces lógicos.

El encabezado del paquete es utilizado por cada dispositivo receptor para determinar si el
paquete se dirige al dispositivo y se utiliza para encaminar el paquete internamente, indica el
tipo de trama, el tipo de corrección de errores , cuantas ranuras de longitud tiene la trama
transmitida, detectar retransmisiones y numerar las tramas. La carga útil del paquete se utiliza
para transportar los datos del usuario. La interpretación de estos datos es dependiente de la
comunicación lógica. Para las comunicaciones lógicas los mensajes y señales se transportan
en la carga del paquete, junto con los datos generales del usuario de las aplicaciones.

Así, se utiliza un protocolo de pregunta y respuesta, un flujo cifrado de datos, y una clave de
sesión modificable durante la conexión. Para verificar la identidad de los participantes en la
comunicación, se utiliza la dirección de la unidad Bluetooth (cada dispositivo tiene una dirección
única de 48 bits), una clave privada de usuario (generada durante la fase inicial), y un número
aleatorio creado en cada unidad.

13 | Página
Instituto Politécnico Nacional ESIME

Una vez establecidas estas relaciones, se pueden enviar los paquetes de información. Su
estructura se compone de un código de acceso de 72 bits, una cabecera de 54 bits con
información de control, bits de acceso de dirección, de control de tráfico, de retransmisión, de
tipo de paquete, y por último la información como tal, que puede tener una longitud de 0 a 2745
bits, como se ve en la Figura 1.5. El código de acceso revisa cada transmisión, y si un paquete
no contiene el código correcto, se rechaza [8].

1.2.4 Principios Operativos.

Cuando dos dispositivos (o más) establecen la conexión mediante Bluetooth, forman lo que se
denomina una piconet. Al hacerlo, una de las unidades (la que establece la piconet,
normalmente) gestionará el tráfico en el canal, pasando a ser la unidad maestro. El resto se
conectarán a ella, como esclavos. El papel del maestro puede cambiar, siempre y cuando sólo
haya uno en cada momento.

Dado que todas las unidades tienen que sincronizar a la perfección sus retransmisiones para
poder “seguir el ritmo de saltos” del canal, es necesario que los esclavos ajusten mediante
pequeñas correcciones sus relojes con el reloj del maestro, mientras dure la conexión. El
maestro, por su parte, controlará el tráfico, reservando slots para enlaces síncronos, o
sondeando slots convenientes para los enlaces asíncronos, ya que admite ambos tipos de
conexiones (de hecho también se consideran los enlaces isócronos, con tasa de envío variable
pero temporizados como los síncronos).

En cuanto a la seguridad, hay un nivel de protección integrado directamente en el chip de


radiofrecuencia de los dispositivos Bluetooth, útil cuando se integran en sistemas que no
aportan mayor procesamiento de la información.

A la hora de transmitir los paquetes, la potencia utilizada por el dispositivo es muy baja (siendo
éste uno de los puntos fuertes de Bluetooth). Un paquete cubre normalmente una ranura pero
se puede extender hasta cubrir cinco ranuras. Bluetooth puede soportar un canal de datos
síncrono.

14 | Página
Instituto Politécnico Nacional ESIME

Especificaciones Bluetooth.

La especificación Bluetooth define un canal de comunicación de máximo 720kbps con un rango


óptimo que va de los 10 metros hasta 100 metros. Esta tecnología limita la potencia de
salida exactamente al valor necesario. Por ejemplo, si el dispositivo receptor indica que se
encuentra a unos pocos metros del transmisor, éste último modifica la fuerza de la señal que
emite para ajustarla al valor exacto. Mediante esta tecnología también se puede desplazar el
modo de operación a baja potencia cuando se pare el volumen de tráfico o alcance un valor
bajo.

Este modo de baja potencia solamente se ve interrumpido por señales muy cortas con el
propósito de verificar la conexión establecida. En la Tabla 1 se pueden apreciar las
especificaciones técnicas de la tecnología Bluetooth.

Alcance 10 m (0 dBm)

Alcance opcional 100 m (+ 20 dBm)

Potencia normal transmitida 0 dBm (1mW)

Potencia opcional transmitida -30 a + 20 dBm (100 mW)

Sensibilidad del receptor -70 dBm

Banda de frecuencia 2400 - 2483 MHz

Máxima transferencia de datos Asimétrica: 732.2 kbps Simétrica: 432,6 kbps

Máximo número de usuarios Activos: 8 Inactivos: > 200

Tabla 1 Especificaciones Bluetooth.

La clasificación de los dispositivos Bluetooth como “Clase 1”, “Clase 2”, “Clase 3”, es
únicamente una referencia en cuanto a la potencia de transmisión del dispositivo y alcance del
mismo, siendo totalmente compatible los dispositivos de una clase con otra. Para el caso de
radio Clase 1, se utilizan hasta 100 mW para alcanzar 30 metros de distancia. Lo más común es
utilizar radio Clase 2, que puede transmitir a entre 5 y 10 metros, con 2.5 mW de potencia.

15 | Página
Instituto Politécnico Nacional ESIME

Conforme los dispositivos han ido modernizándose, cada vez su sensibilidad a la señal es
mejor, por lo que es necesaria menos potencia para una correcta comunicación, o, lo que es lo
mismo, la distancia máxima efectiva es mayor para una potencia dada (Tabla 2).

Clase Potencia máxima permitida (mW) Alcance(aproximado)

Clase 1 100 mW ~30 metros

Clase 2 2.5 mW ~5-10 metros

Clase 3 1 mW ~1 metro

Tabla 2 Clases del protocolo de comunicación Bluetooth.

En lo referente a la velocidad de transmisión, en la versión 4.0 de Bluetooth ,se alcanzan hasta


los 24 Mbps, cantidad muy superior al megabit por segundo de la versión 1 (que, en la práctica,
rondaba los 720 kbps).En la versión 2, la mejora de velocidad se alcanza si ésta implementa
EDR, (Enhanced Data Rate, Velocidad de Datos Mejorada), que es una característica opcional
(Tabla 3).

Versión Velocidad

Versión 1.2 1 Mbps

Versión 2.0 EDR 3 Mbps

Versión 3.0 HS 24 Mbps

Versión 4.0 24 Mbps

Tabla 3 Velocidades de transmisión del protocolo de comunicación Bluetooth

1.2.5 Modos Bluetooth.

El sistema Bluetooth posibilita la conexión punto – punto y la conexión punto–multi-punto. En la


conexión punto – multi-punto varias unidades Bluetooth comparten el mismo canal. Dos o más
unidades que comparten el mismo canal forman una piconet . Existe una unidad maestro y
pueden existir hasta 7 unidades esclavo activas. Estos dispositivos pueden estar en cualquiera
de los siguientes estados:

16 | Página
Instituto Politécnico Nacional ESIME

Active. En este modo tanto el maestro como el esclavo participan de forma activa en el canal
escuchando, transmitiendo o recibiendo los paquetes. El maestro y el esclavo están
sincronizados.

Sniff. En este modo el esclavo en vez de estar escuchando en cada slot el mensaje del
maestro, revisa algunos periodos de tiempo, ahorrando potencia en aquellos instantes en los
que se encuentra “durmiendo”.

Hold. En este modo un dispositivo de forma temporal puede no soportar paquetes e ir a un


modo de baja potencia para que el canal esté disponible.

Park. En este estado es cuando un esclavo no necesita participar en el canal de la piconet pero
todavía quiere permanecer sincronizado con el canal. Si varias piconets tienen áreas de
cobertura que se superponen forman una scatternet o red dispersa.

Scatternet. Una red dispersa es un tipo de red que se forma entre dos o más dispositivos con
capacidad Bluetooth, tales como teléfonos inteligentes y electrodomésticos. Una red dispersa
se compone de al menos dos piconets, estos dispositivos Bluetooth son unidades de pares que
actúan como esclavos o maestros.

Redes dispersas se forman cuando un dispositivo en una piconet, sea un maestro o un esclavo,
decide participar como esclavo al maestro de otra piconet. Este dispositivo se convierte
entonces en el puente entre las dos piconets, la conexión de ambas redes; En la Figura 1.6 se
muestran los modos de conexión.

Figura 1.6 a) Piconet con un esclavo, b) Múltiples esclavos, c) Scatternet

17 | Página
Instituto Politécnico Nacional ESIME

Para establecer la piconet, la unidad maestro debe conocer la identidad del resto de unidades
que están en modo standby (suplente) en su radio de cobertura. El maestro o aquella unidad
que inicia la piconet transmite el código de acceso continuamente en periodos de 10 ms,
que son recibidas por el resto de unidades que se encuentran en standby.

El tren de 10 ms de códigos de acceso de diferentes saltos de portadora, se transmite


repetidamente hasta que el receptor responde o bien se excede el tiempo de
respuesta.

Cuando una unidad emisora y una receptora seleccionan la misma portadora de salto, la
receptora recibe el código de acceso y devuelve una confirmación de recibo de la señal, es
entonces cuando la unidad emisora envía un paquete de datos que contiene su identidad y
frecuencia de reloj actual.

Después de que el receptor acepta éste paquete, ajustará su reloj para seleccionar el canal de
salto correcto determinado por emisor.

De éste modo se establece una piconet en la que la unidad emisora actúa como maestra y la
receptora como esclava.

Después de haber recibido los paquetes de datos con los códigos de acceso, la unidad maestro
debe esperar un procedimiento de requerimiento por parte de las esclavas, diferente al
proceso de activación, para poder seleccionar una unidad específica con la que comunicarse.
En la Figura 1.7 se muestran los diferentes estados de una conexión vía Bluetooth.

18 | Página
Instituto Politécnico Nacional ESIME

Figura 1.7 Estados de una conexión.

Enlace físico.

En la especificación Bluetooth se definen dos tipos de enlace físico:

Enlace de sincronización de conexión orientada (SCO).

• Conexión simétrica punto a punto entre maestro y esclavo.

• El maestro utiliza slots de tiempo reservados a intervalos regulares.

• El maestro puede soportar más de 3 enlaces simultáneos mientras que los esclavos 3
como máximo.

• Los paquetes de configuración nunca son retransmitidos.

• Principalmente este tipo de enlace se utiliza para transmitir información de voz


con un radio de transmisión de 64kbps.

19 | Página
Instituto Politécnico Nacional ESIME

Enlace asíncrono de baja conexión (ACL).

• Conexiones simétricas o asimétricas punto-multipunto entre maestro y esclavo.

• Conexión utilizada para la transmisión de datos.

• Se aplica retransmisión de paquetes.

• Se definen para este tipo de conexión los slots 1,3 y 5.

• La máxima velocidad de envío es de 721 kbps en una dirección y 57.6 kbps en la otra
[9].

1.3 Teléfonos Celulares.

Se define teléfono móvil o celular como un dispositivo electrónico de comunicación inalámbrica,


normalmente de diseño reducido que tiene las mismas funciones que cualquier teléfono de
línea fija. Su rasgo característico principal es que se trata de un dispositivo portable e
inalámbrico, esto es, que la realización de llamadas no es dependiente de ningún tipo de
cableado para llevar a cabo la conexión a la red telefónica. Aunque su principal función es la
comunicación de voz, como cualquier otro teléfono convencional, un celular incorpora un
conjunto de funciones adicionales, tales como mensajería instantánea, agenda, juegos,
cámara fotográfica, acceso a Internet, reproducción de video e incluso GPS y reproductor Mp4.

1.3.1 Generaciones De Los Teléfonos Celulares.

1G: Móviles de Primera Generación.

Surgidos a partir de 1973, su tamaño y peso eran muy grandes. Para los móviles de primera
generación la transmisión funcionaba de manera analógica. El hecho de que fueran
analógicos traía consigo una serie de inconvenientes, tales como que solo podían ser utilizados
para la transmisión de voz (el uso de mensajería instantánea era algo solo visible en un futuro
muy lejano).

20 | Página
Instituto Politécnico Nacional ESIME

Los estándares más utilizados para telefonía de primera generación:

• NMT: Nordic Mobile Telephone – Telefonía Móvil Nórdica.

• AMPS: Advanced Mobile Phone System – Sistema Telefónico Móvil Avanzado.

2G: Segunda Generación.

La denominada ”segunda generación” marca el paso de la telefonía analógica a la digital, que


permitió, mediante la introducción de una serie de protocolos, la mejora del manejo de
llamadas, más enlaces simultáneos en el mismo ancho de banda y la integración de otros
servicios adicionales al de la voz, de entre los que destaca el Servicio de Mensajes Cortos
SMS (Short Message Service). Estos protocolos fueron implementados por diversas compañías,
siendo este hecho el origen de uno de los principales problemas de esta generación la
incompatibilidad entre protocolos, debido a que el radio de utilización del teléfono quedaba
limitado al área en el que su compañía le diera soporte.

Estándares más utilizados:

• GSM: Global System for Mobile Communications - Sistema Global para Comunicaciones
Movíles

• CDMA: Code Division Multiple Access - Acceso Múltiple por División de Código.

• GPRS: General Packet Radio Service - Servicio General de Radio por Paquetes.

3G: Tercera Generación.

El año 2001 fue un año revolucionario en el ámbito de la telefonía móvil, ya que supuso la
aparición de los primeros celulares que incorporaban pantalla LCD a color, hecho que habría
un inmenso abanico de posibilidades en cuanto a adaptación de nuevas funciones se refiere.

Así el usuario operaba dispositivos con cámara fotográfica digital, posibilidad de grabar videos
y mandarlos con un sistema de mensajería instantánea, juegos , sonido Mp3 o poder
mantener conversaciones por videoconferencia gracias a una tasa de transferencia de
datos más que aceptable y a un soporte para internet correctamente implementado (correo

21 | Página
Instituto Politécnico Nacional ESIME

electrónico, descargas, etc.). Todo este conjunto de nuevos servicios integrados en el teléfono
celular.

Estándares más utilizados:

• UMTS: Universal Mobile Telecommunications System - Servicios Universales de


Comunicaciones Móviles.

4G: Cuarta Generación.

La tecnología 4G implica un cambio radical en la red de comunicación, es posible establecer


conexiones a una velocidad de 1Gbps, y obtener transferencias de hasta 100 Mbps; para lograr
esas tasas de velocidades, la cuarta generación está basada por completo en IP. Esto hará
posible que la convergencia entre los dispositivos móviles y otros equipos, tales como
computadoras de escritorio ofrezcan una velocidad de acceso de hasta 100 Mbps. descendente
y 50 Mbps en enlace ascendente, siempre manteniendo los estándares de seguridad entre
dispositivos. La idea fundamental sobre la que se encuentra basada esta nueva tecnología de
comunicación móvil ofrece una de las redes más estables y veloces para la conexión a Internet.

Estándares más utilizados:

• LTE: Long Term Evolution - Evolución a Largo Plazo (Tecnología de banda ancha
inalámbrica).

1.3.2 Arquitectura De Los Teléfonos Celulares.

Hay una clara diferencia en cuanto al microprocesador que utilizan los teléfonos móviles con
respecto al de una PC. Los teléfonos móviles utilizan microprocesadores que tienen un menor
consumo de energía y una menor potencia, además de un conjunto de instrucciones mucho
más reducido. ARM es el principal proveedor de la industria de los microprocesadores
integrados de 32 bits, ofreciendo una amplia gama de procesadores basados en una
arquitectura común que ofrecen un alto rendimiento y es líder en eficiencia energética y costo
del sistema.

22 | Página
Instituto Politécnico Nacional ESIME

La arquitectura ARM es de las más utilizadas, debido a su gran simplicidad. Los denominados
"Smartphone" utilizan microprocesadores con este tipo de arquitectura, así como el iphone de
Apple y los equipos con Android ; hoy en día la tecnología ARM se utiliza en más del 95% de
los teléfonos móviles del mundo y más de un cuarto de todos los dispositivos electrónicos, los
fabrican empresas como Nvidia, Samsung o Qualcomm.

Frente a estos compite Intel con su línea X86, que se venden con el nombre de Intel Atom
tanto para móviles como PDAs; estos son más eficientes en cuanto a energía y permiten
integrar el chip en dispositivos reducidos que alcancen grandes temperaturas. La arquitectura
ARM se describe generalmente como un conjunto reducido de instrucciones (RISC), ya que
incorpora las características típicas de la arquitectura RISC:

 Un archivo de registro uniforme de load/store architecture (arquitectura de carga


/almacenamiento), donde el procesamiento de datos funciona únicamente en el
contenido del registro, no directamente sobre el contenido de la memoria. Simples
modos de direccionamiento, con toda la load/store addresses (direcciones de carga /
almacenamiento) determina a partir de contenido de los registros y los campos de
instrucción.

 Mejoras en una arquitectura RISC básicos permiten que los procesadores ARM logren
un buen equilibrio de alto rendimiento, el tamaño de código pequeño, bajo consumo de
energía y el área pequeña.

Arquitectura ARM.

La arquitectura ARM es un procesador RISC de 32 bits usado en un amplio número de


aplicaciones, son los procesadores más populares en el mundo utilizados en sistemas
integrados, hoy en día, cerca del 75% de los procesadores de 32 bits poseen este chip en su
núcleo. La tecnología ARM es ampliamente usada en el diseño de “system-on-chip” formando el
núcleo del sistema, también la encontramos a la vanguardia en el desarrollo de nuevos
sistemas móviles.

23 | Página
Instituto Politécnico Nacional ESIME

Las diferentes familias de arquitectura ARM están estandarizadas por un núcleo procesador y
periféricos estándares que ayudan a manejar la complejidad y compatibilidad de diferentes
sistemas. Según se han ido desarrollando las diferentes familias de la arquitectura ARM como
son ARM7, ARM9, ARM10, ARM11, han ido incrementado los adelantos tecnológicos, brindado
un incontable número de herramientas para desarrollar proyectos con esta arquitectura.

La mayoría de las compañías electrónicas internacionales han tomado la arquitectura ARM


como el principal instrumento para el adelanto tecnológico, debido a que ofrece un extenso
número de productos para el desarrollo de proyectos como; microprocesadores RISC de 16/32
bits, procesador de datos, procesador 3D, librerías digitales, memorias integradas, periféricos,
software, herramientas de desarrollo; muchas de las cuales son de libre acceso ( como se
muestra en la Figura 1.8). Debido a esto es necesario hacer un estudio de la arquitectura ARM,
sus diferentes familias, fabricantes y herramientas de desarrollo para sentar bases teóricas
con la finalidad de conocer los beneficios que brinda y poder desarrollar diferentes tipos de
aplicaciones de acuerdo con los avances electrónicos que se den en el mundo.

Figura 1.8 Arquitectura ARM.

24 | Página
Instituto Politécnico Nacional ESIME

1.3.3 Sistemas Operativos De Los Teléfonos Celulares.

La telefonía móvil cambío el entorno actual de una forma significativa, esta revolución ha
impulsado el desarrollo de los nuevos equipos que ofrecen unas capacidades similares a una
PC, lo que permite que puedan ser utilizados para leer nuestro correo o navegar por internet.

Pero a diferencia de una PC, un teléfono móvil siempre está en el bolsillo del usuario, y permite
el uso de aplicaciones mucho más cercanas al usuario. Para poder manejar estos equipos es
necesario el uso de sistemas operativos; los sistemas operativos mas usados son :
iPhone,Symbian, Windows Phone, BlackBerry, Palm, Java Mobile Edition, Linux Mobile (LiMo),
sin embargo Android presenta una solución con las siguientes cualidades:

Plataforma realmente abierta. Es una plataforma de desarrollo libre basada en Linux y de


código abierto. Una de sus grandes ventajas es que se puede usar el sistema sin pagar
regalías.

Adaptable a cualquier tipo de Hardware. Android no ha sido diseñado exclusivamente para


su uso en teléfonos y tabletas. Hoy en día podemos encontrar relojes, cámaras,
electrodomésticos y gran variedad de sistemas que se basan en este sistema operativo.

Esté hecho tiene sus evidentes ventajas, pero también va a suponer un esfuerzo adicional al
programador.

La aplicación ha de funcionar correctamente en dispositivos con gran variedad de tipos de


entrada, pantalla, memoria, etc. Esta característica contrasta con la estrategía de Apple. En iOS
tenemos que desarrollar una aplicación para iPhone y otra diferente para iPad.

Portabilidad asegurada. Las aplicaciones finales son desarrolladas en Java lo que nos
asegura que podrán ser ejecutadas en cualquier tipo de CPU, tanto presente como futuro. Esto
se consigue gracias al concepto de maquina virtual.

Arquitectura basada en componentes inspirado en internet. Por ejemplo, el diseño de la


interfaz de usuario se hace en XML, lo que permite que una misma aplicación se ejecute en un
móvil de pantalla reducida o en una televisión

25 | Página
Instituto Politécnico Nacional ESIME

Gran cantidad de servicios incorporados. Por ejemplo, la localización basada en tanto GPS
como en redes, bases de datos con SQL, reconocimiento y síntesis de voz, navegador,
multimedia, etc.

Filosofía de dispositivo siempre conectado a internet.

Optimizado para baja potencia y poca memoria. Por ejemplo, Android utiliza la Maquina
Virtual Dalvik. Se trata de una implementación de Google a la máquina virtual de Java
optimizada para dispositivos móviles.

Alta calidad de gráficos y sonido. Gráficos vectoriales suavizados animaciones inspiradas en


flash, gráficos en 3D basados en OpenGL. Incorpora codecs estándar más comunes de audio y
video incluyendo H.264 (AVC), Mp3, AAC.

En la Tabla 4 se muestran las características de los cinco principales sistemas operativos para
celulares y en la Figura 1.9 su interfaz gráfica.

Apple iOS 7 Android 4.3 Windows Phone 8.1 BlackBerry 10 Symbian OS 10.1

Figura 1.9 Interfaz gráfica de los sistemas operativos móviles actuales.

26 | Página
Instituto Politécnico Nacional ESIME

Compañía Apple Open Handset Windows RIM Symbian


Alliance Foundation

Núcleo Del SO Mac OS X Linux Windows CE Mobile OS Mobile OS

Familia CPU soportada ARM ARM, MIPS, ARM ARM ARM


Power, X86

Lenguaje de C++ (POO) Java, C++ C++ JAVA C++


programación (POO)

Licencia de Software Propietaria Software libre y Propietaria Propietaria Software libre


abierto

Año de lanzamiento 2013 2013 2013 2013 2012

Motor del navegador Web-kit Web-kit Pocket Internet Web-kit Web-kit


web Explorer

Soporte Flash NO SI NO SI SI

HTML5 SI SI Parcial SI NO

Tienda de aplicaciones App Store Google Play Windows Black Berry Ovi Store
Marketplace App Word

Numero de 400.000 900.000 50.000 30.000 50.000


aplicaciones

Costo por publicar $ 99 / año $ 25 una vez $ 99 / año Sin Costo $ 1 una vez

Plataforma de Mac Windows. Mac, Windows Windows, Mac Windows,


desarrollo Linux Mac, Linux

Interfaz personalizable No SI SI SI SI

Actualizaciones SI Depende del Depende del SI SI


automáticas del S.O. fabricante fabricante

Soporte De Memoria No SI NO SI SI
Interna

Fabricante único SI NO NO SI NO

Variedad de Modelo Muy Alta Baja Baja Muy Alta


dispositivos Único

Tabla 4 - Comparativa de sistemas operativos móviles actuales.

27 | Página
Instituto Politécnico Nacional ESIME

1.3.4 Versiones De Android.

El sistema operativo Android, al igual que los propios teléfonos móviles, ha evolucionado
rápidamente, acumulando una gran cantidad de versiones:

Cupcake: Android Versión 1.5

Características: Widgets, teclado QWERTY virtual, copiar y pegar, captura de vídeos y


poder subirlos a YouTube directamente.

Donut: Android Versión 1.6

Características: Añade a la anterior la mejoría de la interfaz de la cámara, búsqueda por voz, y


navegación en Google Maps.

Eclair: Android Versión 2.0, 2.1

Características: Mejoras en Google Maps, salvapantallas animado, incluye zoom digital para la
cámara, y un nuevo navegador de internet.

Froyo: Android Versión 2.2.X

Características: Incluye hostpot Wi-Fi, mejora de la memoria, más veloz, Microsoft Exchange y
video-llamada.

Ginger Bread: Android Versión 2.3.X

Características: Mejoras del consumo de batería, el soporte de vídeo en línea y el teclado


virtual, e incluye soporte para pagos mediante NFC.

Honey Comb: Android Versión 3.X

Características: Mejoras para tablets, soporte Flash y Divx, integra Dolphin, multitarea pudiendo
cambiar de aplicación dejando las demás en espera en una columna, widgets y home page
(pagina de inicio) personalizable.

28 | Página
Instituto Politécnico Nacional ESIME

Ice Cream Sandwich: Android Versión 4.0.X

Características: Multiplataforma (tablets, teléfonos móviles y netbooks), barras de estado,


pantalla principal con soporte para 3D, widgets redimensionables, soporte usb para teclados,
reconocimiento facial y controles para PS3.

Jelly Bean: Android Versión 4.1, 4.2, 4.3

Características: Fluidez de la interfaz de usuario, sincronismo vertical, triple búffer y aumento de


la velocidad del procesador al tocar la pantalla. Se mejoran las notificaciones con un sistema de
información expandible personalizada. Los widgets de escritorio pueden ajustar su tamaño y
hacerse sitio de forma automática al situarlos en el escritorio.
El dictado por voz puede realizarse sin conexión a Internet .Se introducen varias mejoras en
Google Search. Se potencia la búsqueda por voz con resultados en forma de ficha. La función
Google Now permite utilizar información de posición, agenda y hora en las búsquedas. Se
incorporan un nuevo soporte para usuarios internacionales: como texto bidireccional y teclados
instalables. Para mejorar la seguridad las aplicaciones son cifradas. También se permite
actualizaciones parciales de aplicaciones.

KitKat: Android Versión 4.4

Características: Los componentes principales de Android han sido recortados para reducir sus
requerimientos de memoria, y se ha creado una nueva API que permite adaptar el
comportamiento de la aplicación en dispositivos con poca memoria.
Más visibles son algunas nuevas características de la interfaz de usuario. El modo de inmersión
en pantalla completa oculta todas las interfaces del sistema (barras de navegación y de estado)
de tal manera que una aplicación puede aprovechar el tamaño de la pantalla completa.
WebViews (componentes de la interfaz de usuario para mostrar las páginas Web) se basa
ahora en el software de Crome de Google y por lo tanto puede mostrar contenido basado en
HTM5. Se mejora la conectividad con soporte de NFC para emular tarjetas de pago tipo HCE,
soporte para protocolo Bluetooth versión 4.0 y soporte para mandos infrarrojos. También se
mejoran los sensores para disminuir su consumo y se incorpora un sensor contador de pasos.

29 | Página
Instituto Politécnico Nacional ESIME

Se facilita el acceso de las aplicaciones a la nube con un nuevo marco de almacenamiento.


Este marco incorpora un tipo específico de content provider conocido como document provider,
nuevas intenciones para abrir y crear documentos y una ventana de dialogo que permite al
usuario seleccionar ficheros. Se incorpora un administrador de impresión para enviar
documentos a través de Wi-Fi a una impresora. Se añade un content provider para gestionar
los SMS. Desde una perspectiva técnica, hay que destacar la introducción de la nueva máquina
virtual ART, que consigue tiempos de ejecución muy superiores a la máquina Dalvik. Sin
embargo, todavía está en una etapa experimental. Por defecto se utiliza la máquina virtual de
Dalvik, permitiendo a los programadores activar opcionalmente ART para verificar que sus
aplicaciones funcionan correctamente.

1.4 Microcontroladores.

Un microcontrolador es un circuito integrado programable que contiene todos los componentes


necesarios para controlar el funcionamiento de una tarea determinada, como el control de un
horno microondas, un teclado de computador, un robot, un sistema de alarma, etc. Para esto, el
microcontrolador utiliza muy pocos componentes asociados.

Un sistema con microcontrolador debe disponer de una memoria donde se almacena la


configuración, sólo sirve para realizar la tarea asignada. La utilización de un microcontrolador
en un circuito reduce notablemente el tamaño y número de componentes y en consecuencia,
disminuye el número de averías, el volumen y el peso de los equipos, entre otras ventajas.

1.4.1 Tipos De Microcontroladores.

Existe una gran diversidad de microcontroladores, quizá la clasificación más importante sea
entre microcontroladores de 4, 8, 16 ó 32 bits. Aunque las prestaciones de los
microcontroladores de 16 y 32 bits son superiores a los de 4 y 8 bits, la realidad es que los
microcontroladores de 8 bits dominan el mercado y los de 4 bits se resisten a desaparecer, la
razón de esta tendencia es que los microcontroladores de 4 y 8 bits son apropiados para la gran
mayoría de las aplicaciones.

30 | Página
Instituto Politécnico Nacional ESIME

Lo que hace absurdo emplear microcontroladores más potentes y consecuentemente más


caros, uno de los sectores que más utiliza el mercado del microcontrolador es el mercado de
los teléfonos móviles, de hecho, algunas de las familias de microcontroladores actuales se
desarrollaron pensando en este sector, siendo modificadas posteriormente para adaptarse a
sistemas más genéricos. También los modernos microcontroladores de 32 bits van afianzando
sus posiciones en el mercado, siendo las áreas de más interés el procesamiento de imágenes,
las comunicaciones, las aplicaciones militares, los procesos industriales y el control de los
dispositivos de almacenamiento masivo de datos.

Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores


actuales.

CISC: Un gran número de procesadores usados en los microcontroladores están basados en la


filosofía CISC (Computadores de Juego de Instrucciones Complejo). Disponen de más de 80
instrucciones máquina en su repertorio, algunas de las cuales son muy sofisticadas y potentes,
requiriendo muchos ciclos para su ejecución. Una ventaja de los procesadores CISC es que
ofrecen al programador instrucciones complejas que actúan como macros.

RISC: Tanto la industria de los computadores comerciales como la de los microcontroladores


están tendiendo hacia la filosofía RISC (Computadores de Juego de Instrucciones Reducido).

En estos procesadores el repertorio de instrucciones máquina es muy reducido y las


instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las
instrucciones permiten optimizar el hardware y el software del procesador.

SISC: En los microcontroladores destinados a aplicaciones muy concretas, el juego de


instrucciones, además de ser reducido, es “específico”, o sea, las instrucciones se adaptan a las
necesidades de la aplicación prevista. Esta filosofía se ha bautizado con el nombre de SISC
(Computadores de Juego de Instrucciones Específico).

1.4.2 Arquitectura De Los Microcontroladores.

Un microcontrolador dispone normalmente de los siguientes componentes:

• Procesador o CPU (Unidad Central de Procesamiento).

31 | Página
Instituto Politécnico Nacional ESIME

• Memoria RAM para contener los datos.

• Memoria para el programa tipo ROM / PROM / EPROM

• Líneas de E/S para comunicarse con el exterior.

• Diversos módulos para el control de periféricos (Temporizadores, Puertas Serie y


Paralelo,CAD: Conversores Analógico / Digital, CDA: Conversores Digital / Analógico, etc.).

• Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema.

Aunque inicialmente todos los microcontroladores adoptaron la arquitectura clásica de Von


Neumann, en la actualidad se emplea más la arquitectura Harvard.

La arquitectura de Von Neumann se caracteriza por disponer de una sola memoria principal
donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a
través de un sistema de buses único (direcciones, datos y control).

La arquitectura Harvard dispone de dos memorias independientes una, que contiene sólo
instrucciones y otra, sólo datos. Ambas disponen de sus respectivos sistemas de buses de
acceso y es posible realizar operaciones (lectura o escritura) simultáneamente en ambas
memorias

1.5 Mensajes De Texto.

El servicio de mensajes cortos SMS es un servicio que comenzó a ofrecerse con la segunda
generación de telefonía celular para almacenar y reenviar cadenas de texto. Un mensaje SMS
es una cadena alfanumérica de hasta 140 caracteres o de 160 caracteres de 8 bits, y cuyo
encapsulado incluye una serie de parámetros.

En principio, se emplean para enviar y recibir mensajes de texto normal, pero existen
extensiones del protocolo básico que permiten incluir otros tipos de contenido, dar formato a los
mensajes o encadenar varios mensajes de texto para permitir mayor longitud (formatos de SMS
con imagen de Nokia, tonos IMY de Ericsson, estándar EMS para dar formato al texto e incluir
imágenes y sonidos de pequeño tamaño).

32 | Página
Instituto Politécnico Nacional ESIME

MMS o Servicio Multimedia, se refiere a los mensajes de texto que incluyen archivos adjuntos,
como fotos, vídeos o imágenes. Aunque utiliza una tecnología diferente a los textos de SMS,
puedes enviar y recibir mensajes MMS utilizando la misma aplicación de mensajería.

1.6 Funcionamiento De Los SMS En Android.

Cuando se envía un SMS, el teléfono lo envía primero a un Centro de Servicio de Mensajería


Corta o SMSC, que envía una solicitud al registro de posiciones, o HLR, una base de datos de
información de teléfonos. El HLR identifica si el teléfono al se está enviando mensajes de texto
está disponible o no, y cuál es la red en la que se está actualmente.

Para un teléfono no disponible, el HLR guarda los mensajes hasta que el teléfono se encuentra
disponible; para un teléfono disponible, envía una notificación al SMSC. El SMSC envía el texto
en un formato , y el teléfono del destinatario recibe una página y responde, luego llega el SMS.
Los textos de SMS están limitados a 160 caracteres.

Los dispositivos Android utilizan la aplicación de mensajería por defecto para enviar y recibir
mensajes de texto SMS.

Esta aplicación muestra todos los textos que se han enviado o recibido en "hilos", similares a
las conversaciones de correo electrónico que se pueden ver en línea.

La aplicación notifica automáticamente en la barra de estado si hay nuevos textos, y también


puede sonar o encender un led de notificación, dependiendo de la configuración del equipo en
uso.

Si se requiere enviar un texto de más de 160 caracteres, la aplicación automáticamente lo


dividirá en dos o más mensajes

33 | Página
Instituto Politécnico Nacional ESIME

CAPÍTULO 2 |“ESTRUCTURA
DEL PROGRAMA EN
ANDROID”

34 | Página
Instituto Politécnico Nacional ESIME

CAPÍTULO 2 | ESTRUCTURA DEL PROGRAMA EN ANDROID.

2.1 Android.

Android es un sistema operativo con un núcleo basado en Linux, diseñado para ser utilizado en
dispositivos móviles, aunque se ha empezado a introducir en diferentes dispositivos como
televisores, refrigeradores etc. Tras Android hay una alianza de 84 compañías para su
desarrollo y mantenimiento llamada Open Handset Alliance liderada por Google y se dedica
al desarrollo de estándares abiertos para dispositivos móviles.

Aunque el desarrollo de aplicaciones se podría realizar sobre el propio núcleo en lenguaje C o


C++, Android ofrece su propia maquina virtual (Dalvik), que ejecuta programas como si fuese
dispositivo móvil real, los procesos que ejecuta están limitados por los recursos y abstracciones;
no es posible realizar llamadas telefónicas, utilizar el adaptador Bluetooth de la PC, enviar y
recibir mensajes de texto. Cabe señalar que la Dalvik está optimizada para requerir poca
memoria y diseñada para ejecutar varios procesos, delegando al núcleo subyacente el soporte
de aislamiento entre aplicaciones.

Android es un sistema operativo multiplataforma, libre y gratuito, en el que para programar ó


incluirlo en un dispositivo no hay que pagar nada, lo cual ha permitido la creación de
una gran comunidad de desarrolladores, en la que no solo se crean nuevas aplicaciones para
él, sino que también lo han mejorado mediante nuevas versiones del núcleo encargado de
gestionar recursos (Kernel) o del mismo sistema operativo. La ventaja de disponer de un
sistema operativo abierto, es manejar una de las herramientas más potentes para el desarrollo
de software de forma gratuita.

2.2 Plataformas De Desarrollo.

El desarrollo de programas para Android se hace habitualmente con el lenguaje de


programación Java y para poder gestionar todas las versiones del sistema operativo es
necesario un software que se encargue tanto de la sincronización de los paquetes y de ejecutar
el código Java en una PC.

35 | Página
Instituto Politécnico Nacional ESIME

Esta tarea es realizada por el Android SDK (Software Development Kit, Kit de Desarrollo de
Software) que es un conjunto de herramientas de desarrollo de software que permite crear
aplicaciones para una versión del sistema en concreto.

Los elementos que intervienen en el desarrollo de aplicaciones en Android son los siguientes:

1. Java

2. Android SDK

3. Android ADT

4. IDE

Java es un lenguaje de programación que se usa para el desarrollo de aplicaciones que


mediante software, convierten a un dispositivo en un elemento multitarea.

El SDK de Android es un conjunto de herramientas de desarrollo, comprende un depurador de


código, biblioteca, un simulador de teléfono etc.

Android ADT es un controlador diseñado para darle un entorno estable al dispositivo, creando
una interfaz de usuario basados en la API (Application Programming Interface, Interfaz de
Programación de Aplicaciones) que corresponde a la versión de Android elegida.

Eclipse (Figura 2.1) es uno de los programas que permite el desarrollo de aplicaciones en
Android. Eclipse es un programa compuesto por un conjunto de herramientas de programación
de código abierto multiplataforma para desarrollar aplicaciones.

El entorno de desarrollo integrado (IDE) de Eclipse emplea manejadores (plugin´s) para


proporcionar toda su funcionalidad al frente de la plataforma de desarrollo. Adicionalmente
permite usar otros lenguajes de programación como son C o C++ y Python.

Dispone de un editor de texto con resaltado de sintaxis, la compilación es en tiempo real. Tiene
pruebas unitarias con control de versiones de Android mediante el emulador, integración para la
creación de proyectos, clases, etc.

36 | Página
Instituto Politécnico Nacional ESIME

Figura 2.1 Logo de Eclipse

Android Studio (Figura 2.2) es un entorno de desarrollo de Android basado en IDE (entorno de
desarrollo integrado) que es una aplicación de software que proporciona servicios integrales
para el desarrollo de software. Ofrece distintas características y mejoras con respecto a Eclipse,
ofrece un sistema de construcción a base del lenguaje específico de dominio (DSL) en lugar del
tradicional XML permite construir variantes y generación de APK múltiple, plantillas de apoyo
para los servicios de Google, Herramientas para elegir el rendimiento, y compatibilidad de
versiones.

Figura 2.2 Logo de Android Studio

37 | Página
Instituto Politécnico Nacional ESIME

NetBeans IDE (Figura 2.3) es el IDE oficial para Java, mediante sus editores de texto ,
analizadores de código, y convertidores, actualiza de forma más rápida que Android Studio y
Eclipse sin problemas las aplicaciones desarrolladas para poder utilizar las nuevas
construcciones del lenguaje Java 8, como operaciones funcionales, y las referencias a métodos
predefinidos de programación.

Analizadores y convertidores proporcionan la búsqueda a través de múltiples aplicaciones al


mismo tiempo, haciendo coincidir los patrones para la conversión a las nuevas construcciones
del lenguaje Java 8. NetBeans IDE establece el estándar para el desarrollo de tecnologías de
vanguardia gracias a su constante mejora.

Figura 2.3 Logo de NetBeans IDE

2.3 Aplicaciones En Android.

La estructura de las aplicaciones en Android se orienta al usuario o al dispositivo. En cualquier


caso, usuario y dispositivo se expresan en un “contexto”, y este último, además, tiene unas
características físicas determinadas, ejecuta una u otra versión del sistema.

Las aplicaciones Android se escriben nativamente en Java, las herramientas de su SDK


compilan el código, junto con ciertos recursos y datos particulares de la aplicación, en un
paquete Android cuya extensión es APK (Application PacKage File, Aplicación paquete de
archivos) dicho paquete es considerado una aplicación.

38 | Página
Instituto Politécnico Nacional ESIME

Los componentes de las aplicaciones son los bloques de construcción esenciales, cada uno es
un punto diferente mediante el cual el sistema puede acceder a las aplicaciones, y aunque no
todos los componentes son en realidad puntos de acceso a nivel del usuario algunos dependen
de los otros (lo que en programación se conoce como hilo), cada uno desempeña un papel en
específico. Cada uno sirve para un propósito distinto, por lo que tienen diferentes ciclos de vida
que definen la manera en que los mismos son creados y destruidos.

2.3.1 Estructura De Las Aplicaciones Para Android.

En la Figura 2.4 se muestran los componentes de las aplicaciones en Android.

Figura 2.4 Componentes de las aplicaciones en Android.

Actividades: Representa una pantalla con su correspondiente interfaz de usuario.

Intents: Son mensajes que generan notificaciones o cambios de estado, que al ser recibidos por
actividades o servicios pueden levantar procesos.

39 | Página
Instituto Politécnico Nacional ESIME

Vistas: Son los componentes de la interfaz de usuario, donde a través de grupos logran una
jerarquía, esto se logra a través de un archivo XML (Extensible Markup Language, Lenguaje de
Marcas Extensible) utilizado para almacenar datos en forma legible.

Servicios: Son componentes que ejecutan operaciones en segundo plano y no tienen una
interfaz de usuario.

Proveedor de Contenido: Representa la abstracción para almacenar y obtener datos


permanentes en aplicaciones diferentes.

Receptores de Difusión: Son componentes que responden a avisos y anuncios de difusión tipo
broadcast. Estos avisos provienen del sistema (batería baja, una llamada entrante, etc.).

Manifiesto: Es el archivo donde se configura la aplicación, contiene la definición de los aspectos


principales de la aplicación, su identificación (nombre, versión, icono,) sus componentes
(actividades, mensajes,) o los permisos necesarios para su ejecución.

Así cuando se crea una aplicación se debe tener en cuenta las características de los
dispositivos a los que se dirige, tanto en lo relacionado con el hardware como con la
versión de Android que lo controla.

2.3.2 Estructura De Un Proyecto Para Android Con ECLIPSE.

Eclipse genera automáticamente la estructura de carpetas necesaria para poder generar


posteriormente la aplicación. Esta estructura es común para cualquier aplicación,
independientemente de su tamaño y complejidad. En la Figura 2.5 se muestran los elementos
creados inicialmente para un nuevo proyecto Android en el entorno de desarrollo de Eclipse.

40 | Página
Instituto Politécnico Nacional ESIME

Figura 2.5 Esqueleto de una aplicación.

 Carpeta src: Contiene todo el código fuente de la aplicación, código de la interfaz


gráfica, clases auxiliares, etc. Inicialmente, Eclipse creará el código básico de la
pantalla Actividad principal de la aplicación, siempre bajo la estructura del paquete Java
definido.
 Carpeta res: Contiene todos los recursos de imágenes, vídeos, cadenas de texto,
etc.
 Carpeta gen: Contiene una serie de elementos de código generados automáticamente
al compilar el proyecto. Cada vez que se genera un proyecto, la maquinaria de

41 | Página
Instituto Politécnico Nacional ESIME

compilación de Android genera por nosotros una serie de ficheros fuente en Java
dirigidos al control de los recursos de la aplicación.
 Carpeta assets: Contiene todos los demás ficheros auxiliares necesarios para la
aplicación (que se incluirán en su propio paquete), como por ejemplo ficheros de
configuración, de datos, etc.

Así podemos definir que Android utiliza un motor Java de fondo y una interfaz gráfica que utiliza
XML. Un esquema podría ser este:

Motor Java<—>Interfaz XML<—>Usuario

2.4 Manejo De Bluetooth En Android.

El SDK de Android incluye soporte para la pila de interconexión Bluetooth. El API de Bluetooth
permite la conexión inalámbrica con otros dispositivos Bluetooth, en nuestro caso
habilitando características punto a punto y multipunto.

Las tareas realizadas con respecto a la conexión Bluetooth de nuestra aplicación son :

1. Escaneo de otros dispositivos Bluetooth.

2. Consulta del adaptador Bluetooth para identificar los dispositivos Bluetooth emparejados.

3. Establecer canales RFCOMM.

4. Conectarse con otros dispositivos a través del SDP (Service Discovery, Descubrimientos De
Servicio).

5. Transferir / recibir datos con otros dispositivos.

En la Figura 2.6 se muestran las clases que podemos encontrar en la API de Android para
Bluetooth, las cuales son:

42 | Página
Instituto Politécnico Nacional ESIME

 BluetoothAdapter: Representa el adaptador Bluetooth local y es el punto de entrada para


todas las interacciones Bluetooth. Mediante su uso se pueden descubrir otros
dispositivos Bluetooth, una lista de los dispositivos emparejados, inician un
“BluetoothDevice” usando una dirección MAC conocida y crear un
“BluetoothServerSocket” para escuchar las comunicaciones de otros dispositivos.

 BluetoothDevice: Representa un dispositivo Bluetooth remoto. Se usa para solicitar


una conexión con un dispositivo remoto a través de un “BluetoothSocket” o consultar
información acerca del dispositivo (nombre, dirección, clase, estado, etc.).

 BluetoothSocket: Representa la interfaz para un socket Bluetooth (parecido a un socket


TCP). Es el punto de conexión que permite a una aplicación el intercambio de datos con
otro dispositivo Bluetooth mediante el uso de InputStream y OutputStream.

 BluetoothServerSocket: Representa un server socket abierto que mantiene la escucha


para peticiones de entrada (parecido a un ServerSocket TCP). Para la conexión de dos
dispositivos Android, un dispositivo debe abrir el server socket con esta clase. Cuando el
dispositivo Bluetooth remoto hace la petición de conexión a ese dispositivo, el
“BluetoothServerSocket” retornará un “BluetoothSocket” cuando la conexión sea
aceptada.

 BluetoothClass: Describe las características generales y capacidades del


dispositivo Bluetooth. Es un conjunto de propiedades de solo lectura. Sin embargo, no
es fiable del todo ya que no describe todos los perfiles Bluetooth y servicios soportados
por el dispositivo.

 Bluetoothadmin : Es el paquete principal de la aplicación y el resto de paquetes están


incluidos en él. Las clases que se encontrarán dentro de este paquete serán las
“Activities”, es decir las pantallas gráficas de la aplicación.

 Bluetoothadmin.libs : En este paquete se alojarán todas las clases importantes de la


aplicación incluyendo reglas, explorador de archivos, listeners de Bluetooth, listeners de
posición y librerías para guardar en memoria.

 Bluetoothadmin.services : Será el paquete donde se alojen los servicios en segundo


plano de la aplicación.

43 | Página
Instituto Politécnico Nacional ESIME

 Bluetoothadmin.logic : Aquí se alojarán las clases estáticas de la aplicación, las cuales


se encargarán de guardar cierta lógica para el correcto funcionamiento.

Figura 2.6 Diagrama de paquetes de Bluetooth en Android.

Con esta estructura se realizará la implementación de la aplicación, asegurando cierta


independencia entre los tipos de clases así como las actividades de la misma, mejorando el
entendimiento del código fuente del software que se va a conectar con el microcontrolador
mediante el módulo de comunicación serial Bluetooth HC-06.

2.5 Transmisión De Datos Utilizando Bluetooth.

Hasta ahora, hemos dado una noción de las clases mas usadas para el uso de Bluetooth en
una App. En este apartado se mostrará como ocurre el intercambio de información por medio
del protocolo Bluetooth, para lo cual necesitaremos unas pequeñas nociones básicas de la
arquitectura cliente-servidor.

44 | Página
Instituto Politécnico Nacional ESIME

En primer lugar, el protocolo Bluetooth no se diferencia gran cosa de otros protocolos como
TCP. El funcionamiento es básicamente el siguiente:

 El servidor crea un socket de tipo BluetoothServerSocket y lo pone a la escucha de


peticiones de conexión.

 El servidor se mantiene en espera ocupada atendiendo solicitudes de conexión


mediante el método accept(). Este método bloqueará el hilo hasta que una conexión
entrante sea recibida.

 El cliente detecta un dispositivo Bluetooth (BluetoothDevice) a partir de la dirección del


dispositivo.

 El cliente abre un nuevo socket de tipo BluetoothSocket a partir del dispositivo que
obtuvo previamente (Figura 2.7).

Figura 2.7 Detección de dispositivos.

 El cliente realiza, a través del socket, una solicitud de conexión. Esta llamada es
bloqueante, por lo que el resultado sólo podrá ser éxito o fracaso (Figura 2.8).

45 | Página
Instituto Politécnico Nacional ESIME

Figura 2.8 Solicitud de conexión.

 El servidor acepta la conexión, notificándoselo al cliente. A continuación, abre un socket


de tipo BluetoothSocket como resultado de aceptar la conexión (Figura 2.9)

Figura 2.9 Confirmación de la solicitud de conexión.

46 | Página
Instituto Politécnico Nacional ESIME

 El cliente recibe la notificación del servidor, dando como resultado una conexión correcta
y muestra una señalización de espera ocupada

 Tanto cliente como servidor obtienen los flujos de entrada y salida de su respectivo
socket (Figura 2.10).

Figura 2.10 Dispositivos sincronizados.

 El hilo de la conexión comienza a validar el flujo de entrada esperando obtener datos. Si


la lectura se realiza, se envían los datos a la interfaz a través de un Handler.

 El envío de datos se realiza mediante la escritura en el flujo de salida (Figura 2.11)

47 | Página
Instituto Politécnico Nacional ESIME

Figura 2.11 Enlace establecido para la transmisión.

. En este punto debemos tener claros los siguientes conceptos:

 Cada uno de los elementos involucrados (servidor, cliente y conexión) estará gestionado
por un hilo independiente.

 El servidor hace uso de dos sockets: un socket para aceptar las conexiones entrantes
(BluetoothServerSocket) y otro para establecer la conexión (BluetoothSocket).

 El socket de la conexión es abierto en el momento en el que se acepta una conexión


entrante (método accept()), y se le pasará como parámetro al hilo encargado de
mantener la conexión.

 El cliente hace uso de un sólo socket (BluetoothSocket). Se obtiene a partir del


BluetoothDevice al cual se pretende conectar, y una vez solicitada y aceptada la
conexión (método connect()) se le pasa como parámetro al hilo encargado de mantener
la conexión.

48 | Página
Instituto Politécnico Nacional ESIME

 En un principio ambos dispositivos involucrados en la conexión actúan como clientes y


como servidores, esperando conexiones entrantes y también pudiendo solicitarlas.

 El servidor será, finalmente, el primero de los dispositivos que acepte una conexión
entrante. Normalmente (pero no necesariamente, ya que pueden desearse conexiones
simultaneas), el proceso de aceptar conexiones se detendrá mientras exista una
conexión activa.

 El proceso de descubrimiento consume muchísimos recursos, por lo que conviene


detener el proceso en caso de que se encuentre en marcha.

2.6 Descripción De La Aplicación Realizada En Android.

Para cumplir con los objetivos de esta Tesis, se realizaron dos aplicaciones en Android
llamadas Sistema Casa y Sistema Usuario, respectivamente. En la Figura 2.12 se muestra un
diagrama de comunicación del proyecto. La aplicación SistemaCasa permite la comunicación
bidireccional vía Bluetooth entre un teléfono inteligente con sistema operativo Android y un
microcontrolador Texas Instrumens de la familia MSP430.

El microprocesador permite tomar la lectura a los valores de los sensores externos conectados
al microcontrolador. Desde el teléfono celular es posible visualizar los datos de los sensores
conectados al microcontrolador e interactuar con estos. La aplicación SistemaUsuario permite
la interacción remota a través de comunicación via SMS entre dos teléfonos celulares y permite
la visualización de datos e interacción con el sistema local.

49 | Página
Instituto Politécnico Nacional ESIME

Figura 2.12 Diagrama de comunicación

Primero se explicará el diseño elegido para la interfaz gráfica de Sistema Usuario y Sistema
Casa tanto a nivel de Activities como el flujo entre ellas.

Para ello, primero vamos a mostrar las clases (Tabla 5) relacionadas con las Activities que
hacen referencia a la interfaz gráfica del programa.

La manera de relacionarlas es mediante la actividad llamada “Login”, la cual tiene definidos


los métodos para gestionar la selección y el cambio de conexión de la aplicación con el
microcontrolador, a partir de ella se ligan el resto de actividades de la aplicación.

Antes de explicar el diseño y funcionamiento de cada una de las actividades y clases, vamos a
proceder a enumerarlas para poder explicar de una manera más directa, la lógica entre ellas y
lo podemos ver en la Tabla 5.

50 | Página
Instituto Politécnico Nacional ESIME

Número Activity
1 Login
2 MainActivity
3 Distancia
4 Activity_Casa

Tabla 5 Numeración de Actividades.

Las clases de la Tabla 6 representan todas las reglas de la aplicación, así como los métodos
por los cuales se gestionan los procesos de conexión Bluetooth, envío, recepción y validación
de caracteres mediante SMS.

Número Clase
1 Login
. 2 BtConnectionThread
3 MainActivity
4 Distancia
5 SMSReceiver
6 ConexionCasa
7 SendBluetooth

Tabla 6 Clases.

Nota: Para mas información revisar el código fuente en Anexo 1

En las siguientes secciones se describe a detalle las diferentes partes constitutivas del
programa.

51 | Página
Instituto Politécnico Nacional ESIME

2.6.1 Validación De Usuario.

Se trata del menú principal de la aplicación, es la encargada proporcionar confiabilidad


mediante la validación de un usuario y password, cuyos datos serán solo del conocimiento del
usuario. El tipo de conexión ya sea remoto o local también recae en esta interfaz, vinculando a
través de la pulsación de un botón los diferentes tipos de conexión. El diseño inicial se puede
observar en la Figura 2.13.

Login

Ingresa Tu Usuario

Invalido
Usuario Intruso

Error en la Validación

Valido
Ingresa Tu Password

Invalido
Password

Valido

Remota Tipo De Conexión Local

Figura 2.13 Diseño de la interfaz Login.

 Si se pulsa el botón del logo sin haber ingresado ningún carácter en el editor de texto
que se encuentra debajo de texto en pantalla de Usuario y Password, a través de un
texto en pantalla la App nos indicará que se debe ingresar un Usuario y un Password.

 Si se ha ingresado un carácter en el editor de texto debajo del texto un pantalla Usuario


y se a pulsado el botón del logo, la App nos indicará que se debe ingresar un Password.

52 | Página
Instituto Politécnico Nacional ESIME

 Si se ha ingresado un carácter en el editor de texto debajo del texto de pantalla


Password y se a pulsado el botón del logo, la App nos indicará que se debe ingresar un
Usuario .

 Si se han ingresado un carácter en los dos editores de texto y no cumple con la


validación del usuario mediante un cuadro de diálogo la App notificará un error en la
validación y un mensaje de “Intruso”.

 Si se han ingresado los caracteres correctos de usuario y contraseña una vez pulsado el
botón del logo, la App notificará “Bienvenido” y mediante cuadro de diálogo validará el
tipo de conexión que se ha seleccionado vinculando a la siguiente actividad.

Nota : Establecida la validación, si se selecciona la actividad local y no se encuentra encendido


el adaptador Bluetooth del teléfono celular, mediante cuadro de diálogo la App solicitará al
usuario el permiso para activar o no el adaptador Bluetooth.

2.6.2 Comunicación Bluetooth.

En esta actividad se encuentran implícitas dos clases (MainActivity y BtConnectionThread) en


ellas se encuentran los métodos y elementos para la conexión Bluetooth. Una vez
seleccionado el tipo de conexión Local; si el usuario y password son correctos, el adaptador
Bluetooth del teléfono inteligente en su modalidad de maestro mandará una petición de
conexión al módulo Bluetooth HC-06.

En caso de que el adaptador Bluetooth del teléfono se encuentre encendido, el adaptador se


vinculará al módulo Bluetooth HC-06 con modalidad esclavo de manera automática mediante su
dirección MAC previamente descrita en el código fuente del programa, mostrando a través de
un texto en pantalla que la conexión fue establecida, como se ve en la Figura 2.14.

53 | Página
Instituto Politécnico Nacional ESIME

Cabe señalar que para la compatibilidad en la velocidad de transmisión, gestión de enlace,


servicios de descubrimiento, creación del RFCOMM, el adaptador Bluetooth del teléfono
inteligente utiliza el UUID (Universally Unique Identifier, Identificador Universal Único) utilizando
el parámetro {00001101-0000-1000-8000-00805F9B34FB} que define los indicadores de
protocolos mencionados anteriormente.

Nota: Para mas información revisar la hoja de especificaciones en el Anexo 1

Local

Luces Encender / Apagar

Cerraduras Encender / Apagar

Temperatura Valor

Ultrasonico Valor

Gas Valor

Figura 2.14 Conexión exitosa, Bluetooth con el módulo Bluetooth HC-06.

Si el adaptador Bluetooth del teléfono inteligente se encuentra apagado, la App mediante un


cuadro de diálogo, solicitará el permiso para la activación del adaptador Bluetooth, mostrando a
través de un texto en pantalla que la solicitud de conexión fue rechazada, debido a que se
encuentra apagado en adaptador de Bluetooth del teléfono celular (Figura 2.15).

54 | Página
Instituto Politécnico Nacional ESIME

On Click

Proceso de Señalización

Ignorada
Solicitud de conexion mediante MAC
Local Sin Exito
con HT-06

Aceptada

Local con Exito

Figura 2.15 Activación del adaptador Bluetooth para un teléfono inteligente y solicitud de
conexión errónea.

Bajo estos criterios, la App nos mostrará la actividad Main Activity sin la conexión entre estos
dos dispositivos. A partir de la vinculación entre el teléfono inteligente y el módulo Bluetooth
HC-06, queda establecido un canal RFCOMM, mostrando el led de señalización del módulo un
estado de conectado en su modalidad esclavo y en la App mediante el mensaje en pantalla
Conectado correctamente a: el módulo HC-06. Ya vinculados los dos dispositivos se podrá
realizar la transmisión de datos entre el microcontrolador y el teléfono inteligente.

Nota: Para poder utilizar el adaptador Bluetooth en Android es estrictamente necesario definir
en el manifets de nuestra App los permisos:

<uses-permission android:name="android.permission.BLUETOOTH" />


<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

BLUETOOTH: Necesario para realizar cualquier comunicación BT (pedir o aceptar conexiones,


enviar datos).

BLUETOOTH_ADMIN: Necesario para descubrimiento de equipos o configurar BT.

55 | Página
Instituto Politécnico Nacional ESIME

2.6.3 Comunicación Remota.

Para el método de conexión a distancia, la App Sistema Usuario nos da la posibilidad de enviar
y validar SMS. El encargado de ello es la actividad Distancia (Figura 2.16). Para la validación de
caracteres de control, la clase SMSReceiver que soporta CDMA y GSM recibe como parámetro
una cadena de texto convirtiéndolo en una lista de matriz de cadenas, esto para interpretar el
mensaje que ha llegado. El tamaño de estas cadenas será menor o igual al máximo permitido
por un SMS.

En el método que se encarga de enviar el SMS se le proporciona como parámetro el número


de celular al que se va a enviar y los caracteres de control a distancia. En el caso de tener un
SMS de longitud mayor que lo permitido los procesos el sistema de control no se verán
afectados, debido a la validación de caracteres que realiza la clase SMSReceiver.

Remoto

Palabra Clave :

Luces LUCES

Palabra Clave :

Cerraduras CERRADURAS

Palabra Clave :

Temperatura TEMPERATURA

Palabra Clave :

Proximidad ULTRASONICO

Palabra Clave :

Nivel De Gas GAS

Figura 2.16 Actividad distancia.

 Si se pulsa el botón “Luces” la App enviará un mensaje al número previamente


establecido con los caracteres "LUCES"

56 | Página
Instituto Politécnico Nacional ESIME

 Si se pulsa el botón “Cerraduras” la App enviará un mensaje al número previamente


establecido con los caracteres "CERRADURAS"

 Si se pulsa el botón “Temperatura” la App enviará un mensaje al número previamente


establecido con los caracteres "TEMPERATURA"

 Si se pulsa el botón “Proximidad” la App enviará un mensaje al número previamente


establecido con los caracteres "ULTRASONICO"

 Si se pulsa el botón “Nivel De Gas” la App enviará un mensaje al número previamente


establecido con los caracteres "GAS".

Nota: Para poder hacer uso del administrador de mensajes en Andriod es estrictamente
necesario definir en el manifets de nuestra App los permisos:

<uses-permission android:name="android.permission.SEND_SMS" />


<uses-permission android:name="android.permission.RECEIVE_SMS" />

SEND_SMS: Enviar SMS sin usar la aplicación por defecto de Android


RECEIVE_SMS : Leer los SMS recibidos y validar los caracteres requeridos.

Para mas información acerca del código revisar Anexo 2

2.6.4 Recepción y Procesamiento.

Para esta parte, la comunicación es vía SMS: una vez que se recibe el mensaje, la aplicación
desarrollada Sistema Casa valida los caracteres y si la cadena de texto coincide con las
palabras de control: “LUCES”, "CERRADURAS", "TEMPERATURA", "ULTRASONICO", "GAS"
se establece la conexión vía Bluetooth de manera automática utilizando la estructura de las
clases SendBluetooth y BtConnectionThread, el módulo Bluetooth HC-06 en su modalidad
esclavo transmite los datos establecidos al microcontrolador. La Figura 2.17 nos muestra el
diagrama de comunicación que realiza la App Sistema Casa.

57 | Página
Instituto Politécnico Nacional ESIME

Figura 2.17 Comunicación de la App Sistema Casa

A partir de la validación de los caracteres de control enviados en el SMS, el teléfono inteligente


y el módulo Bluetooth HC-06 quedan vinculados de manera automática. Los dos dispositivos
realizan la transmisión de datos para interactuar con los sensores como se observa en la
interfaz de usuario Activity_Casa (Figura 2.18).

58 | Página
Instituto Politécnico Nacional ESIME

SMS

Si es :

LUCES Encender / Apagar

CERRADURAS Encender / Apagar

TEMPERATURA Valor

ULTRASONICO Valor

GAS GAS

NO

INICIO

Figura 2.18 Actividad Casa.

En el Anexo 1 se presenta a detalle el código de la aplicación desarrollada en Android. Se


presenta el código para cada una de las aplicaciones desarrolladas ,además del código XML
para la interfaz gráfica. En el siguiente capítulo se describe tanto la aplicación como el circuito
utilizado para el microcontrolador.

59 | Página
Instituto Politécnico Nacional ESIME

CAPÍTULO 3 |
“ESTRUCTURA DEL
PROGRAMA EN EL
MICROCONTROLADOR”

60 | Página
Instituto Politécnico Nacional ESIME

CAPÍTULO 3 | ESTRUCTURA DEL PROGRAMA EN EL


MICROCONTROLADOR.

3.1 Tarjeta De Desarrollo.

Los microcontroladores de la línea MSP430 de Texas Instruments son microcontroladores de 16


bits, dichos microcontroladores se caracterizan por un extremadamente bajo consumo de
potencia, bajo costo, implementados con gran frecuencia en sistemas inalámbricos y/o de ultra
bajo consumo de energía, incluso menores que algunos microcontroladores de 8 bits
disponibles actualmente en el mercado y es una alternativa para el desarrollo de aplicaciones
con sensores, de seguridad, industriales, usualmente implementados con microcontroladores
de 8 o 16 bits.

El LaunchPad MSP430 es una placa que incluye un programador flash y una herramienta para
depuración (debugging), además de un dip de 14-20 pines y emulación integrada. La
programación flash se la realiza "en circuito" mediante el protocolo Spy Bi-Wire (JTAG de 2
líneas) y la memoria flash puede ser programada y borrada en segundos sin necesidad de una
fuente de voltaje externa. Como todo lo necesario para su programación y depuración está
incluido en la placa, simplemente se debe conectar el LaunchPad a un puerto USB de la PC y
está listo para programarse. La tarjeta incluye también leds, botones programables y 10
conexiones de pines para la conexión de dispositivos externos.

La placa LaunchPad contiene:

 Socket de 14-/20-pin DIP (N)

 Emulación flash incluida para depuración y programación

 2 Leds programables

 1 Led de encendido

 1 botón programable

 1 botón de reset

61 | Página
Instituto Politécnico Nacional ESIME

El MSP430 está construido con una CPU de 16 bits usa una arquitectura Von Neumann, con
direccionamiento simple para las instrucciones y los datos.

La memoria se direcciona por bloque de 1byte, y los pares de byte se combinan en


forma endianness para hacer instrucciones de hasta 16 bits. Esta arquitectura tiene
reminiscencias del procesador DEC PDP-11. Este dispositivo tiene una gran variedad de
configuraciones que se agrupan en familias, con velocidades máximas de procesamiento y
capacidades de direccionamiento diferentes, y modelos con diferentes selecciones de entre los
siguientes periféricos: diferentes bloques y capacidades de memoria, oscilador interno,
temporizadores incluyendo un PWM, temporizador watchdog, USART, bus SPI, bus de
10/12/14/16-bit, conversores ADC/DAC y circuitos de apagado y reinicio.

Algunos periféricos opcionales no tan usuales incluyen comparadores (que se utilizan con el
temporizador para funcionar como un ADC simple), amplificadores operacionales dentro del
chip para el acondicionamiento de señales, conversores DAC de 12 bits, controlador de pantalla
LCD, multiplicador hardware, y DMA para el manejo de datos entre zonas de memoria y/o los
periféricos. A diferencia de las versiones anteriores con EPROM (PMS430E3xx) y ROM
enmascarada (MSP430Cxxx), estos dispositivos son programables en sistema a través de
JTAG o a través del BSL (Bootstrap Loader; Cargador de Arranque) usando RS-232.

CARACTERÍSTICAS PRINCIPALES EN LA CPU

 ALU de 16 bits que efectúa operaciones lógicas (AND, OR, XOR), substracciones,
adiciones y comparaciones.

 RISC con 27 instrucciones y 7 modos de direccionamiento.

 Arquitectura Ortogonal, además cualquier instrucción se puede usar con cualquier modo
de direccionamiento.

 Todos los registros en la CPU son completamente accesibles.

 Las operaciones entre registros se llevan a cabo en un ciclo.

 Los registros de 16 bits reducen la cantidad de veces que se accede a la memoria al


ejecutar una instrucción.

62 | Página
Instituto Politécnico Nacional ESIME

 El bus de direcciones de 16 bits permite el acceso y los saltos a lo largo de todo el mapa
de memoria.

 El generador de constantes proporciona las 6 constantes más usadas para reducir el


tamaño del código y facilitar la programación a través de instrucciones emuladas.

 Transferencias de memoria a memoria sin necesidad de registros intermedios.

 Instrucciones y modos de direccionamiento para 8 y 16 bits (Byte y Word).

 12 registros de propósito general que pueden almacenar tanto datos como direcciones.

 Construida utilizando lógica estática con la cual no hay un mínimo de frecuencia de


operación, lo cual permita que la CPU pueda ser detenida.

Estas características son logradas al tomar las mejores características de la arquitectura RISC y
mejorarlas. Por ejemplo los PIC´s contienen un solo registro de trabajo (W) donde se almacena
un operando, el otro operando es tomado de otro registro, después se ejecuta la instrucción y el
resultado es almacenado ya sea en el registro de trabajo o en el otro registro que fue usado
como segundo operando, además el direccionamiento indirecto solo está disponible para un
único registro.

En el caso de los HCS12 de Freescale cuentan con un registro acumulador para almacenar
datos y dos registros índices para almacenar direcciones.

Al comparar la CPU de los MSP430 con otras CPU que pertenecen a microcontroladores
podemos notar que la arquitectura de los MSP430 nos permite una programación más eficiente,
reduce el tamaño de código que una aplicación pueda requerir, permite también realizar una
función específica con menos instrucciones que en otro tipo de microcontroladores y brinda al
desarrollador una flexibilidad y portabilidad que reduce el costo de los productos finales.

En la Figura 3.1 podemos observar los 16 registros que conforman la unidad central de
procesamiento (CPU), así como la unidad aritmética lógica (ALU) de 16 bits que puede recibir
sus operandos de cualquiera de los 16 registros, los cuales a través del bus de direcciones y
datos pueden acceder a cualquier parte de la memoria.

63 | Página
Instituto Politécnico Nacional ESIME

Figura 3.1 CPU del MSP430

64 | Página
Instituto Politécnico Nacional ESIME

Los siguientes diagramas (Figura 3.2) muestran la distribución de pines completo para el
LaunchPad MSP430G2452 y MSP430G2553 en Energía.

Energía es una plataforma de prototipos electrónicos de código abierto para el área de


ejecución basado Texas Instruments MSP430, su IDE es multiplataforma y compatible en Mac
OS, Windows y Linux que se basa en procesamiento. El equipo de Energía adopta la filosofía
de aprender haciendo y se basa en la idea que es más fácil trabajar directamente con el
hardware.

Figura 3.2 LaunchPad MSP430G2453 en Energía.

65 | Página
Instituto Politécnico Nacional ESIME

3.2 Entorno De Desarrollo Para El MSP340.

Se utilizó el entorno de desarrollo llamado Energía que está constituido por un editor de texto
para escribir el código, un área de mensajes, una consola de texto, una barra de herramientas
con botones para las funciones comunes, y una serie de menús. Permite la conexión con el
hardware del MSP430 para cargar los programas y comunicarse con ellos. Energía utiliza lo que
denomina "sketch" (programa) para escribir el software. Estos programas son escritos en el
editor de texto. Existe la posibilidad de cortar/pegar y buscar/remplazar texto. En el área de
mensajes se muestra información mientras se cargan los programas y también muestran los
errores. La consola muestra el texto de salida para el entorno de Energía incluyendo los
mensajes de error completos, la barra de herramientas permite verificar el proceso de carga,
creación, apertura y guardado de programas, y la monitorización serie; elementos de la barra de
herramientas:

Verify/Compile: Revisa el código en busca de errores.

New: Crea un nuevo sketch.

Open: Presenta un menú de todos los programas sketch de su "sketchbook", (librería de


sketch). Un click sobre uno de ellos lo abrirá en la ventana actual.

Save: Salva el programa sketch

Upload to I/O Board: Compila el código y lo vuelca en la placa E/S del MSP430.

Serial Monitor: Inicia la Monitorización Serie.

66 | Página
Instituto Politécnico Nacional ESIME

Sketchbook (Librería de Sketch).

El entorno de Energía incluye el concepto de "sketchbook": que es el lugar estándar para el


almacenamiento de sus programas (o "sketch"). Pueden ser normalmente ficheros de código
Energía (no extensiones), ficheros C (extensiones .c), ficheros c++ (.cpp), o ficheros de
cabecera (.h) como se observa en la Figura 3.3.

Libraries (Librerías).

Las librerías proporcionan funcionalidad extra para la utilización en "sketches", por ejemplo,
para trabajar con hardware o manipular datos. Esto insertará una o más sentencias #include al
principio del "sketch" y compilará la librería con su "sketch".

Debido a que las librerías se cargan a la placa junto con su "sketch", incrementan la ocupación
del espacio disponible. Si un "sketch" no precisa de una librería, simplemente borra su
sentencia #include en la parte inicial de su código.

Serial Monitor (Monitor Serie).

Muestra los datos enviados desde la placa MSP430 (placa USB o serie). Para enviar datos a la
placa, se teclea el texto y se pulsa el botón "send" o “enter”, selecciona la velocidad (baud rate)
en el menú desplegable que coincida con el configurado en Serial.begin dentro de su "sketch".

Advertir que en Mac o Linux, la placa MSP430 se resetea (su "sketch" es reiniciado desde el
principio) cuando conecta con el monitor serie.

67 | Página
Instituto Politécnico Nacional ESIME

Figura 3.3 Software Energía.

3.3 Lenguaje De Programación.

El lenguaje de programación del microcontrolador MSP430 de Texas Instrumens con el entorno


de Energía está basado en el lenguaje de programación C/C++ y soporta todas las
construcciones de C estándar y algunas funcionalidades de C++. Vincula la librería AVR Libc y
permite el uso de todas sus funciones. La estructura de programación con el ambiente del
software Energía es bastante simple y se compone de al menos dos partes. Estas dos partes
necesarias, o funciones, encierran bloques que contienen declaraciones o instrucciones.

void setup()
{
Sección de inicio de instrucciones
}
void loop()
{
Sección de ejecución instrucciones
}

En donde setup () es la parte encargada de recoger la configuración y loop () es la que contiene


el programa que se ejecutará cíclicamente (de ahí el termino loop; bucle). La función de
configuración debe contener la declaración de las variables.

68 | Página
Instituto Politécnico Nacional ESIME

Es la primera función que se ejecuta en el programa, se ejecuta sólo una vez, y se utiliza para
configurar o inicializar pinMode (modo de trabajo de las E/S), la configuración de la
comunicación en serie y otras. La función loop () contiene el código que se ejecutará
continuamente (lectura de entradas, activación de salidas, etc.). Esta función es el núcleo de
todos los programas de Energía y la que realiza la mayor parte del trabajo.

setup ()

La función setup () se invoca una sola vez cuando el programa empieza. Se utiliza para
inicializar los modos de trabajo de los pines, o el puerto serie. Debe ser incluido en un
programa aunque no haya declaración que ejecutar.

void setup ()
{
pinMode(pin, OUTPUT); // configura el 'pin' como salida
}

loop ()

Después de llamar a setup (), la función loop () hace precisamente lo que sugiere su nombre,
se ejecuta de forma cíclica, lo que posibilita que el programa responda continuamente ante los
eventos que se produzcan en la tarjeta

void loop ()
{
digitalWrite(pin, HIGH); // pone en uno (on, 5v) el ´pin´
delay(1000); // espera un segundo (1000 ms)
digitalWrite(pin, LOW); // pone en cero (off, 0v.) el ´pin´
delay(1000);
}

Variables
Una variable es una manera de nombrar y almacenar un valor numérico para su uso posterior
por el programa. Las variables son números que pueden variar continuamente en contra de lo
que ocurre con las constantes cuyo valor nunca cambia.

69 | Página
Instituto Politécnico Nacional ESIME

Una variable debe ser declarada y, opcionalmente, asignarle un valor. El siguiente código de
ejemplo declara una variable llamada variableEntrada y luego le asigna el valor obtenido en la
entrada analógica del PIN2:

int variableEntrada = 0; // declara una variable y le asigna el valor 0


variableEntrada = analogRead(2); // la variable recoge el valor analógico del PIN2

'variableEntrada' es la variable en sí. La primera línea declara que será de tipo entero “int”. La
segunda línea fija a la variable el valor correspondiente a la entrada analógica PIN2. Esto hace
que el valor de PIN2 sea accesible en otras partes del código.

Una vez que una variable ha sido asignada, o re-asignada, se puede probar su valor para ver si
cumple ciertas condiciones o se puede utilizar directamente su valor. Como ejemplo ilustrativo
veamos tres operaciones útiles con variables: el siguiente código prueba si la variable
“entradaVariable” es inferior a 100, si es cierto se asigna el valor 100 a “entradaVariable” y, a
continuación, establece un retardo (delay) utilizando como valor “entradaVariable” que ahora
será como valor mínimo de 100.

if (entradaVariable < 100) // pregunta si la variable es menor de 100


{
entradaVariable = 100; // si es cierto asigna el valor 100 a esta
}
delay(entradaVariable); // usa el valor como retardo

pinMode (pin, mode)

Esta instrucción es utilizada en la parte de configuración setup () y sirve para configurar el modo
de trabajo de un PIN pudiendo ser INPUT (entrada) u OUTPUT (salida).

pinMode(pin, OUTPUT); // configura ‘pin’ como salida

Los terminales del MSP430, por defecto, están configurados como entradas, por lo tanto no es
necesario definirlos en el caso de que vayan a trabajar como entradas.

70 | Página
Instituto Politécnico Nacional ESIME

Los pines configurados como entrada quedan, bajo el punto de vista eléctrico, como entradas
en estado de alta impedancia. Estos pines tienen a nivel interno una resistencia de 20 KΩ a las
que se puede acceder mediante software. Estas resistencias se acceden de la siguiente
manera:
pinMode(pin, INPUT); // configura el ‘pin’ como entrada
digitalWrite(pin, HIGH); // activa las resistencias internas

Las resistencias internas normalmente se utilizan para conectar las entradas a interruptores. En
el ejemplo anterior no se trata de convertir un pin en salida, es simplemente un método para
activar las resistencias interiores. Los pines configurados como OUTPUT (salida) se dice que
están en un estado de baja impedancia y pueden proporcionar 40 mA de corriente a otros
dispositivos y circuitos.

Esta corriente es suficiente para alimentar un diodo LED (no olvidando poner una resistencia en
serie), pero no es lo suficiente grande como para alimentar cargas de mayor consumo como
relés, solenoides, o motores.

DigitalRead (pin)

Lee el valor de un pin (definido como digital) dando un resultado HIGH (alto) o LOW (bajo). El
pin se puede especificar ya sea como una variable o una constante.

valor = digitalRead(Pin); // hace que 'valor sea igual al estado leído en ´Pin´

digitalWrite (pin, value)

Envía al ´pin´ definido previamente como OUTPUT el valor HIGH o LOW (poniendo en 1 o 0 la
salida). El pin se puede especificar ya sea como una variable o como una constante.

digitalWrite(pin, HIGH); // deposita en el 'pin' un valor HIGH (alto o 1)

El siguiente ejemplo lee el estado de un botón conectado a una entrada digital y lo escribe en el
pin de salida LED:

71 | Página
Instituto Politécnico Nacional ESIME

int led = 13; // asigna a LED el valor 13


int boton = 7; // asigna a botón el valor 7
int valor = 0; // define el valor y le asigna el valor 0
void setup()
{
pinMode(led, OUTPUT); // configura el led (pin13) como salida
pinMode(boton, INPUT); // configura botón (pin7) como entrada
}

void loop()
{
valor = digitalRead(boton); // lee el estado de la entrada botón
digitalWrite(led, valor); // envía a la salida ´led´ el valor leído
}

AnalogRead (pin)

Lee el valor de un determinado pin definido como entrada analógica con una resolución de 10
bits. Esta instrucción sólo funciona en los pines (A0-A7). El intervalo de valores que se pueden
leer oscila de 0 a 1023.

valor = analogRead(pin); // asigna a valor lo que lee en la entrada ´pin'

Nota: Las terminales analógicas (A0-A7) a diferencia de las terminales digitales, no necesitan
ser declarados como INPUT u OUPUT ya que son siempre INPUT´s.

AnalogWrite (pin, value)

Esta instrucción sirve para escribir un pseudo valor analógico utilizando el procedimiento de
modulación por ancho de pulso (PWM) a una de las terminales del MSP430 marcados como
“pin PWM”.

analogWrite(pin, valor); // escribe 'valor' en el 'pin' definido como analógico

Si se envía el valor 0, se genera una salida de 0 volts en la terminal especificada; un valor de


255 genera una salida de 5 volts de salida en el pin especificado. Para valores de entre 0 y 255,
el pin saca tensiones entre 0 y 5 volts; el valor HIGH de salida equivale a 5 volts.

72 | Página
Instituto Politécnico Nacional ESIME

Teniendo en cuenta el concepto de señal PWM un valor de 64 equivaldrá a mantener 0 volts de


tres cuartas partes del tiempo y 5 volts a una cuarta parte del tiempo.
Un valor de 128 equivaldrá a mantener la salida en 0 la mitad del tiempo y 5 volts la otra mitad
del tiempo, y un valor de 192 equivaldrá a mantener en la salida 0 volts una cuarta parte del
tiempo y de 5 volts de tres cuartas partes del tiempo restante.
Debido a que esta es una función de hardware, en el pin de salida analógica (PWM) se
generará una onda constante después de ejecutada la instrucción analogWrite hasta que se
llegue a ejecutar otra instrucción analogWrite (o una llamada a digitalRead o digitalWrite en el
mismo pin).

Nota: Las salidas analógicas a diferencia de las digitales, no necesitan ser declaradas como
INPUT u OUTPUT.

El siguiente ejemplo lee un valor analógico de un pin de entrada analógica, convierte el valor
dividiéndolo por 4, y envía el nuevo valor convertido a una salida del tipo PWM o salida
analógica:

int led = 10; // define el pin 10 como ´led´


int analog = 0; // define el pin 0 como ´analog´
int valor; // define la variable ´valor´

void setup(){} // no es necesario configurar entradas y salidas


void loop()
{
valor = analogRead(analog); // lee el pin 0 y lo asocia a la variable valor
valor /= 4; //divide valor entre 4 y lo reasigna a valor
analogWrite(led, valor); // escribe en el pin10 valor
}

Delay (ms)

Detiene la ejecución del programa la cantidad de tiempo en ms que se indica en la propia


instrucción. De tal manera que 1000 equivale a 1seg.
delay(1000); // espera 1 segundo

73 | Página
Instituto Politécnico Nacional ESIME

Serial.begin (rate)

Abre el puerto serie y fija la velocidad en baudios para la transmisión de datos en serie. El valor
típico de velocidad para comunicarse con la PC es 9600 bps, aunque otras velocidades pueden
ser soportadas.

void setup()
{
Serial.begin(9600); // abre el Puerto serie
} // configurando la velocidad en 9600 bps
Nota: Cuando se utiliza la comunicación serie los pins digital 0 (RX) y 1 (TX) no pueden
utilizarse al mismo tiempo.

Serial.println (data)

Imprime los datos en el puerto serie, seguido por un retorno de carro automático y salto de
línea. Este comando toma la misma forma que Serial.print (), pero es más fácil para la lectura
de los datos en el Monitor Serie del software.

Serial.println(analogValue); // envía el valor 'analogValue' al puerto

3.4 Descripción Del Programa Realizado Para El Microcontrolador


MSP430

Para hacer que los dos dispositivos que se ocupan en esta Tesis (microcontrolador y un
teléfono inteligente) interactúen, se necesita que los dispositivos involucrados se comuniquen
entre sí utilizando un lenguaje o protocolo común entre ambos dispositivos. La forma más
común de establecer dicha comunicación es utilizando la comunicación serie, la comunicación
serie consiste en la transmisión y recepción de pulsos digitales, a una misma velocidad. El
transmisor envía pulsos que representan el dato enviado a una velocidad determinada, y el
receptor escucha dichos pulsos a esa misma velocidad. Esta técnica es conocida como
comunicación serie asíncrona.

74 | Página
Instituto Politécnico Nacional ESIME

Para nuestro caso, la tarjeta MSP430 cuenta con un puerto serial, al cual se puede acceder
mediante dos pines digitales Rx (de recepción) y Tx (de transmisión). Energía facilita la
manipulación del proceso de envió de datos, esta velocidad es conocida como “baud rate” o
baudaje. La velocidad es determinada por el programador a través de la interfaz en pantalla con
una velocidad variable de 300, 1200, 2400, 4800, 9600, 14900 pulsos por segundo. El medio
utilizado es el UART (Receptor Asíncrono Universal) encargado de llevar acabo la
comunicación serial con el microcontrolador.

Una vez que tenemos los dos dispositivos conectados y que intercambian datos a una
velocidad de 9600 bits por segundo (también llamados baudios), el receptor capturará el voltaje
que le está enviando el transmisor, y 1/9600 bits por segundo, interpretará dicho voltaje como
un nuevo bit de datos.

Si el voltaje tiene valor HIGH (+5 volts en la comunicación con el MSP430), interpretará el dato
como 1, y si tiene valor LOW (0 volts), interpretará el dato como 0. De esta forma, interpretando
una secuencia de bits de datos, el receptor puede obtener el mensaje transmitido.

Los dispositivos electrónicos usan números para representar en bytes caracteres alfanuméricos
(letras y números). Para ello se utiliza el código estándar llamado ASCII (enlace), el cual asigna
a cada número o letra el valor de un byte comprendido entre el rango de 0 a 127.

El código ASCII es utilizado en la mayoría de los dispositivos como parte de su protocolo de


comunicaciones serie RS-232. Si el dispositivo transmitiría el número 90 la secuencia de
pulsos será como en la Figura 3.4.

Figura 3.4 Número 90 (que en binario es 01011010) transmitido mediante la interfaz serie RS-232.

75 | Página
Instituto Politécnico Nacional ESIME

Otro punto importante, es determinar el orden de envío de los bits. La transmisión de cada byte
se envía en forma independiente, se transmiten 8 bits de datos de uno a uno comenzando con
el menos significativo y van precedidos con un bit de inicio (START) y detrás de ellos se coloca
un bit de alto (STOP). De acuerdo con las normas del formato estándar NRZ; en el otro
extremo el receptor del sistema de comunicación reconoce los caracteres por su bit de inicio y
bit de parada.

Entonces para que sea posible la comunicación serie, ambos dispositivos deben concordar en
los niveles de voltaje (HIGH y LOW), en la velocidad de transmisión, y en la interpretación de
los bits transmitidos.

Es decir, que deben de tener el mismo protocolo de comunicación serie (conjunto de reglas que
controlan la secuencia de mensajes que ocurren durante una comunicación entre dispositivos).
Generalmente se usa el protocolo serie llamado RS-232 tanto conectores y puertos serie que
utilizan dicha norma.

Los diferentes procesos que intervienen en el programa que controla elementos presentes en
una casa habitación, como lo son:

 Encendido/Apagado de las luces de una habitación

 Abrir/Cerrar las cerraduras de una habitación

 Leer el valor de temperatura en una habitación

 Detectar la presencia de algún intruso en un determinado lugar

 Leer el valor del nivel de gas LP en un determinado lugar

76 | Página
Instituto Politécnico Nacional ESIME

Los comandos a recibir para el control de estos procesos son:

1 Encender/Apagar la iluminación

2 Abrir/Cerrar las cerraduras

3 Leer el valor de temperatura en una habitación

4 Detectar la presencia de algún intruso en un determinado lugar

5 Leer el nivel de gas LP

Nota: Para el envío de datos por bluetooth entre el microcontrolador y el teléfono inteligente se
utiliza la App para Android Sistema Usuario.

Una vez establecida la conexión entre la App Sistema Usuario y el programa Sistema Versión 1
previamente cargado en el MSP430, los caracteres enviados vía Bluetooth entrarán en la
estructura del programa Sistema Versión 1 correspondiente, como se muestra en la Figura 3.5,
mostrando los valores censados mediante un Display LCD (mediante la sentencia lcd.print)
conectado al microcontrolador y a través de un Text View (Texto en Pantalla) incluido en la
aplicación Sistema Usuario.

Figura 3.5 Lectura de caracteres a través del puerto serial.

Para el caso del carácter “1” el programa interpretará el siguiente código (Figura 3.6), el cual
controla el estado de las luces de una habitación; enviando dicho estado a la interfaz serial que
se comunica con la App Sistema Usuario tanto como la interfaz LCD.

77 | Página
Instituto Politécnico Nacional ESIME

Figura 3.6 Proceso Luces.

Recibiendo el carácter “2”, el programa interpretará el siguiente código (Figura 3.7), el cual
controla el estado de las cerraduras de una habitación; enviando dicho estado a la interfaz
serial que se comunica con la App Sistema Usuario tanto como la interfaz LCD.

Figura 3.7 Proceso Cerraduras.

La modalidad de temperatura se emplea cuando se recibe el carácter “3”; el pin A0 ha sido


definido como entrada analógica. Se lee el valor de voltaje que proporciona el circuito integrado
LM35 que actúa como un sensor de temperatura y nos entrega una salida de voltaje
directamente proporcional a la temperatura en grados Celsius enviando la variable Temp a la

78 | Página
Instituto Politécnico Nacional ESIME

interfaz serial que se comunica con la App Sistema Usuario tanto como la interfaz LCD (Figura
3.8).

Figura 3.8 Proceso Temperatura.

Si el valor de temperatura es mayor a 37 grados Celsius, el microcontrolador enviara una señal


de control que activara un led a través del P1_3 previamente programado como salida digital
como se muestra en la Figura 3.9.

Figura 3.9 Condición para el funcionamiento del led.

El proceso de Proximidad se realiza al interpretar el carácter “4” recibido por la interfaz serial del
microcontrolador, el sensor funciona mediante la transmisión de una ráfaga de ultrasonido en
una frecuencia muy por encima del rango auditivo humano y provee un pulso de salida, el cual
corresponde con el tiempo requerido por el eco (rebote) para retornar hasta el sensor.

79 | Página
Instituto Politécnico Nacional ESIME

Al medir la duración de este pulso se puede calcular fácilmente la distancia de un objeto


enviando la variable distance a la interfaz serial que se comunica con la App Sistema Usuario
tanto como la interfaz LCD (Figura 3.10).

Figura 3.10 Proceso Ultrasónico.

En la modalidad final se recibe el carácter “5” que activa un detector de gas, el pin A6 ha sido
definido como entrada analógica, por el cual leemos la pureza del gas en una determinada área
como se muestra en la Figura 3.11

Figura 3.11 Proceso Gas.

80 | Página
Instituto Politécnico Nacional ESIME

Cuando las concentraciones de gas superan un cierto nivel se da la indicación de un estado de


alarma (alto nivel de gas); el microcontrolador emite una señal de activación para un led (Figura
3.12).

Figura 3.12 Condición para activar el led de alarma.

En este capítulo se describieron tanto la tarjeta de desarrollo como el software que permite el
desarrollo de las aplicaciones y la aplicación desarrollada. De la aplicación se describieron los
módulos que permiten la comunicación vía Bluetooth con el teléfono inteligente y aquellos que
permiten la lectura de los sensores. En el siguiente capítulo se describen a detalle los sensores
utilizados así como las aplicaciones que permiten la comunicación.

Para mas información acerca del código fuente para los procesos de lectura y escritura, revisar
Anexo 3.

81 | Página
Instituto Politécnico Nacional ESIME

CAPÍTULO 4 |
“IMPLEMENTACIÓN Y
PRUEBAS”

82 | Página
Instituto Politécnico Nacional ESIME

CAPÍTULO 4 | IMPLEMENTACIÓN Y PRUEBAS.

La elección de herramientas para el diseño del sistema control y monitoreo se realiza de


acuerdo a la necesidad y al tipo de desarrollo de software que se desea implementar mediante
el desarrollo de aplicaciones, que para nuestro caso, será mediante un teléfono inteligente. En
cuanto a la codificación de este sistema, se utilizó el lenguaje de programación JAVA y C++
teniendo como referencia la programación orientada a objetos (POO) , estos lenguajes de
programación permiten el diseño de interfaz multiplataforma de manera interactiva. El diseño de
la interfaz de usuario debe permitir interactuar con el usuario para enviar las instrucciones
necesarias hacia los diferentes dispositivos de control y así activar las diferentes aplicaciones
multimedia, permitiendo al usuario visualizar la información de las propiedades del sistema.

4.1 Sensores.

Un sensor es un dispositivo eléctrico y/o mecánico capacitado para detectar acciones o


estímulos (magnitudes físicas o químicas) en valores medibles para las magnitudes eléctricas,
las fases para la transformación se realizan en tres pasos.

 Al ocurrir un fenómeno físico, éste es captado por el sensor que genera en su salida una
señal eléctrica dependiente del valor de la variable física.

 La señal eléctrica es cambiada por un sistema de acondicionamiento de señal cuya


salida es un voltaje.

 El sensor tiene una circuitería que transforma y/o amplifica el voltaje de salida la y se
envía a un ADC, que transforma la señal de voltaje continua en una señal discreta.

4.1.1 Descriptores Estáticos De Un Sensor

Los descriptores estáticos definen el comportamiento en régimen permanente del sensor.

Rango: Valores máximos y mínimos para las variables de entrada y salida de un sensor.

83 | Página
Instituto Politécnico Nacional ESIME

Exactitud: La desviación de la lectura de un sistema de medida respecto a una entrada


conocida. El mayor error esperado entre las señales medida e ideal.

Repetitividad: La capacidad de reproducir una lectura con una precisión dada.

Reproducibilidad: Tiene el mismo sentido que la repetitividad excepto que se utiliza cuando se
toman medidas distintas bajo condiciones diferentes.

Resolución: La cantidad de medida más pequeña que se pueda detectar.

Error: Es la diferencia entre el valor medido y el valor real.

No linealidades: La desviación de la medida de su valor real, supuesto que la respuesta del


sensor es lineal.

No-linealidades típicas: saturación, zona muerta e histéresis.

Sensibilidad: Es la razón de cambio de la salida frente a cambios en la entrada

Excitación: Es la cantidad de corriente o voltaje requerida para el funcionamiento del sensor.

Ruido: Es la presencia de fluctuaciones aleatorias de una señal no pertenecientes al sensor


[10].

4.1.2 Tipos De Sensores.

Existen diferentes tipos de sensores en función del tipo de variable que se desea controlar, para
nuestro caso, el monitoreo de una casa habitación, ocuparemos los siguientes sensores.

Funcionamiento de los sensores de Ultrasonido

El ultrasonido son ondas sonoras, que tienen una frecuencia mayor que la máxima audible por
el oído humano. Ésta comienza desde unos 16 Hz y tiene un límite superior de
aproximadamente 20 KHz, mientras que nosotros vamos a utilizar sonido con una frecuencia de
40 KHz. A este tipo de sonidos es a lo que llamamos Ultrasonidos.

84 | Página
Instituto Politécnico Nacional ESIME

El funcionamiento básico de los ultrasonidos como medidores de distancia se muestra de una


manera muy clara en el siguiente esquema, donde se tiene un receptor que emite un pulso de
ultrasonido que rebota sobre un determinado objeto y la reflexión de ese pulso es detectada por
un receptor de ultrasonidos (Figura 4.1)

Figura 4.1 Funcionamiento básico de los ultrasonidos.

Medición de distancia por Ultrasonidos (Sensor SRF04)

El objetivo de este circuito auxiliar es el de medir distancias, utilizando para ello dos
transceptores de ultrasonidos, uno emisor y otro receptor, basándonos en el tiempo que tarda la
señal en ir desde el emisor hasta el objeto obstáculo y volver rebotada desde éste hasta el
receptor. Midiendo dicho tiempo podemos calcular con suficiente precisión y exactitud la
distancia entre el objeto y nuestros transceptores (Figura 4.2).

Figura 4.2 Sensor ultrasónico HC-SR04

85 | Página
Instituto Politécnico Nacional ESIME

Sensores de Temperatura

La temperatura es una magnitud referida a las nociones comunes de calor o frío; físicamente
es una magnitud escalar relacionada con la energía interna de un sistema termodinámico, más
específicamente, está relacionada directamente con la parte de la energía interna conocida
como energía cinética, que es la energía asociada a los movimientos de las partículas del
sistema, sea en un sentido rotacional, o en forma de vibraciones. A medida de que sea mayor la
energía cinética de un sistema, se observa que éste se encuentra más caliente; es decir, que su
temperatura es mayor.

Medición de Temperatura por el Sensor LM35

El circuito integrado LM35 (Figura 4.3) es un sensor de temperatura cuya tensión de salida es
linealmente proporcional con la temperatura en la escala Celsius (centígrada). Lo que nos
permite realizar medidas de temperatura a través de las entradas analógicas de nuestro
MSP430 (pines A0-A7) sin necesidad de emplear ninguna librería específica para su
programación. Posee una precisión aceptable para nuestra aplicación requerida, no necesita
calibración externa, posee sólo tres terminales, permite el censado remoto y es de bajo costo.

Figura 4.3 Circuito integrado LM35

86 | Página
Instituto Politécnico Nacional ESIME

Sensores de Gas

Un sensor de gas es un sensor químico que se basa fundamentalmente en la toma de una


muestra de partículas que produce un cambio físico o químico de un material sensible (como el
aire), dichos sensores, mediante una circuitería de interface, provocan una señal eléctrica que
constituye la respuesta del sensor.

Medición de Gas Combustible por el Sensor MQ-2

El elemento de detección del nivel de gas combustible de nuestro sistema está constituido de
una capa de semiconductor de óxido de metal, formada en un substrato de alúmina con un
calentador integrado. En presencia de un gas perceptible, la conductividad del sensor aumenta
dependiendo de la concentración de gas y humo en el aire, el MQ-2 tiene alta sensibilidad a los
vapores de solventes orgánicos así como otros vapores volátiles también tiene sensibilidad a
una variedad de gases combustibles, tales como monóxido de carbono, características que le
hacen un buen sensor de fines generales (Figura 4.4)

Figura 4.4 Sensor de detección de gas MQ-2

Conexión de los Relevadores

En esta parte se muestra el esquema (Figura 4.5) utilizado para la conexión de relevadores y
así adaptar al sistema implementado entre el microcontrolador y el teléfono inteligente; equipos
que utilizan corriente eléctrica sinusoidal de 120 volts, para ello se utilizaran lámparas LED. La
conexión se hace de manera individual utilizando los pines del MSP430.

87 | Página
Instituto Politécnico Nacional ESIME

Figura 4.5 Esquema de conexión individual del relevador.

Display LCD

La Pantalla de cristal líquido o LCD (Liquid Crystal Display) es un dispositivo controlado de


visualización gráfica para la presentación de caracteres, símbolos o incluso dibujos, para
nuestro es caso se dispone de 2 filas de 16 caracteres cada una y cada carácter dispone de
una Matriz de Puntos 5x7 pixeles. Este Dispositivo es controlado por el microcontrolador
MSP430 quién regula de todos los parámetros de presentación. El Display muestra en su
pantalla todos sus caracteres en negro; si no fuera así se deberá proceder al ajuste del
contraste. Para ello se debe instalar un potenciómetro tal y como se muestra en la Figura 4.6.

Figura 4.6 Conexión del potenciómetro de ajuste de contraste.

88 | Página
Instituto Politécnico Nacional ESIME

Señales De Control

Los pines 4, 5 y 6 toman las señales de control del LCD. El pin 4 (RS) sirve para seleccionar el
registro de datos (DR) o el de instrucciones (IR), el pin 6 (E) permite habilitar o deshabilitar el
Display, por último los pines del 7 al 14 forman un bus de datos bidireccional de 8 bits (DB0-
DB7) por donde se escriben los datos e instrucciones.

Nota: En el Anexo 4 se encuentran las especificaciones técnicas de los sensores descritos


anteriormente.

Módulo Bluetooth

Los módulos HC Bluetooth son dispositivos que nos permite establecer una comunicación
mediante la interfaz serie Bluetooth. Estos módulos tienen dos modos de conexión: maestro y
esclavo.

El módulo Bluetooth HC-06 (Figura 4.7) es uno de los elementos medulares de nuestro
proyecto, debido en gran medida al sencillo tipo de conectividad. Los enlaces inalámbricos de
datos, encuentran en este pequeño dispositivo todo lo necesario para resolver conexiones
"Wireless" y a un bajo costo.

Figura 4.7 Módulo de comunicación serial Bluetooth HC-06.

La información técnica acerca de este módulo se presenta en el Anexo 5

89 | Página
Instituto Politécnico Nacional ESIME

Durante los ensayos realizados, el módulo ha demostrado tener un solo punto débil: la escasa
(y confusa) información que existe sobre él. Una de las ventajas principales del módulo HC-06,
además de su pequeño tamaño y contar con la especificación V2.0+EDR del protocolo
Bluetooth de clase 2, es contar con buenas características de transmisión y recepción que le
brindan un alcance muy amplio (por tratarse de un sistema local Bluetooth), es el bajo consumo
de corriente que posee tanto en funcionamiento, como en modo de espera, es decir, alimentado
con energía, pero sin conexión o vinculado a otro dispositivo, por ejemplo, un móvil con sistema
operativo Android.

Otra característica interesante de este módulo es que una vez que ha realizado un enlace con
otro dispositivo es capaz de recordarlo en su memoria y no solicita validación alguna (“1234” por
defecto).

Otro detalle particular es que su tensión de alimentación de 3.6 volts y su bajo consumo (8mA
en transmisión/recepción activa) lo transforman en un dispositivo ideal para trabajar con
microcontroladores de la misma tensión de alimentación, logrando de este modo equipos
portátiles que pueden ser alimentados durante muchas horas por baterías recargables o
alcalinas AA, demostrando características excepcionales en aplicaciones médicas, o para
actividades recreativas donde la fuente energética debe ser liviana y portátil.

4.2 Puesta En Marcha.

El primer paso ha sido dotar al microcontrolador de los sensores y el módulo Bluetooth. Se


muestra un esquema de conexiones y fotos, una vez terminado el trabajo. El segundo paso ha
sido montar uno por uno los distintos elementos del sistema (Figura 4.8). También se muestran
fotos de todo este proceso.

90 | Página
Instituto Politécnico Nacional ESIME

Figura 4.8 Esquema de conexiones del MSP430 con los sensores

En cuanto a los sensores, pueden ser alimentados a partir de 3.3 volts hasta 6 volts porque
así se especifica en su ficha técnica. Utilizaremos las terminales de entrada analógicas A0 - A7
del MSP430 para procesar las señales respectivamente.

91 | Página
Instituto Politécnico Nacional ESIME

El módulo bluetooth por su parte se conectará mediante las terminales TX-O (transmit - output)
del bluetooth irá conectado al pin RX (Receive) del MSP430. De manera similar, la señal RX-I
(receive- input) del bluetooth irá conectada a la terminal TX (Transmit) del MSP430.

A continuación, mostraremos ejemplos de funcionamiento de nuestro sistema de


comunicación, observando la interfaz de usuario y un display LCD. En su configuración se
pueden observar las diferentes secciones de las que se compone la aplicación, donde cada una
de las secciones está destinada a la configuración de un módulo de la aplicación que están
realizadas con las librerías estándar de Android. Se necesita validar un usuario y password que
debe coincidir con el que programamos como seguridad. Utilizando nuestro teléfono inteligente
con Android con la App Sistema Usuario previamente instalada, procedemos a entrar al
escritorio de nuestro menú por defecto y abrimos nuestra aplicación, coincidiendo con la
validación de la actividad “Login” elegimos el tipo de conexión que deseamos usar. Para este
caso, en las pruebas descritas a continuación se á elegido la conexión Local.

Figura 4.9 Servicios Disponibles.

92 | Página
Instituto Politécnico Nacional ESIME

Las variables que podemos visualizar, en tiempo real ya sea mediante la App “Sistema
Usuario” o mediante el display LCD se mostrarán en las siguientes figuras una vez que la
sincronización sea exitosa.

La selección de sensores nos permite seleccionar los valores medidos a mostrar en la


aplicación y que capturamos en el display LCD. Actualmente podemos disponer de la
activación /desactivación de luces y cerraduras, el monitoreo de temperatura, proximidad y
nivel gas o de humo.

Figura 4.10 Selección Luces.

93 | Página
Instituto Politécnico Nacional ESIME

Figura 4.11 Selección Cerraduras.

Figura 4.12 Selección Temperatura.

94 | Página
Instituto Politécnico Nacional ESIME

Figura 4.13 Selección Ultrasónico.

Figura 4.14 Selección Gas.

95 | Página
Instituto Politécnico Nacional ESIME

Figura 4.15 Selección Gas detectando una concentración elevada de Gas.

Por último se presentan las pruebas realizadas a la App Sistema Casa, que es la aplicación que
estará instalada en el teléfono inteligente con sistema operativo Android, por medio de la cual
se podrá tener una conexión remota por medio de la validación de SMS con las palabras clave:
“LUCES”, "CERRADURAS", "TEMPERATURA", "ULTRASONICO", "GAS" con las cuales el
teléfono inteligente se vinculara automáticamente al módulo Bluetooth HC-06 que se encuentra
previamente conectado al microcontrolador MSP4340 . Mediante la validación de dichos
caracteres descritos en el SMS los dispositivos quedaran vinculados de manera automática
por medio de las clases ConexionCasa y SendBluetooth descritas en la App Sistema Casa.

96 | Página
Instituto Politécnico Nacional ESIME

Figura 4.16 Validación de carácter LUCES recibido via SMS

Figura 4.17 Validación de carácter CERRADURAS recibido via SMS

97 | Página
Instituto Politécnico Nacional ESIME

Figura 4.18 Validación de carácter TEMPERATURA recibido via SMS

Figura 4.19 Validación de carácter ULTRASÓNICO recibido via SMS

98 | Página
Instituto Politécnico Nacional ESIME

Figura 4.20 Validación de carácter GAS recibido via SMS

99 | Página
Instituto Politécnico Nacional ESIME

Conclusiones

Para finalizar, podemos observar que hemos conseguido realizar un sistema de comunicación
bidireccional, basada en reglas de la gestión de un protocolo de transmisión de información
Bluetooth. El usuario, puede ser capaz de transmitir y recibir datos mediante el uso de la
tecnología Bluetooth y a través de Mensajes de Texto acceder a ellos estando fuera del
alcance de la conexión Bluetooth, todo esto a través de un teléfono inteligente gracias a la
funcionalidad que nos brinda un sistema operativo de plataforma abierta como lo es Android así
como la versatilidad de un microcontrolador.

Ha sido necesario el estudio en profundidad del estándar Bluetooth. En nuestro caso nos
hemos centrado específicamente en la capa de protocolos HCI, para la configuración y control
de los módulos, y en el protocolo L2CAP para el envío y recepción de paquetes de datos.

Se concluye que con las pruebas que hemos realizado mediante la App “Sistema Usuario”
Bluetooth podemos asegurar que Bluetooth es un protocolo de comunicación de datos, para
redes de área personal inalámbricas que puede proveer a los usuarios de conectividad
transparente con otros dispositivos también habilitados para ello. A lo largo de este trabajo de
Tesis surgieron complicaciones imprevistas que han hecho cambiar el orden de alguna tarea
planificada. Por ejemplo la creación del “buffer” para la recepción de datos en la aplicación
Sistema Usuario.

Afortunadamente, el módulo Bluetooth HC-06, permite elegir la velocidad de transmisión lo cual


facilitó la realización de pruebas para poder trabajar en la comunicación con Android, sin la
versatilidad del módulo Bluetooth no se podría haber avanzado y el proyecto se habría
estancado.

100 | Página
Instituto Politécnico Nacional ESIME

Posibilidades de trabajo futuro

Actualmente existen interfaces en las cuales ya está implementado la versión 4.0 del protocolo
Bluetooth, en el cual, entre otros adeptos, nos permite tener un rango del alcance de 100
metros y una velocidad de transmisión de 24 Mbps aproximadamente. Esto define la estructura
de un trabajo a futuro, en el cual pueden estar declarados en el código fuente de las App´s dos
o más módulos Bluetooth, y así el usuario puede elegir el módulo al que se quiera conectarse,
pudiendo así agregar más variables a controlar y dispositivos con que conectarse, con dichas
características se podrá explotar mejor el funcionamiento de un sistema cuyos parámetros sean
de un propósito más específico.

101 | Página
Instituto Politécnico Nacional ESIME

Bibliografía
[1] Simply Wireless (2012). “BeeWi Simply Wireless”, Google Play, Recuperado el 20 de Enero
del 2014 de
https://play.google.com/store/apps/details?id=com.baracoda.android.bluetoothcar.remotecontrol

[2] Parrot SA (2013), “AR.FreeFlight ”, Google Play, Recuperado el 28 de Enero del 2014 de
https://play.google.com/store/apps/details?id=com.parrot.freeflight

[3] Martínez Jorge. (2002). “Redes de comunicaciones” (p. 9), Valencia: Universidad Politécnica
De Valencia

[4] Huidobro Moya José Manuel. (2005). “Sistemas Telemáticos” (p. 56), Madrid: Paraninfo

[5] Andreu Fernando, Pellejero Izaskun, Lesta Amaia. (2006). “Fundamentos y Aplicaciones de
Seguridad en Redes WLAN” (p. 3), Barcelona: Marcombo

[6] D. Black Uyless. (1987). “Redes de Transmisión de Datos y Proceso Distribuido” (p. 255),
Virginia: Ediciones Díaz de Santos

[7] Bluetooth SIG. (2001). “Specification of the Bluetooth System” (p. 7), EEUU: Bluetooth™

[8] IEEE Standard for Information technology. (2002). “IEEE Std 802.15.1” (p. 68), EEUU: IEEE
Computer Society

[9] Bluetooth® Products (2013). “Master Table of Contents & Compliance Requirements”,
(p.519), EEUU: BLUETOOTH SPECIFICATION

[10] Pallás Areny Ramón. (1993). “Adquisición y Distribución de Señales”, (p. 32), Barcelona:
Marcombo

Bluetooth SIG. (2015), “Specification Adopted”, Bluetooth Org, Recuperado el 15 de Febrero


del 2014 de https://www.bluetooth.org

Energía (2010) “Primeros pasos con Energia”, Energia Reference, Recuperado el 15 de


Febrero del 2014 de http://energia.nu/

Tomas Jesús. (2011). “El gran libro de Android”, México: Alfa Omega

Tomas Jesús, Carbonell Vicente. (2013). “El gran libro de Android Avanzado”. México: Alfa
Omega

Frank W, Collins Charlie, Sen Robi (2009). “Unlocking Android A Developer’s Guide”. Manning:
Universidad de Michigan

102 | Página
Instituto Politécnico Nacional ESIME

Jürgens Björn, Haek Pérez Abraham, Bellido Toré Desirée (2012) “Tecnologías Inalámbricas”
España: Agencia de Innovación y Desarrollo de Andalucía IDEA

Amaro Soriana José Enrique. (2012). “Programación de Dispositivos Móviles a través de


Ejemplos” ”. México: Alfa Omega

Texas Instrumens, (2008) “MSP430x1xx Guía de Usuario” EEUU: Texas Instruments


Incorporated

103 | Página
Instituto Politécnico Nacional ESIME

Glosario de Términos

Active En este modo tanto el maestro como el esclavo participan de forma


activa en el canal escuchando, transmitiendo o recibiendo los
paquetes. El maestro y el esclavo están sincronizados.

Baud Rate Velocidad en baudios o Velocidad en bits por segundo.

Baudio Numero de bits por segundo en un medio de transmisión digital.

Dalvik Máquina Virtual para dispositivos móviles con Android.

Endianness Formato en el cual se almacena los datos de más de un byte en una


PC.

Hold En este modo un dispositivo de forma temporal puede no soportar


paquetes e ir a un modo de baja potencia para que el canal esté
disponible.

InputStream Flujo de Entrada en la Trasmisión de Datos.

Kernel Núcleo del sistema operativo.

OutputStream Flujo de Salida en la Trasmisión de Datos.

Park En este modo es cuando un esclavo no necesita participar en el canal


de la piconet pero todavía quiere permanecer sincronizado con el
canal. Si varias piconets tienen áreas de cobertura que se
superponen forman una scatternet o red dispersa.

Piconet Red que se crea utilizando una conexión inalámbrica Bluetooth


formada por dispositivos maestros y esclavos.

RS-232 Interfaz que designa la norma para el intercambio de una serie de


datos entre un DTE (Equipo terminal de datos) y un DCE (Equipo de
comunicación de datos).

Scatternet Una red dispersa es un tipo de red que se forma entre dos o más
dispositivos con capacidad Bluetooth.

Slots Ranuras de Tiempo de Intervalos Temporales.

104 | Página
Instituto Politécnico Nacional ESIME

Smartphone Teléfono móvil construido sobre una plataforma informática, con una
mayor capacidad de almacenar datos y realizar actividades
semejantes a una minicomputadora, y con una mayor conectividad
que un teléfono móvil convencional.

Sniff En este modo el esclavo en vez de estar escuchando en cada slot el


mensaje del maestro, chequea algunos periodos de tiempo,
ahorrando potencia en aquellos instantes en los que se encuentra
“durmiendo”.

105 | Página
Instituto Politécnico Nacional ESIME

Glosario de Acrónimos

ACL Enlace asíncrono de baja conexión.

AFH AFH (Adaptive Frequency Hopping; Salto de Frecuencia


Adaptable).

ALU Unidad Aritmética Lógica.

API API (Application Programming Interface; Interfaz de


Programación de Aplicaciones).

APP Programa que se instala en un dispositivo móvil, ya sea teléfono


o tablet y que se puede integrar a las características del equipo.

ARM Familia de microprocesadores producidos por la empresa ARM


Holdings.

ASCII Estándar Estadounidense para el intercambio de información.

AVR Familia de Los Microcontroladores RICS.

BSL BSL (Bootstrap Loader; Cargador de Arranque).

BT Abreviatura de Bluetooth.

CAD Convertidor Analógico Digital.

CDA Convertidor Digital Analógico.

CDMA CDMA (Code Division Multiple Access; Acceso Múltiple por


División de Código).

CPU CPU (Unidad Central de Procesamiento).

DLL DLL (Data Llink Layer; Capa de Enlace de Datos).

EDR EDR (Enhanced Data Rate; Velocidad de Datos Mejorada).

EMS EMS (Enhanced Messaging Service; Servicio de Mensajes


Mejorado).

EPROM Memoria Borrable y Programable.

FFH FFH (Fast Frequency-Hop; Modulación por Salto de Frecuencia).

FH/TDD FH/TDD (Frequency Hop/Time-Division Duplex; Salto de


Frecuencia/División de Tiempo Dúplex).

106 | Página
Instituto Politécnico Nacional ESIME

FSK FSK (Frequency Shift Keying; Modulación por Desplazamiento de


Frecuencia).

GPS GPS (Global Positioning System; Sistema De Posicionamiento


Global).

GSM GSM (Global System for Mobile Communications; Sistema Global


para las Comunicaciones Móviles).

HCE HCE (Host Card Emulation; Emulación De Tarjeta a Host).

HCI HCI (Host Controller Interface; Interfaz de Control de Host).

HID HID (Human Interface Device; Dispositivo de Interfaz Humana).

HLR Registro de Ubicación de Base.

IETE Institución de Electrónica y Telecomunicaciones Ingenieros.

ISM ISM ( Industrial, Scientific and Medical; Banda Libre Industrial,


Científica y Mecánica).

L2CAP L2CAP (Logical Link Control and Adaptation Protocol; Capa de


Adaptación y Control de Enlace Lógico).

LLC LLC (Logical Link Control; Control de Enlace Lógico).

LMP LMP (Management Enlace Protocolo; Protocolo de Gestión del


Enlace).

MAC MAC (Medium Access Control; Control de Acceso al Medio).

MMS MMS (Multimedia Messaging System; Sistema de Mensajería


Multimedia).

NFC NFC (Near field Communication; Comunicación de Campo


Cercano).

OBEX Object Exchange; Intercambio de Datos.

OSI OSI (Open System Interconnection; Modelo de Interconexión de


Sistemas Abiertos).

PHY PHY (Physical Layer; Capa Física de Especificaciones).

PPP PPP (Point-to-point Protocol; Protocolo punto a punto).

PROM Memoria de Solo Lectura Programable.

107 | Página
Instituto Politécnico Nacional ESIME

PWM Modulación por Ancho de Pulso.

QoS QoS (Quality Of Service; Calidad De Servicio).

RAM Memoria De Acceso Aleatorio.

RFCOMM RFCOMM ( Radio Frequency Communication; Comunicación por


Radio Frecuencia).

RISC RISC (Reduced Instruction Set Computer; Computador con


Conjunto de Instrucciones Reducidas).

ROM Memoria De Solo Lectura.

SCO Enlace de sincronización de conexión orientada.

SDK SDK ( Software Development Kit; Kit de Desallorro de Software).

SDP SDP (Service Discovery; Descubrimiento de Servicio).

SIG SIG (Special Interest Group; Grupo de Interés Especial).

SMS SMS (Short Message Service; Servicio de Mensajes Cortos).

SMSC Centro de Servicio de Mensajería Corta.

SPI SPI (Serial Periphelal Interface; Interfaz de Perifericos Serie).

TCP Protocolo de Control de Transmisión.

TCP/IP Protocolo de Control de Transmisión/Protocolo de Internet.

TDD TDD (Time Division Duplex; Dúplex por División de Tiempo).

UART UART (Universal Asynhronous Receiver Transmitter; Transmisor


Repeceptor Asincróno).

UMTS UMTS (Universal Mobile Telecommunications System; Sistema


Universal de Telecomunicasiones).

USART USART ( Universal Synchronous Asynhronous Receiver


Transmitter; Transmisor Repeceptor Sincrono Asincrono).

USB USB (Universal Serial Bus; Bus Universal En Serie).

UUID UUID (Universally Unique Identifier; Identificador Universal


Único).

108 | Página
Instituto Politécnico Nacional ESIME

WAP WAP (Wireless Application Protocol; Protocolo de Aplicaciones


Inalámbricas).

WPAN WAP (Wireless Application Protocol; Protocolo de Aplicaciones


Inalámbricas).

XML XML (Exensible Markup Language; Lenguaje Extensible


Marcado).

109 | Página
Instituto Politécnico Nacional ESIME

Anexo 1
“Identificador Base
Único Universal
(UUID)”

110 | Página
Instituto Politécnico Nacional ESIME

Anexo 1 Identificador Base Único Universal (UUID)

Identificador único universal (UUID) formas cortas


El Bluetooth ® Servicio Discovery Protocol (SDP) define una manera de representar una gama de UUID (que son
nominalmente 128 bits) en una forma más corta. Una gama reservada de valores 232 puede ser representada
usando 32 bits (uuid32 denotado). De estos, un sub-rango de 216 valores se puede representar usando sólo 16 bits
(uuid16 denotado).
Todos los valores en el rango de 232 que no están asignados en este documento están reservados pendientes
futuras revisiones de este documento. En otras palabras, no tiene valor en este rango puede usarse excepto como se
especifica en esta o en futuras revisiones de este documento. Valores UUID fuera de este rango pueden ser
asignados como se describe en [ ISO-11578 ] para cualquier propósito los deseos asignadores.
Base identificador único universal (UUID)
El UUID Base se utiliza para el cálculo de los UUID de 128 bits de "UUID cortas" (uuid16 y uuid32) como se describe
en el SDP Especificación. Ver Service Discovery Protocol (SDP) en el Núcleo especificación Bluetooth.
NOTA: UUID cortos Actualmente, todos asignados son tipos uuid16.

Nombre
UUID
UUID

00000000-0000-1000-8000-
BASE_UUID
00805F9B34FB

Identificadores de protocolo
Los UUID en la tabla siguiente sólo se utilizarán en el atributo ProfileDescriptorList.

Protocolo Nombre UUID Protocolo de Especificaciones

SDP 0x0001 Bluetooth Core Especificaciones

UDP 0x0002 [NO USO DE PERFILES]

RFCOMM 0x0003 RFCOMM con TS 07.10

TCP 0x0004 [NO USO DE PERFILES]

TCS-BIN 0x0005 Control de telefonía Especificación / TCS binario [obsoleta]

111 | Página
Instituto Politécnico Nacional ESIME

TCS-AT 0x0006 [NO USO DE PERFILES]

ATT 0x0007 Protocolo Atributo

OBEX 0x0008 Interoperabilidad IrDA

IP 0x0009 [NO USO DE PERFILES]

FTP 0x000A [NO USO DE PERFILES]

HTTP 0x000C [NO USO DE PERFILES]

WSP 0x000E [NO USO DE PERFILES]

BNEP 0x000F Encapsulación Protocolo de red Bluetooth (BNEP)

UPNP 0x0010 Extended Service Discovery (PESD) [obsoleta]

HIDP 0x0011 Perfil de dispositivo de interfaz humana (HID)

HardcopyControlChannel 0x0012 Hardcopy Cable Replacement Profile (HCRP)

HardcopyDataChannel 0x0014 Ver Hardcopy Cable Replacement Profile (HCRP)

HardcopyNotification 0x0016 Hardcopy Cable Replacement Profile (HCRP)

AVCTP 0x0017 / Protocolo Audio Video Control de Transporte (AVCTP)

AVDTP 0x0019 Audio / Video Transport Protocol Distribution (AVDTP)

112 | Página
Instituto Politécnico Nacional ESIME

CMTP 0x001B Común Perfil RDSI Acceso (CIP) [obsoleta]

MCAPControlChannel 0x001E Protocolo de adaptación de varios canales (MGAP)

MCAPDataChannel 0x001F Protocolo de adaptación de varios canales (MGAP)

L2CAP 0x0100 Bluetooth Core Especificaciones

(Valor máximo 0xFFFF)

Tabla 1: Protocolo de Identificadores y nombres, Clases de servicios y perfil Identificadores


UUID en la tabla siguiente, que tienen un uso permitido de la clase de servicio se pueden usar en el atributo universal
de ServiceClassIDList, pero no podrán ser utilizados en el atributo BluetoothProfileDescriptorList a menos que
también se permite el uso del perfil en la tabla siguiente. Si una clase de servicio UUID se expone en la base de
datos SDP de un producto, el producto que contiene el registro SDP deberá cumplir con la especificación que define
el servicio correspondiente a la UUID.
UUID en la tabla siguiente que haber un uso permitido de perfil puede ser utilizado en el atributo universal de
BluetoothProfileDescriptorList, pero no se utilizan en este atributo universal ServiceClassIDList a menos que el uso
de la clase de servicio también está permitido por la tabla de abajo.
Por razones históricas, algunos UUID de la Tabla 2 se utilizan para identificar los perfiles en un atributo universal de
BluetoothProfileDescriptorList así como clases de servicio en un atributo universal de ServiceClassIDList. Sin
embargo, para los nuevos perfiles, Servicio de Clase UUID no se utilizará en un BluetoothProfileDescriptorList
atributos y perfil UUID universales no se utilizarán en un atributo universal de ServiceClassIDList.

Mascotas
Servicio de Nombre de clase UUID Especificación
Uso

Servicio de
ServiceDiscoveryServerServiceClassID 0x1000 Bluetooth Core Especificaciones
Clase

Servicio de
BrowseGroupDescriptorServiceClassID 0x1001 Bluetooth Core Especificaciones
Clase

Serial Port Profile (SPP)


NOTA: El ejemplo registro SDP en SPP v1.0 no Servicio de
SerialPort 0x1101 incluye un atributo BluetoothProfileDescriptorList, Clase /
pero algunas implementaciones también puede Perfil
utilizar este UUID para el Identificador de perfil.

113 | Página
Instituto Politécnico Nacional ESIME

Perfil de acceso LAN


Servicio de
[obsoleta]
LANAccessUsingPPP 0x1102 Clase /
NOTA: Se utiliza tanto como Clase Identificador
Perfil
de Servicio y Identificador de perfil.

Dial-up Networking Profile (DUN) Servicio de


DialupNetworking 0x1103 NOTA: Se utiliza tanto como Clase Identificador Clase /
de Servicio y Identificador de perfil. Perfil

Perfil de sincronización (SYNC) Servicio de


IrMCSync 0x1104 NOTA: Se utiliza tanto como Clase Identificador Clase /
de Servicio y Identificador de perfil. Perfil

El perfil de Objetos (OPP) Servicio de


OBEXObjectPush 0x1105 NOTA: Se utiliza tanto como Clase Identificador Clase /
de Servicio y Perfil. Perfil

File Transfer Profile (FTP) Servicio de


OBEXFileTransfer 0x1106 NOTA: Se utiliza tanto como Clase Identificador Clase /
de Servicio y Identificador de perfil. Perfil

IrMCSyncCommand 0x1107 Perfil de sincronización (SYNC)

Perfil de auriculares (HSP) Servicio de


Auriculares 0x1108 NOTA: Se utiliza tanto como Clase Identificador Clase /
de Servicio y Identificador de perfil. Perfil

Telefonía Inalámbrica Perfil (CTP)


Servicio de
. NOTA: Se utiliza tanto como Clase Identificador
CordlessTelephony 0x1109 Clase /
de Servicio y Identificador de perfil
Perfil
[obsoleta]

Servicio de
AudioSource 0x110A Advanced Audio Distribution Profile (A2DP)
Clase

114 | Página
Instituto Politécnico Nacional ESIME

Servicio de
AudioSink 0x110B Advanced Audio Distribution Profile (A2DP)
Clase

Servicio de
A / V_RemoteControlTarget 0x110C Audio / Video Remote Control Profile (AVRCP)
Clase

AdvancedAudioDistribution 0x110D Advanced Audio Distribution Profile (A2DP) Perfil

Audio / Video Remote Control Profile (AVRCP) Servicio de


A / V_RemoteControl 0x110E NOTA: Se utiliza tanto como Clase Identificador Clase /
de Servicio y Identificador de perfil. Perfil

Audio / Video Remote Control Profile (AVRCP)


NOTA: La especificación v1.3 AVRCP y luego
Servicio de
A / V_RemoteControlController 0x110F exigir que 0x110E también se incluirá en la
Clase
ServiceClassIDList antes 0x110F por
compatibilidad hacia atrás.

Perfil Intercom (ICP)


. NOTA: Se utiliza tanto como Clase Identificador Servicio de
Intercomunicador 0x1110
de Servicio y Identificador de perfil Clase
[obsoleta]

Perfil de fax (FAX)


. NOTA: Se utiliza tanto como Clase Identificador Servicio de
Fax 0x1111
de Servicio y Identificador de perfil Clase
[obsoleta]

Servicio de
Auriculares - Audio Gateway (AG) 0x1112 Perfil de auriculares (HSP)
Clase

Requisitos de interoperabilidad para la tecnología Servicio de


WAP 0x1113
Bluetooth como WAP, Bluetooth SIG [obsoleta] Clase

WAP_CLIENT 0x1114
Requisitos de interoperabilidad para la tecnología Servicio de

115 | Página
Instituto Politécnico Nacional ESIME

Bluetooth como WAP, Bluetooth SIG [obsoleta] Clase

Personal Profile Area Networking (PAN)


Servicio de
NOTA: Se utiliza tanto como Clase Identificador
PANU 0x1115 Clase /
de Servicio y Identificador de perfil de papel
Perfil
PANU.

Área Personal Perfil de redes (PAN)


Servicio de
NOTA: Se utiliza tanto como Clase Identificador
NAP 0x1116 Clase /
de Servicio y Identificador de perfil para el papel
Perfil
del PAN.

Área Personal Perfil de redes (PAN) Servicio de


GN 0x1117 NOTA: Se utiliza tanto como Clase Identificador Clase /
de Servicio y Identificador de perfil de papel GN. Perfil

Servicio de
DirectPrinting 0x1118 Perfil básico de impresión (BPP)
Clase

Servicio de
ReferencePrinting 0x1119 Ver perfil de impresión básico (BPP)
Clase

Perfil básico de imagen 0x111A Perfil básico de imagen (BIP) Perfil

Servicio de
ImagingResponder 0x111B Perfil básico de imagen (BIP)
Clase

Servicio de
ImagingAutomaticArchive 0x111C Perfil básico de imagen (BIP)
Clase

Servicio de
ImagingReferencedObjects 0x111D Perfil básico de imagen (BIP)
Clase

Manos libres 0x111E Perfil manos libres (HFP) Servicio de


NOTA: Se utiliza tanto como Clase Identificador Clase /

116 | Página
Instituto Politécnico Nacional ESIME

de Servicio y Identificador de perfil. Perfil

Servicio de
HandsfreeAudioGateway 0x111F Perfil manos libres (HFP)
Clase

Servicio de
DirectPrintingReferenceObjectsService 0x1120 Perfil básico de impresión (BPP)
Clase

Servicio de
ReflectedUI 0x1121 Perfil básico de impresión (BPP)
Clase

BasicPrinting 0x1122 Perfil básico de impresión (BPP) Perfil

Servicio de
PrintingStatus 0x1123 Perfil básico de impresión (BPP)
Clase

Dispositivo de interfaz humana (HID) Servicio de


HumanInterfaceDeviceService 0x1124 NOTA: Se utiliza tanto como Clase Identificador Clase /
de Servicio y Identificador de perfil. Perfil

HardcopyCableReplacement 0x1125 Hardcopy Cable Replacement Profile (HCRP) Perfil

Servicio de
HCR_Print 0x1126 Hardcopy Cable Replacement Profile (HCRP)
Clase

Servicio de
HCR_Scan 0x1127 Hardcopy Cable Replacement Profile (HCRP)
Clase

Común Perfil RDSI Acceso (CIP)


Servicio de
. NOTA: Se utiliza tanto como Clase Identificador
Common_ISDN_Access 0x1128 Clase /
de Servicio y Identificador de perfil
Perfil
[obsoleta]

SIM_Access 0x112D SIM Access Profile (SAP) Servicio de


NOTA: Se utiliza tanto como Clase Identificador Clase /

117 | Página
Instituto Politécnico Nacional ESIME

de Servicio y Identificador de perfil. Perfil

Servicio de
Acceso al directorio telefónico - PCE 0x112E Acceso a agenda telefónica (PBAP)
Clase

Servicio de
Acceso al directorio telefónico - PSE 0x112F Acceso a agenda telefónica (PBAP)
Clase

Acceso al directorio telefónico 0x1130 Acceso a agenda telefónica (PBAP) Perfil

Perfil de auriculares (HSP)


. NOTA: Ver errata # 3507
Servicio de
Headset HS - 0x1131 0x1108 y 0x1203 también deben ser incluidos en
Clase
la ServiceClassIDList antes 0x1131 para la
compatibilidad hacia atrás.

Servicio de
Mensaje Access Server 0x1132 Perfil de acceso a mensaje (MAP)
Clase

Servicio de
Mensaje Notification Server 0x1133 Perfil de acceso a mensaje (MAP)
Clase

Mensaje perfil de acceso 0x1134 Perfil de acceso a mensaje (MAP) Perfil

Sistema Global de Navegación por Satélite Perfil


GNSS 0x1135 Perfil
(GNSS)

Sistema Global de Navegación por Satélite Perfil Servicio de


GNSS_Server 0x1136
(GNSS) Clase

Servicio de
Visualización 3D 0x1137 3D de sincronización de perfiles (3DSP)
Clase

Gafas 3D 0x113 8 3 D de sincronización de perfiles (3DSP) S ervicio

118 | Página
Instituto Politécnico Nacional ESIME

3D Sincronización 0x1139 3 D de sincronización de perfiles (3DSP) Perfil

MPS Perfil UUID 0x113A Multi-Perfil Specification (MPS) Perfil

Servicio de
MPS SC UUID 0x113B Multi-Perfil Specification (MPS)
Clase

Servicio de
Servicio de acceso CTN 0x113C Calendario, Tareas y Notas (CTN) Perfil
Clase

Servicio de
Servicio de notificación de CTN 0x113D C Tareas Alendar y Notas (CTN) Prof ile
Clase

CTN Perfil 0x113E C Tareas Alendar y Notas (CTN) Prof ile Perfil

Identificación del dispositivo (DID) Servicio de


PnPInformation 0x1200 NOTA: Se utiliza tanto como Clase Identificador Clase /
de Servicio y Identificador de perfil. Perfil

Servicio de
GenericNetworking 0x1201 N/A
Clase

Servicio de
GenericFileTransfer 0x1202 N/A
Clase

Servicio de
GenericAudio 0x1203 N/A
Clase

Servicio de
GenericTelephony 0x1204 N/A
Clase

Enhanced Perfil Service Discovery (PESD) Servicio de


UPNP_Service 0x1205
[obsoleta] Clase

119 | Página
Instituto Politécnico Nacional ESIME

Enhanced Perfil Service Discovery (PESD) Servicio de


UPNP_IP_Service 0x1206
[obsoleta] Clase

Enhanced Perfil Service Discovery (PESD) Servicio de


ESDP_UPNP_IP_PAN 0x1300
[obsoleta] Clase

Enhanced Perfil Service Discovery (PESD) Servicio de


ESDP_UPNP_IP_LAP 0x1301
[obsoleta] Clase

Enhanced Perfil Service Discovery (PESD) Servicio de


ESDP_UPNP_L2CAP 0x1302
[obsoleta] Clase

Servicio de
VideoSource 0x1303 Video Distribution Profile (VDP)
Clase

Servicio de
VideoSink 0x1304 Video Distribution Profile (VDP)
Clase

VideoDistribution 0x1305 Video Distribution Profile (VDP) Perfil

HDP 0x1400 Dispositivo de la Salud Perfil Perfil

Servicio de
HDP Fuente 0x1401 Dispositivo de la Salud Perfil (HDP)
Clase

Servicio de
HDP Sink 0x1402 Dispositivo de la Salud Perfil (HDP)
Clase

(Valor
máximo
0xFFFF)

Tabla 2: clase de servicio del perfil Identificadores

120 | Página
Instituto Politécnico Nacional ESIME

Anexo 2
“Código Fuente De Las
App´s”

121 | Página
Instituto Politécnico Nacional ESIME

Anexo 2 Código Fuente De Las App´s

App Sistema Usuario


Actividad Login

package com.example.sistema_usuario;

public class Login extends Activity {

EditText usuario, password;


TextView resultado;
Button entrar;

// validar check box


RadioButton remoto, distancia;
boolean remotoBool, distanciaBool;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

usuario = (EditText) findViewById(R.id.Dato_Usurario);


password = (EditText) findViewById(R.id.Dato_Password);
entrar = (Button) findViewById(R.id.enlace1);
resultado = (TextView) findViewById(R.id.resultado);

// actividad check box


remoto = (RadioButton) findViewById(R.id.remoto);
distancia = (RadioButton) findViewById(R.id.distancia);

// condiciones iniciales
remotoBool = true;
distanciaBool = false;

entrar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

// validacion
String usr = usuario.getText().toString().trim();
String psswd = password.getText().toString().trim();
if (usr.length() < 1) {
resultado.setText("Debes de ingresar tu nombre de usuario");
if (psswd.length() < 1) {
resultado.setText("Debes de ingresar tu nombre de usuario y tu contraseña"); }}
else if (psswd.length() < 1) {resultado.setText("Debes de ingresar tu contraseña");}
else {// el caso en que ninguno es vacio
if (usr.equals("a") && psswd.equals("1")) {

122 | Página
Instituto Politécnico Nacional ESIME

Toast.makeText(getApplicationContext(),"Bienvenido a casa",
Toast.LENGTH_LONG).show();
resultado.setText("Bienvenido");

if (remoto.isChecked()) {
// remotoBool = true;
// distanciaBool = false;
Intent accesoRemoto = new Intent(getApplicationContext(),MainActivity.class);
startActivity(accesoRemoto);
}

else if (distancia.isChecked()) {
// remotoBool = false;
// distanciaBool = true;
Intent accesoDistancia = new Intent(getApplicationContext(),
Distancia.class);
startActivity(accesoDistancia);
}

} // if usr y pass
else {
Toast.makeText(getApplicationContext(),"Error en la validacion",
Toast.LENGTH_LONG).show();resultado.setText(" Intruso ");
}

} // else de no vacio

}// onClick

}); // listener del boton

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.login, menu);
return true;
}

123 | Página
Instituto Politécnico Nacional ESIME

Actividad MainActivity

public class MainActivity extends Activity implements Handler.Callback {

// SPP UUID
private static final UUID MY_UUID = UUID
.fromString("00001101-0000-1000-8000-00805F9B34FB");
private BluetoothSocket bluetoothSocket;

// MAC-address del modulo Bluetooth


private static String address = "20:13:09:29:29:17";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Log.d(TAG, "onCreate: bt test");


//foundDevicesSpinner = (Spinner) findViewById(R.id.foundSpin);
sensorValTv = (TextView) findViewById(R.id.sensorVal);
messageTv = (TextView) findViewById(R.id.msgLabel);
countTv = (TextView) findViewById(R.id.connectionsVal);

// es lo primero que hace


configureBluetooth();

conectarBluetooth();

private void conectarBluetooth() {


// Descubrimiento del proceso
// Desactivar mientras que hace una conexión
bluetoothAdapter.cancelDiscovery();
String addy = "HC-06 " + address;
Log.d(TAG, "Conectar: La dirección a conectar" + addy);
BluetoothDevice btDevice = btDeviceMap.get(addy);
if (btDevice == null) {
Log.w(TAG, "conectar: no hay ningún dispositivo bt
para conectarse a");
return;
}
try {
bluetoothSocket = btDevice

.createRfcommSocketToServiceRecord(MY_UUID);

124 | Página
Instituto Politécnico Nacional ESIME

Log.d(TAG, "connect 0: socket:" + bluetoothSocket);


} catch (IOException ioe) {
String err = "Problema al crear socket BT para " + addy;
showMessage(Log.ERROR, err);
Log.e(TAG, err);
ioe.printStackTrace();
return;
}
try {
bluetoothSocket.connect();
showMessage(Log.INFO, "Conectado correctamente a " + addy);
} catch (IOException ioe) {
String err = "Problema de conexión a " + addy;
showMessage(Log.ERROR, err);
Log.e(TAG, err);
ioe.printStackTrace();
return;
}
int threadIndex = btConnThreadLookup.size();
BtConnectionThread btConnThread = new BtConnectionThread(
bluetoothSocket, new Handler(this),
threadIndex);
btConnThread.start();
btConnThreadMap.put(addy, btConnThread);
btConnThreadLookup.put(threadIndex, btConnThread);
countTv.setText(String.valueOf(btConnThreadMap.size()));
Log.d(TAG, "número del hilo de conexión :" +
btConnThreadMap.size());
}

@Override
protected void onDestroy() {
super.onPause();
Log.d(TAG, "onDestroy: unregistering");
unregisterReceiver(bluetoothReceiver);
disconnectAll();
}

private void configureBluetooth() {


bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

ventanita para prender el bluetooth


startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
} else { // bluetooth ya habilitado
Log.d(TAG, "configureBluetooth 4: bluetooth already enabled ");
}

Set<BluetoothDevice> pairedDevices = bluetoothAdapter


.getBondedDevices();
foundDevices = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item);
if (pairedDevices.size() > 0) {
String key;

125 | Página
Instituto Politécnico Nacional ESIME

for (BluetoothDevice device : pairedDevices) {


key = device.getName() + " " + device.getAddress();
btDeviceMap.put(key, device);
foundDevices.add(key);
}
//foundDevicesSpinner.setAdapter(foundDevices);
} else { // Los dispositivos para mostrar no emparejado
Log.d(TAG, "configureBluetooth 5: no paired devices to show");
}

// BroadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
bluetoothReceiver = new BluetoothReceiver();
registerReceiver(bluetoothReceiver, filter);
}

public void disconnect(View v) {


BtConnectionThread btConnThread = getSelectedConnThread();
if (btConnThread != null) {
showMessage(Log.INFO,
"Disconnecting from " +
btConnThread.getDeviceDisplayVal()); //Desconectar de
btConnThread.disconnect();
removeSelectedConnThread();
}
}

private void disconnectAll() {


for (BtConnectionThread btConnThread : btConnThreadMap.values()) {
btConnThread.disconnect();
}
showMessage(Log.INFO, "Disconnecting from all devices"); //desconexion d
todos los servicios
countTv.setText("0");
}
// tranmicion de datos
public void turnOn(View v) {

BtConnectionThread btConnThread = getSelectedConnThread();


showMessage(Log.INFO,
"Estado de Luces " + btConnThread.getDeviceDisplayVal());
btConnThread.write("1".getBytes());

public void turnOff(View v) {


BtConnectionThread btConnThread = getSelectedConnThread();
showMessage(Log.INFO,
"Estado de Cerraduras " +
btConnThread.getDeviceDisplayVal());
btConnThread.write("2".getBytes());
}

126 | Página
Instituto Politécnico Nacional ESIME

public void temperatura(View v) {


BtConnectionThread btConnThread = getSelectedConnThread();
showMessage(Log.INFO,
"Temperatura " + btConnThread.getDeviceDisplayVal());
btConnThread.write("3".getBytes());
}

public void proximidad(View v) {


BtConnectionThread btConnThread = getSelectedConnThread();
showMessage(Log.INFO,
"Detectado a " +
btConnThread.getDeviceDisplayVal());
btConnThread.write("4".getBytes());
}

public void nivel_gas(View v) {


BtConnectionThread btConnThread = getSelectedConnThread();
showMessage(Log.INFO,
"Nivel de gas " +
btConnThread.getDeviceDisplayVal());
btConnThread.write("5".getBytes());
}

public void showMessage(int msgType, String message) {


if (msgType == Log.ERROR) {
messageTv.setTextColor(Color.rgb(200, 0, 0));
} else if (msgType == Log.WARN) {
messageTv.setTextColor(Color.rgb(255, 255, 0));
} else {
messageTv.setTextColor(Color.parseColor("#00B700"));
}

messageTv.setText(message);

/**
* Remove the selected thread from the map Retire el hilo seleccionada del
mapa y muestre MAC
*/
private void removeSelectedConnThread() {
//String addy = (String) foundDevicesSpinner.getSelectedItem();
String addy = "HC-06 " + address;
BtConnectionThread btct = btConnThreadMap.remove(addy);
if (btct != null) {
countTv.setText(String.valueOf(btConnThreadMap.size()));
}
}

private BtConnectionThread getSelectedConnThread() {


//String addy = (String) foundDevicesSpinner.getSelectedItem();
String addy = "HC-06 " + address;
return btConnThreadMap.get(addy);

127 | Página
Instituto Politécnico Nacional ESIME

public void findDevices(View v) {


foundDevices.clear();
bluetoothAdapter.startDiscovery();
showMessage(Log.INFO, "");
}

class BluetoothReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onreceive 0");
String action = intent.getAction();
// When discovery finds a device
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
Log.d(TAG, "onreceive 1: found BT device");
// Get the BluetoothDevice object from the Intent
BluetoothDevice device = intent

.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String key = device.getName() + " " + device.getAddress();
btDeviceMap.put(key, device);
foundDevices.add(key);
showMessage(Log.INFO, "Found Device:" + key);
} else {
Log.d(TAG, "onreceive 2: different bt action received");
}
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.main, menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.layout.menu, menu);
return true;
}

@Override
public boolean handleMessage(Message msg) {
Log.d(TAG, "handleMessage: got message obj:" + msg.obj);
byte[] byteArr = (byte[]) msg.obj;
String msgStr = new String(byteArr);
if (msgStr != null && btConnThreadLookup.get(msg.what) != null) {

showMessage(Log.INFO, "Mensaje Recibido de: "


+
btConnThreadLookup.get(msg.what).getDeviceDisplayVal());
}

//sensorValTv.setText(msgStr);

128 | Página
Instituto Politécnico Nacional ESIME

// Mensaje llega: 1,0

String categoria = msgStr.substring(0, 1); //antes de la coma


String valor = msgStr.substring(2, msgStr.length()); //despues de la
coma

if(categoria.equals("1")){
sensorValTv.setText("Luces Encendidas ");

if(valor.equals("0")){
sensorValTv.setText("LUCES APAGADAS");
}
}

if(categoria.equals("2")){
sensorValTv.setText(" Cerrando Puertas");
}

if(categoria.equals("3")){
sensorValTv.setText("Temperatura = " + valor + " °C");
}

if(categoria.equals("4")){
sensorValTv.setText("Distancia = " + valor);
}

if(categoria.equals("5")){
sensorValTv.setText("Nivel de gas =" + valor);
}
/*if(msgStr.equals("1,0")){
*
*
* HACER ESTO:: si el valor es mayor de 1000 el micro manda una alerta
sensorValTv.setText(msgStr + " - Luces apagadas");
}
if(msgStr.equals("2,0")){
sensorValTv.setText(msgStr + " - Persiana cerrada");
}*/

return true;
}

@Override

129 | Página
Instituto Politécnico Nacional ESIME

public boolean onOptionsItemSelected(MenuItem item) {


switch (item.getItemId()) {

case R.id.exit:
Log.d(TAG, "onOptionsItemSelected: exiting via menu item");
//salir atravez del menu exit
disconnectAll();
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
return true;

default:
return super.onOptionsItemSelected(item);
}
}

130 | Página
Instituto Politécnico Nacional ESIME

Actividad Distancia

public class Distancia extends Activity {

Button luces, aspersores, cerraduras, temperatura, ultrasonico, gas;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_distancia);

luces = (Button) findViewById(R.id.bntLuces);


cerraduras = (Button) findViewById(R.id.bntCerraduras);
temperatura = (Button) findViewById(R.id.bntTemperatura);
ultrasonico = (Button) findViewById(R.id.bntProximidad);
gas = (Button) findViewById(R.id.bntGas);

luces.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendSMS("5529559360", "LUCES");

Toast.makeText(getBaseContext(), "Enviando Mensaje...",


Toast.LENGTH_SHORT).show();
}

});

cerraduras.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendSMS("5529559360", "CERRADURAS");

Toast.makeText(getBaseContext(), "Enviando Mensaje...",


Toast.LENGTH_SHORT).show();
}

});

temperatura.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendSMS("5529559360", "TEMPERATURA");

Toast.makeText(getBaseContext(), "Enviando Mensaje...",


Toast.LENGTH_SHORT).show();
}

});

ultrasonico.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendSMS("5529559360", "ULTRASONICO");

131 | Página
Instituto Politécnico Nacional ESIME

Toast.makeText(getBaseContext(), "Enviando Mensaje...",


Toast.LENGTH_SHORT).show();
}

});

gas.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendSMS("5529559360", "GAS");

Toast.makeText(getBaseContext(), "Enviando Mensaje...",


Toast.LENGTH_LONG).show();
}

});

// Metodo para enviar mensajes

private void sendSMS(String phoneNum, String Message) {

SmsManager sms = SmsManager.getDefault();


sms.sendTextMessage(phoneNum, null, Message, null, null);
// TODO Auto-generated method stub
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.login, menu);
return true;
}

132 | Página
Instituto Politécnico Nacional ESIME

Actividad Activity_Casa

public class SMSReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context2, Intent intent2) {

// TODO Auto-generated method stub


Bundle bundle2 = intent2.getExtras();
SmsMessage [] msgs = null;

if (bundle2 != null){
Object [] pdus2 = (Object[]) bundle2.get("pdus");
msgs = new SmsMessage[pdus2.length];

for (int i = 0; i<msgs.length; i++){


msgs[i] = SmsMessage.createFromPdu((byte[])pdus2[i]);
de += msgs[i].getOriginatingAddress();
contenido += msgs[i].getMessageBody().toString();

if(contenido.equals("LUCES")){
Toast.makeText(context2, "Encender Luces",
Toast.LENGTH_SHORT).show();

if(contenido.equals("CERRADURAS")){
Toast.makeText(context2, "Cerrando Puertas",
Toast.LENGTH_SHORT).show();

if(contenido.equals("TEMPERATURA")){
Toast.makeText(context2, "Grados De Temperatura:",
Toast.LENGTH_SHORT).show();

if(contenido.equals("ULTRASONICO")){
Toast.makeText(context2, "Objeto detectado a : ",
Toast.LENGTH_SHORT).show();

if(contenido.equals("GAS")){
Toast.makeText(context2, "Nivel de gas detectado: ",

Toast.LENGTH_SHORT).show();

133 | Página
Instituto Politécnico Nacional ESIME

Anexo 3
“Programa En Energía”

134 | Página
Instituto Politécnico Nacional ESIME

Anexo 3 Programa En Energía

#include <LiquidCrystal.h>

LiquidCrystal lcd(P2_0, P2_1, P2_2, P2_3, P2_4, P2_5);

//Entrada analogica de LM35 y variable de control

int Ana1 = A0;

int Temp = 0;

char Grados = '°';

//Ultrasonico

const int trigger=6;

const int echo=7;

float distance;

//humo

const int ledPin = GREEN_LED;

const int analogInPin = A6; // Analog input pin that the potentiometer is attached to

const int analogOutPin = 19; // Analog output pin that the LED is attached to

int sensorValue = 0; // value read from the pot

int outputValue = 0; // value output to the PWM (analog out)

//Estados que ocuparemos, estan en boleano para poner falso o verdadero

char valor=0;

boolean estado1, estado2, estado3, estado4, estado5;

void setup()

//Velocidad de transmicion

Serial.begin(9600);

// Configurar el número del LCD de columnas y filas:

lcd.begin(16, 2);

// Muestra un mensaje en la pantalla LCD.

lcd.print(" Bienvenido a ");

// Establecer el cursor a la columna 0, la línea 1

//(Nota: la línea 1 es la segunda fila, ya que la numeración empieza en 0):

lcd.setCursor(0, 1);

lcd.print(" Casa ");

pinMode (P1_0, OUTPUT); //LED ROJO como salida

pinMode (P1_6, OUTPUT); //LED VERDE como salida

135 | Página
Instituto Politécnico Nacional ESIME

pinMode(P1_3,OUTPUT);//configuracion del pin 3 como salida para LED

pinMode(P1_7,OUTPUT);//configuracion del pin 7 como salida para LED

digitalWrite(P1_0, LOW);//Inicialmente se apagan los LEDs.

digitalWrite(P1_6, LOW);//Inicialmente se apagan los LEDs.

//Ultrasonico

pinMode(trigger,OUTPUT);

pinMode(echo,INPUT);

//Detector de gas}

pinMode(ledPin, OUTPUT);

digitalWrite(ledPin, LOW);

estado1 = true; // Se inicializan como verdadero o encendido

estado2 = true;

estado3 = true;

estado4 = true;

estado5 = true;

void loop() //Bucle infinito

if (Serial.available())//Si hay una caracter en el buffer serial

//el programa entra aquí.

valor = Serial.read();// Se lee el valor numérico en el puerto serie.

if (valor == '1')//Si el valor es 1.

Serial.begin(9600);

digitalWrite(P1_0, estado1); //Se enciende el led rojo.

digitalWrite(P1_7, estado1); // para el modulo de los relevadores

Serial.print("1,LUCES\r\n");//Se envía el mensaje por el puerto serie,

estado1 = !estado1; //Aqui se cambia el valor del estado 1

// Configurar el número del LCD de columnas y filas:

lcd.begin(16, 2);

136 | Página
Instituto Politécnico Nacional ESIME

// Muestra un mensaje en la pantalla LCD.

lcd.print("Luces ACTIVADAS");

// Configurar el número del LCD de columnas y filas:

lcd.setCursor(0, 1);

lcd.print("Timer ");

lcd.print(millis()/1000);

}//un retorno de carro y salto de línea.

else if (valor == '2')

Serial.begin(9600);

digitalWrite(P1_6, estado2); //Se enciende el led verde.

Serial.print("2,CERRANDO..\r\n");

estado2 = !estado2; //Aqui se cambia el valor del estado

// Configurar el número del LCD de columnas y filas:

lcd.begin(16, 2);

// Muestra un mensaje en la pantalla LCD.

lcd.print("Cerrando....");

// Configurar el número del LCD de columnas y filas:

lcd.setCursor(0, 1);

lcd.print("Timer ");

// Imprimir el número de segundos desde el reinicio:

lcd.print(millis()/1000);

else if (valor == '3')

Serial.begin(9600);

estado3 = !estado3; //Aqui se cambia el valor del estado

Temp = analogRead(Ana1); //Leemos el valor de la entrada analogica

// Primero transformamos la lectura analógica de tensión a un valor de temperatura

Temp = (5.0 * Temp * 100.0)/1024.0;

Serial.print("3 ");

Serial.print(Temp);

// Serial.println(" C");

// Serial.print(Grados);

//Serial.println("C");

// Configurar el número del LCD de columnas y filas:

lcd.begin(16, 2);

137 | Página
Instituto Politécnico Nacional ESIME

//Mostramos los grados en la pantalla LCD

lcd.print("Temperatura: ");

lcd.setCursor(0,1);

lcd.print(Temp);

//mayo 2014

lcd.print (Grados);

lcd.print(" C");

delay(1000); //Al ser temperatura no hace falta leerlo tan seguido

//esto enciende y apaga el ventlador

if (Temp > 37){//Temperatura MAYOR 37 1 menor 0

digitalWrite(P1_3, HIGH);

}else

digitalWrite(P1_3,LOW);

else if (valor == '4')

Serial.begin(9600);

estado4 = !estado4;

//Inicializamos el sensor

digitalWrite(trigger,LOW);

delayMicroseconds(5);

// Comenzamos las mediciones

// Enviamos una señal activando la salida trigger durante 10 microsegundos

digitalWrite(trigger,HIGH);

delayMicroseconds(10);

digitalWrite(trigger,LOW);

// Adquirimos los datos y convertimos la medida a metros

distance=pulseIn(echo,HIGH); // Medimos el ancho del pulso

distance=distance*0.0001657;

// Enviamos los datos medidos a traves del puerto serie y al display LCD

Serial.print("4,");

Serial.print(distance);

Serial.println(" m");

lcd.begin(16, 2);

lcd.print("Objeto detectado a :");

lcd.setCursor(0,1);

138 | Página
Instituto Politécnico Nacional ESIME

lcd.print(distance);

lcd.print("m");

delay(100);

else if (valor == '5')

Serial.begin(9600);

estado5 = !estado5;

// Apagamos el led de alarma

digitalWrite(ledPin, LOW);

//leer la analógica en el valor:

sensorValue = analogRead(analogInPin);

//asigna la gama de la salida analógica:

outputValue = map(sensorValue, 0, 1023, 0, 255);

//cambiar el valor analógico Salida:

analogWrite(analogOutPin, outputValue);

// muestra los resultados en la interfaz serial

Serial.print("5," );

Serial.println(sensorValue);

lcd.begin(16, 2);

//Mostramos los grados en la pantalla LCD

lcd.print("Pureza ");

lcd.setCursor(0,1);

lcd.print(sensorValue);

delay(1000);

if(sensorValue>800)

Serial.begin(9600);

Serial.print("HUMO DECETADO" );

lcd.begin(16, 2);

lcd.print("Cuidado! nivel:");

lcd.setCursor(0,1);

lcd.print(sensorValue);

lcd.print(" Alto de gas");

digitalWrite(ledPin, HIGH);

delay(1000); }

139 | Página
Instituto Politécnico Nacional ESIME

else// Si se envía un caracter distinto de 1-5, todo se apagan.

digitalWrite(P1_0, LOW); //Se apaga el led rojo.

digitalWrite(P1_6, LOW);//Se apaga el led verde.

Serial.print("Apagar todo \r\n");

// Configurar el número del LCD de columnas y filas:

lcd.begin(16, 2);

// Muestra un mensaje en la pantalla LCD.

lcd.print(" Apagando..");

140 | Página
Instituto Politécnico Nacional ESIME

Anexo 4
“Especificaciones De
Los Sensores”

141 | Página
Instituto Politécnico Nacional ESIME

Anexo 4 Especificaciones De Los Sensores

142 | Página
Instituto Politécnico Nacional ESIME

143 | Página
Instituto Politécnico Nacional ESIME

144 | Página
Instituto Politécnico Nacional ESIME

145 | Página
Instituto Politécnico Nacional ESIME

Anexo 5
“Módulo Bluetooth”

146 | Página
Instituto Politécnico Nacional ESIME

Anexo 5 Módulo Bluetooth

147 | Página

También podría gustarte