UNIVERSIDAD VERACRUZANA

FACULTAD DE INSTRUMENTACION´ ELECTRONICA´

Sistema de Portero Electr´onico Utilizando la Tarjeta de Desarrollo Pandaboard y Comunicaci´on con

TESIS

Que para obtener el grado de Maestro en Ingenier´ıa Electr´onica y Computaci´on

Presenta Abel Porfirio Ochoa Aguilar

Director de la tesis: Dr. Agust´ın Gallardo del Angel´ Co-Director de la tesis: Ph.D() Jorge Eduardo P´erez-J´acome Friscione

Xalapa-Enr´ıquez, Ver. Enero, 2014 ii iv Agradecimientos

Cuando decides algo de forma consciente por mucho tiempo, esa idea se graba en el subconsciente, s´ıa esa idea le das fuerza con fe, esfuerzo y dedicaci´on, el universo guiar´atu camino hasta conseguirlo; a tu alrededor coincidir´as con personas que apoyaran tu esfuerzo, que allanar´an tu camino y te ayudar´an a superar los obst´aculos. A pesar de los tropiezos, vivencias y experiencias adquiridas durante el tiempo de mis estudios en la maestr´ıa, me d´ıcuenta que existen personas que sin conocerte, pueden extenderte la mano sin pedir nada a cambio; en algunos de esos momentos cre´ı no merecerlo, le pido a Dios que todo lo bueno que me dieron se les multiplique; en esta etapa de mi vida s´ıalgo he aprendido es por lo menos a dar las gracias de todo coraz´on. Mis padres me ense˜naron a tener fe, a no bajar los brazos ni la cabeza a pesar de las situaciones, a aceptar que a veces se requiere pedir ayuda y no or eso perdemos dignidad, sobre todo a dar gracias por la misma. Gracias por motivarme a seguir adelante en mis estudios, este logro tambi´en es suyo. A Luz del Carmen, mi esposa, le agradezco todo el apoyo que me ha dado desde que nos conocimos, al igual que su esfuerzo y dedicaci´on con nuestros hijos. Agradezco la gran lecci´on que me dio durante el embarazo y nacimiento de nuestro hijo, a pesar de todo, inclusive de poner en riesgo su vida con tal de dar vida, nunca se dio por vencida; eso para m´ıes inalcanzable. A mi hija Amairani agradezco su amor, a pesar de no dedicarle mucho tiempo en esta etapa, tal vez sin comprenderlo, pero siempre me ha sonre´ıdo y me ha dado su amor y cari˜no. Tu inteligencia y capacidad de an´alisis abrir´an muchas puertas en tu vida, en verdad deseo que en el camino que tomes siempre exista la felicidad. A mi hijo Adael Sebasti´an, desde que nos enteramos que estabas en este mundo no hiciste otra cosa m´as que luchar por tu vida y ese regalo nos trajo felicidad a todos los que te rodeamos; hijo despu´es de lo que lograste junto a tu mami, se que en tu vida llegaras hasta donde quieras, tienes una fuerza de voluntad impresionante. A mi Director de Tesis, Dr. Agust´ın Gallardo del Angel,´ a mi Co-Director de Tesis, Dr. Jorge Eduardo P´erez-J´acome Friscione; agradezco enormemente su apoyo y dedicaci´on para la realizaci´on del proyecto, sin ustedes este sue˜no no podr´ıa haberse convertido en realidad. Con su ejemplo y motivaci´on no me quedo otro camino m´as que intentar seguir sus consejos para llegar a la meta. Muchas gracias. Al Dr. Roberto Casta˜neda Sheissa, usted me ense˜no que no hay coincidencias en la vida, que no existen obst´aculos que no se puedan superar, que si la idea es firme y se apoya con esfuerzo, el universo conspira para conseguirse; muchas gracias por sus consejos, apoyo y ejemplo. A los miembros del comit´erevisor de la tesis, gracias por sus comentarios y correcciones para lograr este documento, gracias por el enorme apoyo que me otorgaron. Gracias tambi´en al personal acad´emico de la Maestr´ıa, por compartir sus conocimientos en las materias que curs´e, quisiera haber tenido m´as tiempo para aprovechar su preparaci´on y experiencia. Gracias tambi´en a mis compa˜neros y amigos de estudios, sin el trabajo en equipo no habr´ıa sido posible avanzar en mis estudios. Donde quiera que se encuentren les deseo lo mejor. De manera particular, agradezco el apoyo recibido por el Mtro. Isa´ıas San Gabriel Colorado y el Lic. Rodrigo Javier Ruiz L´opez, quienes me brindaron un gran apoyo durante la maestr´ıa, al igual, para poder concluir la tesis. Dios, sin ti nada hubiera sido posible, para m´ı, estas en todas y cada una de las personas que hice menci´on, porque s´eque estas guiando mi vida, que cuidas mis pasos y de todos los que me rodean. GRACIAS

v vi Resumen

El presente trabajo muestra c´omo es posible la integraci´on de tecnolog´ıa m´ovil, una tarjeta de harware multiprop´osito y una simple c´amara web para implementar un sistema que utilice la red de Internet para transmitir informa- ci´on de forma remota con un tiempo de respuesta de pocos segundos.

En la actualidad, se tiene una gran apertura en el uso de tecnolog´ıas que fa- cilitan las labores cotidianas en trabajos, investigaciones, escuelas e inclusive en los hogares. Mediante el uso de Smartphones se integran funciones variadas que permiten tomar fotograf´ıas, escuchar musica, ver v´ıdeos, llevar a cabo video- conferencias y realizar llamadas entre dos o m´as usuarios de tel´efonos m´oviles o fijos.

En este proyecto se desarrollar´aun sistema mediante el cual un usuario que cuente con un pueda darse cuenta de qui´en esta tocando el timbre de su domicilio, utilizando una aplicaci´on que recibe una imagen directamente de una c´amara web conectada a una tarjeta de desarrollo dedicada a sensar el timbre, de tal manera que cuando el timbre sea oprimido la tarjeta utilice la c´amara para obtener una fotograf´ıay a trav´es de una conexi´on a la red de Internet la haga llegar al Smartphone.

En el presente documento se mostrar´an los procesos de creaci´on del sistema de Portero Electr´onico, as´ıcomo las consideraciones que se tomaron en cuenta para elegir el software, hardware y recursos necesarios para lograr la finalidad del proyecto, de tal manera que este texto sirva como herramienta en alg´un otro proyecto que requiera de las funciones que aqu´ıse llevan a cabo.

vii viii RESUMEN ´Indice general

Resumen VII

1. Introducci´on 1 1.1. Historia ...... 1 1.2. Problem´atica ...... 2 1.3. Propuesta ...... 2 1.4. Organizaci´ondeltrabajo ...... 3

2. Hardware 5 2.1. Pandaboard ...... 5 2.2. C´amaraweb...... 10 2.3. Smartphone ...... 11

3. Software 15 3.1. SistemaOperativo ...... 15 3.1.1. Ubuntu ...... 16 3.1.2. Android ...... 19 3.2. Almacenamientoenlanube ...... 22 3.2.1. GoogleDrive ...... 24 3.2.2. Grive...... 25 3.2.3. Instalaci´on de Grive ...... 27 3.3. QtyQtCreator...... 29 3.3.1. Qt ...... 30 3.3.2. QtCreator ...... 30 3.4. APPInventor ...... 33 3.4.1. Uso de OAuth 2.0 para acceder a las API de . . . 34 3.4.2. Aplicaciones de servidor Web ...... 37 3.4.3. Aplicaci´on del proyecto ...... 37

4. Pruebas 43 4.1. Medicionesdetiempo...... 43

ix x ´INDICE GENERAL

4.2. Repetibilidad ...... 45 4.3. Integraci´ondelsistemacompleto ...... 46

5. Resultados y Conclusiones 49 5.1. Resultados...... 49 5.2. Conclusiones...... 51 ´Indice de figuras

2.1. PuertosdelatarjetaPandaboard...... 6 2.2. EsquemainternodelatarjetaPandaboard...... 7 2.3. PuertosI/OenlatarjetaPandaboard...... 9 2.4. C´amaraweb...... 11 2.5. Smartphoneutilizadoenelproyecto...... 13

3.1. Alojamientoenlanube...... 23 3.2. PantalladebienvenidadeQtCreator...... 31 3.3. Pantalla de aplicaci´on de c´amara desarrollada en Qt Creator. . . 32 3.4. Pantalla de dise˜no de aplicaci´on en App Inventor...... 34 3.5. Pantalla de programaci´on en bloques en App Inventor...... 35 3.6. Proceso de autentificaci´on Web de OAuth 2.0...... 38 3.7. Pantalla de inicio de la aplicaci´on...... 39 3.8. AccesoacuentadecorreodeGmail...... 39 3.9. Permisoparausaraplicaci´on...... 40 3.10. B´usqueda de la ´ultima imagen registrada...... 41 3.11. Ultima´ imagen registrada en el sistema...... 41

4.1. Esquema completo del sistema...... 47

5.1. Disipadoradaptadoa latarjetaPandaboard...... 50

xi xii ´INDICE DE FIGURAS Cap´ıtulo 1

Introducci´on

En este proyecto se busca cubrir la necesidad de saber qui´en toca la puerta de alg´un domicilio o negocio, desde un lugar remoto; para esto se debe contar con conexi´on a Internet tanto en el domicilio como en el dispositivo donde se quiera recibir la informaci´on. En la realizaci´on del proyecto se desarrollaron aplicaciones basadas en software libre utilizando como hardware la tarjeta mul- tiprop´osito Pandaboard y un Smartphone, ´este ´ultimo con sistema operativo Android versi´on 2.3.6. A lo largo del proyecto se describir´ac´omo se puede con- verger con tecnolog´ıas m´oviles y fijas, utilizando como puente el uso de la red de Internet, para solucionar problemas comunes.

1.1. Historia

Algo que es parte de la vida cotidiana es atender a cualquier persona que se acerque a tocar la puerta del domicilio; para facilitar esta labor se hizo com´un el uso de timbres, en algunos casos intercomunicadores y en otros sistemas de videovigilancia; estos ´ultimos se utilizan generalmente en empresas privadas. Su funci´on es hacer saber a la persona que habita en el interior del domicilio que alguien est´atocando, cuando se encuentre alejada de la puerta y no le sea posible darse cuenta de una manera directa de este hecho. Cuando no se encuentra nadie en el domicilio en ocasiones se dejan recados o bien se avisa a alg´un vecino; en la actualidad se est´aperdiendo esta costumbre debido a factores como la inseguridad y desconfianza a las personas que nos rodean, esto hace complicado el saber quien toc´oa la puerta y mucho menos en qu´emomento sucedi´o. Analizando esta situaci´on se busca una soluci´on pr´actica y con un bajo costo que ayude a saber qui´en se acerca a tocar la puerta cuando no haya nadie en el interior.

1 2 CAP´ITULO 1. INTRODUCCION´ 1.2. Problem´atica

El proyecto plantea resolver de manera pr´actica y ´agil, el env´ıo de una alerta al Smartphone de una persona que se encuentre fuera de su domicilio o negocio, mediante la cual pueda darse cuenta de que alguien llama a su puerta; de igual manera, a trav´es de una imagen, mostrarle quien es la persona que est´afuera de su domicilio.

Algunas de las inc´ognitas que encontramos al buscar una soluci´on pr´actica y confiable para que se pueda recibir de forma remota una imagen son: ¿c´omo se puede obtener una imagen que pueda ser enviada a un destinatario remo- to?, ¿qu´ehardware permite la adquisici´on de la informaci´on de la c´amara y que adem´as sea compatible con redes Wi-Fi o Ethernet?, ¿de qu´e manera se puede hacer llegar a un Smartphone la imagen adquirida?, ¿c´ual Smartphone ser´acompatible con la aplicaci´on?.

