Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ
Instituto de Ingeniería y Tecnología
Departamento de Ingeniería Eléctrica y Computación
SISTEMA MULTIMEDIA RASPBERRY PI
Reporte Técnico de Investigación presentado por:
Ricardo Martínez Lozano 98665
Ricardo Hernández Lozano 98719
Requisito para la obtención del título de
INGENIERO EN SISTEMAS COMPUTACIONALES
Profesor Responsable: MC. Fernando Estrada Saldaña
Junio del 2014
ii
iii
Autorización de Impresión
Los abajo firmantes, miembros del comité evaluador autorizamos la
impresión del proyecto de titulación
SISTEMA MULTIMEDIA RASPBERRY PI
Elaborado por los alumnos:
Ricardo Martínez Lozano 98665
Ricardo Hernández Lozano 98719
Dr. Jorge Rodas
Profesor de la Materia
MC. Fernando Estrada Saldaña
Asesor Técnico
iv
Declaración de Originalidad
Nosotros Ricardo Martínez Lozano, Ricardo Hernández Lozano declaramos que el
material contenido en esta publicación fue generado con la revisión de los
documentos que se mencionan en la sección de Referencias y que el Programa de
Cómputo (Software) desarrollado es original y no ha sido copiado de ninguna otra
fuente, ni ha sido usado para obtener otro título o reconocimiento en otra Institución
de Educación Superior.
Ricardo Martínez Lozano Ricardo Hernández Lozano
v
Dedicatoria
Este trabajo de tesis está dedicado a nuestros padres que a lo largo de todos estos años
han estado apoyándonos y motivándonos, sencillamente ustedes son la base de nuestra
vida profesional.
Gracias por confiar en nosotros, este logro es de ustedes.
vi
Agradecimientos
A nuestros profesores que durante toda la carrera nos apoyaron y transmitieron su
conocimiento para poder aplicarlo en la vida, no solo en el ámbito laboral y
estudiantil sino también en la vida diaria.
En especial al maestro Fernando Estrada Saldaña quien nos ayudó y oriento a realizar
este proyecto, aun cuando en el transcurso del proyecto nos encontramos con
tropiezos él nos ayudó a levantarnos y a seguir adelante.
También una especial mención al Doctor Jorge Rodas que nos guio en la elaboración
de este documento y nos prestó el tiempo necesario para culminar este documento.
vii
Índice de contenido
Autorización de Impresión ........................................................................................... iii
Declaración de Originalidad ......................................................................................... iv
Dedicatoria ..................................................................................................................... v
Agradecimientos ........................................................................................................... vi
Índice de contenido ...................................................................................................... vii
Índice de Figuras ........................................................................................................... ix
Lista de Tablas .............................................................................................................. xi
Introducción ................................................................................................................... 1
Capítulo 1. Planteamiento del problema ........................................................................ 2
1.1 Antecedentes ................................................................................................... 2
1.2 Definición del problema ...................................................................................... 8
1.3 Objetivos de la investigación ............................................................................... 8
1.3.1 Objetivo General ............................................................................................... 9
1.3.2 Objetivos específicos ........................................................................................ 9
1.4 Preguntas de investigación ................................................................................... 9
1.5 Justificación de la investigación .......................................................................... 9
1.6 Limitaciones y delimitaciones de la investigación ........................................... 10
Capítulo 2. Marco Teórico ........................................................................................... 11
2.1 Estructura física de Raspberry Pi ....................................................................... 11
2.2 Estructura Lógica de Raspberry PI .................................................................... 12
2.3 Lenguajes de programación en Raspberry Pi ..................................................... 13
2.4 APIs (Application Programming Interface) ....................................................... 14
Capítulo 3. Materiales .................................................................................................. 20
3.2 Materiales ........................................................................................................... 20
3.2.1 Software ...................................................................................................... 20
3.2.2 Hardware ..................................................................................................... 22
3.3 Método ............................................................................................................... 23
Capítulo 4. Resultados de la investigación .................................................................. 29
4.1 Presentación de resultados ................................................................................. 29
Capítulo 5. Conclusiones ............................................................................................. 39
5.1 Aportaciones ...................................................................................................... 39
viii
5.2 Trabajo futuro .................................................................................................... 40
Bibliografía .................................................................................................................. 42
Apéndices ..................................................................................................................... 46
Apéndice A. Especificaciones de Raspberry Pi ........................................................... 46
Especificaciones técnicas ......................................................................................... 46
Conectores y pines de Raspberry Pi. ........................................................................ 48
Apéndice B. Sistema operativo Raspbian .................................................................... 50
Apéndice C. Lenguaje de Programación PHP ............................................................. 51
Guardar una variable ................................................................................................ 52
Leer una variable guardada ...................................................................................... 53
Borrar una variable .................................................................................................. 53
Apéndice D. Configuraciones adicionales de Raspberry Pi ........................................ 56
Apéndice E. Técnica Overclock .................................................................................. 57
Apéndice F. Creación de aplicaciones para el sistema ................................................ 59
Apéndice G. Seguridad de los navegadores web ......................................................... 60
Apéndice H .Lenguajes de Programación .................................................................... 61
Ventajas de los lenguajes interpretados. .................................................................. 64
Desventajas de los lenguajes interpretados. ............................................................. 64
Apéndice I. Manual de Usuario .................................................................................. 65
Introducción ............................................................................................................. 65
Objetivo del manual ................................................................................................. 65
Configuración Inicial ............................................................................................... 65
Arranque del sistema................................................................................................ 65
Módulos del sistema ................................................................................................ 66
Módulo de medios locales. .................................................................................. 66
Módulos web ........................................................................................................ 70
Apéndice J. Manual Técnico ........................................................................................ 74
Introducción y objetivos .......................................................................................... 74
Lenguaje utilizado. ................................................................................................... 74
Aplicación ................................................................................................................ 74
Utilerías ................................................................................................................ 75
Agregar addons al sistema. ...................................................................................... 75
ix
Índice de Figuras
Figura 1.1 Apple TV ............................................................................................................................... 3
Figura 1.2 Energy Android SmartTv Box ............................................................................................... 4
Figura 1.3 O!Play HD2 .......................................................................................................................... 4
Figura 1.4 PopCorn Hour A-300 ............................................................................................................. 5
Figura 1.5 Prototipo de Raspberry Pi año 2006 y 2008 ........................................................................... 6
Figura 2.1 Estructura de Hardware en Raspberry Pi modelo B ............................................................ 12
Figura 2.2 Raspberry Pi + Debian = Raspbian ...................................................................................... 13
Figura 2.3 Cantidad de APIs del año 2000 al 2011. .............................................................................. 16
Figura 3.1 Información de la imagen del sistema operativo Raspbian. ................................................ 23
Figura 3.2 Configuración inicial de Raspberry Pi ................................................................................. 24
Figura 4.1 Interfaz, medios locales ........................................................................................................ 30
Figura 4.2 Utilerías del sistema ............................................................................................................ 31
Figura 4.3 Addon tipo Java ................................................................................................................... 31
Figura 4.4 Interfaz ................................................................................................................................. 31
Figura 4.5 Configuración y eliminación del sistema. ............................................................................ 32
Figura 4.6 Problemas con Flash Player ................................................................................................. 33
Figura 4.7 Prueba de video HTML5 ...................................................................................................... 34
Figura 4.8 Prueba de video, reproductor de HTML5 de YouTube ........................................................ 34
Figura 4.9 Uso de CPU en VLC Media Player ...................................................................................... 35
Figura 4.10 Uso de CPU en OMXPLAYER ......................................................................................... 36
Figura 4.11 Rendimiento del radio por interne ...................................................................................... 36
Figura 4.12 Resultados de VLC Media Player y gráfica del procesador. .............................................. 37
Figura 4.13 Pruebas y grafica de rendimiento con OMXPLAYER....................................................... 38
Figura 4.14 Resultado de la reproducción en OMXPLAYER. .............................................................. 38
Figura A.1. Grafica comparativa entre el modelo A y B de Raspberry Pi............................................. 46
Figura A.2 Interfaces de Hardware de Raspberry Pi ............................................................................. 48
Figura A.3 Interfaces externas de Raspberry Pi .................................................................................... 49
Figura B.1 Raspbian ............................................................................................................................. 50
Figura D.1 Pantalla de configuración de Raspberry Pi .......................................................................... 56
Figura E.1 Configuración Overclock Raspberry Pi .............................................................................. 58
Figura F.1 Ejemplo creación de Addon ................................................................................................. 60
Figura I.1 Página principal del sistema. ................................................................................................ 66
Figura I.2 Encabezado de medios locales. ............................................................................................ 66
Figura I.3 Aplicaciones que reproducen medios locales ....................................................................... 67
Figura I.4. VLC Media Player ............................................................................................................... 67
Figura I.5 OMXPLAYER ..................................................................................................................... 68
Figura I .6. Visor de imágenes. ............................................................................................................. 68
Figura I.7. Utilerías cargadas dentro del sistema. ................................................................................. 69
x
Figura I.8 Aplicación de YouTube ........................................................................................................ 69
Figura I.9. Botón PLAY del navegador. ................................................................................................ 70
Figura I.10. Página inicial Módulos web .............................................................................................. 71
Figura I.10. Sección de radio por internet. ............................................................................................ 71
Figura 1.11. Listado de aplicaciones agregadas por el usuario.............................................................. 72
Figura I.12. Configuración de los módulos web. .................................................................................. 72
Figura I.13. Configuración, cambio de color de fondo y color de letras. .............................................. 73
Figura J.1. Utilerías del sistema ............................................................................................................ 75
Figura J.2 Diagrama de flujo para la instalación de addons. ................................................................. 77
Figura J.3 Diagrama de flujo para la ejecución de un addon agregado por el usuario. ......................... 78
Figura J.4 Imagen de las diferentes carpetas utilizadas......................................................................... 78
xi
Lista de Tablas
Tabla 3.1 Librerías adicionales de Minimal Kiosk Browser .................................................................. 26
Tabla A.1 Estados de los indicadores LED de Raspberry Pi. ................................................................. 47
Tabla I.1 Teclas para manipular YouTube. ........................................................................................... 70
1
Introducción
En la actualidad los sistemas de información y comunicación han ido evolucionando al
grado de que se suelen utilizar de manera muy común y en muchas ocasiones sin que
los usuarios logren percibirlos.
Existen productos o dispositivos que son llamados inteligentes por la capacidad que
tienen de procesar, transmitir y compartir información. Uno de esos productos son los
televisores inteligentes, los cuales tienen más capacidades que las televisiones comunes.
Sin embargo, al ser nuevas en el mercado su costo de adquisición es elevado.
Existen por su parte algunos equipos o accesorios que permiten dotar de características
adicionales a un televisor inteligente. Entre estos se encuentran los reproductores
multimedia inteligentes, sin embargo cuentan con especificaciones técnicas/lógicas
limitadas o simplemente su costo es elevado para las funciones que nos ofrece.
Raspberry Pi es una microcomputadora económica, capaz de ser utilizada para muchas
cosas que una computadora normal puede hacer, desde navegar por internet hasta
reproducir videos en alta definición, todos éstos elementos brindan la oportunidad de
crear soluciones acorde a un presupuesto limitado.
2
Capítulo 1. Planteamiento del problema
En el presente capítulo se hablará acerca de la importancia y la evolución de los
dispositivos multimedia en nuestros días, así como de las tecnologías y dispositivos
actuales, sus características y costos.
También se hablará acerca de Raspberry Pi algunas de sus características y de los
proyectos con los que han trabajado diferentes personas o comunidades.
De igual manera, se agrega el planteamiento general del proyecto, su definición, los
objetivos que se plantearon, así como sus delimitaciones y limitaciones del mismo.
1.1 Antecedentes
Desde que se creó la televisión a principios del siglo XX y a medida que ha ido
evolucionando, se ha buscado que la televisión tenga y brinde más contenido y calidad a
sus usuarios. La creación y globalización de la televisión trajo consigo competitividad
entre las empresas creadoras de contenido hasta las creadoras de los mismos equipos de
televisión [1]. Con esta ardua competencia surgió el VHS (Video Home System), el cual
es un sistema de grabación y reproducción analógico. Con un reproductor VHS se podía
visualizar el contenido e incluso grabar lo que se reproducía en la televisión, los
problemas eran la calidad con la que se reproducía el video, además que su tiempo de
grabación era limitado [2]. Después del VHS surgió el DVD (Digital Versatile Disc)
mismo que contiene una codificación digital aumentando la calidad del video y del
audio [3].
Paralelamente a estas tecnologías de video fue surgiendo y evolucionando la
computación, la cual fue tomando lo mejor de muchas tecnologías para crear y hacer
que las computadoras fueran utilizadas en cualquier ámbito de nuestras vidas. Desde el
punto de vista laboral hasta el entretenimiento, fueron surgiendo portales como
YouTube el cual es un sitio gratuito para la distribución de material multimedia en todo
el mundo. También surgieron tiendas en línea para obtener música y video,
principalmente, sin la necesidad de salir de casa.
3
Toda esa tecnología que se fue desarrollando en la computación se fue aplicando en
otros dispositivos, como los reproductores multimedia, sintonizadores satelitales de
televisión y hasta en las televisiones. Dichas televisiones son llamadas SmartTv, las
cuales son capaces de procesar, recibir y transmitir información sin ningún dispositivo
externo.
En la actualidad existen tecnologías y elementos que brindan al usuario la capacidad de
tener en un equipo multimedia con múltiples servicios de entretenimiento en alta
definición, ya sea de video o audio. Todo en un solo dispositivo y a medida que las
necesidades de los usuarios aumentan, se van desarrollando nuevos dispositivos,
algunos ejemplos utilizados en la actualidad son:
a) Apple TV
Este centro de entretenimiento permite acceder a un amplio catálogo de archivos
multimedia, los cuales son ofrecidos por Apple. El Apple TV se puede conectar
con los dispositivos Apple para compartir música, videos y fotos; con una
resolución de 1080 Pixeles. El costo de este dispositivo es de 99 dólares [4].
(Ver figura 1.1).
Figura 1.1 Apple TV
4
b) Energy Android SmartTv Box
Dispositivo multimedia que dota a la televisión del sistema operativo Android
permitiéndole acceder a los servicios y aplicaciones ofrecidas por Google y su
sistema operativo. Además de sintonizar y grabar en alta definición. Según su sitio
web [5] también tiene las funciones de Media Share y cuenta con la versión 4.0 de
Android (Ver figura 1.2.).
Figura 1.2 Energy Android SmartTv Box
c) O!play HD2 de Asus.
Este dispositivo es el primero en el mundo en ofrecer un centro multimedia con
USB 3.0 lo cual hace más rápido y sencillo el compartir elementos multimedia
por medio de una red local. Ofrece emisores de radio y canales de televisión.
Brinda aplicaciones como Picasa, Flickr, Podcast, noticias RSS. También cuenta
con sonido envolvente 7.1 [6] (Ver figura 1.3).
Figura 1.3 O!Play HD2
5
d) Popcorn Hour A-300 de Cloudmedia
Centro de entretenimiento que ofrece a sus usuarios las características
multimedia de audio y video en alta definición, se puede tener acceso a una
variedad de tiendas digitales para la compra y venta de servicios multimedia.
Según su sitio web cuenta con soporte para MKV 3D, con el cual es posible ver
películas y secuencias en 3D. [7] (Ver figura 1.4).
Figura 1.4 PopCorn Hour A-300
Las soluciones mencionadas anteriormente tienen como objetivo brindar al usuario
comodidad y variedad de entretenimiento. Dichas soluciones cuentan sus respectivas
ventajas y desventajas. Una posible desventaja es la necesidad de contar con alguna
cuenta especial para poder tener acceso a los servicios ofrecidos. Otra posible
desventaja es el precio de adquisición, el cual oscila entre los 100 y 250 dólares.
Conforme ha pasado el tiempo los equipos informáticos han ido incrementando su
poder de procesamiento sin la necesidad de incrementar notoriamente sus costos. Con
estos avances han surgido nuevas tendencias al momento de producir nuevos equipos
para el mercado actual, una de estas tendencias son los equipos llamados SBC (Single
Board Computer) los cuales tienen como características principales su precio y su
tamaño. El precio de equipos de esta gama oscila entre los 30 y 70 dólares dependiendo
del equipo, y su tamaño es no mayor al de una tarjeta de crédito. Un ejemplo de este
tipo de equipos es el llamado Raspberry Pi.
6
Raspberry Pi surge en al año 2006, basada en un proyecto realizado por la Universidad
de Cambridge dónde el objetivo principal era crear una computadora pequeña y
económica, ideal para que los niños entendieran y aprendieran la forma de pensar y
razonar en las ciencias computacionales. Conforme se desarrollaba el proyecto otras
tecnologías iban creciendo, una de esas tecnologías fue la tecnología móvil, la cual era
cada vez más popular en el mercado, surgiendo grandes cantidades de marcas y
empresas que producían diferente equipos y hardware. Esto trajo como consecuencia
mejoras en su desempeño y más accesibilidad para todo el mundo tecnológico. Así que
cada vez era más común el desarrollo de equipos pequeños capaces de ejecutar
cualquier tipo de tareas. Estas tendencias marcaron el camino de Raspberry Pi el cual
vio disminuido su tamaño sin disminuir su potencia. La figura 1.5 muestra el cambio de
uno de los primeros prototipos creado en el año 2006 a otro creado en el año 2008.
Figura 1.5 Prototipo de Raspberry Pi año 2006 y 2008
Conforme se ha ido desarrollando el proyecto de Raspberry Pi el cual data del año 2006,
pasando por su primera versión comercial llamado modelo A (febrero 2012) hasta llegar
a su versión más actual denominada versión B (Febrero 2013) se han ido agregando
características las cuales han causado gran impacto en sus usuarios, atrayendo el uso de
este equipo en diversas áreas de la sociedad. Desde instituciones escolares, empresas
privadas, dependencias públicas hasta el usuario común y corriente [8]. Algunos de los
7
usos que se le dan a Raspberry Pi son: servidor web, clúster, radio, servidor VPN, entre
otros usos más básicos o complejos.
Algunos de los proyectos más conocidos donde han utilizado Raspberry Pi son:
a) Coder
Convierte Raspberry Pi en un servidor web, que permite crear contenido web
utilizando HTML, CSS y JavaScript. Este proyecto fue realizado por el equipo
de Google en Nueva York con la intensión de que sus usuarios aprendan
programar, codificar y pensar mientras se desarrollar contenido web [9].
b) RpiCluster
RpiCluster es una solución creada por Joshua Kiepert de la Universidad de
Boise State, donde se buscaba hacer pruebas en un Clúster Beowulf, el cual es
un grupo de computadoras generalmente idénticas, que están conectadas en red
con el fin de compartir el procesamiento de las tareas.
En Boise State ya se contaba con un Clúster Beowulf, pero Kiepert no confiaba
totalmente en él, principalmente por su disponibilidad y la dificultad al momento
de agregar algún software. Pensando en varias soluciones Kiepert llegó a la
conclusión que su única alternativa era crear un clúster que se adecuara a sus
necesidades. Esa solución incluía 32 equipos Raspberry los cuales
interconectados tenían la capacidad de procesamiento de 10 GFLOPS a un costo
menor comparado con equipos que ofrecían el mismo poder de procesamiento
[10].
c) Raspberry Pi Supercomputer
La Universidad de Southampton y su departamento de Computación liderados
por el Doctor Simón Cox, desarrollaron una supercomputadora de 64 núcleos y
1 TB de memoria, fue creada a partir de 64 equipos Raspberry Pi y con un costo
de 2 500 euros [11]. Esta supercomputadora ha sido como un clúster para toda
la universidad. La misma institución y su equipo de trabajo han puesto a
disposición del público la forma de crear la supercomputadora, apoyando el
objetivo de Raspberry Pi [12].
8
Así como se han utilizado equipos Raspberry Pi para proyectos educativos o como
soluciones a problemas relacionados con tecnologías de información también han
surgido proyectos que pueden ser utilizados en la vida cotidiana y donde cualquier
persona tenga acceso a ello, uno de esos proyectos ha sido por parte la empresa XBMC,
la cual publicó en la página oficial de Raspberry Pi un artículo nombrado ‘XBMC
Running On Raspberry Pi’, donde se mostraban los pasos para montar el sistema
XBMC en la Raspberry [13]. Todo este proyecto fue realizado por el equipo XBMC el
mismo que es el encargado de desarrollar dicho sistema. XBMC es un reproductor de
medios y de entretenimiento de código abierto y libre (GPL), que se puede instalar en
Linux, OSX, Windows, iOS y ahora en Android [14].
Siguiendo las iniciativas de XBMC el equipo de OpenELEC elaboró un sistema
embebido construido para que Raspberry Pi pueda ejecutar correctamente XBMC [15].
OpenELEC es un sistema operativo diseñado para ejecutar XBM, dónde su idea
principal es permitir a la gente utilizar XBMC como cualquier dispositivo multimedia
(DVD, DVR), sin la necesidad de administra manualmente XBMC [16].
1.2 Definición del problema
Los televisores inteligentes han ido creciendo en el mercado actual pero no están al
alcance de gran parte de la población debido a su costo elevado y aun cuando
actualmente existen dispositivos externos que ofrecen la posibilidad de extender las
funciones de entretenimiento que poseen las televisiones actuales, el costo de dichos
dispositivos sigue siendo inaccesible para muchos usuarios. Además en ocasiones el
dispositivo adquirido cuenta con opciones limitadas de entretenimiento al usuario.
1.3 Objetivos de la investigación
Implementar un sistema multimedia con ayuda del equipo Raspberry Pi que ofrezca al
usuario una amplia variedad de entretenimiento en un solo dispositivo con un costo
reducido en comparación a otras soluciones.
9
1.3.1 Objetivo General
Configurar el un sistema en Raspberry Pi ayudado de APIs convenientes para crear un
centro multimedia abierto que, conectado a la televisión, funcione como una SmartTV.
1.3.2 Objetivos específicos
Registrar el comportamiento del Raspberry Pi al trabajar como un centro de
entretenimiento. Describir cómo diferentes APIs se puedan integrar al sistema.
1.4 Preguntas de investigación
¿En qué podrá beneficiar la propuesta planteada a los usuarios y los posibles
desarrolladores?
¿Cómo se pueden integrar las diferentes APIs al sistema logrando que el usuario
tenga acceso a ellas?
¿Cómo se comportará el Raspberry Pi como sistema multimedia?
¿Qué ventajas tiene nuestro sistema multimedia con respecto a las alternativas
actuales?
1.5 Justificación de la investigación
El presente documento tiene como fin la creación de un sistema multimedia para
convertir un televisor común en uno inteligente, generando algunas de las siguientes
ventajas:
Evitar la compra de un nuevo televisor, alargando el tiempo de vida del mismo.
Variedad de APIs o aplicaciones de entretenimiento en el sistema, tratando de
agregar las más utilizadas en el mercado.
Basado en un sistema Linux el cual es de código abierto por lo consiguiente
tiene la oportunidad de poder agregar más APIs y actualizarse a los sistemas
más modernos.
10
Los usuarios regularmente toman en cuenta el factor costo/rendimiento de los
productos en los que están interesados. El costo de Raspberry Pi es aproximado
de $35 dólares.
1.6 Limitaciones y delimitaciones de la investigación
Las limitaciones con las que se puede contar en este proyecto son:
Las librerías utilizadas en Raspberry Pi son pocas en este momento.
Permiso de utilizar APIs de terceros.
Aunque no se podría considerar como limitaciones las siguientes se deben tomar
como consideraciones:
1. Acceso a Internet, algunos de los APIs considerados necesitan
conectarse a Internet para poder actualizar y cargar los elementos
multimedia. Para visualizar los archivos locales no es necesario tener
acceso a internet.
2. Aunque se puede conectar a la televisión por componente y por HDMI,
es recomendable utilizar la conexión por HDMI, para poder lograr el
mejor rendimiento del dispositivo.
Delimitación
Por cuestiones de tiempo se implementarán solamente algunas de las APIs más
populares en la actualidad; navegador web, YouTube.
11
Capítulo 2. Marco Teórico
El presente capítulo tratará la estructura del Raspberry Pi tanto la física como la lógica,
mediante las cuales podremos conocer algunas limitantes, lenguajes utilizados, sistemas
operativos, etc. Dicha información será necesaria para llevar a cabo la investigación y
el desarrollo del proyecto. De igual manera se investigará y se conocerá acerca de las
APIs existentes y populares.
2.1 Estructura física de Raspberry Pi
Al hablar de Raspberry Pi se puede pensar que su rendimiento tanto en software
como en hardware es limitado. Y esto puede ser cierto pero también se podría decir que
sus características son más parecidas a las de un dispositivo móvil, pero en esta sección
se mostrará que este dispositivo cuenta con características adicionales, a tal grado de
poder acercarse y competir con cualquier equipo de cómputo utilizado en la vida
cotidiana.
Raspberry Pi es un sistema SBC (Single Board Computer), lo cual indica que es un
equipo computacional elaborado en una tableta no más grande que una tarjeta de
crédito. Actualmente existen en el mercado dos versiones de Raspberry pi, el modelo A
y el modelo B, siendo el modelo B el más actual, algunas de las características de este
modelo son las siguientes [17]:
1. Procesador: ARM 700 MHz con memoria RAM de 512 MB
2. Conector HDMI
3. Puertos USB y Ethernet
4. Salida de audio y video por medio del conector análogo y de componente
respectivamente.
Estas características del modelo B se pueden visualizar en la imagen 2.1. Si se desea
saber más acerca de las especificaciones técnicas de hardware de Raspberry Pi ver el
apéndice correspondiente a las especificaciones técnicas de Raspberry Pi (Apéndice A).
12
Figura 2.1 Estructura de Hardware en Raspberry Pi modelo B
2.2 Estructura Lógica de Raspberry PI
Raspberry Pi corre como sistema operativo Linux, pero Linux es solo el
KERNEL, ya que el sistema operativo es mucho más que eso, la colección de drivers,
servicios y aplicaciones hacen el sistema operativo, además que existen una gran
variedad de sabores y distribuciones de Linux. Algunos de los sabores más populares y
conocidos en ambientes de escritorio son Ubuntu, Debian, Fedora y Arch, cada uno con
sus capacidades y aplicaciones particulares.
Como Raspberry Pi cuenta con un chipset con características parecidas a las de un
dispositivo móvil, tiene diferentes requerimientos de software, así que necesita
distribuciones de Linux especiales, dichas distribuciones son [17]:
Raspbian: La distribución oficial recomendada por la Raspberry Pi Foundation.
Como su nombre lo indica es la distribución Debian optimizada para la
Raspberry Pi. Para más información acerca de Raspbian verificar el apéndice de
Raspbian (Apéndice B).
13
Figura 2.2 Raspberry Pi + Debian = Raspbian
Arch Linux: Esta distribución esta optimizada para los chipset ARM, por lo
tanto soportan Raspberry Pi.
Xbian: Es una distribución basada en Raspbian para usuarios que quieran usar su
Raspberry Pi como centro de medios [18]
2.3 Lenguajes de programación en Raspberry Pi
Raspberry Pi puede compilar o interpretar una gran variedad de lenguajes de
programación, debido a la gran variedad de compiladores o interpretes disponibles para
sistemas operativos basados en Linux, algunos de los lenguajes más utilizados tanto en
Linux como en la actualidad son:
Python: Python es un lenguaje interpretado creado en 1999 por Guido van Rossum,
quien buscaba un lenguaje de programación fácil de entender para cualquier persona,
principalmente para aquellas personas que eran nuevas en este tipo de tecnologías. Al
ser un lenguaje interpretado, solo es cuestión de contar con el intérprete adecuado para
poder ejecutar algún script.
Según Richardson autor del libro Getting Started with Raspberry Pi, Python puede
llegar a ser un poco más rápido al ser un lenguaje interpretado y así poder tener algunos
beneficios. [17]
Los intérpretes de Python se pueden ejecutar de dos maneras:
Como un Shell interactivo, el cual ejecuta comandos.
14
Como programa de líneas de comandos, para ejecutar secuencias.
Otras de las razones por las que Python es tan popular, es que existen una gran cantidad
de módulos que proporcionados por los usuarios.
C#. Raspberry Pi también puede compilar y programar en C# vía Mono el cual es un
compilador para C# en distribuciones Linux. C# puede llegar a tener problemas de
compatibilidad en su sintaxis en el paso de parámetros, el que se arregla con una
actualización del software Mono. Pero aún existen errores. Por lo tanto es muy poco el
uso de C# en Raspberry Pi [19].
Erlang. Erlang es un lenguaje de programación utilizado principalmente en servidores
web, Erlang fue diseñado en los laboratorios de computación de Ericsson, creado
originalmente para desarrollar aplicaciones distribuidas tolerantes a fallos. Este lenguaje
es común encontrarlo en temas relacionados a telecomunicaciones, transacciones
bancarias, comercio y telefonía [20].
Java. Oracle tiene poco tiempo de dar soporte de sus servicios a equipos con
arquitectura ARM, uno de esos servicios es la aplicación Java SE RUNTIME, la cual
permite la ejecución de aplicaciones JAVA mediante líneas de comandos. La ser
relativamente nuevo este servicio su documentación acerca de la instalación y de
resolución de problemas solo se puede encontrar en la página oficial de Oracle [21].
Pascal. También se pueden escribir programas desarrollados en Pascal en el Raspberry
Pi. De Pascal han surgido otros lenguajes como lo es Delphi y Oberon [22]. Una de las
ventajas de programar en Pascal es su portabilidad entre sistemas operativos, además de
soportar diferentes tipos de procesadores tanto procesadores Intel como ARM. [23].
2.4 APIs (Application Programming Interface)
API (Application Programming Interface) es un conjunto de funciones o
procedimientos que ofrecen ciertas bibliotecas para ser utilizadas por otro software
como una capa de abstracción.
15
Un API define la interfaz por la cual una parte del software se comunica con otra fuente,
proporcionando un set estándar de interfaces, usualmente funciones, métodos o
procedimientos, las que se pueden llamar desde cualquier otra parte del software [18].
Las APIs proveen un método estructurado para desarrollar un programa que realice una
determinada tarea [24].dichos métodos pueden ser de gran ayuda para los
desarrolladores, ya que mediante ellas se puede acceder a datos y servicios que ofrecen
los proveedores de las APIs.
Las APIs se pueden dividir en dos:
Públicas. Están al alcance del que las necesite. Existe una gran cantidad de
información ya que entre los usuarios y desarrolladores existen en una gran
demanda para este tipo de aplicaciones, brindando una retroalimentación de una
gran cantidad de temas. Algunos de las limitantes de estas APIs son las
restricciones a cierta información o servicios, además de poder llegar a tener
problemas de copyright y en algunos casos tener problemas de seguridad. [25]
Privadas. Estas solo son vistas por cierta cantidad de desarrolladores,
principalmente asociados de la empresa desarrolladora. Las ventajas de utilizar
APIs privadas son el desarrollo más rápido y escalable de aplicaciones, sin la
necesidad de hacer cambios a su código [26].
Las APIs pueden ser vistas desde el punto de negocios, ya que puede ser utilizada como
una estrategia de negocio, abriendo un mundo de posibilidades para que su servicio sea
visto y consumido por diferentes usuarios y en diferentes dispositivos y plataformas
[26].
16
La evolución y la utilización de APIs han venido en aumento conforme pasa el tiempo,
como se muestra en la figura 2.3. La cual indica la cantidad de APIs del año 2000 al año
2011 [26].
Figura 2.3 Cantidad de APIs del año 2000 al 2011.
Además de la cantidad de APIs se puede medir la utilización de las mismas mediante
los llamados que se le hacen. Con datos del año 2011 [25] se tienen las principales APIs
por su cantidad de llamados de dicho año:
Twitter: 1.5 billones de llamados por día.
Netflix: 1 billón de llamados por día.
Amazon: 260 billones de llamados en el mes de enero del 2011.
Google: 5 billones de llamados por día.
Facebook: 5 billones de llamados por día.
En la actualidad existen una gran variedad de APIs. Las APIs que se pueden encontrar
para los diferentes lenguajes de programación sin tomar en cuenta el sistema operativo,
ya que son abundantes; en este caso se harán énfasis a las APIs que están optimizadas
17
para Linux y en algunos casos para trabajar en Raspberry Pi, a continuación, algunas de
las existentes:
XBMC. Funciona como reproductor de medios o HTPC (Home Theater PC), y funciona
en multi-plataformas. XBMC cuenta con una interfaz muy simple, y una biblioteca de
archivos multimedia. Utiliza una como base el OpenElec, el cual es una distribución
pequeña de Linux construida para que funcione XBMC. Para que funcionara con
Raspberry Pi la distribución se tuvo que adaptar el GPU con 128 MB de memoria
RAM, para garantizar un funcionamiento fluido del reproductor. En la actualidad esta
distribución funciona bastante bien, teniendo la capacidad de reproducir videos FULL
HD de manera correcta. Se puede conectar una unidad de almacenamiento USB y
utilizar el Raspberry Pi como un reproductor de medios dedicado [27].
Diagnóstico Automotriz. Se ha hablado sobre la posibilidad de poder utilizar el
Raspberry Pi como una unidad de OBD (On Board Diagnostic) incorporado en el
vehículo, en este caso se puede agregar una pantalla LCD para tener las lecturas en
tiempo real de las señales de diagnóstico y de ser necesario códigos de error, también
sería necesario contar con hardware que pueda leer y traducir las señales del protocolo
ODB-II [27].
Satélites. La idea de utilizar al Raspberry Pi como “el cerebro” para satélites de bajo
costo y tamaño reducido, al integrar algún módulo de cámara y otros tipos de sensores.
La NASA ya ha realizado esta idea pero utilizando teléfonos celulares como el Nexus
One, la idea es que estos dispositivos ya incluyen una gran variedad de sensores como
lo son el giroscopio, acelerómetro, cámara, etc. [27].
Dispositivos para estudio de meteoritos. Se ha considerado en un proyecto para
escanear el cielo nocturno [28] en busca de meteoritos, la idea principal es utilizar
webcams con el Raspberry Pi como dispositivo anfitrión para las cámaras, el cual
tendría como función grabar el cielo nocturno y mantener un timestamp en las
grabaciones, las cámaras estarían colocadas en el campo abierto con una batería y un
pequeño panel solar para alimentar a dicho dispositivo. Luego después de un tiempo se
cambiaría la memoria y se llevaría lo grabado por esta para ser analizado por
18
computadoras más potentes y el Raspberry es un dispositivo ideal para esto, por su bajo
costo y muy baja necesidad de cómputo local [27].
Traductor universal. Es un proyecto que convierte el Raspberry Pi en un traductor
universal el cual es capaz de soportar 60 idiomas, todo esto reconociendo nuestra voz y
ofreciendo la traducción con un sintetizador de voz por software. Esto se debe gracias a
una combinación de software Open Source y del motor de traducción de Microsoft, el
cual logra que un usuario pueda hablarle a la Raspberry Pi, con ayuda de un micrófono
y de un sistema de reconocimiento de la voz, para que éste responda en el idioma
deseado con la traducción. El creador de este nuevo desarrollo para los Raspberry Pi es
Dave Conroy, uso unos auriculares USB de Logitech los que facilitaron el proceso de
puesta en marcha del sistema, pero en realidad cualquier periférico de este tipo que
tenga controladores para Linux podrá hacer que todo funcione. Este proyecto se basa en
la instalación de Raspbian como distribución para la Raspberry Pi y el uso del motor de
traducción de Microsoft [29].
NETFLIX: Es una empresa comercial dedicada al entretenimiento que vende el servicio
de streaming de video. En cuanto a la información de su API, se encontró que es
privada, por lo que se tiene que registrar para poder acceder. Y el registro esta
deshabilitado. Su API está basado en referencias mediante JavaScript, dicha API está
dividida en dos partes, la JAVASCRIPT API, la cual es la encargada de emular la
reproducción de los videos, y la NETFLIX REST API, la cual es la encargada de
realizar búsquedas y ver los catálogos de los videos [30].
YouTube: Sitio Web donde los usuarios pueden subir, compartir y ver videos. YouTube
cuenta con diferentes APIs la cuales son:
API de datos de YouTube: La cual permite que el usuario cambie y actualice
información, realice comentarios y respuestas de los videos.
API del reproductor de YouTube: Está permite controlar como se ven los videos
en la aplicación.
El llamado de ambas APIs se puede hacer mediante solicitud HTML, XML, Java,
.NET, PHP y Python [31].
19
Minecraft Pi Edition: Minecraft es el popular juego de mundo abierto el cual permite
crear un mundo virtual y jugarlo. Esta API es especialmente optimizada para ejecutarse
en Raspberry Pi [32].
20
Capítulo 3. Materiales
En este presente capítulo se explicará a detalle el método mediante el cual se
realizó la creación de la solución propuesta, así como los materiales que fueron
necesarios para el desarrollo de está.
3.2 Materiales
Los distintos materiales que se utilizaron, principalmente materiales de software dichos
materiales se explican a continuación:
3.2.1 Software:
Raspbian
Raspbian es uno de los tantos sistemas operativos con los que cuenta la organización
Raspberry, además de ser el sistema operativo recomendado y probado por dicha
organización para ser utilizado de una manera fácil y fluida [8].
Raspbian es un sabor de Debian modificado para su uso en el Raspberry y al ser
aprobado por sus usuarios y desarrolladores se ha ido incrementado la cantidad de
aplicaciones y paquetes para su uso en el sistema operativo para conocer más acerca de
Raspbian ver su apéndice (Apéndice B).
Para la instalación correcta del sistema operativo sin importar su distribución son
necesarias dos utilerías de software las cuales son:
Win32diskimager
Aplicación para guardar y restaurar imágenes en dispositivos de almacenamiento
externo. Convirtiéndose en un dispositivo de arranque [33].
SD Formatter
Programa para dar formato a los dispositivos externos que serán utilizados con
dispositivos de arranque. Desarrollada por la SD Association, la cual es la encargada de
llevar los estándares en las tarjetas de memoria [34].
21
Apache Server
Apache Server es un servidor web HTTP desarrollado por Apache Software
Foundation. Servidor de código abierto y multiplataforma, además de contar con una
gran variedad de módulos para poder tener interacción y/o comunicación con lenguajes
de programación [35].
Minimal Kiosk Browser
Minimal Kiosk Browser es un navegador lite desarrollado en C y en Python. El
cual tiene como características principales el poder reproducir videos y audio dentro
del navegador, además de la ventaja de poder comunicarse con módulos y aplicaciones
locales. Para conocer más acerca de este navegador web, se puede descargar su manual
el cual se encuentra en idioma ingles desde la página web del desarrollador.
(http://steinerdatenbank.de/software/kweb_manual.pdf).
OMXPLAYER
OMXPLAYER es un reproductor de medios por comandos para Raspberry Pi, el
cual fue desarrollado principalmente para XMBC, pero puede ser utilizado fuera de ese
sistema operativo [36].
Al ser un reproductor que solo funciona por medio de comandos es necesario contar
con una interfaz gráfica para que la interacción del reproductor con el usuario sea fácil.
Esta interfaz se llama tboplayer la cual muestra al usuario una interfaz gráfica que
permite al usuario reproducir los medios de una manera más fácil.
VLC Player
VLC es un reproductor multimedia libre y de código abierto multiplataforma, el
cual reproduce la mayoría de los archivos multimedia. Y en algunos casos capaz de
reproducir elementos en la web [37] .
22
YouTube –dl
Es un programa por medio de línea de comandos que permite descargar videos
de youtube.com y algunos otros sitios [38].
PHP
PHP es un lenguaje de programación para uso general basado en scripts usado
principalmente en desarrollo web. Lenguaje rápido y flexible. Lenguaje creado en 1995
y actualmente regido por la organización PHP [39]. Para leer más acerca del lenguaje de
programación PHP ver el apéndice de PHP (Apéndice C).
3.2.2 Hardware
Raspberry PI
Es una microcomputadora del tamaño de una tarjeta de crédito, la cual puede
realizar las mismas tareas que cualquier otra computadora. Teniendo como un extra la
opción de poder reproducir videos y gráficos en alta definición ya que cuenta con salida
HDMI.
Esta microcomputadora además de contar con la salida HDMI también cuenta con dos
puertos USB, un puerto ethernet, salida de video por componente, salida de audio
análoga 3.5, además de contar con puertos de entrada y salida especiales para algunos
sensores como lo son cámaras especiales para el Raspberry Pi. Para más información
acerca de este equipo se puede ver el apéndice de especificaciones técnicas Raspberry
Pi (Apéndice A).
Tarjeta SD
Tarjeta SD para poder almacenar el sistema operativo y demás programas que
serán utilizados en el sistema. Según la página oficial de Raspberry.org el tamaño
recomendado a utilizar es cualquier memoria mayor a 2GB.
23
3.3 Método
3.3.1 Adquisición de componentes
Una vez adquiridos los componentes necesarios, se procede a la configuración inicial de
dichos componentes.
Configuración
Antes de iniciar las configuraciones del sistema se debe iniciar adquiriendo los
componentes, uno de ellos es el sistema operativo el cual es Raspbian el cual se obtiene
en la página de Raspberry Pi dentro de la sección de descargas como se puede ver en la
figura 3.1 [40].
Figura 3.1 Información de la imagen del sistema operativo Raspbian.
Dar formato y preparación de tarjeta SD.
Una vez obtenido el sistema operativo se debe preparar la memoria SD primeramente
dándole formato correspondiente para que el sistema operativo pueda ser copiado de
forma correcta. Para esto se debe ejecutar el programa SDFormatter el cual se debe
24
ejecutar en otro dispositivo (el programa se puede encontrar en Windows, Mac, Linux).
Una vez formateada la memoria SD se debe cargar la imagen del sistema operativo en la
memoria, esto se realiza a través del programa Win32DiskImager, dentro de este
programa solo se debe seleccionar la ubicación de la imagen del sistema operativo y
elegir la opción de Write (el tiempo de ejecución de este proceso puede variar).
Configuración de Raspberry Pi
Una vez configurada la tarjeta SD, se debe iniciar por primera vez el dispositivo
Raspberry Pi. Para esto solo se debe colocar la tarjeta SD en la ranura del dispositivo y
encenderlo. El primer arranque del dispositivo mostrará una pantalla similar a la figura
3.2 la cual indica las configuraciones iniciales del dispositivo. Por lo tanto lo primero
que se debe hacer es expandir el sistema operativo en la memoria SD, para esto se debe
seleccionar la opción 1. Expand filesystem. Una vez extendido el sistema operativo, se
debe configurar el sistema para que inicie la computadora desde la interfaz gráfica,
eligiendo la opción 3.- Enable Boot to Desktop, eligiendo como opción Desktop.
Para realizar configuraciones extras verificar el apéndice correspondientes a
configuraciones adicionales de Raspberry Pi (Apéndice D).
Figura 3.2 Configuración inicial de Raspberry Pi
25
Una vez terminadas estas configuraciones se verá en la pantalla una interfaz similar a la
de una terminal, por única vez lo que se debe hacer es teclear el comando startx para
arrancar la interfaz gráfica.
Configuración Apache y PHP5
Debido a que el sistema fue creado en PHP se deben instalar las librerías y servicios de
PHP al Raspberry Pi. El proceso de instalación se lleva a cabo la ejecución de los
siguientes comandos:
1. Actualizar todas las librerías del sistema, con el comando:
sudo apt-get update
2. Instalar PHP5 y apache server por medio del comando:
sudo apt-get install apache2 php5
3. Una vez instalados los servicios se debe configurar los servicios de Apache
para poder tener permisos sobre la carpeta del servidor Apache. Esto se
realiza con el siguiente comando:
sudo nano /etc/apache2/sites-enabled/000-default
a. Al escribir este comando se mostrará el contenido del archivo el cual
debe quedar como se muestra a continuación:
AllowOverride None por AllowOverride ALL
b. Presionar Control + X y guardar
4. Resetear el servidor con el comando:
sudo /etc/init.d/apache2 restart
5. Dar permisos de escritura a los usuarios con el comando:
sudo chmod 777 /var/www
26
Instalación del navegador Minimal Kiosk Browser
Para instalar el navegador Minimal Kiosk Browser se deben descargar el código fuente
del navegador mediante el siguiente comando:
wget http://steinerdatenbank.de/software/kweb_1.4.tar.gz
Una vez descargado el archivo se debe descomprimir su contenido con ayuda del
siguiente comando
tar –xcf kweb_1.4.tar.gz
Después de descomprimir el archivo se debe acceder a la carpeta y ejecutar el comando
sudo ./install.sh
Este comando le indica al sistema que compile y ejecute dicho script el cual deja
instalado el navegador en el sistema.
El siguiente paso es instalar los componentes necesarios para que el navegador funcione
correctamente. Para verificar que librerías hacen falta ser instaladas se ejecuta el script
check.py mediante el comando ./check.py. Las librerías que son necesarias y su
respectivo comando de instalación se muestran en la tabla 3.1.
Aplicación Comando para instalar
VLC Media player Sudo apt-get install vlc
Omxplayer Sudo apt-get install omxplayer
Youtube –dl Sudo apt-get install youtube -dl
Zip Sudo apt-get zip unzip
Tabla 3.1 Librerías adicionales de Minimal Kiosk Browser
27
Interfaz Gráfica de OMXPLAYER
La interfaz gráfica de OMXPLAYER permite que el usuario tenga una comunicación
amigable con el usuario, permitiendo agregar y enlistar archivos multimedia para su
reproducción. Para poder visualizar correctamente esta aplicación se debe instalar
PEXPECT ejecutando los siguientes comandos.
1. wget http://pexpect.sourceforge.net/pexpect-2.3.tar.gz
2. tar xzf pexpect-2.3.tar.gz
3. cd pexpect-2.3
4. sudo python ./setup.py install
Una vez instalada esta dependencia se debe descargar el script de Python que muestra la
interfaz, dicho script se descarga mediante el siguiente comando:
wget https://github.com/KenT2/tboplayer/tarball/master -O -~| tar xz
El comando anterior crea una carpeta llamada tboplayer la cual contiene el script del
programa, dicho script se ejecuta mediante el siguiente comando:
python tboplayer.py
Desarrollo de aplicación
Para el desarrollo de la aplicación se tomaron varias decisiones partiendo inicialmente
por el lenguaje de programación, los cuales fueron finalmente un conjunto de lenguajes
Web (PHP, HTML, JavaScript, XML).Estos lenguajes pertenecen al grupo de los
lenguajes de programación interpretados. Esta decisión se tomó a partir de una
investigación realizada.
Dicha investigación incluyó las características y necesidades del proyecto y las del
dispositivo donde se desarrollaría el sistema. Los resultados de la investigación fue que
los lenguajes de programación interpretados eran los que más se ajustaban al proyecto
debido a su poca necesidad de procesamiento y de consumo de recursos. Para más
detalles sobre esta investigación ver el apéndice correspondiente a los tipos de lenguajes
de programación (Apéndice H).
28
Variables
Para poder crear parte de la interface de configuración fue necesario utilizar las sesiones
de PHP que son variables globales puesto que estas se quedan en el servidor aun si se
cierra el navegador o se apaga el equipo con lo cual permitió conseguir un aspecto
necesario en la configuración. Es necesario manejarlo por este tipo de variables, puesto
que los cookies no duran tanto los datos y se pueden borrar (Apéndice C), tampoco se
procedió a guardarlos en una base de datos porque esto le quitaría rendimiento al
Raspberry Pi. Por lo tanto esta fue una de las alternativas que se optó por utilizar para
que estas variables no fueran volátiles y sin quitar rendimiento.
29
Capítulo 4. Resultados de la investigación
A continuación se mostrarán los resultados dados por la investigación propuesta.
4.1 Presentación de resultados
Aplicaciones
El sistema creado tienen la peculiaridad de poder agregar diferentes aplicaciones, estas
aplicaciones funcionan mediante la utilización de APIs. Dentro la variedad de APIs
probadas se encontraron diferentes empresas desarrolladoras y diferentes lenguajes de
programación entre ellos PHP, JAVA y PYTHON los cuales cuentan con sus
respectivas características y singularidades.
En la mayoría de las APIs es indispensable contar con los permisos necesarios y con las
librerías que contienen todas las funciones y procedimientos para poder comunicarse
con el servicio requerido, estas librerías en ocasiones dependen de otros módulos los
cuales deben ser instalados para el correcto funcionamiento del API.
El pensar en diferentes tipos de APIs fue con la intensión de mejorar el sistema y
dotarlo de otras características, esto desde el punto de vista del usuario, si se ve desde el
lado del desarrollador se le brinda la oportunidad de poder desarrollar aplicaciones en el
lenguaje al que más se adapten.
Para poder agregar aplicaciones al sistema es necesario que cumplan con los siguientes
requisitos: que es este desarrollado en alguno de los lenguajes de programación que
están permitidos en el sistema, contar con un archivo llamado addon.xml, contar con
dos imágenes tipo JPG. Estos archivos deben estar contenidos en un carpeta la cual debe
ser nombrada con el nombre de la aplicación y dicha carpeta debe ser comprimida en
formato .ZIP. Para más información ver el apéndice de creación de APIs para el sistema
(Apéndice F)
30
Interfaz
Se implementó la una interfaz gráfica para el que el usuario tenga fácil acceso al
sistema. La interfaz está dividida básicamente en dos partes, dichas partes serán
descritas a continuación:
Medios Locales: esta parte de la interfaz permite al usuario manipular todo tipo de
archivos locales (videos, audios e imágenes). Esto mediante aplicaciones del sistema o
de terceros como lo son VLC Media Player y OXMPLAYER (Figura 4.1).
Figura 4.1 Interfaz, medios locales
Teniendo en cuenta que la aplicación se desarrolló en HTML y PHP y por medidas de
seguridad es imposible mandar llamar y ejecutar aplicaciones locales (Apéndice G); por
consiguiente, se recorrió a utilizar el navegador Minimal Kiosk Browser, el cual permite
ejecutar comandos del sistema por medio de este navegador.
Partiendo de la oportunidad que ofrece Minimal Kiosk Browser de poder ejecutar
comandos y aplicaciones locales se decidió explotar dicha característica agregando un
área exclusiva para aplicaciones y utilerías locales, donde se pueden encuentran
aplicaciones del sistema como lo son el editor de texto, calculadora, administrador de
archivos y un administrador de tareas. (Figura 4.2)
31
Figura 4.2 Utilerías del sistema
En esta parte de la interfaz también se ejecutan los addons que fueron desarrollados en
Java y en Python, mediante la ejecución de Scripts del sistema. Ver figura 4.3
Figura 4.3 Addon tipo Java
En la segunda parte de la interfaz del sistema está dedicada a los módulos Web, dentro
de esta parte están todo lo relacionado con addons PHP instaladas por el usuario, radio
por Internet y páginas web almacenadas en el sistema. Ver figura 4.4
Figura 4.4 Interfaz
32
Como en esta sección el usuario es quien alimenta al sistema de aplicaciones, se cuenta
con la opción de administrar las aplicaciones agregadas por el usuario. (Ver figura 4.5)
Figura 4.5 Configuración y eliminación del sistema.
4.2 Análisis e interpretación de resultados
Algunos beneficios obtenidos para el usuario fue la interfaz con la que el usuario
se ve beneficiado al poder personalizar el centro multimedia y al permitirle al usuario
acceder a las APIs, también utilizar herramientas que brinda el sistema y acceder a
páginas web. En cuanto a los desarrolladores, el beneficio de que puedan trabar con el
lenguaje con el que más se adapten y la facilidad de implementarlas al sistema.
Uno de los resultados que se obtuvo fue el de integrar diferentes tipos de APIs de
lenguajes diferentes como JAVA, PHP, HTML mediante el desarrollo e instalación de
APIs al sistema.
Un análisis que se llevó a cabo del dispositivo como sistema multimedia dio como
resultado que se comportaba en algunos aspectos mejor que los sistemas multimedia
actuales pero también en otros puntos contrastaba por ejemplo en la facilidad de
desarrollar para este fue relativamente sencillo pero el rendimiento no fue el mismo en
todas esto variaba de acuerdo a las aplicaciones dependiendo de los recursos que
utilizaba cada API. Una de las mayores ventajas fue la simplicidad de crear una API o
para hacer la importación de una API al sistema multimedia porque son lenguajes muy
utilizados. Uno de los puntos negativos con los que se encontraron fue la falta de
33
implementación de aplicaciones que cuenten con Flash Media Player (ver figura 4.6),
que aun estando en declive o transición, aún existen una gran variedad de usuarios que
lo utilizan. Uno de ellos son algunos servidores media como los son Youtube. Netflix,
Crackle, etc. Por lo tanto es una gran limitante para el sistema.
Figura 4.6 Problemas con Flash Player
Hablando del rendimiento del sistema se realizaron pruebas ya con el sistema
funcionando, las pruebas fueron las siguientes:
Eventos de video en HTML5. Con esta prueba se buscó demostrar las capacidades del
reproductor en cuanto a eventos de video con tags de HTML5, las pruebas se realizaron
en la página oficial del consorcio de la World Wide Web en la sección de eventos de
HTML5, si se desea consultar más acerca de esta prueba se puede dirigir a la siguiente
página de internet http://www.w3.org/2010/05/video/mediaevents.html, los resultados
se muestran en la figura 4.7, la cual indica que el reproductor no soporta elementos
HTML5, con esta prueba todo indicaría que no se podría reproducir ningún elemento de
video con el tag HTML5
34
Figura 4.7 Prueba de video HTML5
Reproductor de HTML5 de YouTube. Con esta prueba se buscaba conocer el posible
comportamiento del dispositivo contaba con otra forma de reproducir videos de
YouTube, esto por medio del reproductor HTML5, debido a que YouTube cuenta con la
posibilidad de elegir el reproductor que se adecue a las necesidades del navegador web,
los resultados se muestran en la figura 4.8. Los cuales indican que el navegador podría
soportar el video en html5. Sin embargo no se garantiza la reproducción. Si se desea
conocer más acerca del reproductor HTML5 de YouTube se puede dirigir a la siguiente
página de internet www.youtube.com/html5.
Figura 4.8 Prueba de video, reproductor de HTML5 de YouTube
35
Pruebas con el sistema
Pruebas de audio. Se realizaron pruebas de rendimiento del dispositivo
reproduciendo una pista MP3, las pruebas se hicieron en las aplicaciones VLC Media
Player y en OMXPLAYER, los resultados fueron los siguientes:
Tanto en VLC Media Player como en OMXPLAYER el uso del CPU aumento, pero no
lo suficiente para considerar problemas de rendimiento, en ambas aplicaciones se
mostró fluido el audio. La gráfica del uso del CPU se muestra en la figura 4.9 y el de
OMXPLAYER se muestra en la figura 4.10.
Figura 4.9 Uso de CPU en VLC Media Player
36
Figura 4.10 Uso de CPU en OMXPLAYER
Siguiendo con las pruebas de audio la siguiente fue la de radio por internet, los
resultados mostraron que el uso del CPU es similar al de la reproducción local de
archivos de audio, por lo tanto no es mucho el poder de procesamiento que se necesita,
la gráfica se muestra en la figura 4.11 :
Figura 4.11 Rendimiento del radio por internet.
37
Las siguientes pruebas fueron las del rendimiento al reproducir videos, para esto se
hicieron pruebas con las aplicaciones VLC Media Player y OMXPLAYER ambas
reproduciendo un video MP4.
Los resultados con la aplicación VLC Media Player demostraron que el CPU utiliza
todo su poder para reproducir un archivo MP4, aun contando con todo el poder del
procesamiento para reproducir un video, la reproducción fue poco fluida e inestable en
algunos momentos, la gráfica del procesador se muestra en la figura 4.12.
Figura 4.12 Resultados de VLC Media Player y gráfica del procesador.
A diferencia de VLC Media Player, la aplicación OMXPLAYER se comportó de una
forma muy fluida aun cuando el video automáticamente se reproduce en pantalla
completa. El uso del CPU no aumento demasiado a comparación de VLC. (Ver figura
4.13 y figura 4.14).
38
Figura 4.13 Pruebas y grafica de rendimiento con OMXPLAYER.
Figura 4.14 Resultado de la reproducción en OMXPLAYER.
39
Capítulo 5. Conclusiones
Se presentaron algunas fallas; entre las cuales fueron, no poder hacer funcionar algunas
aplicaciones, la interfaz y la parte local. Una de estas fallas se debió a la seguridad de
los navegadores; ya que, no permite usar comandos de ficheros locales. Otra se debió a
las librerías y también por no soportar flash. Lo mencionado anteriormente hizo que se
optará a realizarlo de la manera en que está documentado.
5.1 Aportaciones
Todas las preguntas de investigación fueron contestadas mientras se avanzaba en
el proyecto del sistema multimedia. Algunas no fueron fáciles de contestar puesto que
en algunos puntos se tuvieron fallas y se tenía que volver a hacer de otra manera para
así poder llegar a una respuesta esperada a la pregunta en específico. Las preguntas a
contestar fueron las siguientes:
¿En qué podrá beneficiar la propuesta planteada a los usuarios y posibles
desarrolladores?
Algunos beneficios obtenidos para el usuario fue la interfaz, acceder a las APIs,
también utilizar herramientas que brinda el sistema y acceder a páginas web por
parte de los desarrolladores fue que puedan trabar con el lenguaje con el que más
se adapten y la facilidad de implementarlas al sistema.
¿Cómo se puede integrar las diferentes APIs al sistema logrando que el usuario
tenga acceso a ellas?
Se integraron mediante una interfaz en la cual permite agregar las APIs y
empleando diferentes lenguajes para hacer esta integración más sencilla.
¿Cómo se comportará el Raspberry Pi como sistema multimedia?
Se comporta de una forma correcta nos permite hacer la mayoría de funciones
que otros sistemas multimedia pueden como la reproducción de contenido
multimedia, acceso a Internet entre otras; por ejemplo en la facilidad de
40
desarrollar para este fue relativamente sencillo pero el rendimiento no fue el
mismo en todas, esto variaba de acuerdo a las aplicaciones dependiendo de los
recursos que utilizaba cada API.
¿Qué ventajas tiene nuestro sistema multimedia con respecto a las alternativas
actuales?
Algunas de estas ventajas es el costo, la facilidad de importar aplicaciones o
agregar nuevas.
En la parte científica aporto una forma diferente de usar al Raspberry Pi como un
sistema multimedia diferente y formas de hacer funcionar aplicaciones de una forma
diferente.
El objetivo de investigación fue satisfactorio se llegó al resultado buscado el cual era
poder hacer que el Raspberry Pi se convirtiera en un centro multimedia el cual fuera de
bajo costo y así no tener la necesidad de cambiar de televisión y alargar el tiempo de la
misma el cual se consiguió al ser este un sistema que podemos actualizar y no dejar que
solamente quede obsoleto.
5.2 Trabajo futuro
Dentro de proyecciones futuras en relación al sistema se espera poder agregar el
soporte para más lenguajes en cuanto al desarrollo de aplicaciones externas que se
puedan agregar al sistema.
Con respecto de las aplicaciones externas se buscará la manera de poder contar con
servicios de video y/o audio en demanda como lo podría ser Netflix,ClaroVideo,Cracke,
Google Movies, Google Music, Spotify. Ya sea encontrando alguna solución factible
para que Raspberry Pi soporte Flash media Player, contactarse con las empresas para
buscar posibles soluciones, esperar a que estas firmas liberen alguna versión soportada
para Raspberry Pi o una versión estable para HTML5.
Así como se mencionó en este capítulo acerca del rendimiento del dispositivo
Raspberry Pi en su actuar como un sistema multimedia, una opción sería migrar o
41
expandirse a otro dispositivo, ya sea del mismo rango de precio o elegir algún
dispositivo de mayor precio pero que brinde mejor rendimiento.
42
Bibliografía
[1] TREVOR I. WILLIAMS, "La Televisión," in Historia de la Tecnología Desde
1900 a 1950(II). Madrid: Siglo Veintiuno de España editores S.A, 1987, pp.
461:469.
[2] Fréderic Barbier and Catherine Bertho Lavenir, "Los sinuosos caminos de la
innovación ," in Historia de los medios. De Diderot a Internet. Buenos Aires,
Argentina: Signos y Cultura, 2007, pp. 380:386.
[3] Amit Dhir, "Digital Video/Versatile Disc (DVD)," in The digital consumer
thecnology handbook. Burlington, MA,USA: Xilinx, 2004, pp. 94,95.
[4] Apple - Apple TV - Disfruta tu contenido HD preferido en tu TV HD. [Online].
http://www.apple.com/mx/appletv/what-is/
[5] Energy Sistem - Comprar - Energy Android TV Box. [Online].
http://www.energysistem.com/es/products/home_video/serie_android_tv/38313-
energy_android_tv_box/
[6] O!Play HD2 - Multimedia - ASUS. [Online].
http://www.asus.com/Multimedia/OPlay_HD2/#overview
[7] Popcorn Hour : Popcorn Hour A-300. [Online].
http://www.cloudmedia.com/products/popcornhour/store-a-300
[8] The Raspberry Pi Foundation. About us | Raspberry Pi. [Online].
http://www.raspberrypi.org/about
[9] Coder for Raspberry Pi. [Online]. http://googlecreativelab.github.io/coder/
[10
]
Raspberry Pi - Department of Electrical & Computer Engineering. [Online].
http://coen.boisestate.edu/ece/raspberry-pi/
[11
]
Southampton engineers a Raspberry Pi Supercomputer : University of
Southampton. [Online].
http://www.southampton.ac.uk/mediacentre/features/raspberry_pi_supercomputer.s
html.
[12
]
Raspberry Pi at Southampton. [Online].
http://www.southampton.ac.uk/~sjc/raspberrypi/
[13 XBMC running on Raspberry Pi | Raspberry Pi. [Online].
43
] http://www.raspberrypi.org/archives/571
[14
]
XBMC. [Online]. http://xbmc.org/about/
[15
]
OpenELEC for Raspberry Pi | Raspberry Pi. [Online].
http://www.raspberrypi.org/archives/810
[16
]
OpenELEC Mediacenter - Home. [Online]. http://openelec.tv/
[17
]
Shawn Wallace Matt Richardson, Getting Started with Raspberry Pi. Sebaspatol,
California: O'REILLY, 2013.
[18
]
Robert Love, LINUX SYSTEM PROGRAMMING. Sebastopol: O'REILLY, 2013.
[19
]
eLinux.org. CSharp on RPi - eLinux.org. [Online].
http://elinux.org/CSharp_on_RPi
[20
]
Erlang org. Erlang Programming Language. [Online]. http://www.erlang.org/
[21
]
ORACLE. Introducción a Java® SE Embedded en Raspberry Pi. [Online].
http://www.oracle.com/technetwork/es/articles/java/java-se-embedded-raspberry-
pi-1940405-esa.html
[22
]
Pedro Garcia Rafael Berlanga, "Introducción a los lenguajes de programación," in
Introducción a la programación con Pascal. 3: Universitat Jaume I, 2000, p. 31.
[23
]
eLinux.org. Lazarus on RPi - eLinux.org. [Online].
http://elinux.org/Lazarus_on_RPi
[24
]
Christopher Negus, Programming in Linux the Linux Bible: Boot Up to Ubuntu,
Fedora, KNOPPIX, Debian, openSUSE, and 11 Other Distributions. Indianapolis,
Indiana`: Wiley Publishing Inc, 2008.
[25
]
Daniel Jacobson, APIs a strategy guide. Sebastopol, CA: O'REILLY, 2012.
[26
]
Daniel Jacobson, APIs a strategy guide. Sebastopol, CA: O'REILLY, 2012.
[27
]
Edgar Javier Machuca Martinez, "Raspberry Pi y sus Aplicaciones," Asuncion
Paraguay,.
44
[28
]
Brian Crosse. (2011, Dec.) http://www.raspberrypi.org/. [Online].
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=9&%20t=1852
[29
]
Javier Pastor. XATANA. [Online]. http://www.xataka.com/otros/convierte-tu-
raspberry-pi-en-un-traductor-universal
[30
]
Netflix, Inc. Netflix API - Welcome to the Netflix Developer Network. [Online].
http://developer.netflix.com/
[31
]
Google. YouTube — Google Developers. [Online].
https://developers.google.com/youtube/?hl=es
[32
]
DOCTORSERONE. (2013, June) Raspberry Pi Comunidad en Español. [Online].
http://www.raspberrypi-es.com/author/doctorserone/
[33
]
Ubuntu ORG. Ubuntu Wiki. [Online]. https://wiki.ubuntu.com/Win32DiskImager
[34
]
SD Association. SD Association. [Online]. https://www.sdcard.org/home
[35
]
The Apache Software Foundation. The Apache Software Foundation. [Online].
http://www.apache.org/
[36
]
OMXPLAYER Builds. [Online]. http://omxplayer.sconde.net/
[37
]
VideoLAN Organization. VideoLAN - Página oficial del Reproductor multimedia
VLC, el «framework» de código abierto de vídeo! [Online].
http://www.videolan.org/vlc/
[38
]
GitHub. [Online]. https://github.com/rg3/youtube-dl
[39
]
The PHP Group. PHP: Hypertext Preprocessor. [Online]. http://mx1.php.net/
[40
]
Raspberry Org. Downloads | Raspberry Pi. [Online].
http://www.raspberrypi.org/downloads/
[41
]
Ing. Susana Marta Canel. (2007, Nov.) Microcontroladores ARM de 32 bits.
[Online]. http://www.electron.frba.utn.edu.ar/materias/95-
0429/archivos/Cap10_2009_ARM7_apunte.pdf
[42 Raspberry Foundation. Raspbian Release Notes. [Online].
45
] http://downloads.raspberrypi.org/raspbian/release_notes.txt
[43
]
The Raspberry Foundation. (2014, Apr.) Raspbian. [Online].
http://www.raspbian.org/
[44
]
Instituto Nacional de Tecnología en la comunicaciones. Manual de Securización de
Navegadores. [Online].
https://www.caja3.es/cajatresFiles/UserFiles/File/INTECO(1).pdf
[45
]
Justin.tv Inc. 2013. Twitch Developers Program. [Online]. http://dev.twitch.tv/
46
Apéndices
Apéndice A. Especificaciones de Raspberry Pi
Especificaciones técnicas
El modelo B de Raspberry Pi es la última versión de Raspberry Pi en el mercado
donde algunas diferencias con su predecesor son la cantidad de memoria RAM que
maneja, su poder de procesamiento entre otras características, la comparación más
detallada se muestra en la figura A.1.
Figura A.1. Grafica comparativa entre el modelo A y B de Raspberry Pi
Las características y propiedades específicas del modelo B se explican más
detalladamente a continuación:
A. Procesador: El corazón de Raspberry Pi es un chipset de 32 bits, a una
frecuencia de 700 MHz y está construido con la arquitectura ARM [17].
Contando con una memoria RAM de 512 MB.
47
B. Módulo SD: El dispositivo cuenta con un módulo para una memoria SD (Secure
Digital), ya que no cuenta con algún espacio para un disco duro, por lo tanto
todo se almacena en la memoria SD [41].
C. Puertos USB: Cuenta con dos puertos USB 2.0.
D. Puerto Ethernet: Cuenta con un puerto Ethernet con el estándar RJ-45. El
acceso a la red también puede ofrecerse por medio de un cable USB Ethernet.
E. Conector HDMI (High-Definition Multimedia Interface): El cual dota al
usuario de salida de audio y video en formato digital. Raspberry Pi soporta 14
tipos de resolución diferentes. La señal de video puede ser convertida a DVI,
video Compuesto y a SCART (Estándar europeo para conectar audio y video a
equipos electrónicos). Para realizar estas conversiones de video es necesario un
dispositivo o adaptador externo.
F. Tablero de LEDs. Raspberry Pi cuenta con un tablero de estados, el que indica
el estatus de algunas operaciones básicas del equipo. Dichos estados están
descritos en la tabla A1.
Nombre del LED Color Descripción
ACT Verde Se ilumina cuando se accede a la memoria SD
PWD Rojo Indica que la fuente está a 3.3 V de potencia
FDX Verde Se enciende si el adaptador de red es Full Duplex
LNK Verde Indica actividad de la red.
100 Amarillo La conexión de red es de 100 Mbps.
Tabla A.1 Estados de los indicadores LED de Raspberry Pi.
G. Salida análoga de Audio: Salida de audio análoga con el estándar de 3.5 mm, la
cual ayuda a conducir cargas de gran impedancia utilizadas en bocinas o
audífonos. (Alternativa usada en caso de no utilizar la salida HDMI)
H. Salida de video: Este componente maneja el tipo de conector RCA el que
provee señales NTSC o PAL. Estos tipos de señales son de menor calidad en
48
comparación de la que provee HDMI. (Alternativa usada en caso de no utilizar
la salida HDMI)
I. Entrada de poder: Raspberry Pi no cuenta con un botón de encendido o
apagado. Y utiliza un puerto micro USB como entrada de la fuente de poder.
Los puntos explicados anteriormente son descritos y señalados gráficamente en la figura
A.2.
Figura A.2 Interfaces de Hardware de Raspberry Pi
Conectores y pines de Raspberry Pi.
Raspberry Pi está en constante desarrollo y evolución tanto en software como en
hardware y al ser una computadora de costo reducido, el hardware complementario para
el equipo es vendido y desarrollado por The Raspberry Pi Foundation o por empresas
externas, así que se pueden adquirir otro tipo de hardware especializado para ciertas
49
funciones, aquí se explicará alguno de esos módulos con los que cuenta Raspberry Pi
[17].
A. Entradas y salidas para propósitos generales (GPIO): módulo que
permite integrar hardware que acepte la captura de botones físicos,
switches y controles (LEDs, motores).
B. Conector DSI (Display Serial Interface): Interfaz para conectar
pantallas o monitores OLED o LCD con entradas de 15 pines.
C. Interfaz CSI (Camera Serial Interface): Esta interfaz permite conectar
un módulo para conectar una cámara directamente a Raspberry Pi.
D. Header P2 y P3: Estas interfaces son módulos para pruebas de chipset
para procesamiento y para red, las cuales están siendo desarrolladas por
Broadcom, mismas que son hardware propietario.
En la figura 1.2 se muestra la distribución de las interfaces para hardware externo de
Raspberry Pi. (Ver figura A.3)
Figura A.3 Interfaces externas de Raspberry Pi
50
Apéndice B. Sistema operativo Raspbian
Raspbian es un sistema operativo GNU/Linux basado en Debian Wheezy
(Debian 7.0) optimizado para Raspberry Pi. Raspbian fue desarrollado partiendo del
sistema operativo Debian, por lo que ha tratado de mantener la mayoría de los rasgos
de Debian, esto con la finalidad de reutilizar el material de apoyo y documentación con
el que actualmente cuenta Debian.
Uno de los puntos que diferencian a Raspbian de Debian es la capacidad de producir,
compilar y ejecutar código con punto flotante ABI (Application Binari Iinterface) lo
cual es de gran importancia debido que Raspberry Pi trabaja con una arquitectura ARM.
ABI hace referencia al conjunto de reglas que se utilizan para configurar los registros y
las formas en que las funciones o procedimientos muestran o retorna sus resultados.
La primera versión de este sistema operativo fue liberada en Junio de 2012, teniendo
constantes actualizaciones desde esa primera versión. Su última versión fue liberada en
Enero de 2014. El log de las todas sus versiones se puede encontrar en la página de
Raspberry Pi [42].
Raspbian es uno de los sistemas operativos oficiales y recomendados por The
Raspberry Foundation, por lo que su distribución se hace por medio de la página oficial
de Raspberry Pi, como se puede observar en la figura B.1, mientras que su
documentación y soporte lo realizan por medio de la página oficial de Raspbian [43].
Figura B.1 Raspbian
51
Apéndice C. Lenguaje de Programación PHP
PHP (Hypertext Pre-processor) es un lenguaje de programación de uso general
utilizado desde el lado del servidor. Este lenguaje esta originalmente diseñado para el
desarrollo web, por lo cual se puede incorporar a un documento HTML. Este tipo de
lenguaje es del tipo interpretado, donde el interpretador es el servidor. Este lenguaje fue
creado por Rasmus Lerdorf en 1995, actualmente el lenguaje es manejado por el Grupo
PHP Org.
Una de las grandes ventajas de PHP es que puede ser desplegado en la mayoría de los
servidores y en casi todos los sistemas operativos. PHP tiene influencias de lenguajes de
programación como los son C, Pearl, Python y Java. Por consecuente existen módulos
para poder trabajar con otros lenguajes, algunos de ellos son los módulos gestores de
bases de datos (Mysql, Oracle, ODBC, SQL server, Firebird, SQLITE).
Sin importar la gran cantidad de módulos externos con los que puede contar PHP, la
página oficial cuenta con la gran mayoría de estos módulos bien documentados.
PHP es un lenguaje de programación interpretado de código abierto orientado a
desarrollar aplicaciones Web de contenido dinámico. PHP puede trabajar y
comunicarse de manera sencilla con otros lenguajes orientados a Web y con algunos
manejadores de bases de datos.
Al ser un lenguaje de código abierto tiene algunas ventajas y desventajas, como
ventajas se puede encontrar la versatilidad, sencillez en sintaxis, costo, documentación y
su seguridad. Además de las ventajas mencionadas anteriormente se tiene como
agregado la gran comunidad con la que cuentan, haciendo que su contenido este
constantemente renovado y retroalimentado.
Hablando de lenguajes interpretados, estos cuentan con algunas características las
cuales son:
• Velocidad: La rapidez en su ejecución debido a que no requiere (en la mayoría
de sus casos) demasiados recursos.
• Estabilidad: PHP utiliza su propio sistema de administración de recursos y
dispone de un sofisticado método de manejo de variables, conformado de un
sistema robusto y estable.
52
• Seguridad. Debido a que es un lenguaje orientado a WEB el punto de seguridad
es muy importante.
PHP puede ser ejecutado en casi todas las plataformas existentes, utilizando el mismo
código fuente, por lo que se considera como un lenguaje multiplataforma. Desde Linux,
Windows y Mac además de esto puede interactuar con muchos motores de bases de
datos, se le pueden integrar módulos externos desarrollados por otras empresas lo cual
le brindan utilidades al lenguaje.
La instalación de PHP no es nada complicada, existiendo paquetes e instaladores para
cada sistema operativo [39].
PHP maneja variables de sesión las cuales utilizamos para almacenar una serie
de variables en el servidor relacionándolas (gracias a una variable pasada por cookie o
por URL) con un usuario concreto para que estén disponibles en diferentes páginas de
nuestro sitio web.
Una vez almacenada una variable de sesión, podremos leerla desde todas las páginas de
nuestra web mientras la sesión no se destruya. A continuación se muestra cómo usar las
sesiones:
Guardar una variable
El soporte para sesiones de PHP permite iniciar fácilmente una sesión utilizándola
función session_start y gracias al vector superglobal $_SESSION, se puede trabajar con
sesiones como si de cualquier otro vector se tratara:
000
001
002
003
004
<?php
// inicio sesión
session_start();
// Se guarda una variable
$_SESSION['nombre'] = 'Fernando Díaz';
?>
Lo único que se debe tomar en cuenta, es que si se utiliza cookies no se podrá haber
enviado ni un solo carácter (ni siquiera un espacio) al navegador antes del que la sesión
53
inicie (session_start), el siguiente ejemplo mostrará un error por el espacio de la línea
0:
000
001
002
<?php
// inicio de sesión
session_start();
?>
Leer una variable guardada
Si se ha guardado una sesión, se podrá acceder a sus variables desde todas las
páginas. Esto se hace simplemente con el inicio de la sesión y con el mismo vector
$_SESSION, para ver si existe una variable de sesión determinada se utilizara la función
isset cómo con cualquier otra variable:
000
001
002
003
004
005
006
007
008
009
<?php
// inicio de sesión
session_start();
// comprobar si existe la variable .
if ( isset ( $_SESSION['nombre'] ) ) {
// Si existe
echo $_SESSION['nombre'];
} else {
// Si no existe
echo 'desconocido';
}
?>
Borrar una variable
Se puede borrar una variable de sesión usando la función unset, pero además se
puede s eliminar la sesión con session_destroy:
54
000
001
002
003
004
005
006
<?php
// Inicio de sesión
session_start();
// se borra la variable .
unset ( $_SESSION['nombre'] );
// se borra toda la sesión .
session_destroy();
?>
PHP también maneja cookies cada vez que el navegador pida una página a un servidor,
este realiza una conexión nueva con el servidor, por lo cual, el servidor no tiene
conocimiento de las anteriores acciones del visitante. Para resolver esto, nació un tipo
de archivo, llamado cookie, que se almacena en el navegador del visitante y puede
contener información sobre las actividades o movimientos del usuario.
Para esto se utiliza un procedimiento el cual le asigna un tiempo de vida a la Cookie,
desde JavaScript, el proceso de escritura y borrado de una cookie es muy sencillo,
continuación el ejemplo:
000 document.cookie="NOMBRE = VALOR; expires = FECHA"
En cambio para leer una cookie se debe crear una función como se muestra a
continuación:
000
001
002
003
004
function leerCookie(nombre) {
a = document.cookie.substring(document.cookie.indexOf(nombre + '=') +
nombre.length + 1,document.cookie.length);
if(a.indexOf(';') != -1)a = a.substring(0,a.indexOf(';'))
return a;
}
55
Esta función se puede mandar llamar desde un botón o una alerta, continuación el
ejemplo desde una alerta:
000 alert(leerCookie('ID')) , document.write(leerCookie('ID'))...
Para usar cookies en PHP, se debe tener en cuenta que la cookie se envía antes de
enviar el resultado de la página al usuario, es decir, se envía la cookie al navegador
antes de enviar ningún carácter de la página o se recibirá un error.
La función que se utiliza para enviar una cookie lleva el nombre de setcookie, que
funciona de la siguiente manera:
000
001
002
<?php
setcookie (nombre,valor,fecha);
?>
Donde 'nombre', será un identificador de la cookie que contendrá el texto indicado por
'valor' y que tendrá vigencia hasta 'fecha'.
el ejemplo de la función setcookie se muestra a continuación:
000
001
002
003
<?php
$visitas = $_COOKIE["visitas"]+1;
setcookie ("visitas", $visitas, time () + 7*24*60*60);
echo "Nos has visitado $visitas veces";
?>
56
Apéndice D. Configuraciones adicionales de Raspberry Pi
Raspberry Pi cuenta con configuraciones adicionales, para poder acceder a ellas se debe
ejecutar el comando “raspi-config” el cual se ejecuta desde alguna terminal, al ejecutar
dicho comando el sistema mostrara una ventana similar al de la figura D.1
Figura D.1 Pantalla de configuración de Raspberry Pi
Dentro de las configuraciones están las siguientes:
1. Expandir la imagen del sistema operativo en la tarjeta SD.
2. Cambiar la contraseña del usuario principal (Change User Passsword).
Esta opción permite cambiar la contraseña que esta por default en el
sistema operativo. En Raspbian el usuario es Raspberry y la contraseña
es Pi.
3. Cambiar la pantalla de arranque. En esta configuración se puede elegir
entre las diferentes formas de arranque de Raspberry Pi, existen las
siguientes opciones, arrancar el sistema en terminal de comandos y desde
la interfaz gráfica.
4. Cambiar la configuración de zona horaria, lenguaje (Internationalization
Options).
57
5. Configurar la cámara. Raspberry Pi OrgFoundation, cuenta con módulos
de hardware externos especiales para la tarjeta. Con esta configuración se
activan los puertos para la cámara.
6. Agregar el dispositivo al rastreador ofrecido por la Raspberry Pi
Foundation, esto para llevar un seguimiento de la cantidad de
dispositivos en el mundo.
7. Configuración Overclock. Con esta configuración se puede aumentar la
velocidad del reloj del procesador para poder realizar más operaciones
por segundo. (ver Apéndice E).
8. Configuraciones adicionales (8 Advanced Options). En este punto
podemos configurar los módulos SSH, actualizar el sistema, dividir la
memoria.
Con todas estas configuraciones se puede mejorar el rendimiento del sistema,
mantenerlo actualizado, agregarle módulos, cambiarle el lenguaje, zona horaria entre
otras opciones. El comando de configuración se puede ejecutar en cualquier momento y
las configuraciones surgen efecto inmediatamente.
Apéndice E. Técnica Overclock
Overclock es una técnica computacional la cual consiste en aumentar la
velocidad del reloj de algunas de las partes de las computadoras, la técnica más común
es realizar el overclock del procesador. Con esta técnica el equipo es capaz de realizar
más operaciones por segundo.
Esta operación puede traer algunas consecuencias negativas, una de ellas son que el
procesador consume el doble de potencia, por lo consiguiente tiende a producir más
calor. Llegando a afectar el rendimiento y estado de otros componentes.
58
Para poder realizar el overclocking se debe considerar algún método de enfriamiento
para disipar el calor producido por el componente. Algunos de los métodos más
utilizados son: agregar ventiladores más potentes, cambiar los disipadores y hasta
agregar un sistema nuevo de refrigeración como lo es la refrigeración líquida.
En el caso de Raspberry Pi se cuenta con 4 niveles de overclocking desde 800 MHz
hasta 1000 MHz. Como se muestra en la figura E.1. Si se realiza esta operación en el
Raspberry Pi se debe tener en cuenta que el equipo no cuenta con algún disipador o con
algún ventilador que disminuya la temperatura producida.
Figura E.1 Configuración Overclock Raspberry Pi
59
Apéndice F. Creación de aplicaciones para el sistema
Para poder desarrollar un addon para el sistema es necesario que cuente con las
siguientes características:
1. Debe ser en PHP, Python o Java
a. El código fuente debe contar con enlaces relativos y debe contar con
una forma o página principal. Esto para que el sistema se comunique
con dicha forma principal.
2. Debe contar con dos imágenes o logos relativos al addon. Las características
de estas imágenes deben ser las siguientes:
a. El formato de ambas imágenes debe ser JPG
b. El nombre debe ser icon.jpg e icon2.jpg, donde:
i. Icon.jpg es la una imagen de 950 por 400 pixeles
ii. Icon2.jpg es una imagen de 200 por 70 pixeles
El tamaño puede variar, la única consecuencia seria que la imagen saliera
distorsionada al momento de mostrarse.
3. Contar con una archivo XML, el cual debe llevar el nombre de addon.xml,
este debe llevar el siguiente formato: Nombre: es el nombre que con el que el
sistema identificara al addon
a. Ppal: Es el archivo principal que hará el enlace entre el sistema y el
addon.
b. Tipo: es el lenguaje de programación en el que está desarrollado el
Addon.
c. Desc: esta es una descripción informativa para el usuario del sistema.
d. Autor: nombre del creador o creadores del Addon.
e. Versión: versión del addon.
Por ultimo todos estos requisitos deben ser incluidos en una carpeta la cual
será nombrada como la nombre del addon, y esta carpeta debe ser
comprimida en formato ZIP.
Para ejemplificar este proceso se tiene lo siguiente:
Se desea agregar un addon PHP al sistema, actualmente solo se cuenta con un archivo
.PHP el cual contiene el código fuente para realizar consultas a una página web. Lo
siguiente es agregar los archivos necesarios: los archivos quedan acomodados según
muestra la figura F.1:
60
Figura F.1 Ejemplo creación de Addon
El archivo addon.xml queda de la siguiente manera:
<info>
<addon>
<nombre>clima</nombre>
<ppal>index.php</ppal>
<tipo>PHP</tipo>
<desc>Aplicacion Weather Channel</desc>
<autor>The Weather Channel</autor>
<version>v1.0.0.1</version>
</addon>
</info>
Dichos archivos deben ser agregados a una carpeta que llevara el nombre de clima y
dicha carpeta se comprimida en formato ZIP. Una vez comprimida este archivo .ZIP
podrá ser agregado al sistema.
Apéndice G. Seguridad de los navegadores web
El navegador web es un programa que solicita y muestra en pantalla documentos
que residen en servidores remotos en toda la Web o que residen dentro de la maquina
local. El navegador debe interactuar con los equipos y programas de acceso al
ordenador que este tenga instalados.
En la actualidad existe una gran variedad de navegadores disponibles para todo tipo de
gustos y necesidades, ya sean detalles estéticos como lo son tamaños de letras, estilos;
61
detalles de accesibilidad como navegar mediante comandos de voz o por medio de
combinación de teclas.
Pero sin importar la plataforma y el tipo de navegador que se utilice todos los
navegadores deben contar con conceptos de seguridad básicos algunos de ellos son:
• Protección frente ataques. Este concepto permite que el usuario del navegador
este protegido contra ataques como lo son la suplantación de identidades, elementos
emergentes, ejecución no deseada de Java o JavaScript, carga automática de imágenes
no deseadas, entre otros.
• Gestión de la información privada: con este concepto el navegador permite que
el usuario tenga la confianza que su información personal o privada está protegida. Esto
se realiza mediante certificados de páginas web, sesiones, cifrado de datos. Pero así
como existen estos métodos que protegen la información el navegador dota al usuario
de características para tratar con información delicada, estas características son:
navegación privada o incognito, borrar historial cada determinado tiempo, bloqueo de
descargas y una principal el bloqueo de sesiones remotas.
Otra medida de seguridad importante son las tareas que puede ejecutar un navegador
web, en concepto un navegador web es solo un intérprete que muestra un resultado, por
lo tanto un navegador no tiene la habilidad de mandar llamar tareas o aplicaciones. Poco
a poco se han desarrollado alternativas para poder mostrar información del sistema
como lo podría ser su nombre o el directorio en el que se encuentra, pero no llamar una
aplicación externa mediante el navegador [44].
Apéndice H .Lenguajes de Programación
Un lenguaje de programación permite a un programador especificar de manera
precisa: sobre qué datos una computadora debe operar, cómo deben ser estos
almacenados y transmitidos y qué acciones debe tomar bajo una variada gama de
circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente
próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico.
62
Los procesadores usados en las computadoras son capaces de entender y actuar según lo
indican programas escritos en un lenguaje fijo llamado lenguaje de máquina. Todo
programa escrito en otro lenguaje puede ser ejecutado de dos maneras:
• Mediante un programa que va adaptando las instrucciones conforme son encontradas.
A este proceso se lo llama interpretar y a los programas que lo hacen se los conoce
como intérpretes.
• Traduciendo este programa al programa equivalente escrito en lenguaje de máquina. A
ese proceso se lo llama compilar y al traductor se lo conoce como compilador.
También existen niveles en los lenguajes que se mostraran a continuación:
Lenguajes de bajo nivel: Los lenguajes de bajo nivel son lenguajes de programación que
se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel es, por
excelencia, el código máquina. A éste le sigue el lenguaje ensamblador, ya que al
programar en ensamblador se trabajan con los registros de memoria de la computadora
de forma directa.
Lenguajes de medio nivel: Hay lenguajes de programación que son considerados por
algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al
tener ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo,
al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y,
por tanto, de alto nivel.
Lenguajes de alto nivel: Los lenguajes de alto nivel son normalmente fáciles de
aprender porque están formados por elementos de lenguajes naturales, como el inglés.
En BASIC, el lenguaje de alto nivel más conocido, los comandos como "IF
CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que
pare si CONTADOR es igual a 10. Por desgracia para muchas personas esta forma de
trabajar es un poco frustrante, dado que a pesar de que las computadoras parecen
comprender un lenguaje natural, lo hacen en realidad de una forma rígida y sistemática.
Los lenguajes compilados son lenguajes de alto nivel en los que las instrucciones se
traducen del lenguaje utilizado a código máquina para una ejecución rápida. Por el
63
contrario un lenguaje interpretado es aquel en el que las instrucciones se traducen o
interpretan una a una siendo típicamente más lentos que los programas compilados.
Es teóricamente posible escribir un compilador o un intérprete para cualquier lenguaje,
sin embargo en algunos lenguajes una u otra implementación es más sencilla porque se
diseñaron con una implementación en particular en mente.
• Lenguajes compilados es un lenguaje de programación que se implementa
mediante un compilador. Esto implica que una vez escrito el programa, éste se traduce a
partir de su código fuente por medio de un compilador en un archivo ejecutable para
una determinada plataforma.
• Lenguajes interpretados es un lenguaje de programación que está diseñado para
ser ejecutado por medio de un intérprete, en contraste con los lenguajes compilados.
Teóricamente, cualquier lenguaje puede ser compilado o ser interpretado, así que esta
elección es aplicada debido a la práctica común y no a alguna característica subyacente
de un lenguaje en particular. Sin embargo, hay lenguajes que son diseñados para ser
básicamente interpretativos, por lo tanto un compilador causará una carencia de la
eficacia. A continuación se muestran algunas diferencias entre lenguajes compilados e
interpretados:
• Los lenguajes compilados se compilan una vez y se utilizan cuantas veces se
quiera sin la necesidad de volver a compilarlo. Los lenguajes interpretados son
interpretados, valga la redundancia, cada vez que se ejecutan y necesitan siempre del
intérprete.
• Los compiladores analizan todo el programa y no generan resultados si todo el
código no es correcto. Los intérpretes analizan las instrucciones según las van
necesitando y estos pueden ejecutar un programa con errores e incluso pueden terminar
correctamente la ejecución del programa con errores siempre que no haga uso de las
instrucciones que contienen los errores.
• Un compilador traduce cada instrucción una sola vez. Un intérprete debe
traducir una instrucción cada vez que la encuentra.
• Los binarios son compilados para una arquitectura específica y no pueden ser
utilizados en otras arquitecturas no compatibles (aunque pueden existir distintos
compiladores para generar binarios para diferentes arquitecturas). Un lenguaje
64
interpretado puede ser utilizado en cualquier arquitectura que disponga de un intérprete
sin necesidad de cambios.
• Los lenguajes compilados son más eficientes que los interpretados y además
permiten distribuir el programa en forma confidencial mediante binarios.
• Es más sencillo empaquetar lenguajes interpretados dentro de otros lenguajes,
como JavaScript dentro de HTML.
Ventajas de los lenguajes interpretados.
• Portabilidad: Esta es la principal ventaja que presenta este tipo de lenguajes,
porque puede ser compilado en y para cualquier plataforma o sistema operativo.
• Compatibilidad: al ser interpretado por el sistema operativo, es la máquina
virtual o framework el que se encarga de que las instrucciones sean ejecutadas por el
software y el hardware.
Desventajas de los lenguajes interpretados.
• Velocidad: Es el aspecto más notable y el cual se debe evaluar a fondo al crear
software con este tipo lenguajes, pues se debe equilibrar la portabilidad con la velocidad
que se está sacrificando. A menos que las prestaciones de los equipos informáticos sean
bastante altas, en el caso cual, se podría despreciar este aspecto.
• Portabilidad: Es una desventaja también. El problema radica en que en la
actualidad, así todos los lenguajes compilados, existen para todas las plataformas, no así
las máquinas virtuales o frameworks, aunque en el caso de Java, se ha hecho un
excelente trabajo, existe para casi todas las plataformas, por no decir todas.
65
Apéndice I. Manual de Usuario
Introducción
En este documento se describirán los objetivos e información clara de cómo
utilizar el sistema multimedia.
El sistema multimedia fue creado con el objetivo de brindar a los usuarios una variedad
de entretenimiento brindándole la oportunidad de poder agregar más aplicaciones,
mediante un sistema de addons externas.
Es de mucha importancia consultar este manual antes y/o durante la ejecución del
sistema para poder entender todas las funcionalidades que incluye el sistema.
Objetivo del manual
El objetivo de este manual es ayudar y guiar al usuario en la utilización del
sistema multimedia. Y se comprende de las siguientes partes.
Explicación de los módulos con los que cuenta el sistema, incluyendo los
pasos para agregar nuevos addons al sistema.
Configuración del sistema
Problemas y/ errores
Configuración Inicial
Para poder iniciar el sistema es necesario que el dispositivo Raspberry Pi es
necesario:
1. Conectar el dispositivo al televisor, ya sea mediante HDMI o por medio de
los cables RCA.
2. Conectar el o los dispositivos de Teclado y ratón.
3. Conectar el cable de corriente de Raspberry Pi.
Arranque del sistema
Una vez conectado correctamente el dispositivo Raspberry Pi, se comenzará a
cargar el sistema y mostrara una pantalla como la mostrada en la figura I.1. La cual es
la página principal del sistema.
66
Figura I.1 Página principal del sistema.
Módulos del sistema
El sistema multimedia maneja dos módulos de servicios descritos a
continuación:
Módulo de medios locales.
En este módulo se encuentran las aplicaciones que están cargadas en el sistema
por default y los addons con formato Java y Python agregadas por el usuario. Todo este
módulo cuenta con un encabezado (ver figura I.2) que le permite al usuario navegar por
todo el sistema de una forma rápida y sencilla.
Figura I.2 Encabezado de medios locales.
El encabezado mencionado anteriormente cuenta con las siguientes características
Apagar y reiniciar el sistema. Para apagar o reiniciar el sistema solo es cuestión de
presionar alguno de los dos botones.
Módulos web. Esta opción le muestra al usuario la sección de módulos web, explicados
más adelante en este manual.
67
Medios locales. En esta sección están alojadas las aplicaciones encargadas de
reproducir los archivos locales (audio, video, imágenes). Dichas aplicaciones son VLC
Media Player, OMXPLAYER y Pictures view (ver Figura I.3)
Figura I.3 Aplicaciones que reproducen medios locales
VLC Media Player
VLC es un reproductor capaz de reproducir casi cualquier formato de video sin
necesidad de instalar códecs externos. Al oprimir el botón de VLC aparecerá una
pantalla como la que se muestra en la figura (ver figura I.4). Esta figura le muestra al
usuario la pantalla de inicio de VLC. Dentro de esa ventana se puede elegir el archivo
que se busque reproducir (audio, video).
Figura I.4. VLC Media Player
68
OMXPLAYER
Dentro del sistema existe otra opción para reproducir audio y video esta opción es
OMXPLAYER. Al abrir esta aplicación aparecerá una ventana (ver figura I.5) la cual
permite agregar archivos multimedia a un listado y así estos se puedan reproducir uno
tras otro.
Figura I.5 OMXPLAYER
Visor de imágenes
El visor de imágenes es sencillo de manejar solo se necesita seleccionar el archivo o la
carpeta que contenga imágenes que se quiera visualizar y el programa cargara las
imágenes a pantalla (ver figura I.6).
Figura I .6. Visor de imágenes.
69
APPS/UTILERIAS
Dentro de esta sección se encuentran las aplicaciones cargadas en el sistema por default
(no se pueden quitar del sistema) y dentro de esta sección se direcciona a las
aplicaciones (Python y Java) agregadas por el usuario.
Primeramente se explicaran las aplicaciones cargadas en el sistema por default las
cuales son llamadas utilerías.
Estas utilerías son un valor agregado para el sistema debido a que no
necesariamente están relacionadas con la reproducción multimedia. Dentro de las
aplicaciones precargadas en el sistema se encuentran: un editor de texto, editor de
Python, administrador de archivos, calculador, terminal y un administrador de tareas.
(Ver figura I.7).
Figura I.7. Utilerías cargadas dentro del sistema.
Dentro de estas utilerías existe una en especial que hace referencia a YouTube debido a
algunos problemas con el dispositivo Raspberry Pi con Flash Media Player, pero esto no
significa que no se pueda reproducir YouTube en el sistema. Para reproducir YouTube
se debe realizar lo siguiente: abrir la aplicación de YouTube está dentro de utilerías (ver
figura I.8). Esto dirigirá al sistema a la página www.youtube.com dentro de la página
web se navega hasta encontrar el video que se busca reproducir, una vez elegido el
video lo que se debe realizar es seleccionar el botón de Play que se encuentra en la
barra de navegación tal como se muestra en la figura I.9 y en un lapso no mayor a 10
segundos el video comenzará a reproducirse.
Figura I.8 Aplicación de YouTube
70
Figura I.9. Botón PLAY del navegador.
Se debe tomar en cuenta que el video se reproducirá en pantalla completa sin ninguna
barra o botón dentro del video, para poder manipular la reproducción del video se deben
tomar en cuenta la información mostrada en la tabla I.1
Tecla Acción
1 Aumentar la velocidad de reproducción
2 Disminuir la velocidad de reproducción
Q /ESC Quitar la pantalla completa
Barra espaciadora / P Pausar el video
- Disminuir el volumen
+ Incrementar el volumen
Flecha Izquierda retroceder -30
Flecha derecha avanzar +30
Flecha Abajo retroceder -600
Flecha Arriba avanzar +600
Tabla I.1 Teclas para manipular YouTube.
Para regresar al sistema solo es necesario elegir el botón con forma de casa, este botón
redirigirá al usuario a la página principal del sistema.
Módulos web
La segunda parte del sistema se basa en aplicaciones web, las cuales pueden ser
agregadas al sistema por el usuario (solo los addons PHP aparecerán dentro de esta
sección) y aquellas aplicaciones que tengan contacto con internet. La página principal
71
de esta sección mostrar al usuario un galería dinámica de las aplicaciones instaladas en
el sistema. Tal como se muestra en la figura I.10.
Figura I.10. Página inicial Módulos web
Radio
Esta sección del sistema tiene como intensión reproducir música que está siendo
transmitida por internet, para poder reproducir dicha música solo es cuestión de
seleccionar el género y presionar el botón de reproducir. Al realizar esto se abrirá un
mini reproductor como el que se muestra en la figura I.11.
Figura I.10. Sección de radio por internet.
72
Listado de aplicaciones PHP y URL
Dentro de esta página se encontrará el listado de aplicaciones o direcciones web
agregadas por el usuario. Desde el listado se puede mandar llamar a la aplicación o abrir
la página web seleccionada.
Figura 1.11. Listado de aplicaciones agregadas por el usuario.
Configuración
Dentro de esta sección se podrán agregar o eliminar addons, cambiar el color de
fondo (solo dentro de este módulo) o agregar una página web al sistema. (Ver figura
1.12).
Figura I.12. Configuración de los módulos web.
73
Agregar un Addon al sistema. Para agregar un addon al sistema solo es necesario
seleccionar el archivo ZIP que contenga el Addon y automáticamente se agregara al
sistema.
Eliminar un addon o página web del sistema. Solo es cuestión de elegir el addon que
se quiere eliminar y seleccionar borrar.
Agregar una página web al sistema. Para agregar una página web al sistema solo es
necesario teclear un nombre para identificar a la página y teclear la dirección web.
Si la página web se teclea mal o no existe, el sistema no la agregara.
Cambiar color de fondo y letras. El sistema puede cambiar el color de fondo y el color
de las letras (solo en la sección módulos web). Seleccionando solo el color de fondo y el
color de las letras tal como se muestra en la figura I.13.
Figura I.13. Configuración, cambio de color de fondo y color de letras.
74
Apéndice J. Manual Técnico
Introducción y objetivos
El objetivo del presente manual es mostrar los detalles técnicos en cuanto al sistema
desarrollado, esto con la intensión de facilitar la modificación o actualización del
sistema en caso de ser necesario. O bien para su mantenimiento posterior.
El objetivo general del sistema está enfocado a crear un centro multimedia que
conectado a un televisor funcione como una SmartTV.
El objetivo del sistema es brindarle al usuario una fácil interacción entre las
aplicaciones que se encuentran en el sistema con el usuario. Además la oportunidad de
agregar más aplicaciones al sistema de una forma fácil y sencilla.
Lenguaje utilizado.
El lenguaje utilizado para el desarrollo de esta aplicación fue HTML y PHP debido a
unas investigaciones realizadas en cuanto a los lenguajes de programación. Los
resultados de dicha investigación fueron que los lenguajes de programación HTML y
PHP, los cuales pertenecen a los tipos de lenguajes interpretados, eran los que más se
ajustaban al proyecto debido a su poca necesidad de procesamiento y de consumo de
recursos.
Una desventaja de estos tipos de lenguajes son sus medidas de seguridad para poder
comunicarse con las aplicaciones locales, para cubrir esta desventaja se utiliza el
navegador web Minimal Kiosk Browser el cual está desarrollado en Python y brinda la
oportunidad de comunicarse con el sistema operativo mediante comandos.
Aplicación
Para hablar acerca de la aplicación desarrollada se tiene que hacer la división de los dos
módulos principales, el de medios locales y el modulo web.
Primeramente se hará mención de cómo se mandan ejecutar las utilerías cargadas en el
sistema por default. Las cuales aparecen dentro del sistema como se muestra en la figura
J.1.
75
Figura J.1. Utilerías del sistema
Utilerías
Estas aplicaciones son llamadas mediante un URL local, haciendo referencia a la
página inicial del sistema, la cual es homepage.html. Con esta página se pueden mandar
ejecutar comandos del sistema, por ejemplo
file:///homepage.html?cmd=idle
Dónde: ?cmd= le indica al navegador que debe ejecutar los comandos después del signo
igual (=), en el caso del ejemplo abrirá la aplicación Python IDLE, la cual es un editor e
intérprete de Python. Si se necesita ejecutar un comando que necesite dos o más
palabras y estas son separadas por un espacio, se necesita cambiar el espacio por los
caracteres %20, estos caracteres le indican al navegador el carácter espacio en HTML.
Un ejemplo seria tratar de reiniciar el sistema, para esto se necesita ejecutar el comando
Sudo reboot pero en términos del sistema quedaría de la siguiente manera
sudo%20reboot, con este último comando bastaría para reiniciar el sistema. Quedando
el URL completo de la siguiente manera:
file:///homepage.html?cmd=sudo%20reboot
Cabe recordar que para realizar y ejecutar estos comandos lo recomendable es agregarlo
a un enlace mediante el TAG <a href> de HTML
Agregar addons al sistema.
El procedimiento que sigue el sistema para agregar addons varía de acuerdo al
tipo de addon que se agregue:
76
PHP: El sistema lee el archivo addon.xml y agrega la información de la aplicación en
otro archivo XML llamado apps.xml.
Para poder ejecutar dicha aplicación el sistema lee el archivo XML donde se encuentra
almacenada la información de las aplicaciones del sistema y toma la ubicación y el
nombre del archivo principal de la aplicación.
JAVA. El sistema lee el archivo addon.xml y genera un script el cual se encarga de
hacer la ejecución de la aplicación.
El script generado recibe el nombre de la aplicación para que el usuario lo identifique
fácilmente, el contenido del script es parecido al siguiente:
Java <nombre del script>
Python El sistema lee el archivo addon.xml y genera un script el cual se encarga de
hacer la ejecución de la aplicación.
El script generado recibe el nombre de la aplicación para que el usuario lo identifique
fácilmente, el contenido del script es parecido al siguiente:
Python <nombre del script>
En cualquiera de los tres casos el sistema primeramente descomprime el archivo ZIP
dentro de la carpeta /addons.
Para ilustrar correctamente el proceso de instalación se puede visualizar la figura J.2 la
cual muestra un diagrama de flujo del proceso.
77
Figura J.2 Diagrama de flujo para la instalación de addons.
Igualmente se ilustra en la imagen J.3 el proceso de ejecución de los addons agregados
por el usuario.
78
Figura J.3 Diagrama de flujo para la ejecución de un addon agregado por el usuario.
Cada carpeta que se maneja aquí tiene una función distinta las carpetas se ilustra en la
imagen J.4:
Figura J.4 Imagen de las diferentes carpetas utilizadas.
79
En la carpeta addons se manejan todos los archivos de cada una de las APIs agregadas
al sistema A todas estas APIs al instalarse se crea su respectivo folder con nombre el
cual contiene todos los archivos de la API.
En la carpeta de HTML se maneja los archivos de la interfaz del sistema multimedia en
este es donde se pueden hacer cambios a la interfaz o también agregar más
características al mismo como lo son: las configuraciones, integrar nuevas
características y cambiar si es necesario el estilo de toda la interfaz.
En la capeta de java se encuentra un script el cual es el encargado de mandar ejecutar
las aplicaciones JAVA y PYTHON, este script inicializa la aplicación para que el
usuario la pueda visualizar.
Los otros archivos son parte de los módulos locales, estos archivos se deben encontrar
en la carpeta /local/pi.