Tesis Bluetooth
Tesis Bluetooth
iii
iv
Abstract
This thesis presents the development of a lighting system using the technique of phase
angle control (dimmer) in order to carry out the attenuation of the lamps (AC) through
a remote control set by the design an application on a mobile device with SO Android
using the communication protocol IEEE 802.15 (Bluetooth).
v
vi
Índice General
Resumen III
Abstract V
Índice de Figuras XI
Objetivo XV
Justificación XVII
Introducción XIX
1. Iluminación Eficiente 1
1.1. Introducción a la Iluminación Eficiente . . . . . . . . . . . . . . . . . . . . 1
1.1.1. Ahorro de energı́a en el hogar . . . . . . . . . . . . . . . . . . . . . 1
1.1.2. Iluminación en el hogar . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Sistemas Innovadores de Iluminación . . . . . . . . . . . . . . . . . . . . . 2
1.2.1. Sistemas de Control de Iluminación . . . . . . . . . . . . . . . . . . 3
1.3. Estructura del Sistema de Control de Iluminación: La Potencia . . . . . . . 4
1.4. Introducción a los Dimmers . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.1. Dimmers diseñados con tiristores . . . . . . . . . . . . . . . . . . . 6
1.4.2. Dimmer controlado remotamente por tiristor . . . . . . . . . . . . . 7
1.4.3. Circuitos dimmer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5. Control de la Iluminación . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6. Planteamiento del Problema . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7. Hipótesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
vii
viii ÍNDICE GENERAL
1.8. Metodologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.9. Organización de la Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2. Bluetooth 15
2.1. Descripción general de la Tecnologı́a Bluetooth . . . . . . . . . . . . . . . . 15
2.1.1. Protocolos Especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2. RFCOMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3. Perfiles Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.1. Perfil Genérico de Acceso (GAP) . . . . . . . . . . . . . . . . . . . 21
2.3.2. Perfil de Puerto Serial . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.3. Perfil de Aplicación de Descubrimiento de Servicio (SDAP) . . . . . 22
2.3.4. Perfil Genérico de Intercambio de Objetos (GOEP) . . . . . . . . . 22
2.4. Dispositivo Bluetooth Roving Networks . . . . . . . . . . . . . . . . . . . . 22
2.4.1. Estableciendo una conexión Bluetooth . . . . . . . . . . . . . . . . 23
2.4.2. Modos de Operación . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.3. Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3. Android 29
3.1. Historia de Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2. ¿Qué es Android? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.1. Caracterı́sticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.2. Arquitectura de Android . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3. Aplicaciones Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.1. Fundamentos de una aplicación . . . . . . . . . . . . . . . . . . . . 38
3.3.2. Componentes de una aplicación . . . . . . . . . . . . . . . . . . . . 39
3.4. Desarrollando aplicaciones Android . . . . . . . . . . . . . . . . . . . . . . 43
3.4.1. Entornos de Desarrollo Android . . . . . . . . . . . . . . . . . . . . 44
3.5. Estructura Básica de APP Inventor . . . . . . . . . . . . . . . . . . . . . . 48
3.5.1. Ventana de Diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.5.2. Editor de Bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.6. Instalación y distribución de Aplicaciones (Android Market) . . . . . . . . 69
3.6.1. Bajar Aplicaciones desde Android Market . . . . . . . . . . . . . . 69
3.6.2. Subir Aplicaciones desde Android Market . . . . . . . . . . . . . . . 70
ÍNDICE GENERAL ix
Pruebas y Resultados 91
Conclusiones 95
4.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.7. Trabajos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Referencias 97
Apéndice 98
99
x ÍNDICE GENERAL
Índice de Figuras
xi
xii ÍNDICE DE FIGURAS
xv
xvi OBJETIVO
Justificación
xvii
xviii JUSTIFICACIÓN
Introducción
xix
xx INTRODUCCIÓN
Ası́ después de muchas ideas se pudo consolidad y delimitar claramente las carac-
terı́sticas del proyecto. Se enfoca al control de un sistema de iluminación mediante una
aplicación en el Sistema Operativo Android para móviles. Y en ¿Dónde está el ahorro de
energı́a y la comodidad? El primer aspecto se cubre al utilizar DIMMERS y Lámparas
Fluorescentes Compactas Dimmeables (o Lámparas LED Dimmeables con entrada E27)
que consumen un mı́nimo de energı́a; en cuanto al aspecto de la comodidad, abarca el
hecho de que, mientras este mandando mensajes o checando sus mail en el Smartphone,
pueda apagar, encender o regular la intensidad de la luz de cualquier habitación.
Capı́tulo 1
Iluminación Eficiente
Los individuos y las organizaciones que son consumidores directos de la energı́a de-
berı́an desear ahorrar energı́a para reducir costos energéticos y promover la sostenibilidad
económica y ambiental. Los usuarios industriales y comerciales suelen desear aumentar
eficacia y maximizar ası́ su beneficio.
Los usos y costumbres diarios habituales que se hacen en la vivienda puede conllevar
a un ahorro considerable de energı́a si se cambian las actitudes y se es consciente del
consumo real y del necesitado. En la mayorı́a de los casos basta con la elección de un elec-
trodoméstico de bajo consumo, o de una racionalización del consumo de la calefacción,
del aire acondicionado y del agua caliente.
1
2 CAPÍTULO 1. ILUMINACIÓN EFICIENTE
Es importante seguir una serie de consejos básicos, como son: utilizar bombillas de
bajo consumo en aquellas dependencias de la vivienda que tengan que permanecer mucho
tiempo encendidas; siempre que sea posible aprovechar la iluminación natural; usar la
luz solo cuando se necesite y no dejar luces encendidas en habitaciones que no se estén
utilizando.
Además hay que tener en cuenta que las lámparas halógenas consumen mucha más
energı́a que otros tipos de bombillas y disipan más calor, los tubos fluorescentes duran
hasta 10 veces más que las bombillas tradicionales y son muy eficientes energéticamente,
por lo que si se va a tener una lámpara fluorescente apagada menos de 20 minutos, es
mejor dejarla encendida. El empleo de bombillas de bajo consumo supone un ahorro de
hasta un 80 % respecto a las convencionales.
Existen nuevas tecnologı́as de luminarias como los diodos emisores de luz (LED),
ası́ como diversas tecnologı́as de control de la iluminación: regulación de potencia, sensores
de proximidad, combinación luz natural - luz artificial, doble iluminación e iluminación
selectiva que producen ahorros considerables.
Los sistemas innovadores comprenden una diversidad de dispositivos que van desde lu-
minarias, equipos auxiliares y sistemas de control, hasta ventanas inteligentes, lumiductos
y colectores de luz solar. Una clasificación general permite diferenciar inicialmente entre
los sistemas innovadores del alumbrado artificial y los sistemas innovadores del alumbrado
natural. Aunque muchos de ellos aún se hallan en etapa experimental y de perfecciona-
miento, las expectativas que generan sobre eficiencia y mejoramiento en la calidad de
1.2. SISTEMAS INNOVADORES DE ILUMINACIÓN 3
Limitaciones
Las reacciones adversas, de los ocupantes de locales equipados con sistemas de control,
parecen ser el punto más limitante de esta tecnologı́a. Afortunadamente la mayorı́a de las
quejas se originan principalmente en el mal funcionamiento de estos equipos, ya sea porque
incurren en apagados incorrectos o bien incluyen operaciones frecuentes y distractivas, tal
como se comentó anteriormente.
etc. Cada grupo de luces estará conectado al mismo canal, y encenderán juntas. Si se
quisiera que las seis lámparas encendieran en diferentes intensidades al mismo tiempo
deberé colocar cada artefacto en un canal distinto.
Con frecuencia se escucha hablar sobre Dimmers Digitales y Dimmers Analógicos, pero
los dimmers son siempre análogos.
Todos los sistemas dimmers operan sobre la base de dos técnicas para limitar el flujo
6 CAPÍTULO 1. ILUMINACIÓN EFICIENTE
Variación de voltaje.
Un triac es una forma de tiristor que permite que ambos semiciclos de la corriente
alterna (CA) fluyan a través de la carga. El triac es disparado cuando una señal de baja
energı́a se aplica en su terminal G (Gate). El semiciclo positivo de la señal de CA pa-
sará por el triac siempre que G sea activo, de esta manera, la corriente circulará de arriba
hacia abajo (terminal MT2) como se muestra en el circuito de la Figura 1.10. Mientras que
en el semiciclo negativo pasará por el triac siempre y cuando exista una señal de disparo
en la entrada G, de esta manera la corriente circulará de abajo hacia arriba (terminal
MT1).
suministrado a la carga cambia y por lo tanto, la intensidad de las luces también cambia
(Fig.1.1).
Cuando la corriente alterna cambia su dirección, el triac se apaga; esto hace que la
corriente en la carga sea cero en cada semiciclo de CA. Por lo tanto, para que la lámpara
se active continuamente, el triac necesita dispararse durante ambos semiciclos de la onda
sinusoidal CA; para asegurar que la carga promedio de la corriente no sea cero.
2. Un circuito de disparo, que compara el momento en que se detecta el cruce por cero
con la señal de entrada, y dispara los tiristores después del retardo de fase apropiado.
La tarea principal del MCU es controlar en tiempo real el ángulo de la fase. Para
ello su firmware debe ejecutar dos tareas: calcular el retraso entre el cruce por cero y el
encendido del triac, conectándolo en el punto apropiado en el ciclo de CA [Couedic, 2000],
[Microchip, 1997].
El funcionamiento digital del dimmer profesional introduce varios beneficios entre los
que se encuentran:
las luces. La consola se comunica con los dimmers para que las luces adquieran el efecto
deseado por el operador [Scott, 1996].
La energı́a eléctrica es uno de los recursos en escases donde se busca nuevas formas
de generarla y por consiguiente formas de cómo ahorrarla, en este contexto, es posible
detectar que las alternativas y propuestas de ahorro en diferentes ámbitos son muy bastas
y extensas. En cuanto a lo que a la iluminación concierne, existen muchas estrategias e
instrumentos de control para ahorrar y optimizar tanto la iluminación como la energı́a.
ple mando convencional, como una alternativa innovadora de ahorro y comodidad; para
este caso, el mando a control propuesto es un teléfono inteligente.
1.7. Hipótesis
Se cree que el desarrollo de un sistema de control de iluminación brinda una alternativa
que contribuye en el ahorro de la energı́a eléctrica en gran medida, del mismo modo se
pretende que éste ofrezca una mayor comodidad para los usuarios; además de verlo como
una forma de fomentar el auge de nueva tecnologı́a para dispositivos móviles que cuenten
con el Sistema Operativo Android, que si bien es relativamente nuevo ha alcanzado un
gran crecimiento en los últimos años.
1.8. Metodologı́a
La metodologı́a que se implementó para el desarrollo de la investigación abarca los
siguientes puntos:
Pruebas finales.
Bluetooth
En Febrero de 1998, se fundó el Bluetooth Special Interest Group (SIG), creado con
el fin de ofrecer soporte para la nueva tecnologı́a. Actualmente, más de mil compañı́as lo
integran y trabajan conjuntamente por un estándar abierto para el concepto Bluetooth
(Fig.2.2).
Bluetooth es un sistema de radio que opera en la banda de frecuencia libre de 2.4 GHz,
15
16 CAPÍTULO 2. BLUETOOTH
esta banda de frecuencia está disponible en la mayor parte del mundo. Bluetooth utiliza
79 canales de radio frecuencia con un ancho de banda de 1 MHz cada uno y una rata
máxima de sı́mbolos de 1 M Sı́mbolo/s. Después de que cada paquete es enviado en una
determinada frecuencia de transmisión, ésta cambia a otra de las 79 frecuencias [3]. El
rango tı́pico de operación de Bluetooth es menor a 10 m, sin embargo se pueden alcanzar
distancias de hasta 100 m.
cómo actúa una aplicación de un cliente Bluetooth para descubrir servicios disponibles
de servidores Bluetooth, además de proporcionar un método para determinar las carac-
terı́sticas de dichos servicios.
La capa de Audio es una capa especial, usada sólo para enviar audio sobre Bluetooth.
Las transmisiones de audio pueden ser ejecutadas entre una o más unidades usando mu-
chos modelos diferentes. Los datos de audio no pasan a través de la capa L2CAP, pero
sı́ directamente después de abrir un enlace y un establecimiento directo entre dos unidades
Bluetooth.
La Figura (Fig.2.4) muestra una comparación del stack Bluetooth con el modelo de
referencia estándar Open Systems Interconect, OSI, para stacks de protocolo de comuni-
caciones. A pesar de que Bluetooth no concuerda exactamente con el modelo, esta compa-
ración es muy útil para relacionar las diferentes partes del stack Bluetooth con las capas
del modelo OSI. Dado que el modelo de referencia es un stack ideal y bien particionado,
la comparación sirve para resaltar la división de funciones en el stack Bluetooth.
2.2. RFCOMM
El protocolo RFCOMM brinda emulación de puertos seriales sobre el protocolo L2CAP.
La capa RFCOMM es una simple capa de transporte provista adicionalmente de emula-
ción de circuitos de puerto serial RS-232. El protocolo RFCOMM soporta hasta 60 puertos
emulados simultáneamente. Dos unidades Bluetooth que usen RFCOMM en su comuni-
cación pueden abrir varios puertos seriales emulados, los cuales son multiplexados entre
sı́. La (Fig.2.5) muestra el esquema de emulación para varios puertos seriales (Fig.2.6).
Muchas aplicaciones hacen uso de puertos seriales. El RFCOMM está orientado a hacer
más flexibles estos dispositivos, soportando fácil adaptación de comunicación Bluetooth.
Un ejemplo de una aplicación de comunicación serial es el protocolo punto-a-punto (PPP).
20 CAPÍTULO 2. BLUETOOTH
El RFCOMM tiene construido un esquema para emulación de null modem y usa a L2CAP
para cumplir con el control de flujo requerido por alguna aplicación.
Existen cuatro perfiles generales definidos, en los cuales están basados directamente
algunos de los modelos de usuario más importantes y sus perfiles. Estos cuatro modelos
son Perfil Genérico de Acceso (GAP), Perfil de Puerto Serial, Perfil de Aplicación de
Descubrimiento de Servicio (SDAP) y Perfil Genérico de Intercambio de Objetos (GOEP).
A continuación se hace una breve descripción de estos y algunos otros perfiles Bluetooth.
2.3. PERFILES BLUETOOTH 21
Este perfil define los requerimientos para dispositivos Bluetooth, necesarios para es-
tablecer una conexión de cable serial emulada usando RFCOMM entre dos dispositivos
similares. Este perfil solamente requiere soporte para paquetes de un slot. Esto significa
que pueden ser usadas ratas de datos de hasta 128 kbps. El soporte para ratas más altas es
opcional. RFCOMM es usado para transportar los datos de usuario, señales de control de
modem y comandos de configuración. El perfil de puerto serial es dependiente del GAP.
22 CAPÍTULO 2. BLUETOOTH
conectarse al puerto COM asignado por el dispositivo a través de una interfaz Bluetooth
o puerto serie.
Para conectarse a FireFly, busque en los servicios que ofrece, deberı́a ver: El perfil
“SPP” con un puerto COM virtual asignado. Abrir este puerto virtual COM para crear
una conexión Bluetooth. Una vez conectado, el dispositivo estará en modo de datos que
permitirá el flujo de datos en ambas direcciones, como si el puerto serie estuviera conec-
tado fı́sicamente (cable) a la PC. El dispositivo debe estar en modo comando para la
configuración y programación. Para entrar en modo comando teclee “$$$” (tres signos de
pesos), ya sea con el control remoto Bluetooth o la conexión local del puerto serie. Se
debe entrar en el modo de comandos dentro de los primeros 60 segundos (configurable
por el ajuste del config-timer).
NOTA: Sólo un cliente puede hacer la conexión esclavo FireFly a la vez. Como maestro,
2.4. DISPOSITIVO BLUETOOTH ROVING NETWORKS 25
Comando de modo Esclavo (SM, 0):Este es el modo por defecto, con el que otros
dispositivos Bluetooth pueden descubrir y conectarse al dispositivo.
Comando de modo Maestro (SM, 1):Este modo es útil cuando el dispositivo quiere
iniciar conexiones (y no recibirlas). En este modo, el dispositivo NO será visible o
conectable.
Disparador Modo Maestro (SM, 2):En este modo, el dispositivo se conectará au-
tomáticamente a la dirección anterior configurada como esclavo cuando un carácter
(o caracteres) se reciben en el local UART. La conexión permanece abierta hasta
que un temporizador de inactividad configurable (1 a 255 segundos), expire sin datos
recibidos, o se vea un carácter de interrupción (BREAK) configurable.
Conexión automática (modo maestro) (SM, 3): Si se selecciona este modo, el dis-
positivo iniciará una conexión a la dirección remota previamente almacenada inme-
diatamente después de encender el aparato. En este modo, los datos se pasan sin
que sean interpretados por el BluePort (alta velocidad), por lo tanto, la conexión
no se puede romper a través de comandos. Si se produce desconexión, el dispositivo
intentará volver a conectar hasta que lo consiga.
Conexión automática (modo DTR) (SM, 4):Este modo se debe establecer con el
set de comandos. Este modo funciona como conexión automática al modo Master,
excepto que la conexión y desconexión están controladas por los 3 dipswitch externos
en el FireFly (no incluido en todos los módulos de Bluetooth).
Conexión automática a cualquier modo (SM, 5):Este modo se debe establecer con
el set de comandos. Este modo funciona como el modo de DTR Auto-conexión,
excepto que cada vez que el switch / PIO está prendido, se realiza una búsqueda y
al encontrar el primer dispositivo se conecta. La dirección almacenada NO se utiliza,
y la dirección que se encuentran nunca se almacena.
26 CAPÍTULO 2. BLUETOOTH
2.4.3. Configuración
Modo Comando vs Modo Dato
El uso de la norma RS-232 pasa a través del cable de PC para enviar caracteres
ASCII a través de la terminal al dispositivo de RN. La configuración del puerto serie debe
coincidir con la configuración del puerto serie RN. Por defecto, estos se establecen en:
8 bits
Sin paridad
1 bit de paro
A menudo es útil para poder realizar la configuración remota a través de una cone-
xión Bluetooth. Para ello, conectamos el dispositivo a través de Bluetooth, y utilizando
el emulador de terminal.
Android
Si queremos hablar de la historia de Android no nos queda más que hablar un hombre.
Ese hombre es Andy Rubin (Fig. 3.1) quien fundó en 2003, Android Inc.No fue hasta el 5
de Noviembre de 2007 que Google presentó Android, un sistema operativo para móviles
que revolucionarı́a el mercado, aunque fue un año después, en Octubre de 2008 cuando lo
29
30 CAPÍTULO 3. ANDROID
“ Android es una pila de software para dispositivos móviles que incluye un sistema
operativo, middleware y aplicaciones clave. El SDK de Android proporciona las herramien-
tas y APIs necesarias para comenzar a desarrollar aplicaciones en la plataforma Android
usando el lenguaje de programación Java” .
3.2.1. Caracterı́sticas
Las caracterı́sticas que posee la plataforma Android, se mencionan a continuación y
posteriormente se desglosara su explicación.
Posee una maquina virtual Dalvik que optimiza el rendimiento en los dispositivos
móviles.
Soporta archivo multimedia de imagen, video y audio (MPEG4, H.264, MP3, AAC,
AMR, JPG, PNG, GIF).
Kernel de Linux
Android se basa en la versión 2.6 de Linux para los servicios del núcleo del sistema
como la seguridad, la gestión de memoria, gestión de procesos, la pila de red, y el modelo
de controlador (Fig.3.3). El núcleo también actúa como una capa de abstracción entre el
hardware y el resto de la pila de software.
Android escogió el kernel de Linux como soporte básico de su sistema, por varias
razones importantes:
Es de código abierto.
Dalvik
Dalvik es la máquina virtual que utiliza la plataforma para dispositivos móviles An-
droid. Dalvik ha sido diseñada por Dan Bornstein con contribuciones de otros ingenieros
de Google (Fig.3.4).
Dalvik está optimizada para requerir poca memoria y está diseñada para permitir
ejecutar varias instancias de la máquina virtual simultáneamente, delegando en el sistema
operativo subyacente el soporte de aislamiento de procesos, gestión de memoria e hilos.
Librerı́as Nativas
Bionic Libc.
Bibliotecas de Funciones.
Servicios Nativos.
Bionic Libc
Manejo de caracteres.
Búsqueda y clasificación.
Matemáticas.
Funciones aritméticas.
Fecha y hora.
Al tener claro las funcionalidades de Libc, nos queda preguntarnos ¿Qué es Bionic?
Es la implementación de estas herramientas de Libc personalizadas y optimizadas para
su uso integrado (uso en sistemas embebidos).
Bibliotecas de funciones
WebKit.
Media Framework.
SQLite.
Servicios Nativos
Surface Manager
Audio Manager
Gestiona todas las salidas de audio del dispositivo.
Procesa múltiples flujos de audio a la salida por diversos caminos.
Maneja enrutamiento de audio para varias salidas.
Aplicación Framework
Gestor de actividades.
Gestor de paquetes.
Gestor de ventanas.
Gestor de recursos.
Proveedores de contenido.
Servicios de telefonı́a.
3.3. APLICACIONES ANDROID 37
Servicio de ubicación.
Servicio de Bluetooth.
Servicio Wifi.
Servicios de USB.
Una vez instalado en un dispositivo, cada aplicación Android vive en su propia segu-
ridad sandbox:
Cada proceso tiene su propia máquina virtual (VM), por lo que el código de una
aplicación se ejecuta de manera aislada de otras aplicaciones.
Por defecto, cada aplicación se ejecuta en su propio proceso de Linux. Android inicia
el proceso cuando alguno de los componentes de la aplicación necesita ser ejecutado,
y luego cierra el proceso cuando ya no se necesita o cuando el sistema debe recuperar
la memoria para otras aplicaciones.
Sin embargo, hay maneras para que una aplicación pueda compartir datos con otras
aplicaciones y de una aplicación se pueda acceder a los servicios del sistema:
sistema, las aplicaciones con el mismo ID de usuario también pueden hacer arreglos
para ejecutar en el mismo proceso de Linux y comparten la misma máquina virtual
(las solicitudes deben estar firmadas con el mismo certificado).
Una aplicación puede solicitar permiso para acceder a los datos del dispositivo,
tales como los contactos del usuario, los mensajes SMS, el almacenamiento externo
(tarjeta SD), cámara, Bluetooth, y mucho más. Todos los permisos de la aplicación
debe ser concedidos por el usuario durante la instalación.
Hay cuatro tipos de componentes diferentes en una aplicación. Cada tipo tiene un
propósito distinto y tiene un ciclo vital distinto que define cómo el componente se crea y
se destruye.
Activities (Actividades)
Un activity representa una pantalla única con una interfaz de usuario. Por ejemplo, en
una aplicación de correo electrónico, puede haber una activity que muestra una lista de
correos electrónicos nuevos, otra activity para enviar un correo electrónico, ası́ como otra
activity para la lectura de mensajes de correo electrónico. Aunque las activities trabajan
para formar una experiencia coherente en la aplicación de correo electrónico, cada una es
independiente de las otros. Como tal, una aplicación puede ingresar a cualquiera de estas
activities (si la aplicación de correo electrónico lo permite). Por ejemplo, una aplicación
de cámara puede adentrarse a la activity en la aplicación de correo electrónico que envı́a
nuevos mensajes de correo, para que el usuario pueda compartir una imagen (Fig.3.9).
40 CAPÍTULO 3. ANDROID
Services (Servicios)
Los content providers también son útiles para la lectura y escritura de datos que son
3.3. APLICACIONES ANDROID 41
privados en una aplicación y no se comparten. Por ejemplo, el Bloc de Notas, esta simple
aplicación utiliza un content provider para guardar notas (Fig.3.11).
turada. Las solicitudes también pueden iniciar las emisiones, por ejemplo, para permitir
que otras aplicaciones sepan que algunos datos han sido descargados en el dispositivo y
está disponible para que los utilicen. A pesar de que los receptores de radiodifusión no
se muestran como una interfaz de usuario, pueden crear una notificación en la barra de
estado para alertar al usuario cuando un evento de difusión se produce. Sin embargo, un
receptor de radiodifusión es más común como una ’puerta’ a otros componentes y tiene
la intención de hacer una mı́nima cantidad de trabajo (Fig.3.12).
Activación de componentes
Se debe de aclara un par de puntos sobre un sistema Android, los cuales nos llevarán
a la activación de componentes mediante los Itent.
Los intents (intenciones) es un mensaje asincrónico que se une a los componentes in-
dividuales entre sı́. Los intents son una descripción abstracta de una operación a realizar.
Se piensa en ellos como los mensajeros de la solicitud de una acción de otros compo-
nentes, si el componente pertenece a la aplicación o a otra. El Intent es crear un objeto,
que defina un mensaje para que se active un componente especı́fico. Las Activities, Ser-
vices y Broadcast Receivers son activados por medio de las Intents.
A continuación veremos esquemas que ilustran las diferentes formas en las que un
Intent trabaja.
3.4. DESARROLLANDO APLICACIONES ANDROID 43
Un Intent mandado por una Activity1 a otra Activity2, y esta segunda manda un
Intent a la Activity1 primaria como respuesta Fig.3.15.
Los IDE proveen un marco de trabajo amigable para la mayorı́a de los lenguajes de
programación tales como C++, Python, Java,C#, Delphi, Visual Basic, etc. En algunos
lenguajes, un IDE puede funcionar como un sistema en tiempo de ejecución, en donde
se permite utilizar el lenguaje de programación en forma interactiva, sin necesidad de
trabajo orientado a archivos de texto, como es el caso de Smalltalk u Objective-C.
Es posible que un mismo IDE pueda funcionar con varios lenguajes de programación.
Este es el caso de Eclipse, al que mediante plugins se le puede añadir soporte de lenguajes
adicionales.
Como acertadamente se mencionó, Eclipse es una IDE que tiene la capacidad de fun-
cionar con varios lenguajes de programación. Es por esto que este Entorno de Desarrollo
Integrado fundado por la empresa que lleva su nombre; Eclipse Foundation, es apropiada
para desarrollar aplicaciones Android bajo un entorno de Java, con la simpleza de des-
cargar e instalar el Plugin de Android ADT con lenguaje Java y el Android SDK para
3.4. DESARROLLANDO APLICACIONES ANDROID 45
APP Inventor
La forma de crear aplicaciones para Android con App Inventor es prácticamente fácil
con un navegador web. Y tan sencillo como crear un diseño y seleccionar las acciones a
realizar, tan dinámico como un puzzle (Fig.3.17).
Los pasos necesarios a considerar para comenzar a trabajar con App Inventor son:
46 CAPÍTULO 3. ANDROID
1. Configurar el Equipo.
Requisitos de Sistema.
Navegador.
Mozilla Firefox 3.6 o superior
Apple Safari 5.0 o superior
Google Chrome 4.0 o superior
Microsoft Internet Explorer 7 o superior
El equipo tiene que ejecutar Java 6 (también conocido como Java 1.6). Puede des-
cargar Java desde: www.java.com.
3. Una vez instalado todo los requerimientos del sistema para trabajar con App Inven-
tor solo necesitamos iniciar sesión en la cuenta de Google y escribir en el buscador:
http://appinventor.googlelabs.com, esta página te llevara al entorno de desarrollo
el cual se explicará a detalle más adelante.
48 CAPÍTULO 3. ANDROID
Para accesar a los links de cada descarga para las librerias de APP Inventor, puede
conultar la pagina oficial de Google, que es: http://www.appinventorbeta.com/about/,
ahı́ podra encontrar los links de descarga ası́ como una explicacion mas detallada en caso
de que se desee instalar en MacOS o en LINUX (Fig.3.18).
Ventajas:
3.5. ESTRUCTURA BÁSICA DE APP INVENTOR 49
Se hace la relación entre códigos mediante una conexión gráfica tipo Puzzle (literal-
mente).
Permite ver en tiempo real las modificaciones que se hacen en el entorno con tu
celular conectado.
Las aplicaciones que se realizar se alojan en la Web, por lo se puede tener acceso a
ellos desde cualquier equipo con internet.
Desventajas:
Las herramientas que tiene son limitadas a comparación del Entorno de Eclipse.
Anteriormente quizá su mayor desventaja era que no se podı́a utilizar App Inventor
a menos que se recibiera una invitación a su correo de Google.
Para poder subir las aplicaciones al Market se requiere de otro software para hacer
compatible la aplicación con los requerimientos de Android Market, sin en cambio
Eclipse no requiere de este software extra.
50 CAPÍTULO 3. ANDROID
La estructura básica de APP Inventor está conformada por 4 partes, las cuales son
fundamentales para el funcionamiento correcto de esta aplicación (Fig. 3.19).
Para poder llevar acabo la creación del primer proyecto, damos clic en el botón de
New y a continuación le asignamos un nombre. Automáticamente después de presionar
ok nos mostrara la Ventana de Diseño (Fig. 3.21).
La Ventana de Diseño está conformada por cinco partes escenciales:
Paleta de Componentes
Componentes de la aplicación
Barra de Herramientas
Paleta de componentes
Esta paleta nos muestra los componentes de acuerdo a una clasificación especı́fica,
estos componentes pueden ser de dos tipos haciendo referencia a la forma de visualizarlos,
si los componentes se pueden observar en la aplicación final, se denotaran como visuales;
si son componentes que ejecutan tareas pero no se ven en la aplicación final, se denotaran
en la redacción como no visuales:
8. Otros Componentes (todos estos componentes al igual que los anteriores son: no
visibles)(Fig. 3.30).
Web: Permite colocar el componente para manipular todos los servicios de web
en la aplicación que estamos desarrollando.
FusiontableControl
GameClient
SoundRecorder
Voting
WebViewer
Para obtener una descripción más detallada de cada componente en la misma paleta,
cada componente está acompañado de un signo de interrogación en el cual podrá dar clic
para desplegar una ventana de información correspondiente al mismo (Fig. 3.32).
Viewer
Esta sección de la ventana de diseño será la que nos permitirá visualizar el diseño de
nuestra aplicación al momento de estarla desarrollando, es en esta parte donde se jalan
los componentes con los que desea trabajar.
Ya que esta área de trabajo nos muestra una pantalla que emula un dispositivo móvil,
podremos ver la apariencia que tendrá al momento de estar ejecutándose en el dispositivo.
En esta sección, seremos capaces de ver los componentes no visibles en la parte inferior
y fuera de la pantalla emulada del dispositivo (Fig. 3.33).
Components
Esta sección dentro de la ventada de diseño, nos permite ver los componentes que
hemos elegido para desarrollar la aplicación en forma de árbol; en esta parte se incluyen
los componentes no visibles en la misma jerarquı́a que los visibles.
3.5. ESTRUCTURA BÁSICA DE APP INVENTOR 61
Los componentes que van dentro de un Canvas o una Caja de orden, ya sea vertical,
horizontal o de tabla se muestran en otra jerarquı́a (Fig. 3.34).
Esta sección nos permite cambiar el nombre que por defecto proporciona App Inventor
a cada componente, para facilitar la identificación a la hora de trabajar en el editor de
bloques; de igual forma nos permite borrar un componente que ya no nos sea útil y por
último en la parte inferior tenemos la posibilidad de cargar las imágenes que deseamos
ocupar dentro de nuestra aplicación (el nombre de la imagen no debe de tener caracteres
especiales para ser reconocida).
Properties
Estas propiedades son diferentes dependiendo del componente seleccionado, para men-
62 CAPÍTULO 3. ANDROID
cionar algunas de ellas haremos referencia a las propiedades que salen por defecto al cargar
nuestra área de trabajo que corresponden al Screen o pantalla principal, estas propiedades
son:
BackgroundImage: Nos permite colocar una imagen de fondo que previamente ha-
yamos cargado en la sección de componentes.
Icon: Permite cambiar el icono de la aplicación que se genera por default; cargándolo
previamente en la sección de componentes.
Scrollable: Coloca una barra deslizadora en caso de que nuestra aplicación se mas
grande que la pantalla de nuestro dispositivo.
3.5. ESTRUCTURA BÁSICA DE APP INVENTOR 63
Barra de Herramientas
Esta sección es la que se localiza en la parte superior y nos permite estar navegando
por nuestros proyectos (aplicaciones) que tengamos y poder editarlas, nos da la opción de
guardar la aplicación que se encuentre actualmente en el área de trabajo, guardar con otro
nombre la misma aplicación usando el botón:“Guardar Como ” ; nos permite establecer
un punto de recuperación con el Checkpoint,abrir el Editor de Bloques y por último, da
la opción de descargar nuestras aplicaciones ya sea en el teléfono, en la PC o generar el
BarCode para el link de descarga de nuestra aplicación (Fig. 3.36).
Hay que tomar en cuenta que para poder trabajar en este editor, previamente se
debió de agregar componentes en la Ventana de Diseño, ya que es donde se reúnen los
bloques de programa que especifican cómo deben comportarse los componentes. Estas
acciones y configuraciones se programan montando y ensamblando bloques de código
semejantes a un rompecabezas (Fig. 3.38).
Sección de Bloques
3.5. ESTRUCTURA BÁSICA DE APP INVENTOR 65
Área de trabajo
Barra de herramientas
Sección de bloques
Build In: Contienen bloques de código que ya están definidos por el Editor de Blo-
ques, nos ayudan a realizar operaciones lógicas, condiciones, definir variables, reali-
zar programación de control, editar textos y cambiar colores entre otras funciones
(Fig. 3.40).
66 CAPÍTULO 3. ANDROID
Avanzado: Son bloques de código más especializados sobre los componentes que
definimos anteriormente en la Ventada de Diseño (Fig. 3.41).
Área de trabajo
Este es evidentemente el espacio que tenemos en blanco para poder arrastrar los blo-
ques de programación y empezar a armar la lógica de nuestro programa, en esta área
de trabajo se encuentra un “bote de basura” , en donde podemos arrastrar las piezas de
código que ya no nos sirvan (Fig. 3.42).
En el área de trabajo, podemos dar clic en un espacio limpio de bloques, para con-
vocar a las funciones correspondientes a Built In de forma directa. Esta área de trabajo
cuenta con un zoom gráfico en la parte superior derecha con la que podemos explorar
todos nuestros bloques de código que hemos armado en el área de trabajo.
Esta área de trabajo puede expandirse de acuerdo con las necesidades del programador,
si requiere más espacio para programar, automáticamente se lo proporciona esta área.
Barra de Herramientas
Las herramientas con las que cuenta son: salvar o guardar la programación de bloques
hecha, ir a un estado anterior, ir a un estado posterior, cargar un emulador para correr la
aplicación, conectarse a un dispositivo y un zoom de barra deslizable (Fig. 3.43).
68 CAPÍTULO 3. ANDROID
Si descargas desde otros sitios y desde tu computadora puedes guardar el archivo apk
y después pasarlo al dispositivo móvil a través del cable USB a la tarjeta de memoria del
dispositivo, una vez almacenada, buscas la aplicación con algún explorador y procedes a
instalarla (para poder instalar aplicaciones que no son de market recuerda dar el permiso
antes mencionado).
Requisitos
Tener una cuenta google por ejemplo la de gmail y tenerla asociada a google chec-
kout.
Importante
1. Al exportar te pedirá crear o usar una keystore existente, si no tienes ninguna creada
introduce un nombre y contraseña.
2. Luego tienes que crear una key única para cada app, aquı́ no utilices el mismo login
de la keystore.
Pasos para poder transformar nuestros .apk para poder subirlos al android market.
AppToMarket v2.3
2. Descomprimes el archivo.
Este proyecto implica desarrollar una aplicación compatible con el Sistema Operativo
Android para dispositivos móviles que sea capaz de comunicarse a distancia mediante
Bluetooth a un receptor que procesa la información recibida y a su vez ordena a un con-
junto de dimmers que ejecuten tareas especı́ficas e independientes para la regulación de
las lámparas.
73
74 CAPÍTULO 4. APLICACIÓN ATOM Y PROTOTIPO
La presente etapa tiene como propósito mostrar la regulación de potencia eléctrica uti-
lizando el PIC16F648A (Fig.4.1) y agregando como hardware adicional un optoacoplador
que aı́sla a éste del circuito de potencia constituido por un Triac. La técnica se basa en
que la potencia de salida puede variarse regulando la fase de conducción del Triac tanto
en el semiciclo positivo como en el semiciclo negativo de la onda sinosoidal.
Teorı́a de Operación
Hardware
Una vez propuesto el circuito. Con ayuda de un software para el diseño de placas PCB
(PCB Wizard), se realizó el diagrama correspondiente (Fig. 4.3).
La idea y la estructura básica del código se retomó de una propuesta de Scott Fink
Microchip 1997(ver Apéndice:PICREF-4), y fue adaptada para operar en el microcontro-
lador PIC16F648A, en este código se establece:
USB y tiene una frecuencia de trabajo máxima de 48MHz, complementada con un cristal
de 20MHz.
Una vez propuesto el circuito de hardware minimo. Con ayuda de un software para el
78 CAPÍTULO 4. APLICACIÓN ATOM Y PROTOTIPO
diseño de placas PCB (PCB Wizard), se realizá el diagrama correspondiente. Para esta
parte del proyecto se agregó al circuito una fuente de 5 VCD con la que se alimenta tanto
al microcontrolador como al módulo de Bluetooth (Fig. 4.6).
La idea y la estructura básica del código es un diseño propio, por lo que se hizo
especialmente para el microcontrolador PIC18F4550, en este código se establece:
Network y adaptado por Sparkfun, este módulo tiene la capacidad de transmitir y recibir
datos vı́a Bluetooth de forma serial (Fig. 4.7).
Ya que este módulo esta especialmente hecho para trabajar con microcontroladores
mediante una conexión serial, su trabajo será acoplado con el PIC18F4550, para que
mande al microcontrolador los datos que reciba a través del Bluetooth.
el receptor (Rx) del módulo, y a su vez es capaz de mandar por el transmisor (Tx)(Fig.
4.10).
Una vez iniciada la HyperTerminal, vendrán las ventanas de configuración (Fig. 4.11)
para establecer la comunicación serial. Para configurar estas ventanas, anteriormente se
emparejó el módulo de Bluetooth BlueSMiRF con nuestro equipo de cómputo, y este
último ya creó un puerto COM virtual para el módulo (la forma de establecer este puerto
COM, es mediante la disponibilidad de tu equipo y el software que se tenga para detectar
dispositivos Bluetooth), con obviedad recalco que para este proceso el módulo de BT
(Bluetooth) debe de estar alimentado y conectado como se especificó anteriormente.
En las ventanas de configuración se colocan los siguientes datos para poder continuar
y establecer la conexión:
Descripción de la Conexión
Conectarte a:
1. Bits por segundo: Escoge los bps con los que quieres que trabaje la conexión,
preferente la primera vez escoger 9600 bps.
2. Bits de datos: Seleccione los bits de datos que estará mandando, colocar pre-
ferentemente 8.
4.3. ESTABLECIENDO COMUNICACIÓN BLUETOOTH 83
3. Paridad: Establece si quiere una comunicación serial con paridad o sin paridad,
preferentemente la primera vez: None.
4. Bit de paro: Configura el bit de paro para la trama de caracteres a enviar,
preferentemente por primera vez: 1.
5. Control de flujo: Determina si desea que el control lo realice el hardware, para
la primera vez: Ninguno.
Una vez configurada la Hyperterminal nos mostrará la ventana principal donde po-
dremos hacer las pruebas pertinentes, como se especifica en el Capitulo 2 puede entrar a
modo comando con “$$$” y salir de modo comando con “—” ; dentro de modo coman-
do, para hacer las configuraciones necesarias; puede teclear: ’h’ y desplegara todos los
comandos soportados por el módulo de BT (Fig. 4.12). Enfocándonos a los comandos que
nos conciernen tecleamos el comando: ’d’ y nos desplegara las funciones principales del
84 CAPÍTULO 4. APLICACIÓN ATOM Y PROTOTIPO
módulo de BT, donde cambiaremos la velocidad de bits por segundo a 9600 bps con el
comando: ’su, 96’ (véase Apéndice).
La aplicación debe de ser capaz de comunicarse vı́a Bluetooth con el circuito receptor
de forma que permita enviar datos de acuerdo a las órdenes que el usuario del dispositivo
móvil establezca.
Ésta aplicación tendrá una interfaz gráfica que permitirá al usuario escoger con quién
se establecerá la conexión dentro de una lista de dispositivos Bluetooth, su estructura
básica estará compuesta de 3 funciones de mando;dentro de éstas funciones se encuentra
MÍN-MÁX,será posible variar el nivel de flujo luminoso a un mı́nimo o máximo, ya sea
para hasta 14 lámparas de forma independiente o simultánea; la siguiente función es la
DIMMER que como su nombre lo indica, permite la atenuación de hasta 14 lámparas
de forma independiente o simultánea; por último se encuentra la función de ACELERO-
METRO, con ésta función es posible llevar acabo la atenuación de 14 lámparas de forma
simultánea haciendo uso de las propiedades que ofrece éste sensor (Fig.4.13).
Una vez finalizado el diseño y desarrollo de nuestra aplicación se procede a realizar las
pruebas necesarias para comprobar que su funcionamiento sea el adecuado; para ello es
necesario descargar e instalar la aplicación a nuestro celular, a continuación se lleva acabo
la configuración de la herramienta HyperTerminal como hemos visto anteriormente; de
forma que se pueda comprobar que exista una comunicación vı́a Bluetooth y a su vez,
ésta mande los datos establecidos en nuestra aplicación (Fig.4.16).
Una vez propuesto el circuito de hardware para el sistema completo. Con ayuda de un
software para el diseño de diagramas eléctricos (Livewire), se realizá el diagrama corres-
pondiente al hardware conjunto(Fig. 4.18).
Una vez propuesto el circuito de hardware para el sistema completo. Con ayuda de un
software para el diseño de placas PCB (PCB Wizard), se realizá el diagrama correspon-
diente(Fig. 4.19).
90 CAPÍTULO 4. APLICACIÓN ATOM Y PROTOTIPO
• Lámpara Incandescente.
91
92 PRUEBAS Y RESULTADOS
Distancias con las cuales se realizaron pruebas de conexión y verificación de los datos
enviados vı́a Bluetooth, para ello se consideraron las siguientes caracterı́sticas de la zona
de prueba (Tabla.4.20) :
Campo abierto.
Sin viento.
Nota: El circuito propuesto para el sistema completo el cual está formado por la parte
receptora y cuatro dimmers con salidas a tres lámparas (la suma de las tres lámparas
menores a 150 Watts) cada uno; en las pruebas su funcionamiento fue de 50 %, debido a
que la etapa de recepción de datos funciona correctamente; la falla está en la etapa de
potencia de los dimmers debido a un error en el diseño de la placa.
94 PRUEBAS Y RESULTADOS
Conclusiones y Recomendaciones
para Trabajos Futuros
4.6. Conclusiones
En cuanto a la recopilación de los datos podemos concluir de acuerdo con los objetivos
especı́ficos que fue posible cumplir con el diseño, la programación y la implementación
tanto de un receptor Bluetooth, un circuito Dimmer con un microcontrolador, en la pro-
puesta y el desarrollo de la aplicación en App Inventor para ser usado en dispositivos
móviles con Sistema Operativo Android, como mando a distancia. La comunicación Blue-
tooth mediante el módulo de Roving Network y el dispositivo móvil fue un éxito.
Referente a contribuir a una opción más para el ahorro de energı́a; como dice la teorı́a
recabada en está investigación; es muy difı́cil medir cuantitativamente con precisión cuan-
to es el ahorro al utilizar una técnica y otro; de la misma forma al utilizar dispositivos
como lo son los dimmer, ya que aunque se considere un método para ahorro de energı́a
no existe una norma de lineamientos aun establecida que pueda regir y estandarizar estos
dispositivos. Pero se puede asegurar que el uso de lámparas ahorradoras mas el uso de
dispositivos que regulan la tensión nos ofrece un ahorro considerable y significativo, por
lo que concluimos que si existe un ahorro de cierta magnitud significativa.
95
96 CONCLUSIONES
concluir que los aspecto de ahorro de energı́a, comodidad e innovación son validas al
termino de esta investigación, con lo que respecta al último aspecto de innovación se
recalca que la tecnologı́a de Android es prácticamente joven de no más de 4 años de edad,
por lo que se asienta que definitivamente es innovador el empleo de estas tecnologı́as en
los sistemas de iluminación eficiente.
Realizar a parte de una conexión vı́a Bluetooth, realizar una conexión USB para
utilizar una PC como centro de mando.
Transmitir del Sistema receptor al transmisor los estados de cada Dimmer que se
están controlando ası́ como los porcentajes de iluminación que se están llevando a
cabo.
Realizar dimmers que controlen la frecuencia, para trabajar con lámparas de led
directamente, sin necesidad de ser E27 ni adaptadas para poder ser reguladas con
la tensión de AC común en casa.
Utilizar comando de voz para realizar las operaciones de intensidad lumı́nica médiate
la herramienta bastante nueva de identificador por voz, que Android desarrollo y
que actualmente está en español.
Referencias
Microchip, Application Note: PICDIM Lamp Dimmer for the PIC12C508, Micro-
chip Technology Inc, 1997.
Badgery, J., 1989. “ Lighting controls systems practical experiences” . 35th IE-
SANZ National Convention, Auckland.
BRE, 1983. Lighting Controls and Daylight Use. BRE Digest No. 272, Building
Research Establishment,Department of Environment, United Kingdon.
Crisp, V., 1982. Lighting Controls to Save Energy PD 33/82, BRE (Building Re-
search Establishment), Dept. of Environment, Reino Unido.
97
98 CONCLUSIONES
99
100 APÉNDICE
110 PRUEBAS Y RESULTADOS
Editor de Bloques
Editor de Bloques
Editor de Bloques
94 PRUEBAS Y RESULTADOS
Código Dimmer Modificado
#pragma bit Brtbut @ PORTB.0
#pragma bit Dimbut @ PORTB.1
#pragma bit LineInput @ PORTA.0
#pragma bit Salida @ PORTA.4
void Buttoncheck(void); //verificar los pulsadores
void Primer(void);
unsigned int PercentOn, Maxdim; //variables globales
unsigned int TestCheck, Outcount, TestCount;
unsigned int DelayCnt;
unsigned int LastBoth, FirstPass;
unsigned int Count;
unsigned int Maxbrt, NotInTest;
void main()
{
TRISB = 0x03;
CMCON = 7;
Maxbrt = 0xf0; //brillo máximo
NotInTest = 3;
PercentOn = 0xd0; //periodo encendido
Maxdim = 0x70; //valor máximo Dim
TestCheck = 0;
Outcount = 0; //contador salida del modo test
TestCount = 0; //contador modo test
DelayCnt = NotInTest; //contador retardo
LastBoth = 0; //bandera ambos pulsadores presionados la ultima vez
FirstPass = 1;
Count = 0; //contador general
for(Count = 0; Count < 60; Count++) //estabilización tensión
{
while(LineInput == 1);
while(LineInput == 0);
clrwdt();
}
W = 0x5; //1:64 prescale, Pull-up activo
OPTION = W;
W = 0x11; //RA0, RA4 Entradas
TRISA = W;
PORTA = 0x10; //RA4 Latch high
W = 0x3; //RB0, RB1 Entradas
TRISB = W;
while(LineInput == 1) //Sincronización fase linea
clrwdt();
TMR0 = PercentOn;
while(TMR0 >= 3 && LineInput == 0) //retardo entrada punto apropiado
clrwdt();
while(1)
{
Count = 0;
while(Count < DelayCnt) //Verifica pulsadores
{ //cada DelayCnt cruce por cero
Count += 1;
if(LineInput == 1) //si línea AC esta en semiciclo
{ //positivo. incrementa Maxdin y
Maxdim +=15; //resincroniza con la línea
while(LineInput == 1);
while(LineInput == 0)
clrwdt();
}
else
{
while(LineInput == 0) //Espera el cruce por cero
clrwdt();
Maxdim = PercentOn - TMR0 + 2;
}
if(FirstPass == 1) //Si es el primer pase Full Dim
{
FirstPass = 0;
PercentOn = Maxdim;
}
if(PercentOn < Maxdim)
PercentOn = Maxdim;
TMR0 = PercentOn;
while(TMR0 >= 3 && LineInput == 1)
clrwdt();
PORTA = 0x00; //RA4 Lach Alto
W = 0x01; //RA0 entrada, RA4 Salida
TRISA = W; //Dispara triac
#asm
nop //Retardo disparo del triac
nop
nop
nop
nop
nop
nop
#endasm
W = 0x11; //RA4, entrada
TRISA = W; //Fin señal disparo triac
clrwdt();
if(LineInput == 0) //línea AC en semiciclo negativo?
{
Maxdim +=15; //si es asi incrementa Maxdim
while(LineInput == 0); //y resincroniza con la línea
while(LineInput == 1)
clrwdt();
}
else
{
while(LineInput == 1) //espera cruce por cero
clrwdt();
Maxdim = PercentOn - TMR0 + 2; //compensa full Dim
}
if(PercentOn < Maxdim) //corrija brillo
PercentOn = Maxdim;
TMR0 = PercentOn; //Retardo
while(TMR0 >= 3 && LineInput == 0)
clrwdt();
PORTA = 0x00;
W = 0x01;
TRISA = W; //dispare triac
#asm
nop
nop //retardo señal disparo
nop
nop
nop
nop
nop
#endasm
W = 0x11;
TRISA = W; //Fin señal disparo
clrwdt();
}
Buttoncheck(); //verifica pulsadores
}
}
void Buttoncheck()
{
if(!Dimbut && !Brtbut) //si ambos estan presionados
{
if(LastBoth == 0)
{
LastBoth = 1;//if(PercentOn == Maxdim)
PercentOn = Maxbrt;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
else
{
LastBoth = 0;
PercentOn = Maxdim;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
PercentOn--;
}
}
else
LastBoth = 0;
if(!Brtbut && Dimbut) //incrementa brillo
PercentOn++;
if(Brtbut && !Dimbut) //disminuye brillo
PercentOn--;
}
PRUEBAS Y RESULTADOS
Código de Receptor
#include <p18f4550.h>
#include <usart.h>
#include <delays.h>
#pragma config PLLDIV = 5 // (20 MHz crystal on PICDEM FS USB
board)
#pragma config CPUDIV = OSC1_PLL2
#pragma config USBDIV = 2 // Clock source from 96MHz PLL/2
#pragma config FOSC = HSPLL_HS
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRT = OFF
#pragma config BOR = ON
#pragma config BORV = 3
#pragma config VREGEN = ON //USB Voltage Regulator
#pragma config WDT = OFF
#pragma config WDTPS = 32768
#pragma config MCLRE = OFF //ON
#pragma config LPT1OSC = OFF
#pragma config PBADEN = OFF
#pragma config STVREN = ON
#pragma config LVP = OFF
#pragma config XINST = OFF // Extended Instruction Set
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CPB = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = OFF // Boot Block Write Protection
#pragma config WRTC = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTRB = OFF
void main(void)
{
char sh;
char ch;
OpenUSART(USART_TX_INT_OFF &
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_LOW,77);
TRISA=0X00;
TRISB=0X00;
TRISC=0XF8;
TRISD=0X00;
TRISE=0XF8;
PORTA=0XFF;
PORTB=0XFF;
PORTC=0X07;
PORTD=0XFF;
PORTE=0X07;
while(1)
{
if(DataRdyUSART())
{
ch = ReadUSART();
if(ch=='A')
{
LATBbits.LATB7 = 0;
LATBbits.LATB6 = 0;
Delay10KTCYx(100);
LATBbits.LATB7 = 1;
LATBbits.LATB6 = 1;
}
else if(ch=='B')
{
LATBbits.LATB5 = 0;
LATBbits.LATB4 = 0;
Delay10KTCYx(100);
LATBbits.LATB5 = 1;
LATBbits.LATB4 = 1;
}
else if(ch=='C')
{
LATBbits.LATB3 = 0;
LATBbits.LATB2 = 0;
Delay10KTCYx(100);
LATBbits.LATB3 = 1;
LATBbits.LATB2 = 1;
}
.
.
.
.
else if(ch=='f')
{
LATBbits.LATB2 = 0;
Delay10KTCYx(500);
LATBbits.LATB2 = 1;
}
else if(ch=='g')
{
LATBbits.LATB1 = 0;
Delay10KTCYx(500);
LATBbits.LATB1 = 1;
}
else if(ch=='h')
{
LATBbits.LATB0 = 0;
Delay10KTCYx(500);
LATBbits.LATB0 = 1;
}
else if(ch=='i')
{
LATDbits.LATD7 = 0;
Delay10KTCYx(500);
LATDbits.LATD7 = 1;
}
else if(ch=='j')
{
LATDbits.LATD6 = 0;
Delay10KTCYx(500);
LATDbits.LATD6 = 1;
}
else if(ch=='-')
{
LATBbits.LATB7 = 0;
Delay10KTCYx(50);
LATBbits.LATB7 = 1;
}
else if(ch=='+')
{
LATBbits.LATB6 = 0;
Delay10KTCYx(50);
LATBbits.LATB6 = 1;
}
}
}
}
PRUEBAS Y RESULTADOS
PRUEBAS Y RESULTADOS
RN-41
www.rovingnetworks.com DS-RN41-V3.1 8/4/2009
Features
• Fully qualified Bluetooth 2.1/2.0/1.2/1.1
module
• Bluetooth v2.0+EDR support
• Postage stamp sized form factor, 13.4mm x Applications
25.8 mm x2mm • Cable replacement
• Low power (30mA connected,, <10mA sniff
• Barcode scanners
mode)
• Measurement and monitoring systems
• UART (SPP or HCI) and USB (HCI only)
data connection interfaces. • Industrial sensors and controls
• Sustained SPP data rates - 240Kbps (slave), • Medical devices
300Kbps (master) • Asset tacking
• HCI data rates - 1.5Mbps sustained, 3.0Mbps
burst in HCI mode
Description
• 8MB on board flash, HCI mode, or SPP/DUN
software stacks available. The RN41 is a small form factor, low power, highly
economic Bluetooth radio for OEM’s adding wireless
• Embedded Bluetooth stack profiles included capability to their products. The RN41 supports
(requires no host stack): GAP, SDP, multiple interface protocols, is simple to design in and
RFCOMM and L2CAP protocols, with SPP fully certified, making it a complete embedded
and DUN profile support. Bluetooth solution. With its high performance on chip
• Bluetooth SIG Qualified, End Product Listing antenna and support for Bluetooth® Enhanced Data
• Castellated SMT pads for easy and reliable Rate (EDR), the RN41 delivers up to 3 Mbps data
PCB mounting rate for distances to 100M. Designers can easily
customize their application using up to 8Mbits of flash
• Class 1 high power amplifier with on board memory. The RN41 is the perfect product for
ceramic RF chip antenna. engineers wanting to add wireless capability to their
o Certifications: FCC, ICS, CE product but don’t want to spend significant time and
o Environmentally friendly, RoHS money developing Bluetooth specific hardware and
compliant software.
Block Diagram
Crystal
VCC
GND
PIO4
RF CSR BlueCore-04 PIO5
PIO6
Switch External
PA BALUN USB
UART
PCM
Flash
Memory
809 University Avenue • Los Gatos, CA 95032 • Tel (408) 395-6539 • [email protected]
DS-RN41-V3.1 8/4/2009
Overview
• Baud rate speeds: 1200bps up to 921Kbps, non-standard baud rates can be programmed.
• Class 1 radio, 330’ (100m) distance, 12dBm output transmitter, -80dBm typical receive sensitivity
• Frequency 2402 ~ 2480MHz,
• FHSS/GFSK modulation, 79 channels at 1MHz intervals
• Secure communications, 128 bit encryption
• Error correction for guaranteed packet delivery
• UART local and over-the-air RF configuration
• Auto-discovery/pairing requires no software configuration (instant cable replacement).
• Auto-connect master, IO pin (DTR) and character based trigger modes
Environmental Conditions
Parameter Value
o o
Temperature Range (Operating) -40 C ~ 85 C
o o
Temperature Range (Storage) -40 C ~ 85 C
Relative Humidity (Operating) ≤90%
Relative Humidity (Storage) ≤90%
Electrical Characteristics
Radio Characteristics
Freq. Bluetooth
Parameter Min Typ Max Units
(GHz) Specification
2.402 - -80 -86 dBm
Sensitivity @ 0.1%BER 2.441 - -80 -86 ≤ -70 dBm
2.480 - -80 -86 dBm
2.402 15.0 16.0 dBm
RF Transmit Power 2.441 15.0 16.0 ≤ 15 dBm
2.480 15.0 16.0 dBm
2.402 - 5 75 kHz
Initial Carrier Frequency
2.441 - 5 75 75 kHz
Tolerance
2.480 - 5 75 kHz
20dB bandwidth for modulated
- 900 1000 ≤ 1000 kHz
carrier
Drift (Five slots packet) - 15 - 40 kHz
Drift Rate - 13 - 20 kHz
2.402 140 165 175 kHz
∆f1avg Max Modulation 2.441 140 165 175 >140 kHz
2.480 140 165 175 kHz
2.402 140 190 - kHz
∆f2avg Min Modulation 2.441 140 190 - 115 kHz
2.480 140 190 - kHz
809 University Avenue • Los Gatos, CA 95032 • Tel (408) 395-6539 • [email protected]
DS-RN41-V3.1 8/4/2009
Pin Description
27 25
1 24
2 23
3 22
4
5
RN41 21
20
6 19
7 18
8 17
9 16
10 15
11 14
12 13
35 34 32 28
29 33 31 30
Top view
Pin Name Description Default
1 GND
2 SPI MOSI Programming only No Connect
3 PIO6 Set BT master (HIGH=auto-master mode) Input to RN41with weak pulldown
Set Baud rate (HIGH = force 9600, LOW = 115K or
4 PIO7 firmware setting) Input to RN41 with weak pulldown
5 RESET Active LOW reset Input to RN41 with 1K pullup
6 SPI_CLK Programming only No Connect
7 PCM_CLK PCM interface No Connect
8 PCM_SYNC PCM interface No Connect
9 PCM_IN PCM interface No Connect
10 PCM_OUT PCM interface No Connect
11 VDD 3.3V regulated power input
12 GND
13 UART_RX UART receive Input Input to RN41
14 UART_TX UART transmit output High level output from RN41
15 UART_RTS UART RTS, goes HIGH to disable host transmitter Low level output from RN41
16 UART_CTS UART CTS, if set HIGH, disables transmitter Low level input to RN41
17 USB_D+ USB port Pull up 1.5K when active
18 USB_D- USB port
19 PIO2 Status, HIGH when connected, LOW otherwise Output from RN41
20 PIO3 Auto discovery = HIGH Input to RN41 with weak pulldown
21 PIO5 Status, toggles based on state, LOW on connect Output from RN41
22 PIO4 Set factory defaults Input to RN41 with weak pulldown
23 SPI_CSB Programming only No Connect
24 SPI_MISO Programming only No Connect
25 GND
26 NC RF pad keep all traces and planes clear.
27-29 GND
30 AIO0 Optional analog input Not Used
31 PIO8 Status (RF data rx/tx) Output from RN41
32 PIO9 IO Input to RN41 with weak pulldown
33 PIO10 IO (remote DTR signal) Input to RN41 with weak pulldown
34 PIO11 IO (remote RTS signal ) Input to RN41 with weak pulldown
35 AIO1 Optional analog input Not Used
809 University Avenue • Los Gatos, CA 95032 • Tel (408) 395-6539 • [email protected]
DS-RN41-V3.1 8/4/2009
809 University Avenue • Los Gatos, CA 95032 • Tel (408) 395-6539 • [email protected]
DS-RN41-V3.1 8/4/2009
Module Dimensions
13.4 mm
3.2 mm
2.0 mm
5.8 mm
3.3 mm
27 25
1 24
2 23
3
4
RN41 22
21
RN41 25.8 mm
5 20 15.4 mm RN41
6 19
13.2 mm
7 18
8 1.2 mm 17
9 16
10 15 Antenna
11 14
12 13
2.8 mm 35 29 34 33 32 31 28 30
RF Shield
2.5 mm
3.5 mm
2.0 mm
4.8 mm
25.8 mm
6.0 mm
7.2 mm
8.4 mm
9.7 mm
10.7 mm
13.2 mm
809 University Avenue • Los Gatos, CA 95032 • Tel (408) 395-6539 • [email protected]
DS-RN41-V3.1 8/4/2009
Design Concerns
1. Reset circuit. RN-41 contains a 1k pullup to VCC, the polarity of reset on the RN41 is ACTIVE LOW.
A power on reset circuit with delay is OPTIONAL on the reset pin of the module. It should only be required
if the input power supply has a very slow ramp, or tends to bounce or have instability on power up. Often
a microcontroller or embedded CPU IO is available to generate reset once power is stable. If not, there
are many low cost power supervisor chips available, such as MCP809, MCP102/121, and Torex XC61F.
2. Factory reset PIO4. It is a good idea to connect this pin to a switch, or jumper, or resistor, so it can be
accessed. This pin can be used to reset the module to FACTORY DEFAULTS and is often critical in
situations where the module has been mis-configured. To set Factory defaults start HIGH, then toggle
times.
3. Connection status. PIO5 is available to drive an LED, and blinks at various speeds to indicate status.
PIO2 is an output which directly reflects the connection state, it goes HIGH when connected, and LOW
otherwise.
4. HCI mode. The RN41 module must be loaded with special firmware to run in HCI mode. When in HCI
mode the standard SPP/DUN applications are disabled.
5. Using SPI bus for flash upgrade. While not required, this bus is very useful for configuring advanced
parameters of the Bluetooth modules, and is required for upgrading the firmware on modules. The
suggested ref-design shows a 6pin header which can be implemented to gain access to this bus. A
minimum-mode version could just use the SPI signals (4pins) and pickup ground and VCC from elsewhere
on the design.
809 University Avenue • Los Gatos, CA 95032 • Tel (408) 395-6539 • [email protected]
DS-RN41-V3.1 8/4/2009
Compliance Information
Ordering Information
Part Number Description
RN-41 Standard Application firmware (SPP/DUN Master and Slave)
RN-41-H HCI firmware (HCI over H4 UART)
RN-41-U USB firmware (HCI over USB port, slave device at 12Mbps rate)
For other configurations, contact Roving Networks directly.
The Bluetooth trademark and logo are registered trademarks and are owned by the Bluetooth SIG, Inc. All
other trademarks are property of their respective owners.
Roving Networks reserves the right to make corrections, modifications, and other changes to its products,
documentation and services at any time. Customers should obtain the latest relevant information before
placing orders and should verify that such information is current and complete.
Roving Networks assumes no liability for applications assistance or customer product design. Customers are
responsible for their products and applications using Roving Networks components. To minimize the risks
associated with customer products and applications, customers should provide adequate design and operating
safeguards.
Roving Networks products are not authorized for use in safety-critical applications (such as life support) where
a failure of the Roving Networks product would reasonably be expected to cause severe personal injury or
death, unless officers of the parties have executed an agreement specifically governing such use.
809 University Avenue • Los Gatos, CA 95032 • Tel (408) 395-6539 • [email protected]