Por otro lado, el hardware tambi´en debe ser compatible con software mul- tiplataforma para facilitar la integraci´on del sistema y lograr la finalidad del proyecto de una manera satisfactoria, al igual, buscar software libre que reduz- ca los costos de su implementaci´on.

Tomando estas consideraciones debemos buscar tecnolog´ıas fijas y m´oviles que permitan el uso de redes de datos e Internet de una manera ´agil y confiable para reducir los tiempos de respuesta del sistema, de esta manera se ofrecer´ala mejor soluci´on posible a la problem´atica del proyecto.

1.3. Propuesta

Una soluci´on al problema que se plantea en el proyecto es que mediante el uso de tarjetas de desarrollo y software libre multiplataforma se desarrolle un sistema de env´ıode im´agenes obtenidas de una c´amara web utilizando la red de Internet, pudiendo obtener dicha imagen en un Smartphone; con lo cual se lograr´aque las personas que cuenten con un Smartphone puedan saber qui´en toca a su puerta; siempre y cuando cuenten con comunicaci´on de datos y acceso a Internet ya sea por medio de su proveedor de servicios o bien por alguna red Wi-Fi a la que tengan acceso en el lugar donde se encuentren al momento del suceso. Algo importante a tomar en cuenta es que se buscar´a conseguir el menor tiempo posible de respuesta desde el momento en que se toque el timbre hasta que se reciba la imagen, por lo que se buscar´an las herramientas de hardware y software que agilicen los procesos, garanticen su funcionalidad 1.4. ORGANIZACION´ DEL TRABAJO 3 y operaci´on, con una respuesta en tiempo real; esto significa que el sistema realizar´alas funciones de transferencia de la imagen en el momento en que se active el timbre y el tiempo de respuesta depender´adel tiempo que tarde la transferencia y sincronizaci´on de informaci´on entre la tarjeta de desarrollo y el Smartphone.

1.4. Organizaci´on del trabajo

Para llevar a cabo el proyecto se utilizar´ala tarjeta de desarrollo Panda- board1, la cual ofrece muchas ventajas; algunas de las principales son sus puer- tos de comunicaciones tanto por cable como inal´ambricos, lo cual facilita el uso de c´amaras web al poder conectarlas por el puerto , al igual que conexi´on a internet por su puerto Ethernet o bien por su tarjeta con conectividad Wi-Fi, tambi´en cuenta con puertos multiprop´osito en los que se puede programar ca- da pin en forma de entrada o salida y sensar su estado constantemente. Otra ventaja es que se puede instalar un sistema operativo basado en el kernel de Linux2, y a su vez, tambi´en se podr´ainstalar plataformas multiprop´osito para realizar la programaci´on, dise˜no y manejo de aplicaciones.

Despu´es de implementar la tarjeta Pandaboard con un sistema operativo se buscar´adesarrollar la aplicaci´on para adquirir la imagen de la c´amara y enviar el archivo a trav´es de Internet.

En lo que respecta al env´ıodel archivo, se buscar´aun medio que nos per- mita hacer llegar la imagen hasta el Smartphone en poco tiempo, de manera segura y confiable.

Por otro lado, en el Smartphone, se determinar´acu´al es la mejor opci´on para garantizar el funcionamiento ´optimo de la aplicaci´on en el tel´efono, esto incluir´ael sistema operativo y la compatibilidad con el software utilizado en la tarjeta Pandaboard. Al igual, tambi´en se desarrollar´auna aplicaci´on que facilite el acceso inmediato a la imagen enviada desde el sitio remoto.

Posteriormente, se realizar´an pruebas del sistema completo, registrando tiempos de respuesta, confiabilidad y repetibilidad; de esta manera se determi- nar´an y realizar´an las correcciones necesarias para su funcionamiento ´optimo.

1http://pandaboard.org/ 2http://pandaboard.org/content/resources/software 4 CAP´ITULO 1. INTRODUCCION´ Cap´ıtulo 2

Hardware

2.1. Pandaboard

Actualmente existen minicomputadoras que en una sola placa ofrecen la posibilidad de conectar los perif´ericos de una computadora com´un: monitor, teclado, mouse, entre otros. Algunas de ellas tambi´en cuentan con conectivi- dad a redes de datos por puertos al´ambricos e inal´ambricos. Analizando las soluciones que ofrece el mercado se opt´opor utilizar la tarjeta Pandaboard, la cual ofrece muchas ventajas en la soluci´on del sistema a desarrollar y a con- tinuaci´on se describe las partes que componen a la tarjeta y su funcionamiento.

Pandaboard1 es una peque˜na placa tipo motherboard basado en el proce- sador Texas Instruments OMAP4430. El Pandaboard (Figura 2.1 2 ) cuenta con un CPU ARM de 1.2 GHz de doble n´ucleo Coretex-A9 MPCore e incluye un puerto Ethernet 10/100, conectividad inal´ambrica Wi-Fi, un puerto HDMI para conectar una pantalla, un puerto DVI ofrece la posibilidad de conec- tar una pantalla secundaria, su puerto Bluetooth ofrece una amplia gama de posibilidades para enlazarse con dispositivos que cuentan con este puerto de comunicaciones, un puerto para tarjetas SD en el cual se instala la tarjeta que contiene el sistema operativo, puertos de salida de Audio, 2 puertos USB 2.0 los cuales se usan para conectar el teclado y mouse, mini USB OTG, puerto serial y varios puertos configurables, entre ellos salidas y entradas digitales as´ıcomo anal´ogicas. Pandaboard puede ejecutar el kernel de , ya sea con distribu- ciones tradicionales como Ubuntu, Debian, Linux Mint, o bien Linaro en el que sus desarrollos los orienta para el uso de este tipo de tarjetas prototipo; tambi´en la Pandaboard puede usar el entorno de usuario del sistema operativo

1http://pandaboard.org/ 2http://pandaboard.org/sites/default/files/board setup v3.png

5 6 CAP´ITULO 2. HARDWARE

Figura 2.1: Puertos de la tarjeta Pandaboard.

Android3.

Para su funcionamiento en modo escritorio (pantalla y perif´ericos) la tarjeta Pandaboard requiere de los siguientes dispositivos, adem´as del sistema opera- tivo en la tarjeta SD de memoria.

Fuente de alimentaci´on de 5V. Tarjeta SD 4GB o superior. Se recomienda instalar Ubuntu (versi´on 10.04 o superior), pero cualquier sistema basado en Debian Linux funcionar´a, siempre y cuando la versi´on sea compatible con la arquitectura del procesador instalado en la tarjeta Pandaboard. Cable USB o cable serie. Utilizar el puerto RJ45 para conectar el cable Ethernet a alg´un equipo que permita accesar a Internet.

3http://pandaboard.org/content/resources/software 2.1. PANDABOARD 7

Figura 2.2: Esquema interno de la tarjeta Pandaboard.

Cable USB (Mini-A a USB Tipo-A).

Cable DVI (HDMI de tipo A a DVI-D) o HDMI (tipo A a tipo A) para conectar la pantalla de v´ıdeo.

Teclado USB.

Mouse USB.

Pantalla con soporte HDMI o DVI.

En la Figura 2.2 4 se muestra de manera esquem´atica la interconexi´on de los puertos de entrada y salida de la tarjeta.

Para la configuraci´on del hardware Pandaboard en modo de escritorio se deben seguir los siguientes pasos: 5

4http://pandaboard.org/node/223/#PBBlockDiagram 5http://pandaboard.org/content/resources/getting-started (Setting up your Pandaboard Hardware) 8 CAP´ITULO 2. HARDWARE

Se conecta el Mouse USB y teclado USB.

Se conecta el cable Ethernet.

Se conecta el cable HDMI a la salida HDMI-A del Pandaboard

Se conecta el cable adaptador de serie o USB

Inserte la tarjeta SD con la copia de la distribuci´on de software de su elecci´on en la misma6.

La tarjeta Pandaboard est´aoptimizada para ejecutarse en varias distribu- ciones m´oviles de software de fuentes abiertas como Android, Ubuntu, MeeGo y muchos m´as. Hasta la fecha, la comunidad “Pandaboard7” ofrece soporte completo para dichas distribuciones.

Una vez que se ha cargado la imagen de sistema operativo en la memo- ria, entonces se conecta la fuente de energ´ıay se aplica voltaje al dispositivo. Cuando se inicie, se deber´an seguir los pasos para instalar la versi´on de sistema operativo y esto ser´adependiendo de la versi´on elegida; es recomendable que se conecte la tarjeta Pandaboard a Internet para que descargue las actualiza- ciones de los archivos a instalar.

Entre las caracter´ısticas f´ısicas de la tarjeta Pandaboard (Figura 2.3) se mencionan las siguientes:

L´ogica del n´ucleo en el procesador de aplicaciones OMAP4430 Procesador Dual-core ARM Cortex-A9 MPCore con multiprocesamiento sim´etrico (SMP) a 1 GHz cada uno, lo cual permite aumentar 150 % el rendimiento del anterior n´ucleo ARM Cortex-A8.

Salida de v´ıdeo multi-est´andar Full HD (1080p) de codificaci´on/decodi- ficaci´on Cuenta con un n´ucleo gr´afico PowerVR SGX540 Imagination Technolo- gies, soporte para todas las principales API(del ingl´es Application Pro- gramming Interface) incluyendo OpenGL ES v2.08, OpenGL ES v1.1,

6Puede ir al sitio http://omappedia.org de distribuciones de software y seguir las instruc- ciones para grabarlo en la tarjeta SD 7http://pandaboard.org 8http://www.opengl.org/ 2.1. PANDABOARD 9

Figura 2.3: Puertos I/O en la tarjeta Pandaboard.

v1.1, OpenVG EGL v1.3 y ofrece un rendimiento sostenido 2x para to- das las API principales en comparaci´on con el n´ucleo SGX530 anterior.

Puerto de monitor HDMI v1.3 conector (tipo A) para manejar pantallas de alta definici´on. Conector DVI-D (se puede conectar un segundo monitor para tener vi- sualizaci´on simult´anea, requiere un adaptador de HDMI a DVI-D). Cabecera de expansi´on LCD.

Memoria 1 GB de RAM DDR2 de bajo consumo. Puerto de tarjetas de tama˜no completo SD/MMC con soporte para tar- jetas SD de alta velocidad y alta capacidad.

Puertos de audio 3.5” audio in/out. Salida de audio HDMI. 10 CAP´ITULO 2. HARDWARE

Conectividad Puerto Ethernet 10/100.

Conectividad inal´ambrica 802.11 b/g/n (basado en WiLink 6.0). Bluetooth v2.1 + EDR (basado en WiLink 6.0).

Expansi´on 1x USB 2.0 puerto de alta velocidad On TheGo. 2x USB 2.0 puertos de host de alta velocidad. Cabezal de expansi´on de prop´osito general (I2C, GPMC, USB, MMC, DSS, ETM). Puerto de expansi´on para C´amara. Expansi´on de se˜nal de LCD usando un ´unico conjunto de bancos de re- sistencias.

Puertos para depurar JTAG. UART/RS-232. 2 LEDs de estado (configurable). 1 Bot´on GPIO (Entrada/Salida de Prop´osito General).

Dimensiones Altura: 4.5”(114.3 mm). Ancho: 4.0”(101.6 mm). Peso : 2,6 oz (74 gramos).

2.2. C´amara web

Una c´amara web (Figura 2.4) o c´amara de red (en ingl´es: webcam) es una peque˜na c´amara digital conectada a una computadora por medio de un puerto USB, la cual puede capturar im´agenes y transmitirlas a trav´es de Internet, ya sea a una p´agina web o a otra u otras computadoras de forma privada.

Las c´amaras web necesitan una computadora para transmitir las im´agenes. Sin embargo, existen otras c´amaras aut´onomas que tan s´olo necesitan un punto 2.3. SMARTPHONE 11

Figura 2.4: C´amara web.

de acceso a la red inform´atica, bien sea Ethernet o inal´ambrico. Para diferen- ciarlas de las c´amaras web se les denomina c´amaras de red.

