Osciloscopio y generador de ondas con un sistema...

100
Universidad Distrital Francisco Jos´ e de Caldas Ingenier´ ıa Electr´ onica Osciloscopio y generador de ondas con un sistema embebido, integrado con dispositivos Android. Monograf´ ıa presentada por Jos´ e Domingo Suarez Giraldo Jhon Alejandro Pe˜ na Tellez para obtener el grado de Ingeniero Electr´ onico 2017 Facultad de Ingenier´ ıa

Transcript of Osciloscopio y generador de ondas con un sistema...

  • Universidad Distrital Francisco Jose de Caldas

    Ingeniera Electronica

    Osciloscopio y generador de ondascon un sistema embebido, integrado

    con dispositivos Android.

    Monografa presentada porJose Domingo Suarez GiraldoJhon Alejandro Pena Tellez

    para obtener el grado de Ingeniero Electronico

    2017

    Facultad de Ingeniera

  • Indice general

    1. Planteamiento del problema 5

    2. Justificacion 7

    3. Objetivos 8Objetivos Generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Objetivos especficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    4. Marco Teorico 9Sistema Operativo Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    Cualidades de Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Arquitectura de Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    Desarrollo de aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Canvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    Comunicaciones Inalambricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Tecnologas que permiten la comunicacion inalambrica. . . . . . . . . . . . . 12

    Conversor Digital a analogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Caractersticas basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Especificaciones de un DAC . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    Conversor Analogico a Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151. Cuantizacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Teorema de muestreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Analizador Logico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Desarrollo de aplicacion web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23CSS 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Convertidor DC - DC (Bost) . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    Nube (Cloud) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Que es la nube? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Tipos de Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Beneficios de la Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    2

  • Indice general 3

    Estado del arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Sistema de Tiempo Real Embebido en un Microcontrolador de Alto Desem-

    peno para el Procesamiento de Audio . . . . . . . . . . . . . . . . . . 28Oscilocopio WiFi Velleman WFS210 . . . . . . . . . . . . . . . . . . . . . . 28Wireless Oscilloscope using Android App for Mobile . . . . . . . . . . . . . . 29Osciprime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    Microcontrolador TIVA C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Descripcion basica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Las caractersticas de Hardware. . . . . . . . . . . . . . . . . . . . . . . . . . 31Sistema de alimentacion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Software de programacion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    Modulo Bluetooth HC-05. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Especificaciones de Hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . 33Especificaciones de Conexion. . . . . . . . . . . . . . . . . . . . . . . . . . . 34Especificaciones de software. . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    5. Desarrollo 35Aplicacion web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Diseno de fuente de alimentacion . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Aplicacion Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    Actividad de Seleccion de dispositivo: DeviceListActivity . . . . . . . . . . . 43Actividad de seleccion de funcion: SelectActivity . . . . . . . . . . . . . . . . 45Clase para manejo de la comunicacion Bluetooth: BluetoothRfcommClient . 47Actividad para la visualizacion de senales: PlotActivity . . . . . . . . . . . . 51Clase para el trazado de los datos en pantalla: PlotView . . . . . . . . . . . 52Clase para la tarea de dibujado: PlotThread . . . . . . . . . . . . . . . . . . 55Actividad para la funcion de Osciloscopio: Oscilloscope . . . . . . . . . . . . 56Actividad para la funcion de Analizador Logico: Logic Analyzer . . . . . . . 61Clase para el trazado de las senales del Analizador Logico: PlotLogicAnalyzer 63Actividad para la configuracion de las senales a generar: Generator . . . . . 63

    Sistema de Medicion y Generacion de senales . . . . . . . . . . . . . . . . . . . . 68Diseno del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Funcionamiento del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Funcion Osciloscopio: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Funcion Analizador logico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79Generacion de Senales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Programa en dispositivo PSoC: . . . . . . . . . . . . . . . . . . . . . . . . . 81

    Acondicionamiento de senales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Acondicionamiento sobre senal que sera medida por el ADC . . . . . . . . . 87

    Acondicionamiento sobre senal que sera medida por los puertos del analizador logico 88Analizador logico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    Acondicionamiento sobre senal de salida del generador . . . . . . . . . . . . . . . 89Multiplicador de senales analogicas. . . . . . . . . . . . . . . . . . . . . . . . 89

  • Indice general 4

    MPY634 (Multiplicador analogico de precision). . . . . . . . . . . . . . . . . 89Descripcion de su funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . 90Implementacion del MPY634. . . . . . . . . . . . . . . . . . . . . . . . . . . 91

    6. Metodologa 93

    7. Conclusion 94

  • Captulo 1

    Planteamiento del problema

    La universidad Distrital Francisco Jose de Caldas [1], cuenta con instalaciones de labo-ratorio e instrumentos de medicion de excelente calidad para realizar pruebas tanto de altacomo de baja potencia. A pesar de su calidad y las instalaciones adecuadas para llevar a aca-bo estas tareas, son recursos muy limitados para la gran cantidad de estudiantes que hacenuso de estos equipos y que en muchos casos tienen que esperar varios das para obtener untiempo o espacio para realizar sus pruebas.Las fechas que mas se necesitan estos recursos son por ejemplo en las ultimas semanas decierre semestre, por la gran cantidad de proyectos y pruebas que deben realizar los estu-diantes de diferentes proyectos curriculares como son ingeniera electrica y electronica. Paraestas fechas, los recursos terminan siendo muy limitados y se agotan rapidamente, haciendoque muchos estudiantes no tengan disponibilidad para realizar sus trabajos adecuadamentepor la falta de equipos y tiempo de uso. Para tratar de darle solucion a los estudiantes querequieren mas tiempo, la universidad ha dado a disposicion el prestamo de los bancos deprueba con horario nocturno, es decir el prestamo de lo equipos despues de las 8:00 p.mhasta las 6:00 a.m, pero esta solucion no es la preferida por parte de los estudiantes; dado aldesgaste que produce en ellos esta jornada y ademas puede ser causante de que el estudianteno se encuentre a disposicion para obtener clases el da siguiente del prestamo del banco deprueba.Los instrumentos mas requeridos en el laboratorio normalmente son los equipos de medicion,como son los multmetros, osciloscopios y en algunos casos fuentes de senales AC o DC. Pornormas del laboratorio el prestamo de la mayora de estos instrumentos se deben hacer dentrodel laboratorio como tal, es decir con el prestamo de un banco completo para pruebas.Cabe aclarar que las salas e instrumentos que hay a la disposicion, no siempre son los adecua-dos para las experimentaciones que el estudiante quiera realizar. Esto debido a que algunassalas cuentan con equipos que no tienen las funcionalidades de los equipos de otras salas ose encuentran limitados en cuanto a manejo de potencia.Por ello se ve la necesidad de realizar nuevas herramientas o herramientas complementariasque permitan aliviar o mitigar un poco este problema. Realizar una herramienta que presentebeneficios tanto en portabilidad como calidad de medicion, sin dejar atras un sencillo manejode este, para que cualquier usuario no le cueste manipularlo.

    5

  • Captulo 1. Planteamiento del problema 6

    El hecho de que la herramienta sea portable significa que el estudiante pueda llevarlo a casao pueda hacer uso de ella fuera de las instalaciones de la universidad, esto con el fin de mayorcomodidad y disponibilidad de tiempo para realizar sus mediciones.

  • Captulo 2

    Justificacion

    Actualmente la facultad de ingeniera de la Universidad Distrital cuenta con recursoslimitados para la realizacion de pruebas de laboratorio, tales como equipos de medicion y ge-neracion de senales electricas para ciertas practicas de las carreras de ingeniera electronica yelectrica. Las mediciones que comunmente realizan los estudiantes requieren del uso de equi-pos como osciloscopios y multmetros; mientras que en cuestiones de produccion de senalesse utilizan fuentes reguladas y generadores de ondas. Sin embargo, la alta demanda de la salade laboratorio en ciertas epocas del semestre, y la insuficiencia de equipos es un problemacomun, motivo por el cual se evidencia la necesidad de buscar herramientas que permitanmitigar este problema, beneficiando as a estudiantes que requieran equipos de medicion yno les sea posible acceder a los que proporciona la Universidad.Esta es la razon por la cual se propone realizar un prototipo de instrumentacion, que per-mita realizar procedimientos basicos de medicion y generacion de senales electricas de usocomun en los laboratorios. Un aspecto fundamental para la realizacion del prototipo es quesea de bajo costo, con el fin de poder elaborarlo con un presupuesto adecuado de forma queun estudiante pueda acceder a el sin tener que realizar una cuantiosa inversion, como s losera la compra de un dispositivo de instrumentacion profesional. Para poder lograr realizarun instrumento como estos se ve la necesidad de usar dispositivos como lo son los sistemasembebidos de bajo consumo y bajo costo, y que sean vinculables a dispositivos android parala visualizacion y configuracion remota de las senales manipuladas en el sistema embebido. Sepropone la utilizacion de dispositivos android debido a la popularidad de los mismos y porqueel uso de dispositivos externos para la visualizacion de las senales reduce los costos del pro-totipo. Ademas de que cuentan con facilidades para la conexion a internet y almacenamientode datos en la nube.

    7

  • Captulo 3

    Objetivos

    Objetivos Generales

    Elaborar un prototipo de un sistema integrado que contenga un sistema embebido y unaplaca de expansion que permita realizar mediciones de senales AC y DC; que de igual manerapermita generar senales basicas de laboratorio y que se permita configurar y visualizar desdeun dispositivo Android por medio de una conexion inalambrica.

    Objetivos especficos

    Disenar el acondicionamiento necesario para la medicion tanto de senales DC comosenales AC de baja frecuencia (Max. 100khz), usadas comunmente en los laboratoriosde la Universidad.

    Disenar las protecciones necesarias de tal manera que sea posible introducir senalescontinuas y alternas de niveles de hasta 10v.

    Elaborar estos acondicionamientos y protecciones en un shield ensamblable a la boarddel sistema embebido.

    Permitir visualizar en la pantalla de un dispositivo Android las mediciones previamenteconfiguradas.

    Permitir la configuracion de amplitud, frecuencia y tipo de senales AC o DC generablespor la Board, desde el dispositivo con sistema operativo Android.

    Permitir el almacenamiento de los datos de las mediciones en la nube, aprovechando laconexion a internet con la que cuente el dispositivo Android.

    Proporcionar un manual para el manejo del dispositivo dentro de la aplicacion en An-droid para la configuracion de medidas del ADC, salidas de PWM ademas de generacionde senales AC y DC de baja potencia.

    8

  • Captulo 4

    Marco Teorico

    Sistema Operativo Android

    Cualidades de Android

    Android ofrece una forma sencilla y novedosa de implementar potentes aplicaciones paradiferentes tipos de dispositivo. Sus cualidades le han permitido imponerse como el sistemaoperativo para dispositivos moviles con mas cuota de mercado en la actualidad. A continua-cion se mencionan algunas de ellas [4]:

    Plataforma abierta: Es una plataforma de desarrollo basada en Linux y de codigoabierto. Una de sus ventajas es que se puede usar y personalizar el sistema sin pagarderechos de autor.

    Adaptable a cualquier plataforma: No solamente es exclusivo para telefonos y tablets.Es posible hallarlo en muchos sistemas embebidos para los cuales el desarrollo de unaaplicacion esta soportado para estos diferentes dispositivos siempre y cuando cuentencon los elementos de acceso necesarios tales como entradas, pantalla, memoria, etc.

    Portabilidad: La aplicaciones son desarrolladas en Java, lo que permite que sean ejecu-tadas en cualquier plataforma gracias al concepto de maquina virtual.

    Servicios incorporados: Tales como sistemas de localizacion basados en GPS o internet,manejo de bases de datos con SQL, navegadores, multimedia, reconocimiento de voz,etc.

    Filosofa de dispositivo siempre conectado a internet: Esto sumado a la tendencia cre-ciente del internet de las cosas lo hace una herramienta formidable de desarrollo convinculacion permanente a la red.

    Seguridad: Los programas se encuentran aislados unos de otros gracias al concepto deejecucion dentro de una caja heredado de Linux. Ademas de limitaciones en cuanto apermisos de acuerdo al tipo y accion de cada aplicacion.

    9

  • Captulo 4. Marco Teorico 10

    Calidad Grafica: Cuenta con herramientas graficas basadas en OpenGL. Ademas incor-pora codecs estandar comunes para reproduccion de audio y video.

    Arquitectura de Android

    La arquitectura de Android se encuentra basada en 4 capas, las cuales tienen como ca-racterstica importante que estan basadas en software Libre. En la figura 4.1 se muestra ladistribucion de estas capas [5].

    Figura 4.1: Capas de la arquitectura de Android. Tomada de [5]

    Nucleo Linux: El nucleo de Android esta formado por el sistema operativo Linux 2.6,el cual se encarga de proporcionar servicios como la seguridad, manejo de memoria, multi-proceso, soporte de drivers, entre otros. Esta capa realiza la abstraccion entre el hardware yel resto de las capas.

    Runtime de Android: Se basa en el concepto de maquina virtual utilizado en Java. Sinembargo, debido a que los dispositivos moviles tienen limitaciones en cuanto a memoria yprocesador, no les es posible ejecutar la maquina virtual Java estandar, por lo que fue nece-saria la creacion de la maquina virtual Dalvik por parte de Google la cual responde mejor aestas limitaciones. A partir de Android 5.0, se reemplaza a Dalvik por ART, la cual consigueuna reduccion del tiempo de ejecucion de codigo Java en un 33 %. Tambien se encuentraincluido en el Runtime el core libraries, con la mayora de libreras del lenguaje Java.

    Libreras Nativas: Incluye un conjunto de librera en C/C++ usadas en varios compo-nentes de Android. Estan compiladas en codigo nativo del procesador. La mayora de estaslibreras utilizan proyectos de codigo abierto.

    Entorno de aplicacion: Esta capa ha sido disenada para simplificar la reutilizacion decomponentes, las aplicaciones pueden publicar sus capacidades para que otras puedas hacer

  • Captulo 4. Marco Teorico 11

    uso de ellas sujetas a restricciones de seguridad. Proporciona una plataforma de desarrollolibre para aplicaciones con gran riqueza e innovaciones.

    Aplicaciones: Capa superior formada por el conjunto de aplicaciones instaladas en unamaquina Android. Todas deben correr en la maquina Virtual Dalvik o ART para garantizarla seguridad del sistema. Las aplicaciones normalmente estan escritas en Java las cuales sondesarrolladas mediante el Android SDK.[6]

    Desarrollo de aplicaciones

    El desarrollo de aplicaciones se realiza en un equipo con ciertas caractersticas de hard-ware y sistema operativo Windows, Linux o MacOs, donde sea posible instalar la maquinavirtual Java. Adicionalmente se requiere de un entorno de desarrollo dentro de los cualesexisten dos opciones:Eclipse y plug-in ADT (Android Development Tools): Este IDE sola ser el de uso tradicionalpara el desarrollo de aplicaciones Android, hasta el lanzamiento de Android Studio. Constade tres componentes necesarios para su uso: Eclipse, Android SDK y el plug-in ADT propor-cionado por Google.Android Studio: Entorno de desarrollo de Android lanzado por Google basado en el IDEIntelliJ IDEA [7]. Incorpora caractersticas nuevas no que no se encuentran en el IDE tradi-cional basado en Eclipse. Por tratarse del entorno de desarrollo Android oficial proporcionadopor Google, es el mas recomendable de usar, debido a que desde su aparicion, el soporte alentorno Eclipse ha dejado de mantenerse y por tanto ha dejado de actualizarse.[8]

    Canvas

    La clase Canvas representa una superficie donde se puede realizar dibujos en Android.Esta clase dispone de una serie de metodos que permite representar lneas, crculos, texto,etc. Para dibujar en Canvas se necesita de un Pincel (Paint) donde se define el color, grosordel trazo, transparencia. Tambien se puede definir una matriz de 3x3 que permite transformarcoordenadas aplicando una translacion, escala o rotacion. Otra opcion consiste en definir unarea conocida como Clip, de forma que los metodos de dibujo afecten solo a esta area. [9]

    Comunicaciones Inalambricas

    La comunicacion inalambrica son aquellas en la que la comunicacion entre emisor y re-ceptor no se encuentra unida por un medio fsico, sino que se utiliza la modulacion de ondaselectromagneticas a traves del espacio el cual es su medio de propagacion. Los dispositivosfsicos o hardware como tal solo estan presentes en los emisores y receptores de la senal, entrelos cuales se encuentran: las antenas, computadoras portatiles, PDA, telefonos moviles, etc.La comunicacion inalambrica, que se realiza a traves de ondas de radiofrecuencia, permitefacilitar la operacion en lugares donde el dispositivo no se encuentra en una ubicacion fija

  • Captulo 4. Marco Teorico 12

    como por ejemplo; almacenes, oficinas de varios pisos, etc. Cabe tambien mencionar que ac-tualmente las redes cableadas presentan ventaja en cuanto a transmision de datos sobre lasinalambricas. Mientras que las cableadas proporcionan velocidades de hasta 1 Gbit/s (RedGigabit), las inalambricas alcanzan solo hasta 108 Mbit/s, ademas de producir mayor esta-bilidad y seguridad en transmision.Actualmente, las transmisiones inalambricas constituyen una eficaz herramienta que permi-te la transferencia de voz, datos y vdeo sin la necesidad de cableado. Esta transferenciade informacion es lograda a traves de la emision de ondas de radio teniendo dos ventajas:movilidad y flexibilidad del sistema en general.[10]

    Tecnologas que permiten la comunicacion inalambrica.

    WIFI: Es una tecnologa inalambrica utilizada para conectar e intercambiar informa-cion entre dispositivos electronicos sin necesidad de conectarlos mediante cables.[11]Wifi pertenece al conjunto de tecnologas conocidas como Wireless (sin cables) conmayor aceptacion y uso en la mayora de dispositivos electronicos como smartpho-nes, tablets, ordenadores de sobremesa y portatiles, camaras digitales o consolas devideojuegos gracias al cual se puede disponer de una red de comunicacion entre variosdispositivos y con acceso a Internet.

    Figura 4.2: Logo de WiFi.

    Una de las principales ventajas del wifi es la posibilidad de conectar multiples disposi-tivos electronicos a internet con un solo dispositivo. Estrictamente la palabra wifi hacereferencia a todos los dispositivos electronicos disenados para establecer una comuni-cacion inalambrica y que han sido certificados por la organizacion WiFi Alliance.

    Bluetooth: Es una tecnologa de red de area personal inalambrica, una tecnologade red inalambrica de corto alcance, que se utiliza para conectar dispositivos entre sde manera inalambrica. A diferencia de la tecnologa IrDa (que utiliza una conexioninfrarrojo), los dispositivos Bluetooth no necesitan una lnea de visualizacion directapara comunicarse.[12] El objetivo de Bluetooth es transmitir voz o datos entre equiposcon circuitos de radio de bajo costo, a traves de un rango aproximado de entre diez ycien metros, utilizando poca energa lo cual lo hace bastante practico.

  • Captulo 4. Marco Teorico 13

    Figura 4.3: Logo de Bluetooth.

    La tecnologa Bluetooth se diseno principalmente para conectar dispositivos (comoimpresoras, telefonos moviles, artculos para el hogar, etc.), equipos o PDA es decircomunicaciones simple a corta distancia y con fines de conexion Uno A Uno. Bluetoothtambien se utiliza cada vez mas en telefonos moviles especialmente para conectarse alos accesorios manos libres, como los auriculares Bluetooth. Los auriculares Bluetoothson auriculares avanzados que incluyen funciones de control remoto.La tecnologa Bluetooth originalmente fue desarrollada por Ericsson en 1994.

    Normas Bluetooth.El estandar Bluetooth se divide en multiples normas:

    IEEE 802.15.1 define Bluetooth 1.x, que puede alcanzar velocidades de 1 Mbps. IEEE 802.15.2 recomienda practicas para utilizar la banda de frecuencia de 2.4

    GHz (la frecuencia tambien utilizada por WiFi). Sin embargo, este estandar to-dava no se ha aprobado.

    IEEE 802.15.3 es un estandar que actualmente se esta desarrollando, que ofreceravelocidad de banda ancha (20 Mbps) con Bluetooth.

    IEEE 802.15.4 es un estandar que actualmente se esta desarrollando para el usocon aplicaciones Bluetooth de baja velocidad.

    ZigBee: Es un estandar de comunicaciones inalambricas disenado por la ZigBee Allian-ce. Es un conjunto estandarizado de soluciones que pueden ser implementadas porcualquier fabricante.[13] ZigBee esta basado en el estandar IEEE 802.15.4 de redesinalambricas de area personal (wireless personal area Newark, WPAN) y tiene comoobjetivo las aplicaciones que requieren comunicaciones seguras con baja tasa de envode datos y maximizacion de la vida util de sus bateras.

    Figura 4.4: Logo de ZigBee.

    Caractersticas:

  • Captulo 4. Marco Teorico 14

    ZigBee es una tecnologa inalambrica con velocidades comprendidas entre 20 kB/sy 250 kB/s.

    Los rangos de alcance son de 10 m a 75 m. Puede usar las bandas libres ISM (6) de 2,4 GHz (Mundial), 868 MHz (Europa)

    y 915 MHz (EEUU).

    Una red ZigBee puede estar formada por hasta 255 nodos los cuales tienen lamayor parte del tiempo el transceiver ZigBee dormido con objeto de consumirmenos que otras tecnologas inalambricas.

    Soporta diferentes tipos de topologas como estrella, punto a punto, malla, arbol. Escalabilidad de red Un mejor soporte para las redes mas grandes, ofreciendo

    mas opciones de gestion, flexibilidad y desempeno.

    Fragmentacion: Nueva capacidad para dividir mensajes mas largos y permitir lainteraccion con otros protocolos y sistemas.

    Localizacion grupal: Ofrece una optimizacion adicional de trafico necesaria paralas grandes redes.

    Conversor Digital a analogo

    Es un dispositivo para convertir un codigo digital (generalmente binario) a una senalanalogica (corriente o voltaje). Hay distintos componentes que pueden intervenir en esteproceso, como interruptores simples, red de resistores, fuentes actuales o condensadores.[14]

    Figura 4.5: Conversion de senal analogica a digital.[14]

    Caractersticas basicas

    Los principales parametros que definen un convertidor digital a analogico es principal-mente su resolucion, que depende del numero de bits de entrada del convertidor. Otra carac-terstica basica es la posibilidad de conversion unipolar o bipolar (senales positivas o negativas

  • Captulo 4. Marco Teorico 15

    de salida). El tiempo de conversion es otra particularidad que define al convertidor necesariopara una aplicacion determinada. Es el tiempo que necesita para efectuar el maximo cambiode su tension con un error mnimo en su resolucion. Otros aspectos que posee el convertidorson: su tension de referencia, que puede ser interna o externa (si es externa puede ser variadaentre ciertos margenes); la tension de salida vendra afectada por este factor, constituyendoseeste a traves de un convertidor multiplicador; as mismo, debera tenerse en cuenta la tensionde alimentacion, el margen de temperatura y su tecnologa interna. [15]

    Especificaciones de un DAC (Digital to Analog Converter)

    Existe una amplia variedad de DAC como circuitos integrados o bien como paquetesencapsulados. Hay que conocer las especificaciones mas importantes de los fabricantes con elfin de evaluar un DAC, en una determinada aplicacion [16].

    Resolucion: La resolucion porcentual de un DAC depende unica y exclusivamente delnumero de bits. En las fichas tecnicas se detalla de esta manera. Un DAC de 10 bitstiene una resolucion mas sensible (mayor exactitud) que uno de 8 bits.

    Precision: Los fabricantes de DAC tienen varias maneras de establecer la precisiono exactitud. A las dos mas comunes se las llama Error de Escala Completa y Errorde Linealidad (o en ocasiones, directamente linealidad), que normalmente se expresancomo un porcentaje de la salida de escala completa del convertidor ( %FS).

    Tiempo de respuesta: La velocidad de operacion de un DAC se explica como tiempode respuesta, que es el periodo que se requiere para que la salida pase de cero a escalacompleta cuando la entrada binaria cambia de todos los ceros a todos los unos. Losvalores comunes del tiempo de respuesta variaran de 50 ns a 10 ms. En general, losDAC con salida de corriente tendran tiempos de respuesta mas breves que aquellos conuna de voltaje.

    Conversor Analogico a Digital (ADC)

    Un conversor analogico-digital, (ADC del ingles .Analog-to-Digital Converter) es un dis-positivo electronico capaz de convertir una entrada analogica de voltaje o corriente en unvalor binario, Se utiliza en una gran variedad de equipos electronicos como ordenadores, gra-badores de sonido y de vdeo, y equipos de telecomunicaciones [17].

  • Captulo 4. Marco Teorico 16

    Figura 4.6: Conversion de senal analogica a digital.[17]

    La senal analogica, que vara de forma continua en el tiempo, se conecta a la entrada deldispositivo y se somete a un muestreo a una velocidad que puede ser tanto fija como variable.La digitalizacion consiste basicamente en realizar medidas de la amplitud (tension) de unasenal, redondear sus valores a un conjunto finito de niveles preestablecidos de tension (cono-cidos como niveles de cuantificacion) y registrarlos como numeros enteros segun su resoluciony almacenarlos en cualquier tipo de memoria o soporte. Los procesos que dan lugar a estaconversion son el muestreo, la retencion, la cuantificacion y la codificacion: [18]

    Muestreo: el muestreo (en ingles, sampling) consiste en tomar muestras periodicas de laamplitud de onda. La velocidad con que se toma esta muestra, es decir, el numero de mues-tras por segundo, es lo que se conoce como frecuencia de muestreo. Nyquist formulo el si-guiente teorema para obtener una grabacion digital de calidad.La frecuencia de muestreomnima requerida para realizar una grabacion digital de calidad, debe ser igual al doble de lafrecuencia de audio de la senal analogica que se pretenda digitalizar y grabar.Sino se cumpleeste requisito aparecera el fenomeno de aliasingel cual propiciara la aparicion de frecuencias.alias, y la senal original no puede ser reconstruida de forma correcta a partir de la senaldigital.[18]

    Retencion: las muestras tomadas deben ser retenidas (sistema de retencion) el tiempo su-ficiente para permitir evaluar su nivel (cuantificacion). Desde el punto de vista matematicoeste proceso no se contempla, ya que se trata de un recurso tecnico debido a limitacionespropias del dispositivo que realiza la conversion.

    Cuantificacion: en el proceso de cuantificacion se mide el nivel de voltaje de cada unade las muestras. Consiste en asignar un margen de valor de una senal analizada a un uniconivel de salida designandolo con un valor entero.

    Error de cuantificacion: es el error que se produce debido a las pequenas variaciones queno son tenidas en cuenta por al realizar la cuantificacion. Ruido de cuantificacion:senalen tiempo discreto y amplitud continua que resulta de igualar los niveles de las muestras de

  • Captulo 4. Marco Teorico 17

    amplitud continua a los niveles de cuantificacion mas proximos.

    Codificacion: la codificacion consiste en traducir los valores obtenidos durante la cuan-tificacion al codigo binario. Hay que tener presente que el codigo binario es el mas utilizado,pero tambien existen otros tipos de codigos que tambien son utilizados.Este modelo es una base para la digitalizacion utilizandose en la actualidad variantes que seacoplan mas a las capacidades de los equipos.[19]

    1. Cuantizacion

    En la figura 4.7 se observa una forma de onda de una conversion tpica de una senalanalogica. Como se puede observar en las etiquetas de la grafica, la senal representa el voltajeque vara en el tiempo. Se hace una suposicion para que sea de manera mas sencilla el analisis,que la onda es de 0 a 4.095 voltios, lo cual corresponde a un numero digital entre 0 y 4095que es producido por un conversor de 12 bits. Si se observa el diagrama de bloque de lafigura 4.8 se encuentra dividido en 2 segmentos, el resultado del modulo de muestreo yretencion (S/H) y el conversor de analogico a digital (ADC). Como bien se sabe, el modulode muestreo y retencion es necesario para mantener el voltaje entrante al conversor ADC demanera constante mientras la conversion se realiza (debido al tiempo que toma el dispositivoen realizar la conversion). Sin embargo, esa no es la razon por la cual se observa all, la razonpor la cual debe estar all se explicara con mas detalle a continuacion.[20]

    Figura 4.7: Senal analogica.

    Figura 4.8: Diagrama de bloque ADC.

  • Captulo 4. Marco Teorico 18

    Como se observa la diferencia entre las graficas 4.7 y 4.9, la salida del modulo de muestreoy retencion es permitir el cambio solo en intervalos periodicos, en el cual hace una fotoinstantanea de la senal de entrada. Los cambios producidos en la senal de entrada producidosen el momento de muestreo son totalmente ignorados. Esto significa, que el muestreo es unasenal independiente (del tiempo en este caso) en la conversion de continuo a discreto. Comose puede ver en la diferencia entre las senales de 4.9 y 4.10, el ADC produce un valor enteroentre 0 y 4095 por cada region plana en la figura 4.9. Esto produce un error, porque puedehaber un valor de voltaje entre 0 y 4.095 voltios y este lo representa al valor mas cercano a lacuanta. En otras palabras, la cuantizacion se convierte una variable dependiente (del voltajeen este caso) de la conversion de la senal de continuo a discreto.[21]

    Figura 4.9: Senal resultante del muestreo.

    Figura 4.10: Senal resultante de la cuantizacion.

    Se debe ser cuidado al comparar la senal 4.7 y la senal 4.10, porque se podra confundir elmuestreo y cuantizacion juntas y hay etapas que se deben tener en cuanta antes de llegar atal conclusion. Primero se debe analizar los efectos del de la cuantizacion. Cualquier muestraen la senal digitalizada puede haber un maximo error de # LSB (el bit menos significativo,debido a que es la diferencia mas adyacente entre los niveles de cuantizacion). En la figura

  • Captulo 4. Marco Teorico 19

    4.11 se ve como el error de cuantizacion para este caso, se puede encontrar restando la senal4.9 y la senal 4.10. En otras palabras, la salida digital de la senal 4.10, es equivalente a laentrada continua de la senal 4.9, mas el error de cuantizacion en la figura 4.11. Lo importantede este analisis es que se puede considerar el error de cuantizacion como un ruido aleatorio.

    Figura 4.11: El resultado de la resta entre el muestreo y la cuantizacion.

    Al tenerse claro los efectos de la cuantizacion y del muestreo, se debe concluir que entremayor sea el numero de la resolucion en el conversor ADC (mas bits en la cuantizacion)se puede reducir el ruido propio que genera el proceso de la cuantizacion. Tambien se debetener en cuenta las velocidades a nivel de hardware del propio conversor, porque el modulode muestreo y retencion puede tomar bastante tiempo a comparacion de la frecuencia de lasenal analogica y esto genera ruido tambien.[22]

    Teorema de muestreo

    La definicion de muestreo es un poco simple y para ellos se usara un ejemplo. Se va asuponer que se esta muestreando una senal continua de alguna manera, no interesa como. Sise busca poder reconstruir de manera exacta la senal analogica con base a las muestras obte-nidas, se debe tener un diseno de muestreo bien elaborado. Incluso si los datos muestreadosparezcan confusos o incompletos, la informacion clave pudo ser captura y con esto es capasde realizarse el proceso de reconstruccion.[23]

  • Captulo 4. Marco Teorico 20

    Figura 4.12: Muestreo de una senal DC.

    En la figura 4.12 se observa una gran cantidad de senales sinusoidales antes y despuesde la digitalizacion. Las lineas continuas representan la senal analogica que ingresa al ADC,mientras que las marcas de cuadros son las senales que salen del ADC. En la figura 4.12, lasenal analogica es un valor constante DC, es decir una senal coseno con frecuencia cero. Enla senal analogica hay una serie de lineas rectas entre cada una de las muestras, se puedeobservar que toda la informacion necesaria para la reconstruccion de la senal analogica estadentro de los datos digitales (los valores tomados). Acorde a la primera definicion, este el eltipo de muestreo que se encuentra bien disenado.

    Figura 4.13: Muestreo de una senal seno, con frecuencia al 0.09 de la tasa de muestreo.

    La onda seno en la figura 4.13 tiene una frecuencia de 0.09 de la tasa de muestreo. Esto sepodra representarse, por ejemplo, en 90 ciclos/segundo de la onda seno siendo muestreada en1000 muestras por segundo. Expresado de otro forma, hay 11.1 muestras tomadas por cadaciclo completado de la senal seno. Este caso es mas complejo que el caso previo, porque la

  • Captulo 4. Marco Teorico 21

    senal analogica no puede ser reconstruida dibujando simples lineas rectas entre los puntos delos datos. Lo que si se puede afirmar es que los datos muestreados fueron lo suficientes comopara reconstruir la senal, demostrando que fue una manera apropiada de hacer el muestreo.

    Figura 4.14: Muestreo de una senal seno, con frecuencia al 0.31 de la tasa de muestreo.

    En la figura 4.14, la situacion es mas compleja porque se incrementa la frecuencia a 0.31de la tasa de muestreo. Esto significa que solo se toman 3.2 muestras de la senal seno porciclo. Pero parece que las muestras estan muy esparcidas con base a la reconstruccion de lasenal; con lo cual deja la duda si son suficientes para reconstruir la senal. En este caso, lasmuestras son la unica representacion de una senal analogica. Toda la informacion tomada enen la etapa del muestreo necesaria, llego a obtenerse para la reconstruccion.

    Figura 4.15: Muestreo de una senal seno, con frecuencia al 0.95 de la tasa de muestreo.

    En la figura 4.15, la frecuencia de la senal analogica es incluso puesta a 0.95 de la tasa demuestreo. Es decir toma 1.05 muestras por ciclo de la senal seno. Se podra considerar que

  • Captulo 4. Marco Teorico 22

    son los datos necesarios para reconstruir la senal?. No, en este caso no se puede. Las muestrasque se tomaron pueden representar senales diferentes de una misma senal analogica. En estecaso en particular, la senal seno al ser muestreada produce una senal digital representadacon el 0.05 de frecuencia de la senal original. Este fenomeno de senales senosoidales confrecuencias diferentes, producidas en el muestreo se conoce como aliasing. Este nombre vienea que la senal toma otra identidad (alias), porque asume una frecuencia que no es la propiaa la original.En el proceso digital de senales se genero un teora conocida como el teorema de muestreo deshannon, o el teorema de muestreo de Nyquist. El teorema de muestreo indica que la senalcontinua puedes ser muestreada propiamente, solo si los componentes de frecuencia no estanalrededor de la media tasa de muestreo. Es decir, una tasa de muestreo de 2000 muestraspor segundo requiere que la senal analogica este compuesta por frecuencias menos a 1000ciclos por segundo. Si la frecuencia es mayor a este limite, se puede producir el fenomeno dealiasing.

    Fm = 2 B

    donde B es el ancho de banda, o la frecuencia maxima de la senal a muestrear.Tambien se puede considerar la siguiente imagen,

    Figura 4.16: la tasa de muestreo para evitar Aliasing.

    Analizador Logico

    Un analizador logico es un dispositivo electronico que tiene la finalidad de verificar los cir-cuitos digitales secuenciales o con variaciones en el tiempo. Es un dispositivo cuyo objetivo es

  • Captulo 4. Marco Teorico 23

    visualizar los valores de las senales digitales durante un periodo de tiempo de adquisicion.[24]Por lo general un analizador logico cumple con:

    Adquirir muestras que tomen unos valores discretos (entre 1 y 0 logico).

    Adquiere varias muestras simultaneamente para poder observar un conjunto de lneasdigitales (por ejemplo un bus de datos).

    Las muestras se almacenan en una memoria digital interna, llamada memoria de ad-quisicion, para su posterior observacion.

    Un analizador logico muestra las senales de manera muy similar a un osciloscopio: el eje hori-zontal representa el tiempo y el eje vertical el valor de la senal. A diferencia del osciloscopio,que trata de representar las senales con gran resolucion de voltaje y precision temporal, losobjetivos de los analizadores logicos son los siguientes:

    Representar simultaneamente un gran numero de senales.

    Observar el estado de las senales entorno a la aparicion en varias lneas de un determi-nado patron de bits (condicion de disparo o trigger).

    A continuacion se observa un ejemplo de las mediciones de un analizador logico.

    Figura 4.17: Senales tomadas desde un analizador logico.

    Desarrollo de aplicacion web

    HTML

    Que significa HTML y que es?

    HTML significa Lenguaje de Marcado de Hypertexto(HyperText Markup Language), esun lenguaje que pertenece a la familia de los lenguajes de etiqueta 2es utilizado para la

  • Captulo 4. Marco Teorico 24

    elaboracion de paginas web.[25]Cabe destacar que HTML no es un lenguaje de programacion ya que no cuenta con funcionesaritmeticas, variables o estructuras de control propias de los lenguajes de programacion, porlo que HTML genera unicamente paginas web estaticas, sin embargo, HTML se puede usar enconjunto con diversos lenguajes de programacion para la creacion de paginas web dinamicas.

    Proposito de HTML.

    Basicamente el lenguaje HTML sirve para describir la estructura basica de una pagina (elesqueleto) y organizar la forma en que se mostrara su contenido, ademas de que HTMLpermite incluir enlaces (links) hacia otras paginas o documentos.[25]

    CSS 3

    CSS son las siglas de Cascading Style Sheets(Hojas de Estilo en Cascada) que es unlenguaje que describe la presentacion de los documentos estructurados en hojas de estilo paradiferentes metodos de interpretacion, es decir, describe como se va a mostrar un documentoen pantalla.[26]

    Funcion de CSS

    CSS es una especificacion desarrollada por el W3C (World Wide Web Consortium) para per-mitir la separacion de los contenidos de los documentos escritos en HTML, XML, XHTML,SVG, o XUL de la presentacion del documento con las hojas de estilo, incluyendo elementostales como los colores, fondos, margenes, bordes, tipos de letra, etc. modificando la aparienciade una pagina web de una forma mas sencilla, permitiendo a los desarrolladores controlar elestilo y formato de sus documentos.

    Manejando CSS

    El lenguaje CSS se basa en una serie de reglas que rigen el estilo de los elementos en losdocumentos estructurados, y que forman la sintaxis de las hojas de estilo. Cada regla consis-te en un selector y una declaracion, esta ultima va entre corchetes y consiste en una propiedado atributo, y un valor separados por dos puntos.

    Definiciones basicas

    Selector: El Selector especifica que elementos HTML van a estar afectados por esa declara-cion, de manera que hace de enlace entre la estructura del documento y la regla estilstica enla hoja de estilo.

    Declaracion: La Declaracion que va entre corchetes es la informacion de estilo que indi-ca como se va a ver el selector. En caso de que haya mas de una declaracion se usa punto ycoma para separarlas.

  • Captulo 4. Marco Teorico 25

    Propiedad o Atributo y Valor: Dentro de la declaracion, la Propiedad o Atributo definela interpretacion del elemento asignandosele un cierto Valor, que puede ser color, alineacion,tipo de fuente, tamano,etc; es decir, especifican que aspecto del selector se va a cambiar.

    Javascript

    Javascript es un lenguaje que puede ser utilizado por profesionales de software y paraquienes se inician en el desarrollo y diseno de sitios web.[27] No requiere de compilacion yaque el lenguaje funciona del lado del cliente, lo que significa que los navegadores son losencargados de interpretar estos codigos. Que es Javascript?

    Javascript es un lenguaje con muchas posibilidades, utilizado para crear pequenos programasque luego son insertados en una pagina web y en programas mas grandes, orientados a objetosmucho mas complejos. Con Javascript se puede crear diferentes efectos e interactuar con losusuarios de la aplicacion web.[27]Es necesario resaltar que hay dos tipos de JavaScript: por un lado esta el que se ejecuta en elcliente (interacion del usuario con la web), este es el Javascript propiamente dicho, aunquetecnicamente se denomina Navigator JavaScript. Pero tambien existe un Javascript que seejecuta en el servidor, es mas reciente y se denomina LiveWire Javascript (Manipulacion deinformacion y solicitudes al servidor).

    Bootstrap

    Bootstrap es un framework originalmente creado por Twitter, que permite crear interfacesweb con CSS y JavaScript dentro de la pagina html, cuya particularidad es la de adaptar lainterfaz del sitio web al tamano del dispositivo en que se visualice [28]. Es decir, el sitio webse adapta automaticamente al tamano de un computador de escritorio, una Tablet u otrodispositivo movil. Esta tecnica de diseno y desarrollo se conoce como responsive designodiseno adaptativo. El beneficio de usar responsive designen un sitio web, es principalmenteque el sitio web se adapta automaticamente al dispositivo desde donde se acceda. En pocaspalabras no es necesario generar disenos diferentes de la misma pagina web, para ser visua-lizado en diferentes dispositivos, debido a que incrementa el codigo y termina siendo tediosala labor debido a la gran cantidad de tamanos que pueda solicitar dicha pagina web.Aun todas las posibilidades que ofrece Bootstrap a la hora de crear interfaces web, los di-senos creados con Bootstrap son simples, limpios e intuitivos, esto les da agilidad a la horade cargar y al adaptarse a otros dispositivos.

    Es uno de los frameworks mas usados por los disenadores de aplicaciones web, debido asu facilidad de uso y la gran cantidad de documentacion y comunidades que dan soporte a

  • Captulo 4. Marco Teorico 26

    este.

    Convertidor DC - DC (Bost)

    El convertidor Boost (o elevador) es un convertidor DC a DC que obtiene a su salidauna tension continua mayor que a su entrada.[29] Es un tipo de fuente de alimentacion con-mutada que contiene al menos dos interruptores semiconductores (diodo y transistor), y almenos un elemento para almacenar energa (condensador, bobina o combinacion de ambos).Frecuentemente se anaden filtros construidos con inductores y condensadores para mejorarel rendimiento.Un conector de suministro de energa habitual no se puede conectar directamente a dispo-sitivos como ordenadores, relojes o telefonos. La conexion de suministro genera una tensionalterna (AC) y los dispositivos requieren tensiones continuas (DC). La conversion de potenciapermite que dispositivos de continua utilicen energa de fuentes de alterna, este es un pro-ceso llamado conversion AC a DC y en el se usan convertidores AC a DC como rectificadores.

    La energa tambien puede provenir de fuentes DC como bateras, paneles solares, rectifica-dores y generadores DC, pero ser de niveles inadecuados. El proceso de cambiar una tensionde continua a otra diferente es llamado conversion DC a DC. Un convertidor Boost es unode los tipos de convertidores DC a DC. Presenta una tension de salida mayor que la tensionde la fuente, pero la corriente de salida es menor que la de entrada.[30]

    Nube (Cloud)

    Que es la nube?

    Muchos desarrolladores de TI sostienen que la computacion en la nube no es mas queotra alternativa de subcontratacion a la contratacion de un centro de datos. Si bien existensemejanzas, la computacion en la nube se diferencia por sus principales caractersticas deautoservicio a pedido, agrupacion de recursos, elasticidad rapida y pagos de acuerdo con elconsumo.[31] En virtud de estas caractersticas, resulta atractiva para algunos y problematicapara otros; por ejemplo, el autoservicio a pedido y la elasticidad de la potencia de compu-tacion y los sistemas de almacenamiento pueden ser opciones atractivas para un cientficoinvestigador, pero un posible problema para el centro de investigacion de una universidad,que debe dar cuenta de la integridad de los datos de los trabajos de investigacion. Se promo-ciona la computacion en la nube principalmente porque se reconoce que los grandes centrosde datos cuentan con miles de servidores que, en general, no funcionan a capacidad plena,lo que crea un excedente de capacidad de computacion. Como utiliza estos recursos con maseficiencia mediante su visualizacion, la computacion en la nube permite obtener un mayorretorno de la inversion en el centro de datos. Ademas, permite a una universidad crear supropia nube privada dentro de su propia infraestructura[32].

  • Captulo 4. Marco Teorico 27

    Tipos de Nube

    Nube privada. La infraestructura en la nube se opera exclusivamente para una organi-zacion. Puede ser administrada por la propia organizacion o un tercero y puede hallarsedentro de las instalaciones o fuera de ellas [33].

    Nube comunitaria. La infraestructura en la nube es compartida por varias organiza-ciones y da soporte a una comunidad especfica que posee inquietudes comunes. Puedeser administrada por las propias organizaciones o un tercero y puede hallarse en lasinstalaciones o fuera de ellas.

    Nube publica. La infraestructura en la nube esta a disposicion del publico en generalo de un grupo grande del sector y su propietario es la organizacion que comercializaservicios en la nube.

    Nube hbrida. La infraestructura en la nube se compone de dos o mas nubes (privada,comunitaria o publica) que, si bien son entidades unicas, estan vinculadas por tecnologaestandarizada o propia que permite la portabilidad de datos y aplicaciones.

    Beneficios de la Nube

    Reduccion de costos. Las organizaciones pueden reducir o eliminar los gastos de capitalde TI y disminuir los gastos operativos al pagar unicamente los servicios que utilizan yal poder reducir o reubicar al personal de TI [34].

    Facilidad de implementacion. Como no es necesario comprar hardware y licencias desoftware ni contratar servicios de implementacion, una organizacion puede implementarla computacion en la nube con rapidez.

    Flexibilidad. La computacion en la nube ofrece mas flexibilidad a la hora de asignarrecursos de TI a funciones comerciales, en comparacion con metodos de computaciondel pasado. Tambien puede aumentar la movilidad del personal ya que facilita el accesoa informacion y aplicaciones empresariales desde una gama mas amplia de ubicacionesy servicios.

    Acceso a funciones de TI de alta gama. En especial para las organizaciones mas pe-quenas, la computacion en la nube permite el acceso a hardware, software y personalde TI de mas alto nivel que el que pueden atraer o proporcionarse por s mismas.

    Sostenibilidad. Hoy se comprende que la baja eficiencia energetica de la mayora de loscentros de datos, a causa de su diseno deficiente o del uso poco eficaz de los recursos,no es sostenible desde un punto de vista ambiental y economico.

  • Captulo 4. Marco Teorico 28

    Estado del arte

    Sistema de Tiempo Real Embebido en un Microcontrolador de AltoDesempeno para el Procesamiento de Audio

    En este proyecto se realizo el procesamiento de senales realizado por un sistema operativoen tiempo real embebido en un microcontrolador ya que permite optimizar el tiempo de eje-cucion de las tareas crticas y no crticas asignadas para el procesamiento de audio y reducircostos en la unidad de procesamiento. Se implemento la realizacion de multitareas a travesde un sistema de tiempo real embebido en un microcontrolador para el procesamiento deaudio. Se genero la comunicacion entre microcontroladores para as tener una mayor eficaciacon respecto a la respuesta de las tareas asignadas y finalmente integro una etapa de pro-cesamiento de senales en el sistema operativo en tiempo real, minimizando los componentesempleados para la reduccion de costos materiales.

    Oscilocopio WiFi Velleman WFS210

    Figura 4.18: Oscilocopio WiFi Velleman WFS210 [36].

    Osciloscipio digital de 2 canales vinculable a tablets. Es de tamano compacto y alimentadomediante bateras [36]. En lugar de utilizar una pantalla integrada, puede hacer uso de unatablet con sistema operativo iOS, Android o un computador con Windows para mostrar lasmediciones. El intercambio de datos entre la tablet y el osciloscopio es mediante red localinalambrica.Sus especificaciones son:

    Rango de entrada: 5mV/div a 20V/div.

    Base de tiempo: 1us/div a 1s/div.

    Entrada maxima de 30 Vpp.

    Tasa de muestreo tiempo real: 2x10MS/s.

    Impedancia de entrada: 1Mohm.

    Acople de entrada: AC + DC, AC y GND.

  • Captulo 4. Marco Teorico 29

    Ancho de banda: 2 x 10Mhz.

    Resolucion Analoga a digital: 8 bits.

    Buffer de muestras: 4K/canal.

    Consumo(Batera): 160mA.

    Batera: ion de litio 3.7V 1800mAh.

    Sus requerimientos:

    iOS.

    Android 4.0.

    Sistema operativo Windows XP o mayor.

    Tablet o PC.

    Wireless Oscilloscope using Android App for Mobile

    En el artculo[ref] se describen los componentes de un osciloscopio inalambrico que haceuso de una aplicacion Android en un smartphone para la visualizacion de las mediciones [37].

    Figura 4.19: Oscilocopio Wireless [37].

    El transmisor consiste en un modulo serial Wi-Fi y un microcontrolador Atmega8. Lasenal transmitida es recibida mediante WiFi en un Smartphone o tablet que ejecute el sistemaoperativo Android y tenga instalada la aplicacion encargada de graficar en 2D la forma deonda de la senal medida. A aplicacion permite cambiar la division de voltaje y tiempo. Laforma de onda puede ser guardada como un videoclip o una imagen formato jpeg.

    Osciprime

    Es una plataforma de hardware para adquisicion de datos de alta velocidad y una aplica-cion Android de visualizacion. Mediante el uso de USB, el hardware se conecta a dispositivosAndroid que soporten Host USB. El hardware consiste en dos partes: la interfaz analoga,donde una senal es ajustada a los conversores analogo a digital y una interfaz digital dondelos datos adquiridos son cuantificados y preparados para la transmision USB. Los elementos

  • Captulo 4. Marco Teorico 30

    principales son un dispositivo complejo programable Xilinx Coolrunner y un microcontroladorCypress FX2 [38].

    Figura 4.20: Oscilocopio Wireless [38].

    Microcontrolador TIVA C

    Descripcion basica

    El Tiva C es una plataforma de desarrolla propia de Texas Instruments de bajo costo queesta basado en el microcontrolador TM4C123GH6PM el cual esta desarrollado para reali-zar aplicaciones con fines industriales, incluyendo monitoreo remoto, maquinas electronicaspara los puntos de venta, equipos de pruebas y mediciones, switches y aplicaciones en re-des informaticas, automatizacion de produccion, HVAC y desarrollo de control, equipos devideojuegos, control de movimiento en maquinas, transporte, deteccion de fuego y seguridad.

  • Captulo 4. Marco Teorico 31

    Figura 4.21: Microcontrolador TIVA C de Texas Instruments.

    Las caractersticas de Hardware.

    Tiene un procesador con un nucleo de 32-bit ARM Cortex-M4 de 80Mhz con un siste-ma de temporizacion (SysTick), integrado un vector de interrupcion Nested VectoredInterrupt Controller (NVIC), Wake-Up Interrupt Controller (WIC) con reloj incor-porado, proteccion de memoria Memory Protection Unit (MPU), permite operacionesde unidad de punto flotante (FPU).

    Maneja una memoria interna de 256 KB flash de ciclo sencillo que puede llegar a masde 40Mhz, 32KB SRAM de ciclo sencillo; una ROM interna cargada con TivaWare paraprogramar en C; 2 KB EEPROM.

    Tiene dos modulos de control de area (CAN), el cual usa el protocolo CAN version 2.0parte A y B con una tasa de 1Mbps.

    Controlador de USB con protocolo USB 2.0 a maxima velocidad (12Mpbs) y bajavelocidad (1.5Mbps), con 32 terminaciones y permite el modo USB OTG Host Device.

    Tiene integracion a comunicacion serial avanzada: maneja 8 UARTs con IrDA de 9bits y soporta ISO 7816; tiene 4 modulos de interfaz serial sincronica (SSI), soportaoperaciones de SPI de Freescale, MICROWIRE o interfaces seriales sincronicas propiasde Texas Instruments; maneja 4 modulos I2C, brindando velocidades estandares comoson 100Kbps y altas a 400Kbps en transmision. Soporta el envo y recepcion de datostanto en maestro como en esclavo.

    Soporta caractersticas analogicas. Tiene 2 conversores de 12 bits de senales analogicasa digital con 12 canales analogicos de entrada y una tasa de muestro de hasta 1 millonde muestras por segundo; dos comparadores analogicos, 16 comparadores digitales; unregulador de voltaje incorporado.

    Control para movimiento avanzado. Tiene 8 bloques de generadores de PWM, cadauno tiene un contador de 16 bits, dos comparadores PWM, un generador de senales

  • Captulo 4. Marco Teorico 32

    PWM, un generador de banda muerta y un selector de disparo de ADC o interrupcion;2 modulos de interfaz codificador de cuadratura (QEI).

    Maneja dos temporizadores de tipo Watchdog; tiene temporizadores de 32 bits deproposito general; temporizadores de 64bits de proposito general; 12 pines de 16, 32,64bits como comparadores de PWM.

    Mas de 43 GPIOS (dependiendo de la configuracion), con un control programable deinterrupciones de GPIO.

    Modulo de hibernacion de bajo consumo de energa, con reloj de tiempo real.

    Multiples fuentes de reloj: Oscilador de precision (PIOSC), Oscilador Principal (MOSC),un oscilador externo de 32.768Khz y un oscilador interno de 30Khz.

    Sistema de alimentacion.

    La placa de desarrollo se puede alimentar por el puerto USB que tiene para realizar elDebug y que tambien permite cargar el codigo que lo controla. Adicionalmente tiene otropuerto USB que permite alimentar al microcontrolador desde otro sistema, pero el cual nodeja hacer Debug ni cargar el software al microcontrolador. Finalmente, esta la alimentaciondirecta al microcontrolador en un pin dedicado en la placa el cual debe ingresar 5 voltios. Elmicrocontrolador se alimenta con 3.3 voltios, pero la placa en ese pin dedicado maneja unregulador de proteccion y establece el voltaje a la alimentacion necesaria.

    Figura 4.22: Pin de alimentacion externa al Tiva C.

    Software de programacion.

    Este microcontrolador se puede programar desde Keil ARM (software que permite pro-gramar microcontroladores de ARM), Energa (Programacion similar al de arduino ya que

  • Captulo 4. Marco Teorico 33

    maneja libreras similares), Code Composer Studio con IDE Eclipse que permite asociar li-breras propias de Texas Instruments como son TivaWare C que puede manipular de maneramas facil los modulos internos del microcontrolador y tambien el hardware externo disenadopara este. Tambien se puede desarrollar codigo desde la aplicacion Cloud de Code ComposerStudio, pero con limitaciones de libreras.

    Figura 4.23: Software para programa el TIVA C.(Energia, Code Composer Studio, Keil ARM)

    Modulo Bluetooth HC-05.

    EL modulo Bluetooth HC-05 es un modulo Bluetooth SPP (Serial Port Protocol) de faciluso, disenado para configurar conexiones seriales Wireless transparentes. Estas comunicacio-nes por el modo serial hacen que sea un metodo de interfaz facil de controlar desde una PCo dispositivo con Bluetooth. Este modulo brinda la opcion de intercambiar entre el modoeslavo y maestro, es decir la capacidad de enviar o transmitir datos.

    Figura 4.24: Modulo Bluetooth HC-05.

    Especificaciones de Hardware.

    Sensibilidad tpica de -80dBm.

    Mas de +4dBm en energa de transmision en RF.

    Operaciones de bajo consumo (1.8v), con entradas y salidas de 3.3 a 5 voltios.

  • Captulo 4. Marco Teorico 34

    Control de perifericos de entrada y salida.

    Interfaz UART con tasa de transmision programable.

    Tiene la antena integrada.

    Especificaciones de Conexion.

    Pin Descripcion FuncionVCC 5 Voltios Conectar a 5 voltios.GND Ground - Tierra Conectar a tierra.TXD UART TXD, senal serial que Se conecta al

    enva el Bluetooth microcontrolador en el pin RXD.RXD UART RXD, senal serial que Se conecta al

    recibe Bluetooth microcontrolador en el pin TXDKEY Codificacion Cuando se deja al aire, se

    transmiten datos.Cuando se conectaa 3.3 o 5 voltios se envia el comandoAT.

    Especificaciones de software.

    En modo esclavo tiene una tasa de transmision: 9600, bits de datos: 8, bit de parada:1, paridad: sin paridad.

    Se puede conectar el pin 9 y 8 a un led rojo y azul de manera separada. Cuando elmaestro y el esclavo son emparejados, el led rojo y azul son intermitentes en un intervalode 1 y 2 segundos, si se desconecta solo el led azul alumbrara.

    Se auto conecta al ultimo dispositivo que fue emparejado cuando este este activo.

    Para el emparejamiento, por defecto el PIN es:1234.

  • Captulo 5

    Desarrollo

    Aplicacion web

    Basicamente se busco realizar una aplicacion web que simulara una plataforma cloud quepermitiera guardar y visualizar las mediciones obtenidas en el prototipo de osciloscopio.La aplicacion web tiene un sistema de logueo para el usuario.

    Figura 5.1: Login desde un PC

    35

  • Captulo 5. Desarrollo 36

    Figura 5.2: Login desde un movil Android

    En el caso de que la persona que quiere ingresar a la plataforma no tenga usuario; tienela opcion de registrarse creando un usuario y contrasena.

    Figura 5.3: Registro en la pagina web, visto desde un PC

  • Captulo 5. Desarrollo 37

    Figura 5.4: Registro en la pagina web, visto desde un movil Android

    Al momento de ingresar el sistema le da la bienvenida y puede hacer uso de la herramienta.

    Figura 5.5: Inicio de la pagina web, visto desde un PC

  • Captulo 5. Desarrollo 38

    Figura 5.6: Inicio de la pagina web, visto desde un movil Android

    Cuando se ingresa desde el celular o en un computador y quiera subir el archivo seselecciona la opcion de subir archivo.

    Figura 5.7: Subir archivo en la pagina web, visto desde un PC

  • Captulo 5. Desarrollo 39

    Figura 5.8: Subir archivo en la pagina web, visto desde un movil Android

    Si se ingresa desde una PC y se quiere visualizar la senal se ingresa a la opcion almacen,donde permite ver todos los archivos almacenados para el usuario. Al seleccionar el archivoo el documento se ingresa a la pantalla de visualizacion de la senal.

    Figura 5.9: Ver archivos almacenados en la pagina web, visto desde un PC

  • Captulo 5. Desarrollo 40

    Figura 5.10: Ver archivos almacenados en la pagina web, visto desde un movil Android

    En este medio de visualizacion le permite ver la senal con los valores obtenidos y puedeobservar un rango definido de la senal, ya sea solo una parte o toda la senal completa.

    Figura 5.11: Visualizacion de la senal en la pagina web, visto desde un PC

  • Captulo 5. Desarrollo 41

    Figura 5.12: Visualizacion de la senal en la pagina web, visto desde un movil Android

    Finalmente esta la opcion de salir. Que le permite salir de la aplicacion y cerrar sesion.

    Diseno de fuente de alimentacion

    Para poder alimentar toda la board, se debe buscar obtener una senal dual que puedaalimentar los amplificadores operacionales con base a la senal de un adaptador de +12V.Para poder lograr este objetivo se debe pensar primero en como obtener la senal dual, paraello se propone el siguiente circuito.

    Figura 5.13: Circuito que genera senal dual

    El circuito como se puede observar la senal de entrada es de +30V, como salida se produceuna fuente dual con una tierra virtual que es totalmente diferente a la de la senal de entrada.Para lograr que la salida sea de +15V y -15V, se utiliza un divisor de voltaje compuesto pordos resistencias R1 y R2 del mismo valor y un diodo rectificador comun en serie como se veen el circuito. Los voltajes en el anodo y el catodo del diodo, estan un poco por encima y

  • Captulo 5. Desarrollo 42

    por debajo de 0 voltios y esto permite alimentar las bases de los transistores Q1 y Q2, quea su vez permiten controlar los transistores de salida Q3 y Q4. El valor maximo de corrienteque puede brindar estara limitado por dos cosas: la corriente maxima que puede producir lafuente de alimentacion y la corriente que soporten los transistores de salida Q3 y Q4.

    Ahora ya que se tiene la produccion de la senal dual, se entiende como se podra alimen-tar los amplificadores operacionales; pero queda pendiente el como poder obtener los 30Voltios de entrada al circuito.Para lograr esto, se debe emplear un circuito convertidor DC a DC conocido como Boost. Elcircuito que se emplea en este proyecto se desarrolla busca tener una dimension pequena yde gran sencillez; por lo tanto se empleo un circuito integrado que permita esta tarea.El XL6009 de Kylinchip Electronic (de Shanghai), es un regulador que permite como entradaun rango amplio de voltaje el cual se comporta como conversor DC a DC que permite generarsenales de voltaje tanto positivas como negativas. Este puede ser configurado como Boost,Flyback o conversor inversor. A continuacion se muestra el circuito que permite funcionarcomo Boost al integrado XL6009.

    Figura 5.14: Circuito Boost, con el integrado XL6009

    Como se puede observar, se tiene los pines tanto de entrada como salida de voltaje. Parapoder variar el voltaje de salida del circuito es variando el potenciometro de 100K. El in-tegrado permite salidas maximas de 35 voltios lo cual es suficiente para el proposito que sebusca.

    Con esto se tiene definido todo el circuito para producir una fuente dual de 15 voltios.Ahora falta producir las senales de voltaje +5V, +3.3V y 12V. La senal de 12V sonlos que alimentaran los amplificadores operacionales, los +5V permitiran alimentar modulosdel generador de senales y el microcontrolador Tiva C. finalmente se usa el valor 3.3V paralimitar la senal en el modulo de analizador logico y tambien para la referencia que usara elDAC en el modulo de generador de senales.Para lograr este proposito lo unico que hay que realizar es poner en cascada los circuitos

  • Captulo 5. Desarrollo 43

    integrados que funcionen como reguladores. Hay en el mercado reguladores que producensenales de salida como +12V, -12V, +5V y +3.3V as que es la solucion mas sencilla.

    Aplicacion Android

    Esta aplicacion fue disenada para ser compatible con dispositivos con sistema operativoAndroid version mayor o igual a 4.4.4 Kit Kat. Es necesario que el dispositivo sea compati-ble con el sistema de comunicacion bluetooth del tipo clasico, ya que permite un mayor flujode datos a diferencia del bluetooth LE (Low Energy) el cual maneja un protocolo distinto decomunicacion. La comunicacion se realizara entonces con el modulo bluetooth HC06 el cualpermite la comunicacion inalambrica como si se tratara de una comunicacion serial. Es decir,se hace transmision de datos por lo general de ocho bits y a una velocidad predeterminadade baudios.La primera vez que es utilizado el modulo Bluetooth, es necesario que sea sincronizado con elcelular antes de iniciar la aplicacion. La forma de hacerlo es ingresando a la configuracion delcelular, activar el Bluetooth e iniciar una busqueda de dispositivos. Se selecciona el moduloHC06 el cual tendra el nombre que se le haya configurado y se solicitara el PIN de vinculacioncon el modulo, que por lo general es 0000 o 1234 sin las comillas. Esto permitira quesea incluido en la lista de dispositivos sincronizados y pueda ser accedido desde la aplicacion.Dicha tarea solo requiere ser realizada una unica vez a menos de que el dispositivo haya sidoeliminado de la lista de dispositivos sincronizados.La aplicacion no requiere que el Smartphone tenga que ser modificado de alguna maneraen terminos de Hardware, ni de software o sistema operativo, no requerira que se encuentreruteado ni con una aplicacion adicional.A continuacion se explicara detalladamente en que consiste cada una de las actividades dela aplicacion, se describiran las interfaces graficas correspondientes, las clases y funcionescreadas para garantizar la comunicacion con el modulo y la visualizacion de las formas deonda correspondientes.

    Actividad de Seleccion de dispositivo: DeviceListActivity

    Esta actividad es la que se lanza al inicio de la aplicacion. Es la que permite realizar laconexion al modulo bluetooth con el cual se establece la comunicacion serial con la board.En esta actividad se declara el objeto mBtAdapter de la clase BluetoothAdapter [41], elcual permite consultar la lista de dispositivos previamente emparejados con el Smartphonee instanciar un objeto bluetooth (BluetoothDevice [42]) a partir de una MAC conocida.

  • Captulo 5. Desarrollo 44

    Figura 5.15: Diagrama de Herencia para DeviceListActivity

    La actividad se crea configurando la interfaz de usuario con el layout [43] activity device list,el cual esta formado por TextViews [44] y un ListView [45]. Al resumirse la actividad, se veri-fica que el bluetooth este activado en el dispositivo mediante el metodo checkBtState(). Si elbluetooth se encuentra desactivado, se lanza la solicitud de permiso para activarlo medianteun Intent [46], como se muestra en la figura 5.16.

    Figura 5.16: Imagenes en aplicacion de Bluetooth

    Cuando el bluetooth esta activado en el Smartphone, se despliega la lista de dispositivoscon los que ha sido sincronizado en algun momento. Para que se muestre en pantalla eldispositivo bluetooth con el cual se hara la conexion, es necesario que sea sincronizado [47]

  • Captulo 5. Desarrollo 45

    en la configuracion de Android. Los elementos listados se mostraran con informacion delnombre del dispositivo y direccion MAC, como se muestra en la figura 5.17.

    Figura 5.17: Imagenes de seleccion de dispositivo Bluetooth

    Al seleccionar uno de los dispositivos de la lista, se ejecuta un Intent que inicia la activi-dad SelectActivity, y enva en el Intent la informacion de la direccion MAC del dispositivoseleccionado.

    Actividad de seleccion de funcion: SelectActivity

    Esta actividad permite seleccionar la funcion a realizar, siendo las opciones disponiblesOsciloscopio, Generador, Analizador Logico y Subir datos. Implementa la interface OnClic-

  • Captulo 5. Desarrollo 46

    kListener [48], la cual permite informar cuando se registre un evento de toque sobre el Viewde la actividad.

    Figura 5.18: Imagenes en aplicacion de Bluetooth

    El metodo onClick() asociado a esta interface se encarga de identificar el elemento queha sido seleccionado de los cuatro botones disponibles, creando un Intent sobre el cual seenviara la informacion con la direccion MAC del dispositivo Bluetooth, para posteriormenteiniciar la actividad asociada a cada intent.

  • Captulo 5. Desarrollo 47

    En el metodo de creacion (onCreate()) la actividad se configura el layout o interfaz graficaque consta de un TextView y cuatro Buttons [49]. Al seleccionar uno de estos botones, selanzara mediante un Intent la actividad correspondiente a la opcion escogida. Este Intentcontiene tambien la informacion de la direccion MAC del dispositivo.

    Figura 5.19: Seleccion de actividad en la aplicacion

    Clase para manejo de la comunicacion Bluetooth: BluetoothRf-commClient

    Esta clase permitira que se pueda establecer comunicacion con el dispositivo bluetooth.Para que se puedan leer las propiedades del adaptador bluetooth local y encontrar los disposi-tivos emparejados, es necesario incluir los permisos BLUETOOTH ADMIN y BLUETOOTHen el Android Manifest. Esta clase tiene como atributos los siguientes elementos:

  • Captulo 5. Desarrollo 48

    Clase\ Objeto FuncionUUID MY UUID Almacena el identificador unico del

    tipo de dispositivo Bluetooth con elque se hara la conexion.

    BluetoothAdapter mAdapter Objeto encargado de representar eladaptador bluetooth local.

    Handler mHandler Objeto que permite comunicarsecon la interfaz de usuario.

    ConnectThread mConnectThread Objeto que representa elthread encargado de establecerconexiones.

    ConnectedThread MConnectedThread Objeto que representa el threadencargado de manejar conexionesestablecidas.

    int mState Variable que representa el estadode la conexion, descrita por los tresatributos constantes de la clase.

    Final int STATE NONE Constante que indica que no hayninguna conexion establecida. Ni seesta intentando realizarla. Suvalor es 0.

    Final int STATE CONNECTING Constante que indica que se estaintentando establecer una conexion.Su valor es 1.

    Final int STATE CONNECTED Constante que indica que hay unaconexion establecida. Suvalor es 2.

    El constructor de esta clase recibe el context y el handler que maneja la comunicacioncon la interfaz de usuario. Asigna al objeto mAdapter el adaptador local mediante el metodogetDefaultAdapter() de la clase BluetoothAdapter. Asigna a la variable mState el valor STA-TE NONE y asigna el handler recibido al objeto local mHandler. Esta clase maneja threadsque pueden modificar los valores de variables u objetos de la misma. Para que esto se puedarealizar sin intervencion de otros threads que tambien intenten modificar una misma variable,se utilizan metodos sincronizados, los cuales evitan que varios threads intenten modificar unavariable al mismo tiempo, lo cual puede causar conflictos.SetState es un metodo sincronizado que configura el estado actual de la conexion, y enva asu vez dicha informacion al handler para ser actualizado en la interfaz de usuario.GetState es otro metodo sincronizado que retorna el estado actual de la conexion. El Metodosincronizado Start() inicializa el cliente RFCOMM. Cancela los threads que esten intentandoestablecer una conexion o que tengan una conexion activa. Luego, asigna a la variable mStateel valor STATE NONE. Un objeto de la clase BluetoothDevice [50], representa un dispositivo

  • Captulo 5. Desarrollo 49

    bluetooth. Con este es posible crear una conexion con el dispositivo, o consultar informacionacerca del mismo, como el nombre, direccion, clase y estado de conexion.El metodo sincronizado Connect(BluetoothDevice) recibe como argumento un objeto de claseBluetoothDevice. Este metodo cancela todo thread que se encuentre intentando realizar unaconexion, y cancela los threads de conexiones existentes. A continuacion crea una instanciadel thread para establecer conexiones ConnectThread y lo inicializa. Luego se establece seasigna el valor STATE CONNECTING a la variable mState para indicar que se esta inten-tando una conexion.La clase BluetoothSocket [51] instancia objetos que permiten representar un punto final decomunicacion bluetooth entre dos dispositivos. El tipo mas comun de socket bluetooth esel RFCOMM, el cual es el tipo soportado por las APIs de Android. RFCOMM maneja unstreaming de transporte sobre bluetooth orientado a la conexion. Es conocido tambien comoel Perfil de puerto serial SPP.El metodo sinctronizado connected() es ejecutado al momento de que se ha establecido unaconexion exitosa con el dispositivo Bluetooth. Este metodo recibe como argumentos un obje-to de la clase BluetoothSocket y un objeto de la clase BluetoothDevice. La primera tarea querealiza es cancelar el thread que ha completado la conexion. Luego de esto, cancela todos losthreads que hayan establecido una conexion, para evitar que interfieran con la conexion ac-tual. A continuacion se crea la instancia del thread que se encarga de manejar la conexion quepermite transmitir la informacion. Se inicializa con el metodo start(). Luego de esto, se envael nombre del dispositivo conectado a la actividad de interfaz de usuario, usando el handler.Finalmente, se configura el estado de la conexion a STATE CONNECTED, que indica quehay una conexion establecida. El metodo sincronizado stop() detiene todos los threads deintento de conexion y conexiones establecidas. Luego cambia el estado a STATE NONE.El metodo write(byte) escribe un arreglo de tipo byte. Primero se crea un objeto temporal dela clase ConnectedThread. Si hay una conexion establecida, es decir, el estado de la conexiones STATE CONNECTED, se crea una copia del thread de conexion en el objeto temporal,y luego se realiza la escritura con el metodo write() del thread, pasandole como argumentoel arreglo de tipo byte.El metodo ConnectionFailed() indica que el intento por establecer una conexion ha presen-tado fallas y se notifica a la actividad de interfaz de usuario mediante un toast. Primero seconfigura el estado de la conexion a STATE NONE, y luego mediante el handler se comunicaa la actividad de intefaz de usuario que la conexion no pudo ser establecida.El metodo ConnectionLost() es llamado cuando se ha detectado que la conexion se ha per-dido. Se encarga de comunicar a la actividad de interfaz de usuario acerca de este incidente.Primero se configura el estado de la conexion a STATE NONE y luego mediante el handlerse enva el mensaje a la interfaz de usuario.

    Thread para el establecimiento de conexiones ConnectThread:Este thread se mantiene en ejecucion cuando se intenta establecer una conexion con un dis-positivo. Deja de correr cuando se ha podido hacer una conexion exitosa o si despues deun intervalo tiempo determinado no es posible establecerla. Tiene como atributos un objetodenominado mDevice de la clase BluetoothDevice y uno denominado mSocket de la clase

  • Captulo 5. Desarrollo 50

    BluetoothSocket. El constructor recibe como parametro un objeto de la clase BluetoothDe-vice y lo asigna al valor local. Para inicializar el objeto BluetoothSocket se crea una variabletemporal de la misma clase y mediante un try se utiliza el metodo createRfcommSocketTo-ServiceRecord sobre el objeto device que recibe como parametro el UUID utilizado cuando serealizaran conexiones con dispositivos bluetooth que manejan serial. Si la creacion del Socketha sido exitosa, se asigna el objeto temporal a la variable local.El metodo run() de este Thread inicia cancelando cualquier intento de descubrimiento dedispositivos, con el metodo cancelDiscovery() del objeto que se ha instanciado del adaptadorbluetooth mAdapter. A continuacion se intenta establecer la conexion con el socket blue-tooth, mediante el metodo connect() del objeto mSocket, esto podra generar algun error almomento de la ejecucion, por lo que se pone dentro de una estructura para la gestion deexpeciones, try-catch. Si no se genera ninguna excepcion, se finaliza el thread para el intentode conexion, y luego se inicializa se llama al metodo connected(), para poder manejar laconexion que acaba de ser establecida, pasando como argumentos los objetos mmSocket ymmDevice.Si ocurre una excepcion, se ejecuta el metodo connectionFailed(), para actualizar el estadode la conexion. Luego de esto, mediante un try-catch se intenta cerrar el socket mediante elmetodo close() del objeto mSocket.

    Thread para el manejo de conexiones establecidas ConnectedThread:Este thread se ejecuta durante la conexion con un dispositivo. Se encarga de manejar lastransmisiones entrantes y salientes. Cuenta con tres atributos. Un objeto de la clase Blue-toothSocket, mmSocket; un objeto de tipo InputStream, mmInStream; y un objeto de laclase OutputStream, mmOutStream. El constructor recibe un objeto de tipo BluetoothSoc-ket y lo asigna a la variable local mmSocket. Los valores socket.getInputStream() y soc-ket.getOutputStream() alimentaran las otras variables locales, realizando la asignacion me-diante variables temporales y una estructura try-catch.El metodo run() de este thread tiene otras dos variables locales; una es un arreglo de tipobyte denomindado buffer que sera donde se almacenen los datos de la transmision recibida, yla variable bytes, que almacenara la cantidad de bytes recibidos. Mediante un bucle infinitose realiza la lectura de las transmisiones entrantes, con una estructura try-catch. Dentro deltry se ejecuta la instruccion:

    bytes = mmInStream.read(buffer);

    El metodo read() [52] recibe como argumento la variable buffer y almacenara en ella los datosde la transmision. En bytes se guardara la cantidad de bytes que han sido recibidos. Estemetodo no avanzara hasta que no haya datos de entrada disponibles, se haya detectado unfinal de archivo o se lance una excepcion. Luego, este mensaje que ha sido recibido, se envaa la actividad de interfaz de usuario, haciendo uso del handler. Si llega a lanzarse una excep-cion, se ejecuta el metodo connectionLost() y se finaliza el bucle infinito con la instruccionbreak.El metodo write() del thread recibe como argumento un arreglo de tipo byte. Mediante el

  • Captulo 5. Desarrollo 51

    metodo write del objeto mmOutStream transmite los datos del arreglo al dispositivo blue-tooth.

    Actividad para la visualizacion de senales: PlotActivity

    Esta actividad es una clase abstracta que permite manejar la conexion bluetooth con eldispositivo bluetooth vinculado a la board para enviar datos, recibir datos, y graficar losdatos recibidos. Esta clase no esta asociada a un archivo de layout, por lo cual no tiene unainterfaz de usuario [? ]. Sin embargo partir de ella se heredan las actividades para las funcio-nes de Osciloscopio, Generador y Analizador Logico, las cuales si cuentan con una interfazde usuario, establecida de acuerdo al tipo de funcion que se realizara. Como clase padre, per-mite establecer atributos y metodos generalizados, que heredaran las clases hijas los cualespodran a su vez modificarse en las clases hijas para comportarse de acuerdo a las necesidadesparticulares de cada una.

    Figura 5.20: Diagrama de Herencia

    Dentro de la definicion de esta clase, se cuenta con diferentes atributos como por ejemploconstantes que permiten manejar la conexion bluetooth e identificar ciertos comandos pro-venientes de la comunicacion para la ejecucion dentro de la actividad. El metodo de creacion(onCreate()) de esta actividad se encarga de ajustar la visualizacion a pantalla completa yverificar que la conexion bluetooth esta disponible; en caso de no estarlo, se finalizara laactividad. La actividad no se asocia a ningun archivo de layout, ya que estoy lo hara cadaclase hija sobrescribiendo el metodo de creacion, heredando el metodo de creacion de la clasey haciendo la asociacion al layout respectivo.En el metodo de inicio (onStart()) se verifica que el bluetooth este habilitado. En caso de noestarlo, se finaliza la actividad y regresa a la actividad anterior. Si se encuentra activado, severifica si el objeto de cliente bluetooth ya ha sido creado. Si no es as, se procede a ejecutarel metodo abstracto de inicializacion, setUpScope().Dentro del metodo de resumen se verifica que el objeto de cliente bluetooth ha sido creado,y se verifica su estado. En caso de estar en STATE NONE (que no se esta haciendo nada) seinicializa el servicio de comunicacion.

  • Captulo 5. Desarrollo 52

    En el metodo de pausa (onPause()) se procede a detener el servicio del cliente bluetooth,esto sucede cuando la actividad se cierra o se cambia a segundo plano.Se define el metodo abstracto setUpScope(), el cual se implementa en las clases hijas, loque permite que se comporte de acuerdo a la funcion a realizar, ya sea la de osciloscopioo la de generador. El metodo BTconnect() se encarga de realizar la conexion al dispositivoBluetooth. Esto mediante la creacion de un objeto llamado device de la clase BluetoothDevi-ce. Este objeto se inicializa con el valor recibido por el metodo getRemoteDevice del objetode la clase BluetoothAdapter, pasandole la direccion MAC recibida en la informacion delintent. Luego se realiza la conexion con el dispositivo usando el metodo connect del objetomRfcommClient, pasando como argumento el objeto device.El metodo sendMessage() recibe un elemento de tipo String, el cual sera transmitido porel dispositivo. Antes de intentar enviar el mensaje se verifica que la conexion se encuentreestablecida. Se obtiene el status del dispositivo y en caso de no estar conectado, se notificamediante un Toast [49] que no hay ningun dispositivo conectado y se retorna. Si la conexionesta establecida, se verifica que la cantidad de caracteres a transmitir sea mayor a cero. Elmensaje de tipo String debe convertise a bytes para poder ser transmitido, esto aplicando elmetodo getBytes() del objeto String y almacenando el resultado en el arreglo de tipo bytellamado send. Este objeto se pasara como argumento del metodo write() del objeto mRf-commClient.El metodo get12BitsData() se encarga de tomar los datos recibidos en la comunicacion, yconvertirlos en valores de 12 bits. Los valores recibidos en la comunicacion vienen ordenadosen parejas de byte alto y byte bajo, cada uno con una bandera que indica la posicion delbyte, para que al hacer la reconstruccion del dato completo, se eviten errores por perdida dealgun dato. Luego de obtener los datos recuperados, se retorna un arreglo con estos valores.

    Clase para el trazado de los datos en pantalla: PlotView

    Esta clase permite crear un View con el cual se pueden dibujar las graficas de los datosrecibidos. Se hereda de la clase SurfaceView [50], la cual proporciona una superficie dedicadade dibujo dentro de una jerarqua de View. Esta clase implementa ademas la interface Surfa-ceHolder. Callback [51] la cual recibe informacion de los cambios de la superficie de dibujo,tales como cuando es creada, cambiada o destruida. Estos eventos son importantes ya quepermiten saber cuando se puede empezar a dibujar, si se deben hacer ajustes basados ennuevas propiedades de la superficie, o cuando parar de dibujar y liquidar procesos.

  • Captulo 5. Desarrollo 53

    Figura 5.21: Diagrama de Herencia para PlotView

    Mediante un objeto de la clase DisplayMetrics se obtienen las dimensiones del disposi-tivo, es decir, el ancho y alto de la pantalla, valores que se usaran para la definicion de loslmites del area trazable en la pantalla. Para ubicarse en el Canvas y poder realizar trazos,hay que tener claro el sistema de coordenadas que utiliza esta clase. Este sistema es relativoa la orientacion de la pantalla del telefono, ya sea vertical u horizontal. En la imagen 5.22 sepuede visualizar que los ejes X y Y tiene origen en la parte superior izquierda de la pantalla.El eje X aumenta ascendentemente de izquierda a derecha y alcanza su valor maximo en elextremo derecho de la pantalla. El eje Y aumenta ascendentemente de arriba hacia abajo yalcanza su valor maximo en el extremo inferior de la pantalla:

    Figura 5.22: Eje X y eje Y en la pantalla de Android

    La clase Canvas representa una superficie donde se puede dibujar. Cuenta con metodospara la representacion de puntos, lneas, crculos, etc. Para dibujar en esta superficie se re-quiere un pincel (Paint) el cual permite definir caractersticas del trazo tales como color,grosor, transparencia, etc. Para graficar la senal se crea los siguientes Paint:

  • Captulo 5. Desarrollo 54

    Paint DescripcionCh1Color Define el color del trazo de la senalgridPaint Define el color del trazo de la cuadriculaoutlinePaint Define el color de los bordes del area de trazado

    El framework de APIs de Android proporciona un conjunto de APIs de dibujo 2D quepermite crear graficas personalizadas en un canvas. La mejor opcion para realizar el trazadode graficas en 2D, es dibujar directamente en un Canvas, usando el metodo onDraw() [51]y pasando como argumento el Canvas en cuestion. Mediante el uso de un Thread separado,se maneja el SurfaceView, y realiza los dibujos tan rapido como el Thread lo permita. Lainterface SurfaceHolder.Callback requiere la implementacion de los tres metodos indicadosen la Tabla 1:

    Metodo Publico Intervencion ImplementacionsurfaceCreated Es llamado inmediatamente Se inicializa el Thread para(SurfaceHolder holder) la superficie es creada el trazado: plotThread.start()

    por primera vezsurfaceChanged Es llamado inmediatamente Ninguna.(SurfaceHolder holder, despues de que algunint format, int width, cambio que se ha hechoint height) a la superficie.surfaceDestroyed Es llamado inmediatamente antes Se detiene el Thread para(SurfaceHolder holder) de que la superficie es destruida. el trazado: plotThread.join()

    Cuadro 5.1: Metodos de la interface SurfaceHolder.Callback

    El metodo plotPoints(canvas) es llamado dentro del metodo de onDraw(canvas) y se en-carga de realizar las siguientes tareas de forma consecutiva:

    1. Limpiar el View para que al realizar un nuevo trazado, no queden rastros del trazadoanterior. Esto se logra mediante el metodo canvas.drawColor(color), el cual recibe comoargumento un elemento de tipo int que define un color RGB con el cual se rellenacompletamente el View, cubriendo uniformemente toda la superficie, borrando a su veztodo lo que se haya dibujado anteriormente.

    2. Luego de pintar el fondo, se llama el metodo drawGrid(canvas), el cual se encarga de:

    Calcular la cantidad de divisiones horizontales que habra en la grafica, de talmanera que esten separadas entre s por 80 pixeles.

  • Captulo 5. Desarrollo 55

    Se itera entonces sobre esta cantidad de divisiones y se traza una lnea vertical paradelimitarlas, usando el metodo drawline [53]. Este metodo dibuja un segmento delnea con las coordenadas X, Y de inicio y fin del trazo, usando el paint especificado,en este caso gridPaint.

    Se establece que las divisiones verticales sean 10 en total.

    Se itera sobre las divisiones verticales, trazando lneas horizontales para delimi-tarlas, usando nuevamente el metodo drawline, ingresando los parametros de lascoordenadas de inicio y fin, y el gridPaint.

    Se realiza el trazado del margen exterior de la grafica, usando nuevamente el meto-do drawline para trazar las lneas en los bordes y usando la brocha outlinePaint.

    3. Los datos recibidos de la comunicacion, se encuentran almacenados en un arreglo yse utilizan como puntos coordenados. Se itera sobre el ancho del View de izquerda aderecha, ubicando cada punto y uniendolo al siguiente con una lnea recta generadacon el metodo drawline.

    El metodo setData es el que se encarga de recibir el arreglo de los datos que fueron reco-lectados y ajustados mediante la comunicacion bluetooth por el handle