Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ORP Diseño y Construcción de Un Sistema de Comunicación Vía Bluetooth
ORP Diseño y Construcción de Un Sistema de Comunicación Vía Bluetooth
PROYECTO TERMINAL
PRESENTA:
ASESORES:
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.
“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
II | Página
Instituto Politécnico Nacional ESIME
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
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:
IV | Página
Instituto Politécnico Nacional ESIME
JUSTIFICACIÓN
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
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).
VII | Página
Instituto Politécnico Nacional ESIME
AR.Drone:
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
OBJETIVOS PARTICULARES............................................................................................. IV
JUSTIFICACIÓN ................................................................................................................... V
METODOLOGÍA................................................................................................................... VI
ANTECEDENTES................................................................................................................ VII
IX | Página
Instituto Politécnico Nacional ESIME
X | Página
Instituto Politécnico Nacional ESIME
XI | Página
Instituto Politécnico Nacional ESIME
CAPÍTULO 1 |“MARCO
TEÓRICO”
1 | Página
Instituto Politécnico Nacional ESIME
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:
Modelo OSI.
2 | Página
Instituto Politécnico Nacional ESIME
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
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.
4 | Página
Instituto Politécnico Nacional ESIME
Dependiendo de estos factores, las redes pueden clasificarse como redes de área local, redes
de área amplia y redes de área personal.
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].
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
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.
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.
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
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.
8 | Página
Instituto Politécnico Nacional ESIME
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:
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.
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.
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
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.
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
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].
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).
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.
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)
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 3 1 mW ~1 metro
Versión Velocidad
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”.
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.
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.
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
Enlace físico.
• El maestro puede soportar más de 3 enlaces simultáneos mientras que los esclavos 3
como máximo.
19 | Página
Instituto Politécnico Nacional ESIME
• La máxima velocidad de envío es de 721 kbps en una dirección y 57.6 kbps en la otra
[9].
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
• 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.
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.
• LTE: Long Term Evolution - Evolución a Largo Plazo (Tecnología de banda ancha
inalámbrica).
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:
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.
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.
24 | Página
Instituto Politécnico Nacional ESIME
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:
Esté hecho tiene sus evidentes ventajas, pero también va a suponer un esfuerzo adicional al
programador.
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.
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.
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.
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
26 | Página
Instituto Politécnico Nacional ESIME
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
Costo por publicar $ 99 / año $ 25 una vez $ 99 / año Sin Costo $ 1 una vez
Interfaz personalizable No SI SI SI SI
Soporte De Memoria No SI NO SI SI
Interna
Fabricante único SI NO NO SI NO
27 | Página
Instituto Politécnico Nacional ESIME
El sistema operativo Android, al igual que los propios teléfonos móviles, ha evolucionado
rápidamente, acumulando una gran cantidad de versiones:
Características: Mejoras en Google Maps, salvapantallas animado, incluye zoom digital para la
cámara, y un nuevo navegador de internet.
Características: Incluye hostpot Wi-Fi, mejora de la memoria, más veloz, Microsoft Exchange y
video-llamada.
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
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
1.4 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
31 | Página
Instituto Politécnico Nacional ESIME
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
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.
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.
33 | Página
Instituto Politécnico Nacional ESIME
CAPÍTULO 2 |“ESTRUCTURA
DEL PROGRAMA EN
ANDROID”
34 | Página
Instituto Politécnico Nacional ESIME
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.
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
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.
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
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.
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.
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.
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.
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.).
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.
40 | Página
Instituto Politécnico Nacional ESIME
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:
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 :
2. Consulta del adaptador Bluetooth para identificar los dispositivos Bluetooth emparejados.
4. Conectarse con otros dispositivos a través del SDP (Service Discovery, Descubrimientos De
Servicio).
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
43 | Página
Instituto Politécnico Nacional ESIME
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 cliente abre un nuevo socket de tipo BluetoothSocket a partir del dispositivo que
obtuvo previamente (Figura 2.7).
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
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).
47 | Página
Instituto Politécnico Nacional ESIME
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).
48 | Página
Instituto Politécnico Nacional ESIME
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.
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
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.
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
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.
En las siguientes secciones se describe a detalle las diferentes partes constitutivas del
programa.
51 | Página
Instituto Politécnico Nacional ESIME
Login
Ingresa Tu Usuario
Invalido
Usuario Intruso
Error en la Validación
Valido
Ingresa Tu Password
Invalido
Password
Valido
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.
52 | Página
Instituto Politécnico Nacional ESIME
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.
53 | Página
Instituto Politécnico Nacional ESIME
Local
Temperatura Valor
Ultrasonico Valor
Gas Valor
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
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:
55 | Página
Instituto Politécnico Nacional ESIME
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.
Remoto
Palabra Clave :
Luces LUCES
Palabra Clave :
Cerraduras CERRADURAS
Palabra Clave :
Temperatura TEMPERATURA
Palabra Clave :
Proximidad ULTRASONICO
Palabra Clave :
56 | Página
Instituto Politécnico Nacional ESIME
Nota: Para poder hacer uso del administrador de mensajes en Andriod es estrictamente
necesario definir en el manifets de nuestra App los permisos:
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
58 | Página
Instituto Politécnico Nacional ESIME
SMS
Si es :
TEMPERATURA Valor
ULTRASONICO Valor
GAS GAS
NO
INICIO
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
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.
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.
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.
ALU de 16 bits que efectúa operaciones lógicas (AND, OR, XOR), substracciones,
adiciones y comparaciones.
Arquitectura Ortogonal, además cualquier instrucción se puede usar con cualquier modo
de direccionamiento.
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.
12 registros de propósito general que pueden almacenar tanto datos como direcciones.
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
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.
65 | Página
Instituto Politécnico Nacional ESIME
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:
Upload to I/O Board: Compila el código y lo vuelca en la placa E/S del MSP430.
66 | Página
Instituto Politécnico Nacional ESIME
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.
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
void setup()
{
Sección de inicio de instrucciones
}
void loop()
{
Sección de ejecución instrucciones
}
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:
'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.
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).
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´
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.
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
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.
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.
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”.
72 | Página
Instituto Politécnico Nacional ESIME
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:
Delay (ms)
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.
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.
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:
76 | Página
Instituto Politécnico Nacional ESIME
1 Encender/Apagar la iluminación
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.
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
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.
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).
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
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
80 | Página
Instituto Politécnico Nacional ESIME
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
4.1 Sensores.
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.
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.
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
Reproducibilidad: Tiene el mismo sentido que la repetitividad excepto que se utiliza cuando se
toman medidas distintas bajo condiciones diferentes.
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.
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 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).
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.
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.
86 | Página
Instituto Politécnico Nacional ESIME
Sensores de Gas
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)
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
Display LCD
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.
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.
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.
90 | Página
Instituto Politécnico Nacional ESIME
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.
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.
93 | Página
Instituto Politécnico Nacional ESIME
94 | Página
Instituto Politécnico Nacional ESIME
95 | Página
Instituto Politécnico Nacional ESIME
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
97 | Página
Instituto Politécnico Nacional ESIME
98 | Página
Instituto Politécnico Nacional ESIME
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.
100 | Página
Instituto Politécnico Nacional ESIME
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
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
103 | Página
Instituto Politécnico Nacional ESIME
Glosario de Términos
Scatternet Una red dispersa es un tipo de red que se forma entre dos o más
dispositivos con capacidad Bluetooth.
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.
105 | Página
Instituto Politécnico Nacional ESIME
Glosario de Acrónimos
BT Abreviatura de Bluetooth.
106 | Página
Instituto Politécnico Nacional ESIME
107 | Página
Instituto Politécnico Nacional ESIME
108 | Página
Instituto Politécnico Nacional ESIME
109 | Página
Instituto Politécnico Nacional ESIME
Anexo 1
“Identificador Base
Único Universal
(UUID)”
110 | Página
Instituto Politécnico Nacional ESIME
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.
111 | Página
Instituto Politécnico Nacional ESIME
112 | Página
Instituto Politécnico Nacional ESIME
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
113 | Página
Instituto Politécnico Nacional ESIME
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
Servicio de
Auriculares - Audio Gateway (AG) 0x1112 Perfil de auriculares (HSP)
Clase
WAP_CLIENT 0x1114
Requisitos de interoperabilidad para la tecnología Servicio de
115 | Página
Instituto Politécnico Nacional ESIME
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
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
116 | Página
Instituto Politécnico Nacional ESIME
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
Servicio de
PrintingStatus 0x1123 Perfil básico de impresión (BPP)
Clase
Servicio de
HCR_Print 0x1126 Hardcopy Cable Replacement Profile (HCRP)
Clase
Servicio de
HCR_Scan 0x1127 Hardcopy Cable Replacement Profile (HCRP)
Clase
117 | Página
Instituto Politécnico Nacional ESIME
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
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
Servicio de
Visualización 3D 0x1137 3D de sincronización de perfiles (3DSP)
Clase
118 | Página
Instituto Politécnico Nacional ESIME
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
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
119 | Página
Instituto Politécnico Nacional ESIME
Servicio de
VideoSource 0x1303 Video Distribution Profile (VDP)
Clase
Servicio de
VideoSink 0x1304 Video Distribution Profile (VDP)
Clase
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)
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
package com.example.sistema_usuario;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// 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
@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
// SPP UUID
private static final UUID MY_UUID = UUID
.fromString("00001101-0000-1000-8000-00805F9B34FB");
private BluetoothSocket bluetoothSocket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
conectarBluetooth();
.createRfcommSocketToServiceRecord(MY_UUID);
124 | Página
Instituto Politécnico Nacional ESIME
@Override
protected void onDestroy() {
super.onPause();
Log.d(TAG, "onDestroy: unregistering");
unregisterReceiver(bluetoothReceiver);
disconnectAll();
}
125 | Página
Instituto Politécnico Nacional ESIME
// BroadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
bluetoothReceiver = new BluetoothReceiver();
registerReceiver(bluetoothReceiver, filter);
}
126 | Página
Instituto Politécnico Nacional ESIME
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()));
}
}
127 | Página
Instituto Politécnico Nacional ESIME
@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) {
//sensorValTv.setText(msgStr);
128 | Página
Instituto Politécnico Nacional ESIME
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
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
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_distancia);
luces.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendSMS("5529559360", "LUCES");
});
cerraduras.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendSMS("5529559360", "CERRADURAS");
});
temperatura.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendSMS("5529559360", "TEMPERATURA");
});
ultrasonico.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendSMS("5529559360", "ULTRASONICO");
131 | Página
Instituto Politécnico Nacional ESIME
});
gas.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sendSMS("5529559360", "GAS");
});
@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
@Override
public void onReceive(Context context2, Intent intent2) {
if (bundle2 != null){
Object [] pdus2 = (Object[]) bundle2.get("pdus");
msgs = new SmsMessage[pdus2.length];
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
#include <LiquidCrystal.h>
int Temp = 0;
//Ultrasonico
float distance;
//humo
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
char valor=0;
void setup()
//Velocidad de transmicion
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 1);
135 | Página
Instituto Politécnico Nacional ESIME
//Ultrasonico
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
//Detector de gas}
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
estado2 = true;
estado3 = true;
estado4 = true;
estado5 = true;
Serial.begin(9600);
lcd.begin(16, 2);
136 | Página
Instituto Politécnico Nacional ESIME
lcd.print("Luces ACTIVADAS");
lcd.setCursor(0, 1);
lcd.print("Timer ");
lcd.print(millis()/1000);
Serial.begin(9600);
Serial.print("2,CERRANDO..\r\n");
lcd.begin(16, 2);
lcd.print("Cerrando....");
lcd.setCursor(0, 1);
lcd.print("Timer ");
lcd.print(millis()/1000);
Serial.begin(9600);
Serial.print("3 ");
Serial.print(Temp);
// Serial.println(" C");
// Serial.print(Grados);
//Serial.println("C");
lcd.begin(16, 2);
137 | Página
Instituto Politécnico Nacional ESIME
lcd.print("Temperatura: ");
lcd.setCursor(0,1);
lcd.print(Temp);
//mayo 2014
lcd.print (Grados);
lcd.print(" C");
digitalWrite(P1_3, HIGH);
}else
digitalWrite(P1_3,LOW);
Serial.begin(9600);
estado4 = !estado4;
//Inicializamos el sensor
digitalWrite(trigger,LOW);
delayMicroseconds(5);
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
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.setCursor(0,1);
138 | Página
Instituto Politécnico Nacional ESIME
lcd.print(distance);
lcd.print("m");
delay(100);
Serial.begin(9600);
estado5 = !estado5;
digitalWrite(ledPin, LOW);
sensorValue = analogRead(analogInPin);
analogWrite(analogOutPin, outputValue);
Serial.print("5," );
Serial.println(sensorValue);
lcd.begin(16, 2);
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);
digitalWrite(ledPin, HIGH);
delay(1000); }
139 | Página
Instituto Politécnico Nacional ESIME
lcd.begin(16, 2);
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
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
147 | Página