Tambi´en son muy utilizadas en mensajer´ıainstant´anea y chat como Yahoo! Messenger, Ekiga, Skype, etc. En algunos casos aparece un ´ıcono indicando que la otra persona tiene c´amara web. Por lo general, puede transmitir im´agenes en vivo pero tambi´en puede capturar im´agenes o peque˜nos videos (dependiendo del programa de la c´amara web) que pueden ser grabados y transmitidos por Internet. La c´amara web se clasifica como dispositivo de entrada, ya que por medio de ella se puede transmitir im´agenes hacia la computadora.

Como ejemplo del alcance de estos dispositivos, se puede mencionar que en astronom´ıaamateur las c´amaras web de cierta calidad pueden ser utilizadas para registrar tomas planetarias, lunares y hasta hacer algunos estudios as- trom´etricos de estrellas binarias. Ciertas modificaciones pueden lograr exposi- ciones prolongadas que permiten obtener im´agenes de objetos tenues de cielo profundo como galaxias, nebulosas, etc.

2.3. Smartphone

Actualmente existe una gran gama de tel´efonos celulares, con el desarro- llo de la tecnolog´ıase han creado un sinn´umero de utilidades para los servi- cios que ofrecen las compa˜n´ıas de telecomunicaciones, que van desde el env´ıo de mensajes de texto, mensajes multimedia, hasta v´ıdeo llamadas. A medi- 12 CAP´ITULO 2. HARDWARE da que aumentan las funciones de un tel´efono celular, tambi´en aumentan las caracter´ısticas en su hardware y software; ahora incluyen pantallas t´actiles, c´amaras digitales de varios mega p´ıxeles de resoluci´on, teclado QWERTY , co- municaci´on a internet a trav´es de conexi´on Wi-Fi, CDMA, GSM, etc; algunos equipos cuentan tambi´en con comunicaci´on Bluetooth e infrarroja, para conec- tarse a otros dispositivos.

En lo que respecta al ´ambito del software, se han desarrollado aplicaciones para el env´ıode mensajes, chats, conexi´on a Internet, almacenamiento de datos, entre muchas otras. Debido a las necesidades que se requieren para el uso de aplicaciones, se hizo necesario el desarrollo de sistemas operativos para estos dispositivos m´oviles, los cuales, permiten al usuario instalar y desinstalar las aplicaciones de su elecci´on, siempre y cuando sean compatibles con su tel´efono.

A medida que han aumentado las funciones de los tel´efonos celulares, se han creado equipos con caracter´ısticas similares a las de una computadora perso- nal, cuentan con procesador, memoria RAM, ranura de expansi´on de memoria, pudiendo inclusive visualizar y editar documentos, con posicionador geogr´afi- co, aceler´ometro; estos equipos son conocidos como Smartphones, los cuales realizan las funciones descritas en esta secci´on y como cualquier otro tel´efono celular, tambi´en pueden realizar llamadas a tel´efonos fijos o celulares.

Los Smarphones se ven limitados en sus caracter´ısticas, en comparaci´on a una computadora, debido a que su dise˜no debe ser peque˜no y ligero, al igual que su bater´ıadebe tener la capacidad de mantener el consumo de energ´ıadel Smartphone, aun cuando est´eusando la comunicaci´on por Wi-Fi o bluetooth. En comparaci´on con los tel´efonos convencionales, que soportan un uso continuo de hasta varios d´ıas, los Smartphones que utilizan todas funciones de comuni- caci´on requieren recargar su bater´ıauna o dos veces por d´ıa.

Cuando se cuenta con un Smartphone se tiene la posibilidad de contratar un plan de datos con alg´un proveedor de servicios, de esta manera (dependiendo de su plan de datos y disponibilidad de servicios) en todo momento tendr´ala posibilidad de comunicarse a trav´es de Internet. Por otro lado, si no se cuenta con un contrato de plan de datos, existe la posibilidad de accesar a Internet utilizando Wi-Fi; actualmente existen parques, plazas p´ublicas, restaurantes y algunos otros sitios que ofrecen Internet inal´ambrico gratuito; a estos sitios agregamos las viviendas y negocios que cuentan con este servicio, el cual puede estar al alcance del usuario del Smartphone.

Para el desarrollo del proyecto se utiliz´oel Smartphone Samsung Galaxy Y 2.3. SMARTPHONE 13

Figura 2.5: Smartphone utilizado en el proyecto.

S5360(Figura 2.5), el cual es un Smartphone con Android v2.3 Gingerbread. Posee una pantalla LCD de 3 pulgadas a 240 x 320 pixels de resoluci´on, proce- sador de 832MHz, c´amara de 2 megapixels, conectividad HSDPA, Bluetooth 3.0, Wi-Fi(b/g/n) y ranura microSD con 2GB de memoria. Banda GSM & EDGE : 850 / 900 / 1,800 / 1,900 MHz; Banda 3G : 900 / 2,100 MHz. 14 CAP´ITULO 2. HARDWARE Cap´ıtulo 3

Software

3.1. Sistema Operativo

Algo importante a considerar durante el desarrollo del proyecto, es el sis- tema operativo, el cual se puede definir como un conjunto de programas que sirven como interfaz entre las aplicaciones y el hardware de un dispositivo. El sistema operativo maneja los recursos del procesador, memoria y perif´eri- cos (dispositivos de entrada/salida) para hacer funcionar al equipo, adem´as de administrar dichos recursos en la ejecuci´on de aplicaciones y programas con- currentes que ejecute el usuario.

El sistema operativo proporciona una interfaz visual e interactiva para el usuario, ya sea a trav´es de l´ınea de comandos o de manera gr´afica. Dependien- do de la finalidad que se le de al equipo donde se haya instalado, el sistema operativo puede ser utilizado en un equipo de escritorio, o bien, en equipos configurados como servidores. En el proyecto se deben considerar dos tipos de sistema operativo, uno que ser´ael que se utilice en la tarjeta de desarrollo Pandaboard y otro para el Smartphone.

El sistema operativo utilizado para la tarjeta Pandaboard, fu´ela distribu- ci´on de Ubuntu, ya que es compatible con la misma, permite la instalaci´on de programas de desarrollo multiplataforma y es compatible con un gran n´umero de c´amaras web; esto ayud´oen la implementaci´on del proyecto.

15 16 CAP´ITULO 3. SOFTWARE

3.1.1. Ubuntu Ubuntu1 es una distribuci´on de sistema operativo de acceso libre, est´adis- ponible para su uso por cualquier persona en el mundo. Existen distribuciones en diferentes idiomas, adem´as de que las personas con deficiencia visual o au- ditiva tambi´en pueden accesar al sistema operativo.

Debian2 es una de las versiones m´as estables de Linux, a partir de esta versi´on es que se construy´oUbuntu. Debian fue lanzado poco despu´es de la primera versi´on del kernel de Linux, junto con Ubuntu comparten objetivos comunes y est´an muy relacionados; aunque Ubuntu se centra en gran medida en equipos de escritorio. Ubuntu proporciona un conjunto de programas para soluciones de oficina, as´ıcomo software de Internet. Actualmente tambi´en tiene disponible versiones para servidor. Ubuntu Linux es una soluci´on con todas las funciones de escritorio que viene con aplicaciones listas para instalar y utilizar. No es s´olo un sistema operativo gratuito y abierto; al instalarlo, el usuario tam- bi´en consigue, preinstalado, la suite de productividad OpenOffice3 completo, un navegador, un gestor de fotos, clientes de correo y mensajer´ıa, y mucho m´as.

Siguiendo los pasos de instalaci´on, si se cuenta con conexi´on a Internet durante la misma, es posible instalar todas las actualizaciones del sistema o- perativo. Aun as´ı,es posible descargar el sistema operativo e instalarlo fuera de l´ınea. Desde su creaci´on en 2004, el software siempre ha sido gratuito y se puede copiar e instalar las veces que se requiera. Ubuntu ha tomado el mundo de Linux e incluso ha salido bien librado del mundo t´ecnicamente exigente de software de c´odigo abierto.

Ubuntu es una distribuci´on de Linux, basada en Debian, Ubuntu, como sistema operativo, es parte de la gran familia de las distribuciones de Linux. Ubuntu utiliza Linux como su kernel. El kernel es la parte del sistema opera- tivo que lleva a cabo las funciones m´as b´asicas, como acceso a la memoria y la gesti´on de procesos. Linux es un kernel libre y abierto, fuertemente basado en los conceptos esbozados primero para UNIX, antecesor de Linux. Es por eso que se dice que Linux es un sistema operativo tipo UNIX.

Linux es un software libre y de c´odigo abierto; es un sistema operativo vers´atil y potente que puede ejecutarse en varias plataformas de hardware. Ha sido adoptado por dispositivos como tel´efonos inteligentes, servidores y table-

1http://www.ubuntu.com 2http://www.debian.org 3OpenOffice.org 3.1. SISTEMA OPERATIVO 17 tas electr´onicas.

Ubuntu Linux se basa en la s´olida base de Debian, por todas las normas son muy similares, sin embargo, difieren en sus enfoques. Debian se utiliza sobre todo en servidores. Ubuntu, por otra parte, es principalmente una distribu- ci´on de escritorio, aunque tambi´en tiene una edici´on del servidor. En cuanto a los enfoques de liberaci´on de un nuevo software, Debian es extremadamente cauteloso y emite un comunicado s´olo despu´es de un procedimiento de prueba a trav´es de errores. En contraste, Ubuntu es muy agresivo, lo que le permite incluir el software m´as moderno, aunque a veces en versiones no tan estables. El equipo de desarrollo sigue un ciclo de lanzamiento basado en el tiempo. Desde el principio, el equipo de desarrollo se comprometi´oa lanzar una nueva ver- si´on cada seis meses. Fechas de estreno est´an programadas para abril y octubre.

Ubuntu establece una fecha de lanzamiento de una nueva versi´on del sistema operativo mucho antes de lo que realmente sucede, y algunos de los objetivos rectores se dan para esa versi´on. El desarrollo funciona de forma completamente diferente, ya que Ubuntu Linux depende de muchos equipos no relacionados de los desarrolladores que trabajan juntos en alguna pieza espec´ıfica de soft- ware. Los equipos que no tienen ninguna relaci´on con Ubuntu o CANONICAL. Pueden ser tan dispares como el equipo de GNOME (desarrolladores del en- torno de escritorio GNOME utilizado por Ubuntu), Mozilla (mantenedores del navegador web Firefox) y Oracle (sede del proyecto OpenOffice).

Canonical, la empresa detr´as de Ubuntu, no puede hacer cumplir un calen- dario de lanzamientos para todos los proyectos que conforman la distribuci´on; as´ı que, con la fecha de lanzamiento ya establecida todos los paquetes son actualizados a la ´ultima versi´on estable y se agrupan para la prueba de com- patibilidad. La mayor´ıade los problemas son fijos, y el producto se libera justo a tiempo.

Existen muchas ediciones diferentes de Ubuntu Linux, en primer lugar, to- das las ediciones de Ubuntu son libres. T´ecnicamente hablando, no se trata de diferentes ediciones de Ubuntu, sino derivados. Un derivado de Ubuntu sig- nifica que algunos desarrolladores empaquetan cosas de manera diferente para producir un sistema operativo dirigido a un grupo espec´ıfico de usuarios. Por ejemplo, algunas personas encuentran el entorno de escritorio KDE m´as atrac- tivo que GNOME. As´ı,canonical proporciona un nuevo derivado de Ubuntu, que instala KDE por defecto en lugar de GNOME.

Hay una gran cantidad de derivados. Algunos son mantenidos por Canoni- 18 CAP´ITULO 3. SOFTWARE cal, y algunos no lo son. Los m´as comunes son:

Kubuntu: Al igual que Ubuntu pero con el entorno de escritorio KDE.

Edubuntu: Un derivado especial cargado de aplicaciones con fines educa- tivos.

