UNIVERSIDAD VERACRUZANA
FACULTAD DE INSTRUMENTACI ´
ON
ELECTR ´
ONICA
Sistema de Portero Electr´
onico Utilizando
la Tarjeta de Desarrollo Pandaboard y
Comunicaci´
on con Smartphones
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(C) Jorge Eduardo P´
erez-J´
acome
Friscione
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´a tu 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´e revisor 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´e que estas guiando mi vida, que cuidas mis pasos y de todos los que me rodean.
GRACIAS
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´a un sistema mediante el cual un usuario que cuente con un Smartphone 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´ıa y 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.
´Indice general
Resumen VII
1. Introducci´on 1
1.1. Historia . . . 1
1.2. Problem´atica . . . 2
1.3. Propuesta . . . 2
1.4. Organizaci´on del trabajo . . . 3
2. Hardware 5 2.1. Pandaboard . . . 5
2.2. C´amara web . . . 10
2.3. Smartphone . . . 11
3. Software 15 3.1. Sistema Operativo . . . 15
3.1.1. Ubuntu . . . 16
3.1.2. Android . . . 19
3.2. Almacenamiento en la nube . . . 22
3.2.1. Google Drive . . . 24
3.2.2. Grive . . . 25
3.2.3. Instalaci´on de Grive . . . 27
3.3. Qt y Qt Creator . . . 29
3.3.1. Qt . . . 30
3.3.2. Qt Creator . . . 30
3.4. APP Inventor . . . 33
3.4.1. Uso de OAuth 2.0 para acceder a las API de Google . . . 34
3.4.2. Aplicaciones de servidor Web . . . 37
3.4.3. Aplicaci´on del proyecto . . . 37
4. Pruebas 43 4.1. Mediciones de tiempo . . . 43
x ´INDICE GENERAL
4.2. Repetibilidad . . . 45 4.3. Integraci´on del sistema completo . . . 46
5. Resultados y Conclusiones 49
´Indice de figuras
2.1. Puertos de la tarjeta Pandaboard. . . 6
2.2. Esquema interno de la tarjeta Pandaboard. . . 7
2.3. Puertos I/O en la tarjeta Pandaboard. . . 9
2.4. C´amara web. . . 11
2.5. Smartphone utilizado en el proyecto. . . 13
3.1. Alojamiento en la nube. . . 23
3.2. Pantalla de bienvenida de Qt Creator. . . 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. Acceso a cuenta de correo de Gmail. . . 39
3.9. Permiso para usar aplicaci´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. Disipador adaptado a la tarjeta Pandaboard. . . 50
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´a c´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´a tocando, 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´a perdiendo esta costumbre debido a factores como la inseguridad y desconfianza a las personas que nos rodean, esto hace complicado el saber quien toc´o a la puerta y mucho menos en qu´e momento 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.
2 CAP´ITULO 1. INTRODUCCI ´ON
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´a fuera 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´e hardware 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´a compatible 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´a la mejor soluci´on posible a la problem´atica del proyecto.
1.3.
Propuesta
1.4. ORGANIZACI ´ON DEL TRABAJO 3
y operaci´on, con una respuesta en tiempo real; esto significa que el sistema realizar´a las funciones de transferencia de la imagen en el momento en que se active el timbre y el tiempo de respuesta depender´a del 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´a la 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 usb, 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 entraca-da o salica-da 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´a instalar 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´a desarrollar 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´ıo del archivo, se buscar´a un 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´a cu´al es la mejor opci´on para garantizar el funcionamiento ´optimo de la aplicaci´on en el tel´efono, esto incluir´a el sistema operativo y la compatibilidad con el software utilizado en la tarjeta Pandaboard. Al igual, tambi´en se desarrollar´a una 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.
1
http://pandaboard.org/
2
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´o por 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 Linux, 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
1
http://pandaboard.org/
2
http://pandaboard.org/sites/default/files/board setup v3.png
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.
3
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
4
http://pandaboard.org/node/223/#PBBlockDiagram
5
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´a optimizada 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´ıa y 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´a dependiendo 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,
6
Puede ir al sitio http://omappedia.org de distribuciones de software y seguir las instruc-ciones para grabarlo en la tarjeta SD
7
http://pandaboard.org
8
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.
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.
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´ıa instant´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´ıa amateur 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
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´ıo de 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´ıa debe tener la capacidad de mantener el consumo de energ´ıa del Smartphone, aun cuando est´e usando 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´ıa una 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´a la 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.
2.3. SMARTPHONE 13
Figura 2.5: Smartphone utilizado en el proyecto.
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 Dependien-donde se haya instalaDependien-do, 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´a el que se utilice en la tarjeta de desarrollo Pandaboard y otro para el Smartphone.
El sistema operativo utilizado para la tarjeta Pandaboard, fu´e la distribu-ci´on de Ubuntu, ya que es compatible con la misma, permite la instaladistribu-ci´on de programas de desarrollo multiplataforma y es compatible con un gran n´umero de c´amaras web; esto ayud´o en la implementaci´on del proyecto.
16 CAP´ITULO 3. SOFTWARE
3.1.1.
Ubuntu
Ubuntu1
es una distribuci´on de sistema operativo de acceso libre, est´a dis-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´o Ubuntu. 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
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 edidistribu-ci´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´o a 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´ıa de 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.
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´o la 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´a usando 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 /
4
http://google.about.com/od/g/g/goobuntudef.htm
5
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´a disponible 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´a lista 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´ıa m´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´ıo de 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.
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´a disponible 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´o que 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´ıa probablemente 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´a dise˜nado para ser port´atil.
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´ıa VoIP 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´ıa mejorada 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´a instalalda en el Smartphone utilizado en el desa-rrollo del proyecto, actualmente se encuentra disponible la versi´on 4.4 llamada KitKat.
6
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´ıa de 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´ıa de 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 dadocumen-tos, 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
7
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´o por utilizar Google Drive, 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
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 Google Docs, 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
19
http://appinventor.mit.edu/explore/
20
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, Gmail y ´Albumes web de Picasa (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 Chrome Web Store, 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´a es-crito en C++ est´andar. El c´odigo fuente de Grive se distribuye bajo GPLv2.
21
https://support.google.com/drive/answer/2375123?hl=es
22
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 cardescar-gar 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´a dentro 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”.
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 :/ / github.com / Grive / grive.git
El c´odigo fuente estar´a en 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.
23
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´a en el subdirectorio “grive”.
Copiar el archivo ejecutable grive al nivel superior del directorio de la unidad donde se sincronizar´a la 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´a en 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´a correctamente.
Se ubica en el directorio de la unidad google y se ejecuta grive:
cd/home/usted/yourGoogleDrive/(por ejemplo)
./grive -a
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´a la imagen de la c´amara web y llevar´a a cabo el proceso de env´ıo de informaci´on a Internet se opt´o por 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´o la versi´on Qt 5 por las nuevas bibliotecas, lo cual facilit´o la creaci´on de la aplicaci´on.
24
https://plus.google.com/+NestalWan/posts
25
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.
26
http://qt-project.org/
27
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).
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´o una 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´a en 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´a transferida 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
28
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 Google Labs 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´ıa Open 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-29
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
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
30
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´a construyendo. Por ejemplo, una aplicaci´on de JavaScript no requiere un client secret, pero una aplicaci´on de servidor web s´ı.
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 APIs. Un par´ametro variable llamado alcance con-trola el conjunto de recursos y operaciones para que el token de acceso d´e los 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´a construyendo. Por ejemplo, una aplicaci´on de JavaScript podr´ıa solicitar 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´a solicitando. 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´ıa el 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,
31
http://es.wikipedia.org/wiki/Representational State Transfer
32
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´a del 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´o en cuenta que se utilizar´ıa el 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.
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).
3.4. APP INVENTOR 39
Figura 3.7: Pantalla de inicio de la aplicaci´on.
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´e informaci´on tendr´a acceso dicha apliapli-caci´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´a un temporizador que en un intervalo de tiempo predeterminado buscar´a si existe alg´un cambio en la imagen guardada en Google Drive aunque el usuario no est´e dentro de la apli-caci´on. De esta manera se detectar´a el momento en que se genere la imagen al tocar el timbre y en pocos segundos estar´a disponible en nuestro Smartphone.
33
3.4. APP INVENTOR 41
Figura 3.10: B´usqueda de la ´ultima imagen registrada.
42 CAP´ITULO 3. SOFTWARE
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´a tocando 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´o en 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´o la aplicaci´on creada en Qt
1
www.jpeg.org