Pero hay muchos otros. Hay Ubuntus para los cristianos como para los musulmanes, Ubuntus en chino y en italiano, Ubuntus para los antrop´ologos y los dise˜nadores. Hay incluso un Ubuntu para los empleados de Google, llamada Goobuntu4. Debido a que Ubuntu es una soluci´on de escritorio completo con un asombroso n´umero de aplicaciones, cualquiera puede mezclar los ingredientes de la manera que le gusta y comparte lo que ha hecho con el resto del mundo.

Existe un entorno m´ınimo-FS, el cual se basa en la distribuci´on Angstrom. Este entorno se utiliza actualmente para probar al Pandboard y todas las plataformas de la comunidad en el futuro. Combina algunas herramientas b´asicas que le ayudar´an a abrir casos de prueba. No hay ninguna interfaz gr´afica de usuario (user/interface) disponible para este sistema de archivos. El ambiente visual es s´olo impulsado por l´ınea de comandos.

Existen versiones de Ubuntu compatible con procesadores omap, para el proyecto se utiliz´ola versi´on ubuntu-13.04-desktop-armhf+omap4.img 5. La cual es la m´as actual en estos momentos y adem´as nos ofrece compatibilidad con las ´ultimas versiones de las plataformas en las que se desarrollan las apli- caciones.

Para instalar el sistema operativo, se debe escribir la imagen en bruto a una tarjeta SD en blanco. Hay que asegurarse de que est´ausando al menos una tarjeta SD 4GB (imagen del escritorio es 2GB sin comprimir).

Pasos para copiar el sistema operativo a la tarjeta SD:

Coloque la tarjeta SD en la computadora host. Aseg´urese de que la tarjeta SD no se monta (s´olo desmontarlo si es nece- sario). Identificar el nombre de dispositivo y su formato correcto (como / dev /

4http://google.about.com/od/g/g/goobuntudef.htm 5http://cdimage.ubuntu.com/releases/13.04/release/ 3.1. SISTEMA OPERATIVO 19

sde no / dev/sde1).

Ejecute los siguientes comandos para escribir: (Reemplazando OMAP4 y sde con los valores adecuados)

• 1. gunzip ubuntu\-13.04\-desktop\-armhf+omap4.img.gz • 2. sudo dd bs = 4M if = ubuntu\-13.04\-desktop\-armhf+omap4.img of = /dev/sde • 3. sudo sync

Despu´es de copiar la imagen con el sistema operativo, se inserta en la tar- jeta Pandaboard y se siguen los pasos normales de instalaci´on de Ubuntu, se recomienda conectarla a Internet para descargar las ´ultimas versiones de los archivos de sistema. Actualmente, ya se cuenta con la versi´on 13.10 de ubuntu, pero aun no est´adisponible la versi´on para OMAP, por lo que no se recomienda actualizar el sistema a esa versi´on.

Al terminar la instalaci´on de sistema operativo la tarjeta Pandaboard est´alista para instalar los paquetes de desarrollo multiplataforma y compilar las aplica- ciones.

3.1.2. Android Actualmente la tecnolog´ıa en dispositivos m´oviles ha avanzado enorme- mente, sus funciones son cada vez m´as comunes en las labores cotidianas de estudiantes, empresarios, transacciones bancarias, comerciales y de informa- ci´on en general; al igual existen varias empresas de servicios digitales y tele- fon´ıam´ovil, aunado a estas compa˜n´ıas tambi´en existen otras aplicaciones que haciendo uso del servicio de internet en los tel´efonos permiten el env´ıode men- sajes de texto, audio, im´agenes y video, estas ´ultimas son usadas por un sin n´umero de usuarios y ofrecen compatibilidad con diversas plataformas.

Android es una plataforma de c´odigo abierto dise˜nado para dispositivos m´oviles. Se abog´opor Google y es propiedad de . El objetivo de la alianza es “acelerar la innovaci´on en los consumidores m´oviles y ofrecer una experiencia m´ovil m´as completa, menos costosa, y mejor”. Como tal, Android est´arevolucionando el espacio m´ovil. Por primera vez, se trata de una plataforma verdaderamente abierta que separa el hardware del software 20 CAP´ITULO 3. SOFTWARE que se ejecuta en ´el. Esto permite un mayor n´umero de dispositivos para eje- cutar las mismas aplicaciones y crea un ecosistema mucho m´as rico para los desarrolladores y consumidores. [11]

Android Integral es una plataforma completa, lo que significa que es un conjunto de software completo para un dispositivo m´ovil. Android proporciona todas las herramientas y marcos para el desarrollo de aplicaciones m´oviles de forma r´apida y sencilla. El SDK de Android es todo lo que necesita para em- pezar a desarrollar para Android, ni siquiera se necesita un tel´efono f´ısico.

Los usuarios pueden personalizar su experiencia con el tel´efono sustancial- mente. Para los fabricantes, es la soluci´on completa para la gesti´on de sus dispositivos. Aparte de algunos controladores de hardware espec´ıfico, Android proporciona todo lo dem´as para hacer que sus dispositivos funcionen.

Android es una plataforma de c´odigo abierto. Toda el conjunto de m´odulos de bajo nivel Linux hasta llegar a las bibliotecas nativas y desde el marco de aplicaci´on para completar las aplicaciones, son totalmente abiertas.

Android est´adisponible bajo licencias de negocios (Apache/MIT) para que otros lo puedan extender libremente y utilizarlo para diversos fines. Incluso algunas bibliotecas de c´odigo abierto de terceros que fueron tra´ıdos a Android fueron reescritos bajo nuevos t´erminos de licencia. As´ıque, como desarrollador, se tiene acceso a todo el c´odigo fuente de la plataforma. No hay necesidad de licenciar Android, se puede empezar a usar y modificar desde hoy, y no hay condiciones.

En el dise˜no de Android, el equipo analiz´oque las limitaciones de disposi- tivos m´oviles probablemente no iban a cambiar en el futuro previsible. Por un lado, los dispositivos m´oviles funcionan con bater´ıas, y el rendimiento de la bater´ıaprobablemente no va a ser mucho mejor en el corto plazo. En segundo lugar, el peque˜no tama˜no de los dispositivos m´oviles significa que siempre van a estar limitados en t´erminos de memoria y velocidad. Estas restricciones se han tenido en cuenta desde el primer momento y se abordaron a lo largo de la plataforma. El resultado es una mejor experiencia general del usuario. Android fue dise˜nado para correr en casi todo tipo de dispositivos f´ısicos. Android no hace suposiciones sobre el tama˜no de un dispositivo de pantalla, resoluci´on, chipset, y as´ısucesivamente. Su n´ucleo est´adise˜nado para ser port´atil.

El 6 de diciembre de 2010, el SDK 2.3 Gingerbread basado el kernel de Linux 2.6.35.7 fue lanzado. Los cambios sobre la versi´on anterior (2.2 Froyo) 3.1. SISTEMA OPERATIVO 21 incluyeron:

Actualizaci´on del dise˜no de la interfaz de usuario.

Soporte para pantallas extra grandes; resoluciones WXGA y mayores.

Soporte nativo para telefon´ıaVoIP SIP.

Soporte para reproducci´on de videos WebM/VP8 y decodificaci´on de audio AAC.

Nuevos efectos de audio como reverberaci´on, ecualizaci´on, virtualizaci´on de los auriculares y refuerzo de graves.

Soporte para Near Field Communication.

Funcionalidades de cortar, copiar y pegar disponibles a lo largo del sis- tema.

Teclado multi-t´actil redise˜nado.

Soporte mejorado para desarrollo de c´odigo nativo.

Mejoras en la entrada de datos, audio y gr´aficos para desarrolladores de juegos.

Recolecci´on de elementos concurrentes para un mayor rendimiento.

Soporte nativo para m´as sensores (como giroscopios y bar´ometros).

Un administrador de descargas para archivos grandes.

Administraci´on de la energ´ıamejorada y control de aplicaciones mediante la administrador de tareas.

Soporte nativo para m´ultiples c´amaras.

Cambio de sistema de archivos de YAFFS6 a ext4.

Esta versi´on es la que est´ainstalalda en el Smartphone utilizado en el desa- rrollo del proyecto, actualmente se encuentra disponible la versi´on 4.4 llamada KitKat.

6http://es.wikipedia.org/wiki/YAFFS 22 CAP´ITULO 3. SOFTWARE 3.2. Almacenamiento en la nube

Ante el creciente uso de Internet por parte de usuarios de equipos per- sonales, m´oviles y fijos, surgieron compa˜n´ıas dedicadas a facilitar el manejo de informaci´on en la red. Existen compa˜n´ıas que dise˜nan sistemas que las personas utilizan para capturar datos, respaldar informaci´on, entre otros; ofreci´endoles seguridad en el resguardo de su informaci´on, y al estar conectados a Internet, acceso desde cualquier parte del mundo.

Almacenamiento en la nube(Cloud storage 7) se refiere a un conjunto de hardware y software dise˜nado para almacenar informaci´on de cualquier persona que cuente con acceso a Internet(Figura 3.1). En ocasiones el costo del servicio es gratuito, con un espacio limitado para el almacenamiento de la informaci´on, y si el usuario requiere mayor espacio, entonces puede contratar alg´un plan que ofrezca la compa˜n´ıade alojamiento.

Algunas compa˜n´ıas que ofrecen el servicio de almacenamiento en la nube, tienen centros de computo en varios lugares y en caso de que alg´un sitio tenga cualquier desperfecto, los otros reactivan el servicio debido a que cuentan con sistemas de respaldo de datos. Con estos sistemas enlazados entre si, garantizan que los usuarios no perder´an su informaci´on adem´as de fortalecer la confiabi- lidad en sus servicios.

Existen diversas pol´ıticas de seguridad y de derechos de autor, que son uti- lizadas en el almacenamiento en la nube, mismas que tratan de impedir la pi- rater´ıade software, o bien el alojamiento de software malicioso. Por otra parte, algunas compa˜n´ıas han dise˜nado aplicaciones que sirven para editar documen- tos, bases de datos, presentaciones y otras aplicaciones, dentro de los mismos repositorios donde se aloja la informaci´on.

Los servicios de almacenamiento en nube pueden ser accedidos por diferen- tes medios, como una API web service, interfase web de usuario, o alguna otra seleccionada por el cliente.

Existen varias empresas que se dedican a ofrecer el servicio de almace- namiento en la nube con un espacio gratuito y si el usuario requiere de m´as capacidad las empresas pueden aumentar esa capacidad por un costo mensual

7http://es.wikipedia.org/wiki/Cloud storage 3.2. ALMACENAMIENTO EN LA NUBE 23

Figura 3.1: Alojamiento en la nube.

o anual. Dropbox8, Icloud9, Mega10, Sugarsync11, Bitcasa12, Box13, Shared14, Copy15, Skydrive16, Google Drive17, son algunas de las empresas que ofrecen espacio de alojamiento gratuito y de costo con diferentes capacidades, factores a tomar en cuenta son sus servicios multiplataforma, de ancho de banda y seguridad en el respaldo de informaci´on; son compatibles con los diversos sis- temas operativos para equipos de escritorio y en muchos casos tambi´en para los sistemas operativos de equipos celulares.

Para el desarrollo de este proyecto se opt´opor utilizar , ya que nos ofrece compatibilidad con el sistema operativo Android y es posible subir informaci´on desde la tarjeta Pandaboard con sistema Ubuntu instalado hacien- do uso de la aplicaci´on Grive18, la cual contiene un conjunto de herramientas para sincronizar archivos y carpetas de un equipo directamente a Google Drive, por otro lado, desde la aplicaci´on de Qt se pueden ejecutar esos comandos, de

8https://www.dropbox.com/ 9https://www.icloud.com/ 10https://mega.co.nz/ 11https://www.sugarsync.com/ 12http://www.bitcasa.com/ 13https://www.box.com/ 14https://shared.com/ 15https://www1.copy.com/home/ 16https://skydrive.live.com 17https://drive.google.com/ 18http://www.lbreda.com/grive/start 24 CAP´ITULO 3. SOFTWARE esta manera se enlazar´an directamente, la tarjeta Pandaboard y los reposito- rios de almacenamiento en la nube.

Tomando en cuenta que App Inventor19 es una plataforma de desarrollo para Android y es compatible con el sistema que se plantea desarrollar, en la nube se puede administrar los archivos subidos desde la Pandaboard y acceder a ellos desde un Smartphone.

3.2.1. Google Drive Google Drive20 permite almacenar, crear, modificar, compartir y acceder a documentos, archivos y carpetas de todo tipo en un ´unico lugar. Cuando se crean nuevos documentos de Google Drive, se crean documentos de , hojas de c´alculo y presentaciones online.

Google Docs, hojas de c´alculo y presentaciones son los editores web para crear, modificar y compartir documentos, hojas de c´alculo, presentaciones y documentos de Google. Tambi´en cuenta con editores web que permiten crear dibujos, formularios y tablas de fusi´on. Estos documentos online est´an total- mente integrados con los otros servicios de Google Apps y ofrecen funciones muy potentes para colaborar en tiempo real.

Google Drive conforma una colecci´on propia de archivos y carpetas, est´an disponibles dondequiera que se est´e; se puede guardar y compartir todo lo que se quiera. Con Google Drive es posible acceder a los archivos, carpetas y docu- mentos de Google Docs desde un navegador web o desde cualquier dispositivo en el que se haya instalado Google Drive. Pase lo que pase con los dispositivos, siempre se tienen los archivos guardados de forma segura en Google Drive.

Se puede utilizar Google Drive para almacenar todo tipo de archivos, in- cluidos documentos, presentaciones, m´usica, fotos y v´ıdeos. Se pueden abrir muchos tipos de archivo directamente en el navegador, incluidos los archivos PDF, archivos Microsoft Office, v´ıdeos de alta definici´on y muchos tipos de archivos de imagen, aunque no se tenga instalado el programa correspondiente en la computadora.

Google Drive mantiene actualizados todos los archivos autom´aticamente, as´ıque se pueden realizar modificaciones y acceder a la ´ultima versi´on desde

19http://appinventor.mit.edu/explore/ 20https://drive.google.com/ 3.2. ALMACENAMIENTO EN LA NUBE 25 cualquier lugar.

Ofrece muchas maneras de ver, buscar y ordenar los archivos. Incluye op- ciones de b´usqueda potentes (incluso la capacidad de buscar texto en im´agenes) para que se pueda encontrar r´apidamente lo que se busca.

Google Drive incluye varios componentes:

Google Drive en la Web es una interfaz online para ver el contenido de Google Drive. Esto reemplaza y mejora la actual lista de documentos de Google Docs.

Google Drive para Mac/PC es una aplicaci´on descargable para computa- doras con Windows y Mac que permite sincronizar archivos entre tu com- putadora y Google Drive en la Web.

Aplicaciones m´oviles de Google Drive. Utiliza esta aplicaci´on para acce- der a Drive en un dispositivo m´ovil en cualquier momento y lugar.

Los planes de almacenamiento de Google Drive proporcionan 30 GB de es- pacio de almacenamiento gratuito para Google Drive, y Albumes´ web de (15 GB para la edici´on gratuita de Google Apps, un producto hereda- do). Adem´as, se puede comprar espacio de almacenamiento adicional a unos precios competitivos21.

Las aplicaciones de Google Drive22 se pueden utilizar para modificar im´a- genes y v´ıdeos, enviar documentos por fax y firmarlos, gestionar proyectos, crear diagramas de flujo, etc. Google Drive es compatible con cada vez m´as aplicaciones, las cuales puedes instalar desde , entre ellas: Aviary, Evernote, Lucidchart, SlideRocket, etc.

3.2.2. Grive El prop´osito de Grive es proporcionar una implementaci´on de c´odigo abierto independiente del cliente de Google Drive para GNU/Linux. Utiliza la Google Document List API para hablar con los servidores de Google. El c´odigo est´aes- crito en C++ est´andar. El c´odigo fuente de Grive se distribuye bajo GPLv2.

21https://support.google.com/drive/answer/2375123?hl=es 22http://www.google.com/drive/apps.html 26 CAP´ITULO 3. SOFTWARE

Actualmente, a partir de la versi´on 0.2.0, Grive puede hacer la sincronizaci´on de dos lados entre la unidad de Google y el directorio local. Se pueden descar- gar y cargar archivos modificados. Nuevos directorios en Google Drive y el directorio local tambi´en se pueden descargar/cargar.

Grive proporciona la posibilidad de generar carpetas que se vinculen direc- tamente a los repositorios ubicado en Google Drive, los archivos que se generen, cambien o eliminen se reflejar´an en todos los dispositivos que se encuentren en- lazados a dichas carpetas, ya sea la tarjeta Pandaboard, el Smartphone o desde una PC. Al instalar Grive se genera una secuencia de sincronizaci´on con inter- valos de tiempo de un minuto, por lo que posterior a ese tiempo, los cambios se ver´an reflejados en los repositorios en la nube.

Para la finalidad del proyecto, la aplicaci´on en Qt Creator obtendr´a una imagen de la c´amara web y la copiar´adentro de una carpeta sincronizada por Grive, posteriormente cada vez que se genere una imagen, ´esta se “encimar´a” en la anterior cambiando su contenido m´as no su nombre ni fecha de creaci´on, si se requiere, es posible invocar la sincronizaci´on de las carpetas con los repo- sitorios en la nube.

Al cambiar la imagen existen datos de la misma que no cambiar´an y otros que si lo har´an. Los datos que se generan el Google Drive respecto a las im´agenes y que sirven al proyecto son:

la fecha de creaci´on, ejemplo: “createdDate”: “013-12-05T17 :48:28.096Z”.

la fecha de modificaci´on, ejemplo: “modifiedDate”: “2013-12-11T20 :56- :33.487Z”.

la fecha de modificaci´on por mi, ejemplo: “modifiedByMeDate”: “2013- 12-11T20 :56:33.487Z”.

la fecha de visualizaci´on, ejemplo: “lastViewedByMeDate” : “2013-12- 11T02 :59:12.201Z”.

Al encimar la imagen despu´es del proceso de adquisici´on, solo la fecha de creaci´on permanece igual, es por eso que observando las propiedades de la i- magen se puede determinar (por ejemplo, con la fecha de modificaci´on) en qu´einstante cambi´ola imagen. Monitoreando estos datos se puede saber cuan- do se tiene una imagen nueva. 3.2. ALMACENAMIENTO EN LA NUBE 27

3.2.3. Instalaci´on de Grive Para realizar la instalaci´on de Grive se debe abrir antes el Administrador de software y despu´es instalar los siguientes paquetes23:

git

cmake

build-essential

libgcrypt11-dev

libjson0-dev

libcurl4-openssl-dev

libexpat1-dev

libboost-filesystem-dev

libboost-program-option-dev

binutils-dev

Grive requiere de los paquetes antes mencionadas para su funcionamiento.

Posteriormente, se utiliza el comando “git” para obtener el c´odigo fuente en un directorio.

git clone git :/ / .com / Grive / grive.git

El c´odigo fuente estar´aen un subdirectorio llamado “grive”. Usar “cd” para llegar al directorio y luego ejecutar “cmake”.

cd. /grive

Una vez ubicados en el directorio “grive” del subdirectorio de c´odigo fuente, en el s´ımbolo del sistema escribimos el comando:

cmake.

23http://www.lbreda.com/grive/installation 28 CAP´ITULO 3. SOFTWARE

Se debe tomar en cuenta el punto (.) como argumento para cmake, para indicar que se ejecutara en el directorio actual.

Se debe recibir un mensaje de ´exito como el siguiente: “ Archivos de creaci´on se han escrito a: /home/dir ” (por ejemplo).

Tenga en cuenta que no usamos los comandos “sudo cmake .” ya que no necesariamente tienen que crear los archivos de instalaci´on como usuario root.

En el s´ımbolo del sistema ingresar el siguiente comando:

make

Se obtienen varios mensajes durante el proceso y esperar un mensaje como “´exito”: “100 % objetivo completo grive executable”

El archivo ejecutable (llamado “grive”) se colocar´aen el subdirectorio “grive”.

Copiar el archivo ejecutable grive al nivel superior del directorio de la unidad donde se sincronizar´ala carpeta google.

cp./grive/grive/home/usted/yourGoogleDrive/ (por ejemplo)

Como efecto secundario, se carga el archivo (“sync’ed”) con grive en el di- rectorio de nivel superior de la carpeta de Google Drive.

Se observa que el archivo ejecutable “grive” est´aen otro subdirectorio lla- mado tambi´en “grive”.

Hay una ventaja con Grive, se puede copiar el archivo ejecutable grive a diferentes directorios, sincronizarse con varias cuentas de Google Drive, y todo funcionar´acorrectamente.

Se ubica en el directorio de la unidad google y se ejecuta grive:

cd/home/usted/yourGoogleDrive/(por ejemplo)

./grive -a

La opci´on “-a” s´olo es necesaria la primera vez que se ejecuta grive. 3.3. QT Y QT CREATOR 29

Acceder la URL que aparece, a continuaci´on, copiar el c´odigo de autenti- caci´on determinado (se debe haber iniciado en la sesi´on en Google). Se debe recibir algunos mensajes como “Sincronizaci´on de archivos... ahora se est´an ejecutando”.

Para sincronizar, se debe ejecutar el programa manualmente (no hay una “real-time watching”, sin embargo). En el indicador, escriba:

./grive

Si se reciben varios mensajes de error en la pantalla se debe ejecutar:

. / grive-l log.txt

Para crear un archivo que se puede enviar a NESTAL24.

A medida que el archivo contiene un registro de la operaci´on de sincroni- zaci´on, es posible que se quiera modificar el archivo primero para eliminar la informaci´on personal sensible.

Una vez que se siguieron los pasos de instalaci´on de Grive y se aportaron los datos de la cuenta de usuario en Google Drive, la tarjeta Pandaboard ya tiene una carpeta que sincroniza el contenido de las carpetas ubicadas en el repositorio de Google Drive; los archivos que se coloquen en dicha carpeta se sincronizan autom´aticamente con las de la cuenta, estando en posibilidades de transferir las im´agenes que se adquieran desde la c´amara web a Google Drive.

3.3. Qt y Qt Creator

Para desarrollar la aplicaci´on que adquirir´ala imagen de la c´amara web y llevar´aa cabo el proceso de env´ıode informaci´on a Internet se opt´opor uti- lizar Qt Creator25, el cual es un editor donde podemos trabajar y compilar las bibliotecas Qt; permite realizar estas labores gracias a su compatibilidad con el sistema operativo instalado en la tarjeta Pandaboard y a su biblioteca multiplataforma. Se instal´ola versi´on Qt 5 por las nuevas bibliotecas, lo cual facilit´ola creaci´on de la aplicaci´on.

24https://plus.google.com/+NestalWan/posts 25http://qt-project.org/wiki/Category:Tools::QtCreator 30 CAP´ITULO 3. SOFTWARE

3.3.1. Qt Qt es un marco de desarrollo completo con herramientas dise˜nadas para simplificar la creaci´on de aplicaciones e interfaces de usuario de escritorio, sis- temas embebidos y plataformas m´oviles. Con Qt, se puede reutilizar el c´odigo de manera eficiente para atacar m´ultiples plataformas con una sola base de c´odigo.

Qt es una biblioteca multiplataforma26 desarrollada como un software libre y de c´odigo abierto a trav´es de Qt Project; usada para desarrollar aplicaciones con interfaz gr´afica de usuario, para el desarrollo de programas sin interfaz gr´afica, as´ıcomo herramientas para l´ınea de comandos y consolas para servi- dores. Qt utiliza el lenguaje de programaci´on C++ de forma nativa y es usada en sistemas inform´aticos embebidos para automoci´on, aeronavegaci´on, entre otros.

Funciona en todas las principales plataformas, y tiene un amplio soporte. El API de la biblioteca cuenta con m´etodos para acceder a bases de datos me- diante SQL, as´ıcomo uso de XML, gesti´on de hilos, soporte de red, una API multiplataforma unificada para la manipulaci´on de archivos y para el manejo de ficheros, adem´as de estructuras de datos tradicionales.

3.3.2. Qt Creator Qt Creator es un IDE27 (Figura 3.2) multiplataforma que se ajusta a las necesidades de los desarrolladores Qt. Qt Creator se centra en proporcionar caracter´ısticas que ayudan a los nuevos usuarios de Qt a aprender y comenzar a desarrollar r´apidamente, tambi´en aumenta la productividad de los desarro- lladores con experiencia en Qt.

Qt Creator nos ofrece las siguientes caracter´ısticas para el desarrollo de aplicaciones:

Editor de c´odigo con soporte para C++, QML y ECMAscript.

Herramientas para la r´apida navegacion del c´odigo.

Resaltado de sintaxis y auto-completado de c´odigo.

26http://qt-project.org/ 27IDE entorno de desarrollo integrado 3.3. QT Y QT CREATOR 31

Figura 3.2: Pantalla de bienvenida de Qt Creator.

Control est´atico de c´odigo y estilo a medida que se escribe.

Soporte para refactorizaci´on de c´odigo.

Ayuda sensitiva al contexto.

Plegado de c´odigo (code folding).

Per´entesis coincidentes y modos de selecci´on.

Depurado Visual.

El depurador visual (visual debugger) para C ++ es consciente de la es- tructura de muchas clases de Qt, lo que aumenta la capacidad de mostrar los datos de Qt con claridad. Adem´as Qt Creator muestra la informaci´on en bruto procedente de GDB de una manera clara y concisa.

Interrupci´on de la ejecuci´on del programa.

Ejecuci´on l´ınea por l´ınea o instrucci´on a instrucci´on.

Puntos de interrupci´on (breakpoints).

Examinar el contenido de llamadas a la pila (stack), los observadores y de la variables locales y globales. 32 CAP´ITULO 3. SOFTWARE

Figura 3.3: Pantalla de aplicaci´on de c´amara desarrollada en Qt Creator.

Dise˜nador de Interfaces Gr´aficas de Usuario (GUI)

Entorno integrado para la creaci´on y dise˜no de formas para proyectos C++ que permite dise˜nar r´apidamente widgets y di´alogos usando los mismos wid- gets28 que se usar´an en su aplicaci´on. Los formularios son totalmente fun- cionales y pueden ser previsualizados inmediatamente para asegurarse de que se ver´an exactamente como se pensaron.

Utilizando Qt Creator se desarroll´ouna aplicaci´on para ejecutarse desde la tarjeta Pandaboard (Figura 3.3), misma que sirve para sensar el puerto de la tarjeta donde se conecta el bot´on del timbre y al momento de ser oprimido, guardar´aen un archivo tipo JPG, la imagen capturada desde la c´amara web. Esta aplicaci´on guarda la imagen en una carpeta dentro de la tarjeta de memo- ria SD, posteriormente, la imagen ser´atransferida a los repositorios de Google Drive en Internet.

En la aplicaci´on se guarda una copia de la imagen en la carpeta ”Mis Im´agenes”, la cual tiene un nombre comsecutivo, esto sirve como respaldo para tener todas las im´agenes adquiridas por la aplicaci´on. Por otro lado, en otra

28http://es.wikipedia.org/wiki/Widget 3.4. APP INVENTOR 33 carpeta se guarda el archivo de imagen que es “encimado” con la imagen nueva cada vez que es oprimido el timbre, conservando el mismo nombre y fecha de creaci´on del archivo.

La aplicaci´on tambi´en tiene la funci´on de sincronizar la imagen guardada en la memoria con los repositorios de Google Drive, por lo cual, debe ejecutar comandos de Grive para realizar diha tarea cada vez que se genere una nueva imagen. En Qt Creator se pueden configurar funciones que hagan un llamado a la ejecuci´on de comandos, en el caso de esta aplicaci´on, se ejecuta el comando “grive” desde la carpeta donde se encuentra la imagen a sincronizar.

3.4. APP Inventor

El sistema operativo Android se basa principalmente en el lenguaje Java para el desarrollo de aplicaciones, por lo que es necesario aprender a desarrollar aplicaciones bajo este lenguaje. Una herramienta de programaci´on es Google App Inventor29 que es una aplicaci´on de para crear aplicaciones de software para el sistema operativo Android. De forma visual y a partir de un conjunto de herramientas b´asicas, el usuario puede ir enlazando una serie de bloques para crear la aplicaci´on. El sistema es gratuito y se puede descargar f´acilmente de la web. Las aplicaciones fruto de App Inventor est´an limitadas por su simplicidad, aunque permiten cubrir un gran n´umero de necesidades b´asicas en un dispositivo m´ovil.

En la pantalla de dise˜no (Figura 3.4), es posible incorporar funciones co- munes para las aplicaciones en Android, botones, cajas de texto, etiquetas; otras, con funciones de multimeda, sensores, comunicaciones, etc. Estas fun- ciones facilitan el dise˜no de la aplicaci´on y sirven como base para generar la programaci´on en bloques. Al igual, en la pantalla de dise˜no se crean las pan- tallas necesarias para la aplicaci´on.

Una vez que se han incorporado las funciones a utilizar en la aplicaci´on, el siguiente paso es abrir la ventana de edici´on de programaci´on en bloques. El editor de bloques de la aplicaci´on utiliza la librer´ıaOpen Blocks de Java para crear un lenguaje visual a partir de bloques; en la cual observamos herramientas de programaci´on l´ogicas, de texto, matem´aticas, de control, entre otras. Como se muesta en la Figura 3.5, a partir de las herramientas se construyen bloques con funciones comunes, que al combinarlas, se puede lograr construir aplica-

29http://appinventor.mit.edu/explore/ 34 CAP´ITULO 3. SOFTWARE

Figura 3.4: Pantalla de dise˜no de aplicaci´on en App Inventor. ciones complejas, pero con ciertas limitantes. App Inventor facilita el dise˜no de aplicaciones para equipos con sistema operativo Android, pero al igual, sus funciones y herramientas en algunos casos son limitadas; sin embargo, en la creaci´on de la aplicaci´on desarrollada en el proyecto fueron suficientes para llevarla a cabo.

Al momento de concluir el desarrollo de la aplicaci´on es posible abrir el e- mulador y realizar las pruebas correspondientes para validar si la programaci´on funciona como fue planeada. Otra opci´on para realizar estas pruebas es descar- gar el archivo “nombre-de-aplicaci´on.apk” a la computadora, posteriormente se copia al dispositivo movil y se instala para realizar las pruebas.

3.4.1. Uso de OAuth 2.0 para acceder a las API de Google Las API de Google utilizan el protocolo OAuth 2.030 para la autenticaci´on y autorizaci´on. Google soporta OAuth 2.0 com´un en escenarios como los de

30http://oauth.net/2/ 3.4. APP INVENTOR 35

Figura 3.5: Pantalla de programaci´on en bloques en App Inventor. servidor web, y las aplicaciones del lado del cliente.

OAuth 2.0 es un protocolo relativamente simple. Para empezar, se registra la aplicaci´on con Google. Luego la aplicaci´on cliente solicita un token de acceso de autorizaci´on del servidor Google, extrae una muestra de la respuesta y env´ıa la se˜nal a la API de Google que desea acceder.

Todas las aplicaciones siguen un patr´on b´asico de acceso a una API de Google utilizando OAuth 2.0. A un alto nivel, se pueden seguir cuatro pasos:

1. Registro de la aplicaci´on. Todas las aplicaciones que tienen acceso a una API de Google deben registrarse a trav´es de la consola de la nube Google. El resultado de este proceso de registro es un conjunto de valores (como un “client ID” y el “client secret”) que se sabe que tanto Google como su aplicaci´on. El conjunto de valores var´ıa en funci´on del tipo de aplicaci´on que se est´aconstruyendo. Por ejemplo, una aplicaci´on de JavaScript no requiere un client secret, pero una aplicaci´on de servidor web s´ı.

2. Obtener un token de acceso de la autorizaci´on del servidor Google. Antes de que la aplicaci´on pueda acceder a los datos privados utilizando 36 CAP´ITULO 3. SOFTWARE

una API de Google, debe obtener un token de acceso que permite el ac- ceso a la API. Un ´unico token de acceso puede conceder diferentes grados de acceso a m´ultiples . Un par´ametro variable llamado alcance con- trola el conjunto de recursos y operaciones para que el token de acceso d´elos permisos. Durante la solicitud de accesstoken, la aplicaci´on env´ıa uno o m´as valores en el ´ambito de aplicaci´on de par´ametros.

Hay varias maneras de hacer esta petici´on, y que var´ıan en funci´on del tipo de aplicaci´on que se est´aconstruyendo. Por ejemplo, una aplicaci´on de JavaScript podr´ıasolicitar un token de acceso mediante un navegador que redirige a Google, mientras que una aplicaci´on instalada en un dis- positivo que no tiene navegador utiliza solicitudes de servicio web.

Algunas solicitudes requieren un paso de autenticaci´on en el que el usuario inicia sesi´on con su cuenta de Google. Despu´es de iniciar sesi´on, se pregun- ta al usuario si est´an dispuestos a conceder los permisos que la aplicaci´on est´asolicitando. Este proceso se conoce como consentimiento del usuario.

Si el usuario concede el permiso, la autorizaci´on del servidor Google env´ıa su solicitud de un token de acceso (o un c´odigo de autorizaci´on que la aplicaci´on puede utilizar para obtener un token de acceso). Si el usuario no concede el permiso, el servidor devuelve un error.

En general, es una buena pr´actica para solicitar ´ambitos de forma incre- mental, en el momento se requiere el acceso, en lugar de por adelantado.

3. Enviar la se˜nal de acceso a una API. Despu´es de una aplicaci´on obtiene un token de acceso, env´ıael token a una API de Google en un encabezado de autorizaci´on HTTP. Es posible enviar tokens como par´ametros de cadena de consulta de URI, pero no se recomienda, porque los par´ametros URI pueden terminar en los archivos de registro que no son completamente seguros. Tambi´en, es una buena pr´actica REST31 para evitar la creaci´on de nombres de par´ametros URI32 innecesarios.

Los tokens de acceso son v´alidos s´olo para el conjunto de las operaciones y los recursos descritos en el alcance de la solicitud de token. Por ejemplo, 31http://es.wikipedia.org/wiki/Representational State Transfer 32http://es.wikipedia.org/wiki/Uniform Resource Identifier 3.4. APP INVENTOR 37

si un token de acceso se expide para la API de Google+, no permitir´a el acceso a la API de contactos Google. Puede, sin embargo, enviar esa se˜nal de acceso a la API de Google+ varias veces para operaciones similares.

4. Actualizar el token de acceso, si es necesario. Los tokens de acceso tienen una vida ´util limitada. Si la aplicaci´on nece- sita acceso a una API de Google m´as all´adel tiempo de vida de un solo token de acceso, se puede obtener un token de actualizaci´on. Un token de actualizaci´on le permite a la aplicaci´on obtener nuevos tokens de acceso.

3.4.2. Aplicaciones de servidor Web La ´ultima versi´on de Google OAuth 2.0 es compatible con aplicaciones de servidores web que utilizan lenguajes y frameworks como PHP, Java, Python, Ruby, y ASP.NET. La secuencia de autorizaci´on comienza cuando la aplicaci´on redirige el navegador a una direcci´on URL Google, la direcci´on URL incluye par´ametros de consulta que indican el tipo de acceso que se solicita. Google se encarga de la autenticaci´on de usuario, la selecci´on de sesiones, y el consen- timiento del usuario. El resultado es un c´odigo de autorizaci´on, que la aplicaci´on puede intercambiar para un token de acceso y un contador de refresco. La apli- caci´on debe almacenar el token de actualizaci´on para su uso futuro y utilizar el s´ımbolo de acceso para acceder a una API de Google. Una vez que el token de acceso expira, la aplicaci´on utiliza el token de actualizaci´on para obtener una nueva. En la Figura 3.6 se muestra de forma esquem´atica el proceso de autentificaci´on Web de OAuth 2.0.

3.4.3. Aplicaci´on del proyecto En el desarrollo de la aplicaci´on para el Smartphone se tom´oen cuenta que se utilizar´ıael almacenamiento en Google Drive y, por lo tanto, se deber´ıa buscar la forma de acceder al contenido de la cuenta del usuario, de esta ma- nera el primer punto fue determinar los procesos de autorizaci´on para acceder a Google Drive.

Como primer paso se debe crear una app en “https://developers.google.com”, iniciar una sesi´on con una cuenta de correo de Gmail y posteriormente crear un proyecto nuevo, al cual se le deben dar permisos para acceder a las aplica- ciones necesarias, en el caso de este proyecto se deben activar las aplicaciones 38 CAP´ITULO 3. SOFTWARE

Figura 3.6: Proceso de autentificaci´on Web de OAuth 2.0.

“Drive API” y “Drive SDK”. Por otro lado se deben crear aplicaciones re- gistradas, las cuales proporcionar´an los permisos necesarios para que nuestra aplicaci´on pueda acceder a la cuenta de Google Drive, de esos datos obtenidos los requeridos son “IDENTIFICADOR DE CLIENTE” ´o“CLIENT ID” con el formato “7835625340731 -ta97jif6823m2uut1eotn8524mvrpvtm.apps.google- usercontent.com” y el “SECRETO DE CLIENTE” ´o“CLIENT SECRET” con el formato “U6pADP rlk1XF1n-ePCYAjHd”, as´ıse puede iniciar el desarrollo de la aplicaci´on para el Smartphone con los permisos que requiere Google Drive para su autenticaci´on.

En la pantalla de bienvenida (Figura 3.7) se observa un bot´on que sirve para iniciar el proceso de autenticaci´on de la aplicaci´on.

Al oprimir el bot´on “Iniciar” la aplicaci´on inicia el proceso de autenticaci´on en Google Drive y una vez que lo lleva a cabo por primera vez se debe propor- cionar la cuenta y password del correo de Gmail (Figura 3.8).

Cuando se valida la cuenta de correo de Gmail se accede a la aplicaci´on 3.4. APP INVENTOR 39

Figura 3.7: Pantalla de inicio de la aplicaci´on.

Figura 3.8: Acceso a cuenta de correo de Gmail. 40 CAP´ITULO 3. SOFTWARE

Figura 3.9: Permiso para usar aplicaci´on.

generada en la consola de Google33, la cual ya tiene los permisos necesarios y solo nos informa si se acepta utilizar y dar consentimiento al uso de la apli- caci´on (Figura 3.9), se indica a qu´einformaci´on tendr´aacceso dicha aplicaci´on.

Una vez que es aceptado el consentimiento de la aplicaci´on inicia la busque- da de la ´ultima imagen registrada en la Pandaboard (Figura 3.10), lo cual se hace de manera autom´atica y se genera un sonido y vibraci´on en el Smartphone cuando se encuentra.

Cuando se detecta el ´ultimo registro la aplicaci´on inicia la descarga, mues- tra c´ual es la ´ultima imagen y la fecha en que fue generada (Figura 3.11).

A partir de ese momento la aplicaci´on utilizar´aun temporizador que en un intervalo de tiempo predeterminado buscar´asi existe alg´un cambio en la imagen guardada en Google Drive aunque el usuario no est´edentro de la apli- caci´on. De esta manera se detectar´ael momento en que se genere la imagen al tocar el timbre y en pocos segundos estar´adisponible en nuestro Smartphone.

33https://code.google.com/apis/console 3.4. APP INVENTOR 41

Figura 3.10: B´usqueda de la ´ultima imagen registrada.

Figura 3.11: Ultima´ imagen registrada en el sistema. 42 CAP´ITULO 3. SOFTWARE

Al contar con los datos del usuario, posteriormente al entrar a la aplicaci´on automaticamente se iniciar´ala b´usqueda de la ´ultima imagen, y si el usuario no desea que la aplicaci´on est´efuncionando, con oprimir el bot´on “Salir de la aplicaci´on” detendr´adicha b´usqueda y saldr´ade la aplicaci´on; los datos del usuario se guardar´an y estar´an disponibles al momento que decida volver a iniciar la detecci´on del timbre. Cap´ıtulo 4

Pruebas

4.1. Mediciones de tiempo

El sistema busca dar una opci´on a que las personas que se encuentren fuera de su domicilio o negocio sepan a trav´es de un Smartphone qui´en est´atocando a su puerta, pero tambi´en un factor importante a tomar en cuenta es que se pretende que sea en el menor tiempo posible, en el rango de segundos, para lo cual se deben optimizar las herramientas tanto de hardware como de software para minimizar los tiempos de respuesta del sistema.

En la b´usqueda de una soluci´on viable y funcional para la adquisici´on de las im´agenes se realizaron pruebas con c´amaras web para determinar el tama˜no y calidad de la imagen, de tal manera que se consiguiera una imagen que tuviera la suficiente resoluci´on para identificar a la persona que tocara la puerta y a su vez, con un tama˜no de archivo peque˜no que agilizara su transferencia a trav´es de la red de Internet; de esta manera se trata de minimizar el tiempo de res- puesta del sistema de Portero Electr´onico. Una de las c´amaras web utilizadas para las pruebas tiene una resoluci´on de 320 x 240 p´ıxeles, la cual muestra una imagen que sirve para identificar a los rostros y crea archivos de imagen en formato JPEG1, con un tama˜no aproximado de entre 10 y 20 KB; por lo cual, se utiliz´oen la implementaci´on del proyecto.

El proceso para transferir el archivo obtenido por la c´amara web, desde el momento en que es tomada la fotograf´ıa, es almacenada en la memoria de la tarjeta Pandaboard, hasta que es trasnferida al repositorio en la cuenta de Google Drive, determina parte de la respuesta del tiempo total del sistema. Para medir el tiempo antes mencionado, se utiliz´ola aplicaci´on creada en Qt

1www.jpeg.org

43 44 CAP´ITULO 4. PRUEBAS para tomar la fotograf´ıay guardarla en la carpeta compartida; dicha carpeta se sincroniza de manera autom´atica con el repositorio de Google Drive; por otro lado se utiliz´ouna laptop y mediante un explorador web se ingres´oal repo- sitorio de Google Drive para observar la carpeta compartida, de esta manera se observ´oque el tiempo que lleva desde que se toma la fotograf´ıa hasta que el archivo esta disponible en el repositorio variaba de entre 12 y 45 segundos. Cabe hacer notar que en estas pruebas tanto la tarjeta Pandaboard como la laptop se encontraban conectadas la misma conexi´on a Internet; esto implica que a trav´es de la misma “ruta” estar´an transfiriendo y recibiendo informaci´on en la red, lo cual disminuye el tiempo de respuesta en la comunicaci´on entre la tarjeta Pandaboard y la computadora.

La aplicaci´on desarrollada en App Inventor para el Smartphone, busca cam- bios en el estado (fecha de creaci´on, modificaci´on, etc.) de los archivos con- tenidos en el repositorio de Google Drive y en el instante que detecta el cambio en el archivo predefinido, de inmediato muestra una alerta; de esta manera el usuario sabe que alguien toc´oel timbre y puede acceder desde su Smart- phone, a la imagen tomada por la c´amara web . En esta etapa de transferencia de informaci´on influye el servicio de datos del dispositivo m´ovil, esto es, si el Smartphone tiene conectividad con plan de datos o bien se conecta a trav´es de una red Wi-Fi; con una conexi´on Wi-Fi d´ebil o ancho de banda peque˜no en la conexi´on de datos, la transferencia del archivo se puede ver limitada y se pueden generar retardos en la respuesta del sistema completo.

Al tener funcionando el sistema completo se observ´oque Grive sincroniza cada minuto los cambios en el contenido de las carpetas con los repositorios en la nube, por lo cual se modific´ola aplicaci´on de Qt en la tarjeta Pandaboard para que cada vez que se genere la imagen, Grive inicie la sincronizaci´on con las carpetas de Google Drive; de esta manera; se logr´ominimizar el tiempo de reconocimiento en los cambios del archivo con la aplicaci´on del Smartphone. Con estas modificaciones se realizaron varias pruebas, el tiempo de respues- ta desde el momento en que se genera la imagen hasta que es mostrada en el Smartphone se logr´odisminuir a tiempos de entre 12 a 25 segundos como m´axi- mo; este tiempo de respuesta para el proyecto se considera aceptable, tomando en cuenta que en un llamado de timbre en una casa o negocio el tiempo que transcurre normalmente al atender puede ser de algunos minutos, debido a la espera que se tiene a la respuesta del llamado del timbre.

Otra prueba realizada en el sistema completo, fue instalando la aplicaci´on en dos Smartphones, uno conectado a la red Wi-Fi donde se encontraba la tarje- ta Pandaboard y otro en un lugar remoto, se realizaron las pruebas del sistema 4.2. REPETIBILIDAD 45

Prueba Smartphone Local Smartphone Remoto 1 16 segundos 21 segundos 2 18 segundos 22 segundos 3 11 segundos 15 segundos 4 12 segundos 18 segundos 5 22 segundos 25 segundos 6 17 segundos 23 segundos 7 14 segundos 20 segundos 8 11 segundos 14 segundos 9 20 segundos 24 segundos 10 16 segundos 19 segundos

Cuadro 4.1: Mediciones de tiempo en el sistema completo con dos Smartphones. completo y se observ´oque en los dos Smartphones se registraba la detecci´on de los cambios en la imagen, por medio de mensajes de texto telef´onicos, se inform´ode los cambios en el Smarphone remoto, observando que hab´ıauna diferencia de 3 a 6 segundos en la detecci´on de la imagen. Tomando en cuen- ta el tiempo en que se generaba la respuesta del mensaje se concluy´oque la diferencia de tiempo de detecci´on de la imagen fue ocasionada por el desfase de tiempo en los intervalos de actualizaci´on de la aplicaci´on en cada equipo, ya que los Smartphones no se sincronizaron y aunque manejaban los mismos intervalos de busqueda de cambios en el archivo de imagen, no se realiz´oun inicio simult´aneo de la aplicaci´on.

En la tabla 4.1 se muestran algunos registros de tiempo obtenidos durante las pruebas con los dos Smartphones.

4.2. Repetibilidad

Durante las pruebas de tiempo se tuvieron rangos que no cambiaron mucho en referencia al tama˜no de archivo que era transferido, un factor que influye en parte, es la calidad del servicio de internet, ya que en los lugares que se hicieron las pruebas exist´ıan Cortafuegos2 y el servicio de Internet es usado por varios usuarios, lo cual influ´ıaen el tiempo de respuesta al momento de transferir la informaci´on. En los lugares donde el servicio es dom´estico y no cuenta con Firewall se agiliz´oun poco el env´ıode las im´agenes, en referencia a

2http://windows.microsoft.com/es-mx/windows/what-is-firewall#1TC=windows-7 46 CAP´ITULO 4. PRUEBAS los archivos de 10KB el tiempo fue menor, en promedio, en 1 segundo.

Para desarrollar un sistema similar se pueden realizar copias de la memo- ria utilizada en la Pandaboard, la cual contiene el sistema operativo utilizado al igual que las aplicaciones que se requieren para la transferencia de informa- ci´on, pero se requiere hacer algunos ajustes para personalizar el uso de carpetas compartidas con las cuentas de usuario de Google Drive, configuradas con las herramientas de Grive; al igual en la parte del Smartphone se debe instalar la aplicaci´on de Google Drive y la implementada con App Inventor para el proyecto.

El usuario del sistema debe generar una cuenta en Google Drive, misma que deber´acoincidir con la cuenta usada en la aplicaci´on de su Smartphone, de tal manera que al configurar las carpetas compartidas se tengan los datos necesarios para su validaci´on y de esta manera sincronizar las carpetas solo con el usuario autorizado. En el caso que mas usuarios quieran acceder a la carpeta compartida, el usuario propietario a trav´es de Google Drive deber´acompartir la carpeta y en los otros Smartphones se tendr´aque instalar la aplicaci´on crea- da en APP Inventor.

En el momento de configurar los dispositivos se debe tener conexi´on a In- ternet. La tarjeta Pandaboard cuenta con conectividad Ethernet y Wi-Fi, con direccionamiento IP configurado por DHCP(Protocolo de configuraci´on de host din´amico), si se requiere direccionamiento fijo se tienen que proporcionar los datos para realizar dicha configuraci´on, ya sea utilizando la configuraci´on con direcci´on IP fija o en el caso de tener un servidor proxy3, el usuario y clave necesarios. La c´amara web al tener compatibilidad USB, s´olo se debe conectar a un puerto de la tarjeta ya que la mayoria de c´amaras web son compati- bles con Ubuntu, de lo contrario se deben buscar los archivos necesarios para su instalaci´on. En caso de elegir alguna c´amara web con resoluci´on mayor a 320 x 240 p´ıxeles, se debe tomar en cuenta que el tiempo de transferencia del archivo puede aumentar debido al incremento al tama˜no del archivo de imagen.

4.3. Integraci´on del sistema completo

El sistema descrito en este documento (Figura 4.1) ofrece una soluci´on pr´actica para saber en qu´emomento y qui´en est´atocando la puerta, su fun- cionamiento descrito en las l´ıneas anteriores muestra c´omo se fueron desarro- 3http://es.wikipedia.org/wiki/Proxy 4.3. INTEGRACION´ DEL SISTEMA COMPLETO 47

Repositorios Google Drive

Internet

Pandaboard Smartphone

Usb 2.0 Webcam

Figura 4.1: Esquema completo del sistema.

llando cada una de sus etapas, desde la elecci´on del hardware hasta la imple- mentaci´on de las aplicaciones, tanto en la Pandaboard como en el Smartphone. Una vez que el proyecto ha sido terminado en cada parte y aplicaciones, se ob- serva su respuesta, el sistema funciona como fue planeado y el tiempo total desde que se presiona el timbre hasta que se observa la alerta en el Smart- phone va de los 12 a los 25 segundos, tiempo que se considera aceptable para la funci´on que fue creado el proyecto.

Es importante hacer hincapi´een que el sistema depende de factores que no est´an bajo el control de las aplicaciones creadas y que en un determinado mo- mento pueden interferir en la respuesta a los eventos sensados, dichos factores son la velocidad de conexi´on a Internet de la tarjeta Pandaboard, el ancho de banda, o si existe alg´un Firewall filtrando el servicio de Internet; otro factor puede ser la disponibilidad del servicio de Google Drive y la velocidad de sin- cronizaci´on de sus servidores, que si bien cuentan con equipos con tecnolog´ıa de punta, hay que tomar en cuenta que como en cualquier sistema, tambi´en son susceptibles a fallas. Por ´ultimo, se debe tener disponibilidad de transferencia 48 CAP´ITULO 4. PRUEBAS

de datos del Smartphone por parte de la compa˜n´ıade servicios telef´onicos, o bien, tener una buena conexi´on a una red Wi-Fi.

Como se puede observar el sistema portero electr´onico puede ser de gran ayuda para saber qui´en llama a la puerta cuando no hay nadie en casa y toman- do las previsiones necesarias, es posible darse cuenta del momento que opriman el timbre de un negocio o domicilio particular con muy pocos segundos de di- ferencia. Cap´ıtulo 5

Resultados y Conclusiones

Despu´es de analizar el desarrollo y funcionamiento del proyecto se de- mostr´oque es posible integrar tecnolog´ıas de diferentes plataformas para llegar a conformar sistemas que ayuden a solucionar problemas cotidianos de una manera ´agil y efectiva. En este cap´ıtulo se mostrar´an los resultados y conclu- siones del proyecto.

5.1. Resultados

En la finalidad del proyecto, se plante´opoder dar a conocer desde un Smart- phone, en qu´emomento se oprim´ıael timbre de una casa o negocio mediante la transferencia de una imagen, lo cual permiti´ointegrar un sistema que con- sisti´oen algunas etapas. La primera etapa fue obtener la imagen, la segunda consisti´oen almacenar la imagen en repositorios dentro de la red de Internet y la tercera en hacerla llegar al Smartphone; al igual, tambi´en se desarrollaron aplicaciones mediante las cuales se realizar´ıala trasferencia de informaci´on en- tre estas tres etapas.

La tarjeta Pandaboard result´ode gran ayuda para desarrollar la primera etapa y a pesar de algunos problemas que se tuvieron con la compatibilidad con el sistema operativo y los proveedores de almacenamiento en Internet, se pudo realizar la sincronizaci´on con Google Drive a trav´es Grive de una manera r´apida y confiable.

Para evitar problemas de fiabilidad y operabilidad, la m´axima temperatura de operaci´on del procesador OMAP4430 tiene que estar por debajo de 125o C y la temperatura media m´axima tiene que estar por debajo de 110o C [6]. Durante

49 50 CAP´ITULO 5. RESULTADOS Y CONCLUSIONES

Figura 5.1: Disipador adaptado a la tarjeta Pandaboard.

el desarrollo del proyecto se detect´oque el procesador de la tarjeta Pandaboard se calentaba a una temperatura que se acercaba a los l´ımites m´aximos, debido a que el sistema puede llegar a estar encendido las 24 horas del d´ıa, adem´as de colocarse en una carcasa que lo proteja; se busc´ola forma de disminuir su temperatura, por lo que fue necesario colocar un disipador de temperatura acompa˜nado de un peque˜no ventilador (Figura 5.1) alimentado por 5V en co- rriente directa(DC); este voltaje puede ser proporcionado por un puerto USB o por la fuente que alimenta a la tarjeta Pandaboard, ya que ambos proveen 5V.

En lo que respecta a Google Drive, al ser parte de los desarrolladores de Android, ofrece compatibilidad con el sistema operativo del Smartphone y per- mite utilizar sus herramientas de sincronizaci´on para acceder de manera segura a la informaci´on almacenada por el usuario.

Por su parte el Smartphone utilizado no contaba con la ultima versi´on del sistema operativo, sin embargo, la compatibilidad de la aplicaci´on desarrollada con el sistema operativo Android no fue un obst´aculo para la implementaci´on del proyecto, lo cual garantiza que es posible utilizarlo en un mayor n´umero de 5.2. CONCLUSIONES 51 dispositivos que cuenten con dicho sistema operativo.

Qt creator proporcion´ouna plataforma de desarrollo completamente com- patible con la versi´on de sistema operativo en la tarjeta Pandaboard, esto ofrece un sinf´ınde posibilidades para realizar otras aplicaciones que utilicen otros puertos de comunicaci´on en la tarjeta, generando m´as datos y a trav´es de la comunicaci´on establecida en el proyecto a Internet, transferirlos para otros fines.

En lo que respecta al App Inventor se encontr´oque es una herramienta muy pr´actica para el desarrollo de aplicaciones basadas en Android, esto benefici´ola creaci´on de esta etapa del proyecto, al contar con las herramientas necesarias para la sincronizaci´on con Google Drive y en la realizaci´on de la interfaz de usuario en la aplicaci´on del Smartphone.

Al desarrollar el sistema con cuentas de usuarios personales tambi´en se tiene la ventaja que la informaci´on se guardar´adentro de sus carpetas, ya sea locales o en la red, y nadie podr´aacceder a ellas sin la autorizaci´on correspondiente.

5.2. Conclusiones

Actualmente se desarrollan tecnolog´ıas multiplataforma que pueden inte- grarse en sistemas para solucionar problemas que pudieran considerarse como comunes, pero que aprovechan los recursos con los que se cuenta en la actua- lidad para crear soluciones pr´acticas y que pueden ser de bajo costo para los usuarios.

El acceso a Internet es cada vez mas com´un y las empresas que ponen a disposici´on espacio para alojar informaci´on en Internet, de manera gratuita o a un bajo costo, ofrecen la posibilidad de resguardar informaci´on, acceder a ella donde quiera que se est´ey se tenga acceso a la red de Internet. Aprovechando estos servicios, no solo los investigadores o empresas privadas pueden darle uso y aprovechar sus ventajas, ahora a trav´es del proyecto desarrollado, los usua- rios comunes pueden hacer m´as que guardar archivos y explotar los beneficios que esto representa.

Por las caracter´ısticas de la tarjeta Pandaboard y su amplio campo de apli- caci´on, el proyecto puede ser utilizado como base para el desarrollo de otras aplicaciones donde se requiera hacer llegar informaci´on a lugares remotos, de 52 CAP´ITULO 5. RESULTADOS Y CONCLUSIONES lo que est´asucediendo en donde se encuentre instalada. Por la capacidad del procesador y memoria, se puede hacer procesamiento digital de im´agenes, re- gistro de v´ıdeos o audio; al igual se pueden configurar sus puertos de comuni- caciones para sensar y/o enlazarse con otros dispositivos, de tal manera que se explote aun m´as su potencial.

Pensando en una empresa, en lugar de colocar un bot´on de timbre, es posi- ble instalar sensores infrarrojos o ultras´onicos y conectarlos a la tarjeta Panda- board, para detectar el cruce o movimiento, en una puerta, sala, estancia, etc.; al sensar el cambio de estado en los sensores se activar´ıaautom´aticamente la adquisici´on y env´ıode la imagen.

Existen pantallas t´actiles compatibles con el puerto de expansi´on de v´ıdeo en la tarjeta Pandaboard, al instalar una de estas pantallas al Portero Elec- tr´onico, es posible desarrollar una aplicaci´on en la que la persona que se acerque a oprimir el timbre, pueda interactuar y elegir entre dejar un mensaje escrito, s´olo su imagen, e inclusive se pueden crear mensajes en audio y v´ıdeo; los archivos generados tambi´en es posible transferirlos al Smartphone, previendo que el formato de los archivos sea compatible en ambos dispositivos. Bibliograf´ıa

[1] David Wolber, , Ellen Spertus & Liz Looney , App Inventor, Create Your Own Android Apps, O’REILLY, April 2011.

[2] Jason Tyler, App Inventor for Android: Build Your Own Apps – No Experience Required!, Wiley, 2011.

[3] Jasmin Blanchette, Mark Summerfield, C++ GUI Programming with Qt 3, Prentice Hall in association with Trolltech Press, 2004.

[4] Jasmin Blanchette, Mark Summerfield, C++ GUI Programming with Qt 4, Prentice Hall, February 04, 2008.

[5] Digia, Qt Learning, Introduction to Application Development with Qt Quick, Release 1.0, February 28, 2013.

[6] http://Pandaboard.org, OMAP4430 Pandaboard ES System Reference Manual, Revision 0.1, September 29, 2011.

[7] William Stallings, Sistemas operativos: Aspectos internos y principios de dise˜no, Prentice Hall, 2007.

[8] Emilio Raggi, Keir Thomas, Sander van Vugt, Beginning Ubuntu Linux, sexta edici´on, Apress, 2011.

[9] Mark G. Sobell, A Practical Guide to Ubuntu Linux, Prentice Hall, 2008.

[10] Christopher Negus, Ubuntu Linux: Toolbox, Wiley, 2009.

[11] Marko Gargenta, Learning Android, O’REILLY, Marzo 2011.

53