Sunteți pe pagina 1din 91

PROTOTIPO DE SISTEMA DE SEGURIDAD EN VEHCULOS DE

TRANSPORTE PUBLICO QUE PERMITE LA CAPTURA DE IMAGEN


FOTOGRFICA, POSICIONAMIENTO GLOBAL Y ALMACENAMIENTO
EN BASE DE DATOS

AUTORES:

JONATHAN FERNEY GONZALEZ BENAVIDES


CARLOS ARTURO MARIN MENDEZ

UNIVERSIDAD DISTRITAL FRANCISCO JOS DE CALDAS


FACULTAD TECNOLGICA
PROYECTO CURRICULAR DE INGENIERIA EN TELECOMUNICACIONES
Bogot D.C., Colombia
2015

PROTOTIPO DE SISTEMA DE SEGURIDAD EN VEHCULOS DE


TRANSPORTE PUBLICO QUE PERMITE LA CAPTURA DE IMAGEN
FOTOGRFICA, POSICIONAMIENTO GLOBAL Y ALMACENAMIENTO
EN BASE DE DATOS

JONATHAN FERNEY GONZALEZ BENVIDES


CARLOS ARTURO MARIN MENDEZ

Cdigo: 20122273010
Cdigo: 20122273002

Monografa presentada como requisito parcial para optar al ttulo de:


Ingeniera en Telecomunicaciones

Director:
HERMES JAVIER ESLAVA BLANCO, M.Sc. Ph.D(c)

UNIVERSIDAD DISTRITAL FRANCISCO JOS DE CALDAS


FACULTAD TECNOLGICA
PROYECTO CURRICULAR DE INGENIERIA EN TELECOMUNICACIONES
Bogot D.C., Colombia
2015

PROTOTIPO DE SISTEMA DE SEGURIDAD EN VEHCULOS DE TRANSPORTE


PUBLICO QUE PERMITE LA CAPTURA DE IMAGEN FOTOGRFICA,
POSICIONAMIENTO GLOBAL Y ALMACENAMIENTO EN BASE DE DATOS

PGINA DE APROBACIN

Observaciones
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________

_______________________________
Hermes Javier Eslava Blanco, m.sc. ph.d(c)
Director Del Proyecto

_______________________________
Jos David Cely Callejas
Jurado

Fecha de Presentacin:

Resumen
El objeto principal del proyecto es el diseo de un dispositivo de seguridad en vehculos capaz de
capturar datos de posicin geogrfica, tomar fotografas y enviar esta informacin va internet, para
ser alojados en una base de datos y visualizados a travs de una pgina web. Este prototipo se dise
usando la plataforma Raspberry Pi 2 Modelo B, la cual proporciona mayores garantas en trminos de
compatibilidad y versatilidad. Se dise una base de datos en un servidor remoto con MySQL para la
importacin de la informacin recibida y permitirle al usuario final previamente registrado, consultar
esta informacin va web.
Con este prototipo se pretende ofrecer una alternativa tecnolgica para mitigar la inseguridad en
vehculos de trasporte pblico y reforzar el sistema integral de seguridad para el beneficio de la
comunidad en general.

Abstract
The main purpose of the project is the design of a vehicle safety device enable for capturing
geographical positional data, take pictures and send information by Internet, to be housed in a
database and displayed through a web page. This prototype was designed using the platform
Raspberry Pi 2 Model B, this platform provides greater guarantees in terms of compatibility and
versatility. The database was designed on a remote server with MySQL for the import of the
information received and permits the end user previously registered, access this information via the
web.
With this prototype is intended to provide a technological alternative to mitigate insecurity in public
transport vehicles and reinforce the comprehensive security system for benefit of the community.

Contenido
Resumen................................................................................................................................................... 4
Contenido ................................................................................................................................................. 5
Lista de tablas ........................................................................................................................................... 8
Lista de figuras ......................................................................................................................................... 9
Lista de trminos .................................................................................................................................... 10
Glosario .................................................................................................................................................. 11
Introduccin ........................................................................................................................................... 12
1.

DESCRIPCIN DEL PROYECTO ........................................................................................................ 13


1.1.

2.

OBJETIVOS .............................................................................................................................. 13

1.1.1.

Objetivo General ............................................................................................................ 13

1.1.2.

Objetivos Especficos ...................................................................................................... 13

METODOLOGA............................................................................................................................... 14
2.1.

Diseo del Hardware .............................................................................................................. 14

2.2.

Diseo Web y base de datos .................................................................................................. 14

2.3.

Fases del proyecto.................................................................................................................. 15

3.

MODELO DE FACTIBILIDAD TECNOLGICA .................................................................................... 17

4.

MARCO TERICO ............................................................................................................................ 21


4.1.

HTML (HyperText Markup Language) .................................................................................... 21

4.1.1.
4.2.

Estructura de cabecera................................................................................................... 21

PHP (Hypertext Preprocessor) ............................................................................................... 21

4.2.1.

Caractersticas PHP ......................................................................................................... 22

4.3.

WAMP SERVER ....................................................................................................................... 22

4.4.

CSS .......................................................................................................................................... 23

4.5.

JAVA SCRIPT............................................................................................................................ 24

4.5.1.

API de Google Maps ....................................................................................................... 24

4.6.

SERVIDOR WEB ....................................................................................................................... 25

4.7.

SERVIDOR FTP......................................................................................................................... 25

4.8.

MD5 (Message-Digest Algorithm) .......................................................................................... 25

4.9.

BASES DE DATOS .................................................................................................................... 25

4.9.1.

Tipos de bases de datos ................................................................................................. 26

4.9.2.

Sistema Gestor de Base de Datos ................................................................................... 28

4.9.3.

MySQL............................................................................................................................. 28

4.9.4.

Modelo de Entidad Relacin....................................................................................... 29

4.10.

GPS...................................................................................................................................... 30

4.10.1.

Introduccin ................................................................................................................... 30

4.10.2.

Elementos que lo componen.......................................................................................... 30

4.10.3.

Funcionamiento.............................................................................................................. 30

4.10.4.

Fiabilidad de los datos .................................................................................................... 31

4.10.5.

Fuentes de error ............................................................................................................. 31

4.10.6.

GPS diferencial................................................................................................................ 32

4.10.7.

Coordenadas GPS ........................................................................................................... 32

4.10.8.

Mltiples sistemas de coordenadas para coordenadas geogrficas .............................. 33

4.10.9.

Unidades de medida para las coordenadas GPS ............................................................ 34

4.11.

TRANSMISIN DE DATOS EN LA RED CELULAR .................................................................. 35

4.11.1.

Telefona Mvil 3G ......................................................................................................... 35

4.11.2.

Comparacin de la velocidad de los estndares de la telefona mvil .......................... 36

4.12.

RASPBERRY PI ..................................................................................................................... 37

4.12.1.

Hardware Raspberry Pi ................................................................................................... 37

4.12.2.

Accesorios para Raspberry Pi ......................................................................................... 39

4.12.3.

Software para Raspberry Pi ............................................................................................ 41

4.13.

PYTHON Y RASPBERRY ........................................................................................................ 42

4.13.1.
5.

Python ............................................................................................................................ 42

DESARROLLO DEL PROYECTO ......................................................................................................... 44


5.1.

DISEO DE HARDWARE .......................................................................................................... 44

5.1.1.

Inicio de Raspberry Pi ..................................................................................................... 45

5.1.2.

Adaptacin de mdulos y Programacin de Raspberry Pi ............................................. 51

5.1.3.

Internet mvil con el modem 3G USB Huawei E173 en la Raspberry ............................ 59

5.2.

6.

DISEO DE APLICATIVO .......................................................................................................... 63

5.2.1.

Instalacin WAMP Server: .............................................................................................. 63

5.2.2.

Transferencia de informacin ........................................................................................ 64

5.2.3.

Creacin de base de datos, tabla y conexin de MySQL con PHP ................................. 65

5.2.4.

Visualizacin ................................................................................................................... 72

Pruebas tcnicas............................................................................................................................. 75
6.1.

Prueba de Estrs: ................................................................................................................... 76

7.

Conclusiones................................................................................................................................... 78

A.

Anexo: Script principal.py ........................................................................................................... 79

B.

Anexo: Script pulsador.py ........................................................................................................... 80

D.

Anexo: Script picam.py ............................................................................................................... 82

E.

Anexo: Script iniciogps.py ........................................................................................................... 85

F.

Anexo: Script envioFTP.py .......................................................................................................... 87

H.

Anexo: Script mapa.php .............................................................................................................. 89

8.

Bibliografa ..................................................................................................................................... 90

Lista de tablas
Tabla 1: Fases del proyecto .................................................................................................................... 16
Tabla 2: Comparacin entre plataformas electrnicas modernas compuestas. ................................... 17
Tabla 3: Comparacin entre lenguajes de programacin. ..................................................................... 18
Tabla 4: Comparacin entre servidores de mapas. ................................................................................ 20
Tabla 5: Comparacin entre los tiempos de respuesta de los mapas.................................................... 20
Tabla 6: Correlacin entre coordenadas Decmales y Sexagesimales. [21] .......................................... 34
Tabla 7: Comparacin de la velocidad de los estndares de la telefona mvil. [23] ............................ 36
Tabla 8: Conexiones GPIO. [26] .............................................................................................................. 38
Tabla 9: Extensin de conexiones GPIO para modelo B versin 2. [26]................................................. 39
Tabla 10: Es pesificaciones tcnicas del mdulo GPS. [30] .................................................................... 41
Tabla 11: Tabla de Monitoreo en MySQL ............................................................................................... 66
Tabla 12: Tabla de registro ..................................................................................................................... 67

Lista de figuras
Figura 1: Modelo Top-Down para el diseo de Hardware. .................................................................... 14
Figura 2: Modelo cascada para el diseo de software ........................................................................... 15
Figura 3: Entorno de Administracin WampServer. [5] ......................................................................... 23
Figura 4. Representacin de mapa en Google Maps. [8] ....................................................................... 24
Figura 5: Gestores de bases de datos. [14] ............................................................................................ 28
Figura 6: Clculo de la posicin usado tres satlites. [17] ..................................................................... 31
Figura 7. Divisin de la superficie terrestre en paralelos y meridianos. [20]......................................... 33
Figura 8: Placa Raspberry pi. [24] ........................................................................................................... 37
Figura 9: Raspberry pi Modelo B. [25].................................................................................................... 38
Figura 10: Modulo cmara para Raspberry pi. [28] ............................................................................... 39
Figura 11: Modulo GPS Ublox NEO 6M. [29] .......................................................................................... 40
Figura 12: Interfaz del programa SD Formatter. [34] ............................................................................. 45
Figura 13: Pantalla inicial de Pi Recovery. [36] ...................................................................................... 47
Figura 14: Men principal de configuracin de Raspbian. [36] ............................................................. 47
Figura 15: Men de opciones de internacionalizacin de Raspbian. [36] ............................................. 48
Figura 16: XMING con Raspberry Pi iniciar startlxde. [38] ..................................................................... 50
Figura 17: Conexin de la cmara a la interfaz CSI de la Raspberry Pi. [39] .......................................... 53
Figura 18: Esquema y conexin de mdulo Ublox M6 a Raspberry pi. [41] .......................................... 56
Figura 19: Pantalla de terminal con datos del GPS. [41] ........................................................................ 57
Figura 20: Correo electrnico recibido de emergencia.......................................................................... 58
Figura 21: Datos almacenados para la importacin en la base de datos............................................... 58
Figura 22: Pantalla inicial de Sakis 3G interactivo. ................................................................................. 62
Figura 23: Interfaz de logeo de phpMyAdmin ....................................................................................... 64
Figura 24: Interfaz TYPSoft FTP Server ................................................................................................... 65
Figura 25: Esquema entidad relacin ..................................................................................................... 68
Figura 26: Diagrama de bloques del registro de usuario ....................................................................... 70
Figura 27: Diagrama de bloques inicio sesin ........................................................................................ 71
Figura 28: Entorno Web, consulta sin datos de tabla monitoreo .......................................................... 72
Figura 29: Entorno Web consulta datos tabla monitoreo ..................................................................... 72
Figura 30: Captura de coordenadas en Google Maps ............................................................................ 73
Figura 31: Google Developers equipo escritorio. ................................................................................... 75
Figura 32: Google Developers dispositivo mvil. ................................................................................... 76
Figura 33. Prueba de carga de conexin con 25 usuarios. ..................................................................... 76
Figura 34. Respuesta de pginas y estilos. ............................................................................................. 77
Figura 35. Tiempo respuesta plataforma web. ...................................................................................... 77

Lista de trminos
CSS:

Cascading Style Sheets

XML:

eXtensible Markup Language

WML:

Wireless Markup Language

MD5:

Message-Digest Algorithm 5

DBA:

Data Base Administrator

SGBD:

Data Base Management System

SQL:

Structured Query Language

C:

Lenguaje de programacin

NAVSTAR: Navigation System Using Timing and Ranging


GNSS:

Global Navigation Satellite System

GLONASS: Global'naya Navigatsionnaya Sputnikovaya Sistema


WAAS:

Wide Area Augmentation System

EGNOS:

European Geostationary Navigation Overlay Service

MSAS:

Multi-functional Satellite Augmentation System

GAGAN:

GPS Aided Geo Augmented Navigation

GPRS:

General Packet Radio Service

EDGE:

Enhanced Data rates for GSM Evolution

UMTS:

Universal Mobile Telecommunications System

WCDMA:

Wideband Code Division Multiple Access

CDMA:

Code Division Multiple Access

HSDPA:

High Speed Downlink Packet Access

LTE:

Long Term Evolution

SBC:

Single Board Computer

GPIO:

General Purpose Input/Output

IDE:

Integrated Development Environment

UNIX:

Sistema operativo

10

Glosario
3G:

Abreviatura de tercera generacin de transmisin de voz y datos a travs de la


telefona mvil.

Browser:

Software, aplicacin o programa que permite la navegacin en la web.

API:

(Application Programming Interface), interfaz de programacin de aplicaciones.

Apache:

Servidor HTTP Apache de cdigo abierto, para plataformas Linux, Microsoft,


Macintosh etc.

Cmara:

Dispositivo tecnolgico cuyo objetivo es la captura de imgenes.

Directorio:

Contenedor virtual de archivos.

Google Maps: Servidor de aplicaciones de mapas en la web, pertenece a la empresa Google.


GPS:

(Global Position System) Sistema de posicionamiento global que permite determinar


la posicin de un objeto (persona, un vehculo etc.).

FTP:

(File Text Protocol), transferencia de archivos entre dispositivos que proporciona


seguridad y orden en la transferencia.

HTML:

Lenguaje de marcas de hipertexto para la elaboracin de pginas web.

HTTP:

(Hypertext Transfer Protocol) usado para la transaccin de la World Wide Web.

JavaScript:

Lenguaje de programacin de uso principalmente para desarrollo de pginas web


dinmicas.

MySQL:

Gestor de bases de datos relacional, multihilo y multiusuario.

Raspberry PI: Mini ordenador que puede ser usado como servidor de contenidos.
Raspbian:

Sistema operativo Linux para Raspberry basado en Debian.

PHP:

(Hypertext PreProcessor), lenguaje de cdigo abierto especialmente adecuado para


desarrollo web y puede ser incrustado en HTML.

Python:

Lenguaje de programacin de alto nivel, interpretado y multipropsito.

SHELL:

Trmino usado en informtica para referirse a un intrprete de comandos.

WampServer: Entorno de desarrollo web (Windows-Apache-MySQL-Php/Phyton/Perl).

11

Introduccin
Pensando en la vinculacin de proyectos que contribuyan a la mejora y desarrollo de los sistemas de
seguridad ciudadana, surge la necesidad de elaborar alternativas y estrategias en bsqueda del
fortalecimiento integral de seguridad.
La inseguridad en la ciudad es uno de los problemas ms sentidos por la poblacin, que afecta las
diversas actividades econmicas, sociales, recreativas, educativas, entre otras, con diferente
intensidad.
Segn el Observatorio de Seguridad de Bogot de la Cmara de Comercio, la percepcin de seguridad
en el primer semestre del 2013 es la siguiente. El taxi es la modalidad de transporte pblico
considerada ms segura por los encuestados; no obstante, su percepcin positiva se reduce en 7
puntos. El Transmilenio es sealado seguro solo por el 23% de los encuestados y el taxi por el 18%. En
el caso del taxi, indican que la posibilidad de solicitarlo directamente a la empresa, es la razn
principal para percibirlo como un medio de trasporte seguro. Quienes lo consideran inseguro, sealan
la posibilidad de ser vctima de paseo millonario y de fleteo. Quienes consideran que el Transmilenio
es seguro, sealan como razones ms importantes la presencia de polica y de vigilancia privada. Los
dems argumentan que hay exceso de personas e indican que se presentan casos de robos y atracos.
De esta manera, la Cmara de Comercio informa que el transporte pblico de pasajeros sigue siendo
uno de los escenarios donde se registra la mayor victimizacin, los ms altos niveles de percepcin de
inseguridad y de conflictividad en la ciudad. Por tanto, es preciso mejorar la calidad de la informacin
a fin de comprender la magnitud de los hechos que ocurren en el sistema de transporte de la ciudad y
proponer estrategias concretas y pblicas que permitan mejorar las condiciones de seguridad. [1]
En este caso, el proyecto est enfocado al diseo y desarrollo de un prototipo tecnolgico de
seguridad vehicular, que busca satisfacer las necesidades bsicas mediante envo de reportes
peridicos a una base de datos, de localizacin geogrfica del vehculo a travs de GoogleMaps,
capturas fotogrficas al interior del vehculo, direccin, estado de activacin automtica o de
emergencia, fecha y hora, de tal manera que esta informacin pueda ser consultada cuando el
usuario lo requiera en internet.
La proyeccin a futuro, es que el prototipo sirva como base para elaborar una plataforma ms
robusta, que contenga mayores elementos en los reportes y mejoras en la eficiencia operativa para
proporcionar un sistema de seguridad ms optimizado.

12

1. DESCRIPCIN DEL PROYECTO


1.1.
1.1.1.

OBJETIVOS
Objetivo General

Disear y desarrollar un sistema de seguridad en vehculos de transporte pblico de pasajeros,


realizando captura de imgenes fotogrficas y simultneamente obteniendo la ubicacin del vehculo,
esta informacin adquirida podr ser consultada por el usuario interesado va web.

1.1.2.

Objetivos Especficos

Disear el sistema fsico y operacional capaz de capturar imgenes fotogrficas y


coordenadas de posicionamiento, transmitiendo los datos obtenidos a travs de la red celular
a un servidor remoto.

Disear una base de datos para almacenar la informacin recibida y ser consultada va web.

Validar, comparar y analizar la veracidad de los datos transmitidos y recibidos, realizando


diversas pruebas en vehculos y ubicaciones diferentes.

13

2. METODOLOGA
A continuacin, se describe la metodologa implementada para el diseo del hardware y el software
utilizado para el funcionamiento general del proyecto.

2.1.

Diseo del Hardware

Para el desarrollo completo del dispositivo fsico se realiz con el diseo Top-Down. El diseo TopDown consiste en capturar una idea con un alto nivel de abstraccin, implementarla partiendo de la
misma, e incrementar el nivel de detalle segn sea necesario. El sistema inicial se va subdividiendo en
mdulos, estableciendo una jerarqua. Cada mdulo se subdivide cuantas veces sea necesario hasta
llegar a los componentes primarios del diseo como muestra el esquema de la figura.

Figura 1: Modelo Top-Down para el diseo de Hardware.

2.2.

Diseo Web y base de datos

Para el desarrollo WEB y creacin de la base de datos, la eleccin del modelo de software para este
caso fue el modelo cascada, el desarrrollo secuencial de las fases permite que a medida que se
termina un bloque, le de vida al siguiente y permita compactar y complementar el desarrollo y
ejecucin del diseo. Este modelo, fue la mejor prctica encontrada para el tipo de proyecto
implementado. A continuacin la respresentacin del esquema.

14

Figura 2: Modelo cascada para el diseo de software

2.3.

Fases del proyecto

Para dar cumplimiento a los objetivos especficos, se siguieron una serie de actividades, las cuales dan
indicios del proceso seguido para la finalidad del proyecto.
En la siguiente tabla, se relacionan las actividades principales.
Investigacin y anlisis de las posibilidades de dispositivos electrnicos y nuevas
tecnologas que faciliten la creacin del hardware requerido.
Eleccin de la mejor opcin en relacin costo-beneficio y adquisicin de los materiales
indispensables para la fabricacin del hardware.
Diseo del sistema
fsico local

Diseo de un diagrama del circuito, acoplando los diferentes mdulos que interfieren
en el dispositivo.
Acoplamiento e implementacin de los mdulos electrnicos para la funcin
requerida.
Pruebas y revisin del funcionamiento del dispositivo, verificando la compatibilidad,
tiempos de respuesta y capacidad de almacenamiento.

Diseo del sistema


fsico remoto

Evaluar caractersticas, ventajas y desventajas sobre el servidor a utilizar para el


desarrollo, procesamiento y visualizacin de la informacin.
Integracin y configuracin del servidor remoto, para el almacenamiento de archivos
FTP, base de datos y pagina web.

15

Configuracin local de red del servidor para ser identificado en internet y lograr recibir
informacin externa enviada del dispositivo Raspberry.
Estudio sobre los diferentes lenguajes de programacin necesarios.
Manejo de comandos en la Shell del sistema operativo de la Raspberry.
Programacin de
cdigo fuente

Creacin del cdigo en Python para el control de los mdulos y el procesamiento de los
archivos en la Raspberry Pi.
Manejo y aplicacin del API de Google Maps para la incorporacin y modificacin, en
cdigo JavaScript, PHP y HTML.
Importacin de la informacin recibida con sentencias SQL, y programacin en HTML,
PHP y JavaScript para la publicacin de la informacin.
Adquisicin de los datos primordiales, como imgenes y coordenadas de
posicionamiento.

Validacin,
comparacin y
anlisis de los datos
transmitidos y
recibidos

Pruebas de captura de imgenes, con diferentes entornos y cambios de iluminacin, al


igual que el almacenamiento de manera local.
Validacin de la transmisin de los datos a travs de la red local y la red 3G,
diagnosticando tiempos, cantidad de datos, costos y perdidas de conectividad.
Revisin de la veracidad y concordancia de los datos transmitidos con los recibidos,
registrados en la base de datos y visualizacin en la pgina web por usuario registrado.
Tabla 1: Fases del proyecto

16

3. MODELO DE FACTIBILIDAD TECNOLGICA

Tabla 2: Comparacin entre plataformas electrnicas modernas compuestas.

17

Tabla 3: Comparacin entre lenguajes de programacin.

18

19

Tabla 4: Comparacin entre servidores de mapas.

Tabla 5: Comparacin entre los tiempos de respuesta de los mapas.

20

4. MARCO TERICO
4.1.

HTML (HyperText Markup Language)

Es el lenguaje que se emplea para el desarrollo de pginas de internet.


HTML es un lenguaje de marcado que nos permite indicar la estructura de nuestro documento
mediante etiquetas. Este lenguaje nos ofrece una gran adaptabilidad, una estructuracin lgica y es
fcil de interpretar tanto por humanos como por mquinas, ya que siguen un esquema de rbol
donde existe un elemento raz y donde el resto de etiquetas se insertan de manera lgica y
estructurada. Adems, se trata de un fichero de texto, y solo se necesita un editor como el bloc de
notas para generar un documento HTML.

4.1.1.

Estructura de cabecera

Informacin contextual de la pgina. Estos metadatos nos permiten indicar informacin que
puede no quedar clara en el contenido.

Referencia a otros ficheros. Todos aquellos recursos que necesite nuestra pgina deben estar
referenciados desde la cabecera. Por ejemplo, archivos de CSS y JavaScript, el icono de la
barra de direcciones, etc.

Scripts y estilos. Si estos no se definen en un fichero independiente, se incluyen en la seccin


de cabecera para que estn disponibles en todo el documento y no tener que repetirlos.

Por otro lado, en el cuerpo se encuentra todo el contenido de la pgina, desde el texto a las
imgenes, pasando por vdeos, enlaces, etc. Este contenido debe estar estructurado en diferentes
secciones y marcado correctamente. [2]

4.2.

PHP (Hypertext Preprocessor)

A diferencia de Java o JavaScript que se ejecutan en el navegador, PHP se ejecuta en el servidor, por
eso nos permite acceder a los recursos que tenga el servidor; ejemplo: una base de datos. El
programa PHP es ejecutado en el servidor y el resultado enviado al navegador. Al ser PHP un lenguaje

21

que se ejecuta en el servidor, no es necesario que su navegador lo soporte, es independiente del


navegador, sin embargo para que las pginas PHP funcionen, el servidor donde estn alojadas debe
soportar PHP. [3]

4.2.1.

Caractersticas PHP

Algunas de las caractersticas ms relevantes de PHP son:


1. Libertad de elegir el sistema operativo y el servidor web. Adems, se tiene la posibilidad de
utilizar programacin por procedimientos o programacin orientada a objetos (POO), o una
mezcla de ambas.
2. Una de las caractersticas ms potentes y destacables de PHP es su soporte para un amplio
abanico de bases de datos. Escribir una pgina web con acceso a una base de datos es simple
utilizando una de las extensiones especficas de bases de datos (ejemplo: MySQL) o utilizar
una capa de abstraccin como PDO, o conectarse a cualquier base de datos que admita el
estndar de Conexin Abierta a Bases de Datos por medio de la extensin ODBC.
3. PHP tambin cuenta con soporte para comunicarse con otros servicios usando protocolos
tales como LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (en Windows) y muchos otros.
Tambin se pueden crear sockets de red puros e interactuar usando cualquier otro protocolo.
[4]

4.3.

WAMP SERVER

Es un acrnimo para describir un sistema de infraestructura que usa las siguientes herramientas
(Windows-Apache-MySQL-PHP, Perl o Python), este entorno de desarrollo web permite tener un
servidor propio o host local (instalado en el equipo). Es usado (entre otros) por desarrolladores y/o
programadores para realizar prcticas de sus proyectos web antes de subirlos al servidor web en
internet. [5]
Caractersticas:

Manejo de Bases de datos con MySQL

Software para servidor web Apache

Software para poder programar script con PHP (generalmente).

Permite el manejo sencillo de Bases de Datos con PHPMyAdmin y SQLiteManager

Es gratuito.

22

Figura 3: Entorno de Administracin WampServer. [5]

4.4.

CSS

El concepto de hojas de estilo apareci por primera vez en 1996 cuando W3C public una
recomendacin nueva intitulada "Hojas de estilo en cascada" o CSS, su sigla en ingls.
El principio de las hojas de estilo, consiste en la utilizacin de un solo documento para almacenar las
caractersticas de presentacin de las pginas asociadas a grupos de elementos. Esto implica nombrar
un conjunto de definiciones y caractersticas de presentacin de las pginas, y activar esos nombres
para aplicarlos a una parte del texto. Por ejemplo, se pueden configurar los ttulos de una seccin
para que aparezcan en fuente Arial, en color verde y en cursiva.
Las hojas de estilo se desarrollaron para compensar los defectos de HTML con respecto a la
presentacin y al diseo de las pginas. HTML tiene varias etiquetas para modificar la presentacin y
definir los estilos del texto, pero cada elemento tiene su propio estilo, independientemente de los
elementos que lo rodean. Al utilizar hojas de estilo, cuando se necesite cambiar la apariencia de un
sitio que tiene cientos de pginas Web todo lo que hay que hacer es editar las definiciones de la hoja
de estilo en un solo lugar para cambiar la apariencia del sitio completo.
Se denominan "hojas de estilo en cascada" porque se pueden definir mltiples hojas y los estilos
pueden aplicarse a todas las pginas (con un sistema predefinido para resolver conflictos).
Las hojas de estilo pueden utilizarse para:

Lograr una apariencia uniforme de todo el sitio al activar una sola definicin de estilo en cada
pgina.

Cambiar un aspecto en todo el sitio Web con tan slo editar unas pocas lneas.

Hacer que los cdigos HTML sean ms fciles de leer ya que los estilos se definen por
separado.

Permitir que las pginas se carguen ms rpido ya que hay menos cantidad de HTML en cada
pgina.

Posicionar los elementos de la pgina de una manera ms uniforme. [6]

23

4.5.

JAVA SCRIPT

JavaScript es un sencillo lenguaje de programacin, que presenta una caracterstica especial: sus
programas, llamados comnmente scripts, se enlaza en las pginas HTML y se ejecutan en el
navegador (Mozilla Firefox, Microsoft Internet Explorer,...). Estos scripts normalmente consisten en
unas funciones que son llamadas desde el propio HTML cuando algn evento sucede. De ese modo,
podemos aadir efectos como que un botn cambie de forma al pasar el ratn por encima, o abrir
una ventana nueva al pulsar en un enlace. [7]

4.5.1.

API de Google Maps

Es slo HTML, CSS y JavaScript trabajando junto. Los mapas son solo imgenes que se cargan en el
fondo a travs de peticiones ejecutadas por la tecnologa de AJAX, y se insertan en un <div> en la
pgina HTML. Mientras navegas en el mapa, el API enva informacin acerca de las nuevas
coordenadas y los niveles de zoom del mapa a travs de AJAX y esto retorna las imgenes.
El API consiste de archivos JavaScript que contienen las clases, mtodos y propiedades que se usan
para el comportamiento de los mapas. La ltima versin del API es la 3.0.

Figura 4. Representacin de mapa en Google Maps. [8]

Las coordenadas estn expresadas usando nmeros decimales separados por coma. La latitud
siempre precede la longitud. La latitud es positiva si va despus del punto mostrado en el mapa y
negativo si va antes. La longitud es positiva si va arriba del punto y negativa si va debajo.
El cdigo a utilizar es el siguiente:
<script

src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>

Es importante que el cdigo mencionado anteriormente, se encuentre debajo del elemento


<script> que incluye el API, para que as se pueda cargar todas las clases, mtodos y propiedades a
usar. Las clases, mtodos y propiedades comienzan con google.maps. A eso se le conoce
como namespace. [8]

24

4.6.

SERVIDOR WEB

Los servidores web son los encargados de recibir las peticiones referidas a pginas o elementos de la
web a travs del protocolo http o https y de devolver el resultado de la peticin, que suele ser un
recurso alojado en el servidor. Normalmente es el navegador el que pide al servidor web el recurso
que desea el usuario, para finalmente recibir dicho recurso (si fue vlida la peticin) y traducirle si es
necesario a su forma legible por el usuario (es decir la traduccin de HTML la hace el navegador). [9]

4.7.

SERVIDOR FTP

Uno de los servicios ms antiguos de Internet, File Transfer Protocol permite mover uno o ms
archivos con seguridad entre distintos ordenadores proporcionando seguridad y organizacin de los
archivos as como control de la transferencia.
La seguridad se ha convertido en un tema candente. Durante aos, los servidores ftp comunicaban
con los clientes "en abierto," es decir, que la informacin de la conexin y de la contrasea era
vulnerable a la interceptacin. Ahora, los servidores ftp, tales como BulletProof FTP, SecureFTP,
SurgeFTP, TitanFTP, y WS_FTP, soportan SSL/TLS y utilizan el mismo tipo de cifrado presente en los
sitios web seguros. Con SSL/TLS, los servidores ftp pueden cifrar los comandos de control entre los
clientes del ftp y el servidor, as como los datos del archivo. Con la ayuda del PGP, como en WS_FTP
pro, los datos del archivo se aseguran todava ms con el cifrado pblico. [10]

4.8.

MD5 (Message-Digest Algorithm)

El algoritmo MD5 se utiliza como una funcin de codificacin o huella digital de un archivo. A menudo
empleado para codificar contraseas en bases de datos, el MD5 es igualmente capaz de generar una
huella de archivo para asegurar que no haya cambios en el mismo tras una transferencia, por
ejemplo. Un hash MD5 est compuesto por 32 caracteres hexadecimales. [11]

4.9.

BASES DE DATOS

Un sistema de bases de datos sirve para integrar los datos, organizar campos, registros y archivos. Lo
componen los siguientes elementos:

Hardware. Mquinas en las que se almacenan las bases de datos. Incorporan unidades de
almacenamiento masivo para este fin.

Software. Es el sistema gestor de bases de datos. El encargado de administrar las bases de


datos.

25

Datos. Incluyen los datos que se necesitan almacenar y los metadatos que son datos que
sirven para describir lo que se almacena en la base de datos.

Usuarios. Personas que manipulan los datos del sistema. Hay tres categoras:
Usuarios finales. Aquellos que utilizan datos de la base de datos para su trabajo cotidiano
que no tiene por qu tener que ver con la informtica. Normalmente no utilizan la base
de datos directamente, si no que utilizan aplicaciones creadas para ellos a fin de facilitar
la manipulacin de los datos. Estos usuarios slo acceden a ciertos datos.
Desarrolladores. Analistas y programadores encargados de generar aplicaciones para los
usuarios finales.
Administradores. Tambin llamados DBA (Data Base Administrator), se encargan de
gestionar las bases de datos. [12]

4.9.1.

Tipos de bases de datos

Las bases de datos se pueden clasificar de varias maneras, segn el contexto que se est manejando o
su utilidad.
Segn variabilidad de datos.

Bases de datos estticas

Estas son bases de datos de solo lectura, utilizadas primordialmente para almacenar datos histricos
que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a
travs del tiempo, realizar proyecciones y tomar decisiones.

Bases de datos dinmicas

Estas son bases de datos donde la informacin almacenada se modifica con el tiempo, permitiendo
operaciones como actualizacin, borrado y adicin de datos, adems de las operaciones
fundamentales de consulta.
De acuerdo a su modelo de administracin de datos:

Bases de datos Jerrquicas

En este modelo los datos se organizan en una forma similar a un rbol (visto al revs), en donde
un nodo padre de informacin puede tener varios hijos. El nodo que no tiene padres es llamado raz,
y a los nodos que no tienen hijos se los conoce como hojas. Son especialmente tiles en el caso de
aplicaciones que manejan un gran volumen de informacin y datos muy compartidos permitiendo
crear estructuras estables y de gran rendimiento.

Bases de datos de red

26

ste es un modelo ligeramente distinto del jerrquico; la diferencia fundamental es la modificacin


del concepto de nodo: se permite que un mismo nodo tenga varios padres (posibilidad no permitida
en el modelo jerrquico). Mejora la redundancia de datos sin embargo la administracin es ms
compleja y limita el uso del usuario final.

Bases de datos transaccionales

Son bases de datos cuyo nico fin es el envo y recepcin de datos a grandes velocidades, estas bases
son muy poco comunes y estn dirigidas por lo general al entorno de anlisis de calidad, datos de
produccin e industrial.

Bases de datos relacionales

ste es el modelo utilizado en la actualidad para modelar problemas reales y administrar datos
dinmicamente. En este modelo, el lugar y la forma en que se almacenen los datos no tienen
relevancia (a diferencia de otros modelos como el jerrquico y el de red). Esto tiene la considerable
ventaja de que es ms fcil de entender y de utilizar para un usuario espordico de la base de datos.
La informacin puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia
flexibilidad y poder para administrar la informacin.

Bases de datos multidimensionales

Son bases de datos ideadas para desarrollar aplicaciones muy concretas, los campos o atributos de
una tabla pueden ser de dos tipos, o bien representan dimensiones de la tabla, o bien representan
mtricas que se desean estudiar.

Bases de datos orientadas a objetos

Este modelo, bastante reciente, y propio de los modelos informticos enfocado a objetos, trata de
almacenar en la base de datos los objetos completos (estado y comportamiento). Paradigma,
herencia y polimorfismo son de los principales conceptos que incorpora el paradigma de objetos.

Bases de datos documentales

Permiten la indexacin a texto completo, y en lneas generales realizar bsquedas ms potentes.


Tesaurus es un sistema de ndices optimizado para este tipo de bases de datos.

Bases de datos deductivas

Es un sistema de base de datos pero con la diferencia de que permite hacer deducciones a travs de
inferencias. Se basa principalmente en reglas y hechos que son almacenados en la base de datos. Las
bases de datos deductivas son tambin llamadas bases de datos lgicas, a raz de que se basa en
lgica matemtica. [13]

27

4.9.2.

Sistema Gestor de Base de Datos

Un Sistema Gestor de Base de Datos (SGBD) es un sistema de software que permite la definicin
de bases de datos; as como la eleccin de las estructuras de datos necesarios para el
almacenamiento y bsqueda de los datos, ya sea de forma interactiva o a travs de un lenguaje de
programacin. Un SGBD relacional es un modelo de datos que facilita a los usuarios describir los
datos que sern almacenados en la base de datos junto con un grupo de operaciones para manejar
los datos.
Los SGBD relacionales son una herramienta efectiva que permite a varios usuarios acceder a los datos
al mismo tiempo. Brindan facilidades eficientes y un grupo de funciones con el objetivo de garantizar
la confidencialidad, la calidad, la seguridad y la integridad de los datos que contienen, as como un
acceso fcil y eficiente a los mismos. [14]
Algunos de los principales gestores de bases de datos son:

MySQL
Microsoft SQL Server
PostgreSQL
Oracle

Figura 5: Gestores de bases de datos. [14]

4.9.3.

MySQL

Es un sistema gestor de bases de datos relacionales rpido, slido y flexible. Es idneo para la
creacin de bases de datos con acceso desde pginas web dinmicas, as como para la creacin de
cualquier otra solucin que implique el almacenamiento de datos, posibilitando realizar mltiples y
rpidas consultas. Est desarrollado en C y C++, facilitando su integracin en otras aplicaciones
desarrolladas tambin en esos lenguajes.
Es un sistema cliente/servidor, por lo que permite trabajar como servidor multiusuario y de
subprocesamiento mltiple, o sea, cada vez que se crea una conexin con el servidor, el programa
servidor establece un proceso para manejar la solicitud del cliente, controlando as el acceso
simultneo de un gran nmero de usuarios a los datos y asegurando el acceso a usuarios autorizados
solamente. [15]

28

4.9.4.

Modelo de Entidad Relacin

El Modelo de Entidad Relacin es un modelo de datos basado en una percepcin del mundo real que
consiste en un conjunto de objetos bsicos llamados entidades y relaciones entre estos objetos,
implementndose en forma grfica a travs del Diagrama Entidad Relacin.
Hablamos de ejemplares cuando nos referimos a una clase de objetos con caractersticas similares
(ejemplares=registros). Se puede definir como Entidad a cualquier objeto, real o abstracto, que existe
en un contexto determinado o puede llegar a existir y del cual deseamos guardar informacin.
Los Atributos son caractersticas o propiedades asociadas a la entidad que toman valor en una
instancia particular. Ejemplo: nombre, cdula, telfono.
Clave primaria: Se denomina Clave principal o primaria al atributo o conjunto mnimo de atributos
(uno o ms campos) que permiten identificar en forma nica cada instancia de la entidad, es decir, a
cada registro de la tabla. Las claves principales se utilizan cuando se necesita hacer referencia a
registros especficos de una tabla desde otra tabla. En un principio se puede identificar ms de un
atributo que cumpla las condiciones para ser clave, los mismos se denominan Claves candidatas.

Tipos de relaciones

Clasificacin por cardinalidad:


Relacin Uno a Uno: Cuando un registro de una tabla slo puede estar relacionado con un
nico registro de la otra tabla y viceversa. En este caso la clave fornea se ubica en alguna de
las 2 tablas.
Relacin Uno a Muchos: Cuando un registro de una tabla (tabla secundaria) slo puede estar
relacionado con un nico registro de la otra tabla (tabla principal) y un registro de la tabla
principal puede tener ms de un registro relacionado en la tabla secundaria. En este caso la
clave fornea se ubica en la tabla secundaria.
Relacin Muchos a Muchos: Cuando un registro de una tabla puede estar relacionado con
ms de un registro de la otra tabla y viceversa. En este caso las dos tablas no pueden estar
relacionadas directamente, se tiene que aadir una tabla entre las dos (Tabla dbil o de
vinculacin) que incluya los pares de valores relacionados entre s.
Clasificacin por modalidad:
Dadas las tablas A y B, que se encuentran relacionadas: Si para todo registro de A debe existir siempre
al menos un registro de B asociado, se dice que la relacin en sentido A->B es Obligatoria. Si para
todo registro de A, pueden existir o no, uno o varios registros de B asociados, se dice que la relacin
en sentido A->B es optativa. La modalidad de las relaciones se debe analizar en ambos sentidos. [16]

29

4.10. GPS
Dado que el concepto principal de nuestro proyecto se basa en la tecnologa GPS, veremos a
continuacin algunos conceptos bsicos sobre el Sistema de Posicionamiento Global, GPS.

4.10.1.

Introduccin

El Global Positioning System (GPS) o Sistema de Posicionamiento Global originalmente


llamado NAVSTAR, es un Sistema Global de Navegacin por Satlite (GNSS) el cual permite
determinar en todo el mundo la posicin de una persona, un vehculo o una nave, con una desviacin
de cuatro metros. El sistema fue desarrollado e instalado, y actualmente es operado, por
el Departamento de Defensa de los Estados Unidos.

4.10.2.

Elementos que lo componen

Sistema de satlites: Formado por 21 unidades operativas y 3 de repuesto en rbita sobre la tierra a
20.200 km con trayectorias sincronizadas para cubrir toda la superficie del globo. Se abastecen
mediante paneles de energa solar.
Estaciones terrestres: Envan informacin de control a los satlites para controlar las rbitas y realizar
el mantenimiento de toda la constelacin.
Terminales receptores: Nos indica la posicin en la que estamos, conocidas tambin como Unidades
GPS, son las que podemos adquirir en las tiendas especializadas.

4.10.3.

Funcionamiento

El receptor GPS funciona midiendo su distancia de los satlites, y usa esa informacin para calcular su
posicin. Esta distancia se mide calculando el tiempo que la seal tarda en llegar al receptor.
Conocido ese tiempo y basndose en el hecho de que la seal viaja a la velocidad de la luz (salvo
algunas correcciones que se aplican), se puede calcular la distancia entre el receptor y el satlite.
Cada satlite indica que el receptor se encuentra en un punto en la superficie de la esfera con centro
en el propio satlite y de radio la distancia total hasta el receptor.
Obteniendo informacin de dos satlites se nos indica que el receptor se encuentra sobre la
circunferencia que resulta cuando se intersectan las dos esferas.
Si adquirimos la misma informacin de un tercer satlite notamos que la nueva esfera solo corta el
crculo anterior en dos puntos. Uno de ellos se puede descartar porque ofrece una posicin absurda.
De esta manera ya tendramos la posicin en 3-D. Sin embargo, dado que el reloj que incorporan los
receptores GPS no est sincronizado con los relojes atmicos de los satlites GPS, los dos puntos
determinados no son precisos.
30

Teniendo informacin de un cuarto satlite, eliminamos el inconveniente de la falta de sincronizacin


entre los relojes de los receptores GPS y los relojes de los satlites. Y es en este momento cuando el
receptor GPS puede determinar una posicin 3-D exacta (latitud, longitud y altitud). Al no estar
sincronizados los relojes entre el receptor y los satlites, la interseccin de las cuatro esferas con
centro en estos satlites es un pequeo volumen en vez de ser un punto. La correccin consiste en
ajustar la hora del receptor de tal forma que este volumen se transforme en un punto.

Figura 6: Clculo de la posicin usado tres satlites. [17]

4.10.4.

Fiabilidad de los datos

Debido al carcter militar del sistema GPS, el Departamento de Defensa de los Estados Unidos se
reserva la posibilidad de incluir un cierto grado de error aleatorio que puede variar de los 15 a los 100
metros.
Aunque actualmente no aplique tal error inducido, la precisin intrnseca del sistema GPS depende
del nmero de satlites visibles en un momento y posicin determinados. Sin aplicar ningn tipo de
correccin y con ocho satlites a la vista, la precisin es de 6 a 15 metros; pero puede obtenerse ms
precisin usando sistemas de correccin (Ej: DGPS).

4.10.5.

Fuentes de error

Retraso de la seal en la ionosfera y troposfera.


Seal multirruta, producida por el rebote de la seal en edificios y montaas cercanos.
Errores de orbitales, donde los datos de la rbita del satlite no son completamente precisos.
Nmero de satlites visibles.
Geometra de los satlites visibles.
Errores locales en el reloj del GPS.

31

4.10.6.

GPS diferencial

DGPS (Differential GPS) o GPS diferencial es un sistema que proporciona a los receptores de GPS
correcciones a los datos recibidos de los satlites GPS. Estas correcciones, una vez aplicadas,
proporcionan una mayor precisin en la posicin calculada.
El sistema de correcciones funciona de la siguiente manera:
Una estacin base en tierra, con coordenadas muy bien definidas, escucha los satlites GPS.
Calcula su posicin por los datos recibidos de los satlites.
Dado que su posicin est bien definida, calcula el error entre su posicin verdadera y la
calculada, estimando el error en cada satlite.
Se enva estas correcciones al receptor a travs de algn medio.
Existen varias formas de obtener las correcciones DGPS. Las ms usadas son:
Recibidas por radio a travs de algn canal preparado para ello, como el RDS en una emisora
de FM.
Descargadas de Internet con una conexin inalmbrica.
Proporcionadas por algn sistema de satlites diseado para tal efecto. En Estados Unidos
existe el WAAS, en Europa el EGNOS, en Japn el MSAS y en India el GAGAN, todos
compatibles entre s.
Para que las correcciones DGPS sean vlidas, el receptor tiene que estar relativamente cerca de
alguna estacin DGPS, generalmente, a menos de mil kilmetros.
La precisin lograda puede ser de unos dos metros en latitud y longitud, y unos tres metros en altitud.
[18]

4.10.7.

Coordenadas GPS

Las coordenadas geogrficas son un conjunto de lneas imaginarias que permiten ubicar con exactitud
un lugar en la superficie de la Tierra. Este conjunto de lneas corresponden a los meridianos y
paralelos.
Estas lneas o crculos son trazados por los cartgrafos sobre los mapas.
Cualquier punto de nuestro planeta puede ubicarse al conocerse el meridiano de longitud y el
paralelo de latitud. [19]

32

Figura 7. Divisin de la superficie terrestre en paralelos y meridianos. [20]

Latitud

La latitud de un punto es la medida del ngulo formado por el plano ecuatorial con la lnea que une a
ste punto al centro de la tierra.
Por regla general est comprendido entre -90 y 90 . Los valores negativos son para ubicaciones en
el hemisferio sur, y el valor de la latitud es de 0 en el ecuador.

Longitud

La longitud tiene el mismo principio, con la diferencia en que no existe una referencia natural como lo
es el ecuador para la latitud. La referencia para la longitud ha sido establecida arbitrariamente en el
Meridiano de Greenwich (que pasa a travs del Real Observatorio de Greenwich en las afueras de
Londres), y la longitud de un punto es la medida angular formada por el semiplano del eje de la tierra
que pasa por el meridiano de Greenwich, y el semiplano del eje de la tierra que pasa por el punto.
Como hay 180 meridianos en cada hemisferio, la mayor longitud que se puede medir en cada uno es
de 180, tanto en direccin este como en direccin oeste.

Un tercer componente

Los lectores meticulosos habrn notado que hace falta un tercer elemento para localizar un punto,
este es la altitud. En la mayora de los casos las coordenadas GPS son necesarias para ubicar lugares
en la superficie terrestre, lo que le resta importancia a dicho parmetro. Sin embargo, es igual de
necesario que la latitud y longitud para poder definir una ubicacin GPS de manera completa y
precisa.

4.10.8.

Mltiples sistemas de coordenadas para coordenadas geogrficas

Como hemos visto, las definiciones anteriores toman en cuenta varios parmetros que deben ser
establecidos o identificados para futuras referencias:

33

El plano ecuatorial y el modelo de la forma de la tierra elegida.


Un conjunto de puntos de referencia.
La posicin del centro de la tierra.
El eje de la tierra.
El meridiano de referencia.

Estos cinco criterios son las bases de los distintos sistemas de coordenadas usados a travs de la
historia.
Actualmente el sistema geodsico ms usado es el WGS 84 (usado mayormente para las coordenadas
GPS).

4.10.9.

Unidades de medida para las coordenadas GPS

Las dos principales unidades de medidas son las coordenadas decimales y sexagesimales.

Coordenadas decimales

La latitud y longitud son nmeros decimales con las siguientes caractersticas:


- Latitud entre 0 y 90 : Hemisferio Norte.
- Latitud entre 0 y -90: Hemisferio Sur.
- Longitud entre 0 y 180: Al este del meridiano de Greenwich.
- Longitud entre 0 y -180: Al oeste del meridiano de Greenwich.

Coordenadas sexagesimales

Las coordenadas sexagesimales tienen tres componentes: grados, minutos y segundos. Cada uno de
estos componentes suele ser un nmero entero, pero se puede usar un nmero decimal en los
segundos si se desea una mayor precisin.
Un grado tiene 60 minutos y un minuto consiste de 60 segundos de ngulo del arco.
A diferencia de las coordenadas decimales, las sexagesimales no pueden ser negativas. En dicho caso,
las letras E u O son aadidas a la longitud para especificar la posicin este-oeste desde el meridiano
de Greenwich, y a la latitud se le agregan las letras N o S para designar el hemisferio (Norte o Sur).
[21]
Coordenadas Decimales

Coordenadas Sexagesimales

Latitud

Longitud

Latitud

Longitud

0 a 90

0 a 180

0 a 90

0 a -180

0 a -90

0 a 180

0 a -90

0 a -180

Tabla 6: Correlacin entre coordenadas Decmales y Sexagesimales. [21]

34

4.11. TRANSMISIN DE DATOS EN LA RED CELULAR


Para reflejar la evolucin de las tecnologas utilizadas en la telefona mvil se utiliza el concepto de
generacin, de forma que cada generacin engloba un conjunto de estndares de transmisin de
datos (y de voz) que ofrecen unas determinadas prestaciones y calidad de servicio.
1G Fue la primera generacin de telefona mvil y utilizaba tecnologa analgica para la transmisin
de informacin. Se utiliz en los aos 80.
2G Es la segunda generacin de telefona mvil que utiliza fundamentalmente GSM (Global System
for Mobile Communications, sistema global para las comunicaciones mviles) como estndar de
transmisin de telefona digital. Permite la transmisin tanto de voz como de datos (por ejemplo,
mensajes cortos de texto o SMS). Utiliza varias bandas de frecuencia dependiendo de la regin o pas.

4.11.1.

Telefona Mvil 3G

El primer estndar 3G: EDGE

EDGE (Enhanced Data rates for GSM of Evolution o Tasas de Datos Mejoradas para la evolucin de
GSM) tambin conocida como EGPRS (Enhanced GPRS) es el siguiente estndar que aparece en la
telefona mvil para la transmisin de datos. Esta tecnologa funciona con redes GSM que tengan
implementado GPRS y las actualizaciones necesarias propias de EDGE, por lo que es relativamente
sencilla su implementacin por parte de los operadores.
Debido a su compatibilidad con GSM hay autores que la consideran una tecnologa puente entre 2G y
3G, es decir, 2.5G. Sin embargo, EDGE puede alcanzar una velocidad de transmisin terica de 384
Kbps, con lo cual cumple los requisitos de la ITU para una red 3G, tambin ha sido aceptado por la ITU
como parte de IMT-2000, de la familia de estndares 3G.
EDGE utiliza modulacin GMSK (Gaussian Minimum-Shift Keying) y modulacin 8-PSK (8 Phase Shift
Keying) para algunos de los esquemas de modulacin y codificacin de datos aumentando as su
eficacia.

Banda ancha en la telefona mvil: UMTS

UMTS (Universal Mobile Telecommunications System o Servicio Universal de Telecomunicaciones


Mviles) es el nombre con el que se engloban todas las tecnologas incluidas en 3G desligadas de las
redes GSM. Precisamente el hecho de que los operadores hayan necesitado una gran inversin para
implantar las redes UMTS ha ocasionado un gran retraso en su implementacin. Este retraso ha sido
cubierto en muchos casos con las tecnologas intermedias 2.5G. La tecnologa de transmisin utilizada
en UMTS es WCDMA.
WCDMA es una tecnologa mvil inalmbrica de tercera generacin que aumenta las tasas de
transmisin
de
datos
de
los
sistemas
GSM.
Utiliza
como
tcnica
de

35

multiplexacin CDMA (multiplexacin por divisin de cdigo). Soporta de manera satisfactoria una
tasa transferencia de datos que va de 144 hasta 512 Kbps para reas de cobertura amplias aunque en
el estndar se especifican velocidades de hasta 2 Mbps. El estndar de WCDMA fue desarrollado
como el proyecto de la sociedad 3GPP, que es el acrnimo de 3rd Generation Partnership Project.
Esta organizacin realiza la supervisin del proceso de elaboracin de estndares relacionados con
3G.
El despliegue de redes UMTS facilita la aparicin del servicio conocido como Internet mvil ya que las
velocidades que se pueden alcanzar con esta tecnologa permiten hacer uso de una gran parte de los
servicios ofrecidos en Internet, tpicamente la navegacin web. De esta forma aparecen en el
mercado tanto telfonos mviles que soportan la tecnologa 3G como mdems 3G utilizados para
proporcionar conectividad a ordenadores. Normalmente la conexin de estos dispositivos al
ordenador es mediante un puerto USB. [22]

4.11.2.

Comparacin de la velocidad de los estndares de la telefona mvil

Tabla con la comparacin de la velocidad de transmisin de subida y bajada, que permiten los
distintos estndares funcionando actualmente en la telefona celular.
Tecnologa

Velocidad promedio de bajada

Velocidad promedio de subida

GSM (2G)

1.8 kB/s

1.8 kB/s

GPRS (2.5G)

7.2 kB/s

3.6 kB/s

CDMA2000 1RTT

18 kB/s

18 kB/s

EDGE (2.75G)

29.6 kB/s

29.6 kB/s

UMTS 3G

48 kB/s

48 kB/s

EDGE (type 2 MS)

59.2 kB/s

59.2 kB/s

EDGE Evolution (type 1 MS)

148 kB/s

59 kB/s

EDGE Evolution (type 2 MS)

237 kB/s

118 kB/s

HSPA (3.5G)

1,706 kB/s

720 kB/s

HSPA+

5.25 MB/s

1.437 MB/s

LTE (22 MIMO)

21.625 MB/s

7.25 MB/s

LTE (44 MIMO)

40.750 MB/s

10.750 MB/s

Tabla 7: Comparacin de la velocidad de los estndares de la telefona mvil. [23]

36

4.12. RASPBERRY PI
Raspberry Pi es una placa computadora (SBC) de bajo costo desarrollada en Reino Unido por la
Fundacin Raspberry Pi. En realidad, se trata de una diminuta placa base de 85 x 54 milmetros (del
tamao aproximado de una tarjeta de crdito) en el que se aloja un chip Broadcom BCM2835 con
procesador ARM hasta a 1 GHz de velocidad (modo Turbo haciendo overclock), GPU VideoCore IV y
512 Mbytes de memoria RAM (Las primeras placas contaban con slo 256MB de RAM).

Figura 8: Placa Raspberry pi. [24]

4.12.1.

Hardware Raspberry Pi

Con unas dimensiones de placa de 8.5 por 5.3 cm, en su corazn tiene un chip integrado Broadcom
BCM2835, que contiene un procesador ARM11 con varias frecuencias de funcionamiento y la
posibilidad de subirla (haciendo overclocking) hasta 1 GHz sin perder la garanta, un procesador
grfico VideoCore IV, y 512MB de memoria RAM. La ltima Raspberry Pi 2 cuenta con 1GB de
memoria RAM. Todo ello equivale en la prctica a un ordenador con unas capacidades grficas
similares a la XBOX de Microsoft y con la posibilidad de reproducir vdeo en 1080p.
En la placa nos encontramos adems con una salida de vdeo y audio a travs de un conector HDMI,
con lo que conseguiremos conectar la tarjeta tanto a televisores como a monitores que cuenten con
dicha conexin. En cuanto a vdeo se refiere, tambin cuenta con una salida de vdeo compuesto y
una salida de audio a travs de un minijack. Posee una conexin Ethernet 10/100.
En su parte inferior cuenta con un lector de tarjetas SD (micro SD para los modelos A+, B+ y Pi 2), lo
que abarata enormemente su precio y da la posibilidad de instalar un sistema operativo en una
tarjeta de memoria de 4 GB o ms (clase 4 o clase 10). De esta forma tenemos tambin la posibilidad
de minimizar el espacio que necesitamos para tener todo un ordenador en un volumen mnimo. [24]

37

Figura 9: Raspberry pi Modelo B. [25]

Conexiones GPIO

Raspberry Pi A +, B + y 2 B incluyen 40 pines GPIO. Los modelos A y B tienen slo los primeros 26
pines.
GPIO #

Funcin

Pin #

Pin #

Funcin

GPIO #

N/A

+ 3V3

+ 5V

N/A

GPIO2

SDA1 (I2C)

+ 5V

N/A

GPIO3

SCL1 (I2C)

GND

N/A

GPIO4

GCLK

TXD0 (UART)

GPIO14

N/A

GND

10

RXD0 (UART)

GPIO15

GPIO17

Gen0

11

12

GEN1

GPIO18

GPIO27

GEN2

13

14

GND

N/A

GPIO22

GEN3

15

16

GEN4

GPIO23

N/A

+ 3V3

17

18

GEN5

GPIO24

GPIO10

MOSI (SPI)

19

20

GND

N/A

GPIO9

MISO (SPI)

21

22

GEN6

GPIO25

GPIO11

SCLK (SPI)

23

24

CE0_N (SPI)

GPIO8

N/A

GND

25

26

CE1_N (SPI)

GPIO7

(Modelos A y B paran aqu)


EEPROM

ID_SD

27

28

ID_SC

EEPROM

GPIO5

N/A

29

30

GND

N/A

GPIO6

N/A

31

32

GPIO12

GPIO13

N/A

33

34

GND

N/A

GPIO19

N/A

35

36

N/A

GPIO16

GPIO26

N/A

37

38

Digital IN

GPIO20

N/A

GND

39

40

OUT digital

GPIO21

Tabla 8: Conexiones GPIO. [26]

38

Modelo B revisin 2 tambin tiene un pad (llamado P5 en el tablero y P6 en los esquemas) de 8 pines
que ofrecen acceso a un adicional de 4 conexiones GPIO.
GPIO #

Funcin

Pin #

Pin #

Funcin

GPIO #

N/A

+ 5V

+ 3V3

N/A

GPIO28

GPIO_GEN7

GPIO_GEN8

GPIO29

GPIO30

GPIO_GEN9

GPIO_GEN10

GPIO31

N/A

GND

GND

N/A

Tabla 9: Extensin de conexiones GPIO para modelo B versin 2. [26]

Modelos A y B proporcionan acceso GPIO para el LED de estado ACT usando GPIO 16. Modelos A+ y
B+ proporcionan acceso GPIO para el LED de estado ACT usando GPIO 47, y el LED de estado de
alimentacin usando GPIO 35. [26]

4.12.2.

Accesorios para Raspberry Pi

Cuando adquirimos la Raspberry Pi recibimos exactamente eso, una placa sin ms. Para ponerla en
funcionamiento necesitamos de una serie de accesorios tales como una fuente de alimentacin de al
menos 1000mah, un cable HDMI, una tarjeta de memoria SD/microSD con el Sistema Operativo y un
adaptador WiFi o un cable RJ45 para poder conectarnos a internet. Adems por esttica o por
proteccin podemos adquirir una de las muchas cajas que existen a la venta. [24]
Otros perifricos y carcasas son comercializados por empresas ajenas a la fundacin. Por ejemplo
la Gertboard, que ha sido creada con propsito educativo, sirve para hacer uso del puerto GPIO y
poder interaccionar con LEDs, interruptores, seales analgicas, sensores, y otros dispositivos.
Tambin incluye un controlador opcional para Arduino para poder interaccionar con el Raspberry Pi.
[27]

Cmara

Es una cmara capaz de capturar vdeo con una resolucin de 1080p. La cmara cuenta con un sensor
Omnivisin de 5 megapxeles que adems de vdeo en alta definicin y a 30 fotogramas por segundo,
es capaz de hacer fotos con una resolucin de 2.592 X 1.944 pxeles.
La conexin de este pequeo mdulo se vende con el tradicional acabado de Raspberry Pi (o lo que
es lo mismo, sin ningn acabado, en un circuito puro y duro) como podemos observar en la imagen.

Figura 10: Modulo cmara para Raspberry pi. [28]

39

Carcasa

Otro de los accesorios imprescindible si se quiere resguardar la Raspberry Pi es la carcasa. Las hay de
todos los colores, formatos, materiales, diseos e incluso carcasas caseras fabricadas por los mismos
usuarios. [28]

Modulo GPS Ublox NEO 6M

El mdulo NEO 6M de la empresa suiza UBlox es una excelente alternativa de precisin y costo
beneficio. Es de un tamao reducido por lo que es fcilmente portable en tus proyectos. Se
comunica a travs de puerto serial UART. Esta presentacin viene en modo modular para que se
pueda usar en cualquier plataforma como Arduino, Raspberry Pi, pcDuino o con un Laptop. Mide
parmetros como latitud, longitud, velocidad, altitud.

Figura 11: Modulo GPS Ublox NEO 6M. [29]

Caractersticas:
- Ultra sensibilidad: -165dBm
- 22 tracking/66 acquisition-channel receiver
- Soporta estndares WAAS/EGNOS/MSAS/GAGAN
- Frecuencia de actualizacin 5Hz
- Velocidad de desplazamiento mxima: 500m/seg
- Protocolo NMEA (a 9600bps)
- 01 puerto serial
- Antena incorporada de 18.2 x 18.2 x 4.0 mm
- Rango de temperatura: -40 to 85 C
- Cumple estndar RoHS
- Tamao reducido, 30mm x 20mm x 11.4mm [30]
Especificaciones:
Tipo de receptor
Sensibilidad
Precisin
Tiempo de lectura

L1 frequency band, C/A code


22 Tracking / 66 Canales de lectura
Tracking
-165dBm
Acquisition
-148dBm
Posicin
3mts. 3D RMS sin SA
Velocidad
0.1m/s sin SA
Timing (PPS)
60ns RMS
Cold Start
36s

40

Warm Start
Hot Start
Re-Acquisition
Tracking
Acquisition
Sleep/Standby

Consumo de energa

Frecuencia de actualizacin de datos de


1Hz
navegacin
Altitude
Lmites de operacin
Velocity
Aceleracin
OutlineDimension
Center Frequency
Bandwidth
Antenna Specifications
Impedance
Axial Ratio
Polarization
Dimensiones
Dimensiones y peso
Peso
VCC
Fuente de poder
Corriente
Temperatura de operacin
Temperatura de
Entorno
almacenamiento
Humedad

33s
1s
<1s
<30mA @ 3V Vcc
40mA
TBD

Max 18,000m
Max 515m/s
Menor a 4g
18.2 x 18.2 x 4.0 mm
1575 3 MHz
10 MHz min
50
3 dB max
RHCP
30mm x20mm x 11.4mm
9g
5V 5%
55mA(typical)
40 ~ +85 (sin batera de
respaldo)
0 ~ +125

Tabla 10: Es pesificaciones tcnicas del mdulo GPS. [30]

4.12.3.

Software para Raspberry Pi

El Raspberry Pi usa mayoritariamente sistemas operativos basados en el ncleo Linux. Raspbian, una
distribucin derivada de Debian que est optimizada para el hardware de Raspberry Pi, se lanz
durante julio de 2012 y es la distribucin recomendada por la fundacin para iniciarse.
El chip ARM11 en el corazn del Pi (modelos de primera generacin) se basa en la versin 6 de
la ARM . Las versiones actuales de varias versiones populares de Linux, incluyendo Ubuntu , no se
ejecutarn en el ARM11. No es posible ejecutar Windows en el Raspberry Pi original, aunque en el
nuevo Raspberry Pi 2 es capaz de ejecutar Windows 10 . El Raspberry Pi 2 actualmente slo es
compatible con Ubuntu Snappy Core , Raspbian , OpenELEC y RISC OS. [27]

Software Incluido en Raspbian

La distribucin viene con algunas aplicaciones preinstaladas como los navegadores Midori, Dillo y
NetSurf. Adems contiene herramientas de desarrollo como IDLE para el lenguaje de programacin
Python o Scratch, y diferentes ejemplos de juegos usando los mdulos Pygame. Destaca tambin el
men raspi-config que permite configurar el sistema operativo sin tener que modificar archivos de
configuracin manualmente y el wifi-config, el cual permite configurar redes inalmbricas si usamos
un receptor WiFi USB. [31]

41

4.13. PYTHON Y RASPBERRY


La fundacin Raspberry Pi recomienda el uso de Python como lenguaje de programacin, sin
embargo, no limitan el uso de lenguaje C, C++, Java, Scratch y Ruby ya que vienen instalados por
defecto en Raspbian. Es posible utilizar cualquier software de programacin siempre y cuando pueda
ser ejecutado en un procesador ARMv6.
El entorno de desarrollo integrado (IDE) para programar en Python viene incluido en Raspbian, se
llama IDLE. [32]

4.13.1.

Python

Python es un lenguaje de programacin creado por Guido van Rossum a principios de los aos 90
cuyo nombre est inspirado en el grupo de cmicos ingleses Monty Python. Es un lenguaje similar a
Perl, pero con una sintaxis muy limpia y que favorece un cdigo legible.
Se trata de un lenguaje interpretado o de script, con tipado dinmico, fuertemente tipado,
multiplataforma y orientado a objetos.

Lenguaje interpretado o de script

Un lenguaje interpretado o de script es aquel que se ejecuta utilizando un programa intermedio


llamado intrprete, en lugar de compilar el cdigo a lenguaje mquina que pueda comprender y
ejecutar directamente una computadora (lenguajes compilados).
La ventaja de los lenguajes compilados es que su ejecucin es ms rpida. Sin embargo los lenguajes
interpretados son ms flexibles y ms portables.
Python tiene, no obstante, muchas de las caractersticas de los lenguajes compilados, por lo que se
podra decir que es semi interpretado. En Python, como en Java y muchos otros lenguajes, el cdigo
fuente se traduce a un pseudo cdigo mquina intermedio llamado bytecode la primera vez que se
ejecuta, generando archivos .pyc o .pyo (bytecode optimizado), que son los que se ejecutarn en
sucesivas ocasiones.

Tipado dinmico

La caracterstica de tipado dinmico se refiere a que no es necesario declarar el tipo de dato que va a
contener una determinada variable, sino que su tipo se determinar en tiempo de ejecucin segn el
tipo del valor al que se asigne, y el tipo de esta variable puede cambiar si se le asigna un valor de otro
tipo.

Fuertemente tipado

42

No se permite tratar a una variable como si fuera de un tipo distinto al que tiene, es necesario
convertir de forma explcita dicha variable al nuevo tipo previamente. Por ejemplo, si tenemos una
variable que contiene un texto (variable de tipo cadena o string) no podremos tratarla como un
nmero (sumar la cadena 9 y el nmero 8). En otros lenguajes el tipo de la variable cambiara para
adaptarse al comportamiento esperado, aunque esto es ms propenso a errores.

Multiplataforma

El intrprete de Python est disponible en multitud de plataformas (UNIX, Solaris, Linux, DOS,
Windows, OS/2, Mac OS, etc.) por lo que si no utilizamos libreras especficas de cada plataforma
nuestro programa podr correr en todos estos sistemas sin grandes cambios.

Orientado a objetos

La orientacin a objetos es un paradigma de programacin en el que los conceptos del mundo real
relevantes para nuestro problema se trasladan a clases y objetos en nuestro programa. La ejecucin
del programa consiste en una serie de interacciones entre los objetos.
Python tambin permite la programacin imperativa, programacin funcional y programacin
orientada a aspectos. [33]

43

5. DESARROLLO DEL PROYECTO


La idea de este proyecto es crear un localizador GPS porttil con Raspberry Pi que almacene en un
archivo local su posicin exacta cada cierto tiempo o evento especial, acoplar una cmara fotogrfica
para capturar imgenes en el mismo instante que la posicin. Inmediatamente almacenados estos
archivos, se transmitirn a un servidor remoto a travs de internet, haciendo uso de la red mvil 3G y
almacenando estos datos definitivos en el servidor de base de datos. Posteriormente se podr
visualizar la foto, accediendo de forma remota a una pgina web, al igual que la posicin, la cual
representaremos en un mapa interactivo de Google Maps aprovechando su API.
Al realizar el prototipo como objeto principal del proyecto, hubo varios factores decisivos, antes, al
inicio y en el proceso del desarrollo, los cuales se tuvieron en cuenta para lograr los mejores
resultados, sin afectar el presupuesto, el rendimiento y utilizando medios tecnolgicos
implementados en los sistemas modernos. Dando cumplimiento a lo anterior, se escogieron
componentes de hardware y software, con facilidad de adquisicin, verstil, compatibilidad para
acoplamiento y buenas fuentes de documentacin y de conocimiento.
El diseo del prototipo se distribuye en varias fases correlacionadas entre s. Iniciando con el diseo y
acople del dispositivo fsico y los mdulos necesarios con funciones especficas. Posteriormente, se
debe configurar y programar el dispositivo en su totalidad para controlar su funcionamiento, segn lo
requerido y con un rendimiento ptimo. Luego, se realiza el diseo de la base de datos y el montaje
del servidor, donde se alojar la base de datos y se almacenarn los datos finales. Finalmente, se crea
una plataforma web, la cual podr ser consultada por el usuario final, para realizar consulta de la base
de datos existente, con los archivos y datos correspondientes.

5.1.

DISEO DE HARDWARE

Como base del hardware, se utiliz la plataforma educativa Raspberry Pi 2 Modelo B, la cual
presenta varias ventajas relacionndolo con sus antecesores y con otros dispositivos de fines
similares. Al tratarse de un ordenador de placa reducida, podemos encontrar gran diversidad de
funcionalidades, sin que el dispositivo sufra saturacin o bajo rendimiento.
Entre otras, las principales ventajas que se puede encontrar son, el costo y facilidad de adquisicin,
compatibilidad con diferentes sistemas operativos, facilidad en la configuracin y programacin al

44

encontrar gran cantidad de documentos explicativos que tratan sobre el dispositivos y sus diferentes
mdulos, versatilidad para trabajar en diferentes mbitos y contextos.

5.1.1.

Inicio de Raspberry Pi
Materiales Necesarios

Como mnimo, para iniciar a funcionar el Raspberry Pi, se necesita:

Memoria micro SD de al menos 4 GB.


Adaptador micro SD a SD.
Computador con lector de tarjetas SD.
Adaptador de alimentacin micro USB.
Teclado.
Mouse.
Cable HDMI o bien adaptador activo de HDMI a VGA.
Televisor o monitor.

Software Necesario

Paso 1. Preparar la tarjeta SD para copiar el Sistema Operativo


En el siguiente link se puede descargar la aplicacin que permite formatear la tarjeta. El software se
llama SD Formatter, de los mismos creadores del estndar para almacenar informacin en las tarjetas
SD, por lo tanto es seguro de utilizar.

https://www.sdcard.org/downloads/formatter_4/SDFormatter4exe.zip
Una vez el archivo ha sido descargado, descomprimir el archivo y hacer clic en el archivo con el
nombre setup.exe. Este programa inicializar el proceso de instalacin, instalar con las opciones
predeterminas.

Figura 12: Interfaz del programa SD Formatter. [34]

45

Insertar la tarjeta SD en el lector del PC o porttil. Una vez ha sido reconocida por el sistema, ejecutar
el programa instalado. Utilizar las opciones predeterminadas, sin embargo, hay que fijarse bien en
utilizar la opcin QUICK FORMAT para que borre toda la informacin de la tarjeta en el menor
tiempo posible. A partir de este momento, toda la informacin contenida en la tarjeta ser borrada
permanentemente. Este proceso tomara unos minutos dependiendo de la capacidad de la tarjeta.
Con la tarjeta SD formateada, ahora es posible instalar el sistema operativo con NOOBS. Esto se hace
mediante una copia directa de los archivos en la tarjeta SD. Para hacer la copia se debe seguir los
siguientes pasos. [34]
Paso 2. Descarga de Noobs y copia en la tarjeta SD
Descargar el Sistema Operativo directamente del sitio oficial de Raspberry Pi
(http://www.raspberrypi.org/downloads), en este link se encuentra que hay diferentes versiones
disponibles. Lo recomendable es inicialmente utilizar NOOBS, el cual contiene las siguientes versiones
de sistemas operativos:

Archlinux
OpenELEC
Pidora
RISC OS
RaspBMC
Raspbian

Seleccionar el archivo con el nombre NOOBS. Despus de unos segundos el archivo empezar a
descargarse, esto tomar bastante tiempo ya que el archivo es de 737 MB.
Una vez el archivo ha descargado por completo, descomprimir el archivo en un lugar conocido. Al
final debera obtener una carpeta. Esta carpeta es la que contiene todo el sistema operativo. Luego
abrir la carpeta donde se descarg el sistema operativo y proceder a copiar o mover todo el
contenido.
Con estos pasos, el sistema operativo ha sido copiado en la tarjeta SD y ahora se puede proceder a
instalar el sistema operativo. [35]
Paso 3. Instalacin y configuracin inicial del Raspberry Pi (raspi-config)
Una vez la tarjeta ha sido preparada y NOOBS ha sido copiado, el sistema operativo se reinicia y el
primer programa que se ejecuta es Pi Recovery, este programa sirve para instalar la versin del
sistema operativo deseada.
En la pantalla inicial, seleccionar Raspbian para instalar el sistema operativo. Este proceso tomar
entre 15 a 20 minutos.

46

Figura 13: Pantalla inicial de Pi Recovery. [36]

Despus que Raspbian Wheezy ha sido instalado, hay que configurar el Sistema operativo
para que funcione en espaol. Los siguientes pasos muestran las diferentes opciones
disponibles.
Al reiniciar el dispositivo el primer programa que se ejecuta se llama raspi-config, este
programa solo se ejecuta en ingls. En caso de que ya haya instalado el sistema operativo y
se desee realizar alguna de estas modificaciones, se puede hacer ejecutando el siguiente
comando desde la terminal:
sudo raspi-config
El primer men que muestra contiene 9 diferentes opciones disponibles, a continuacin se
revisar cada una de las opciones disponibles:

Figura 14: Men principal de configuracin de Raspbian. [36]

1.
2.
3.
4.

Expandir el sistema de archivos (Expand Filesystem).


Cambiar la contrasea del usuario Pi (Change User Password).
Activar el escritorio al iniciar (Entable Boot to Desktop).
Opciones de internacionalizacin (Internationalisation Options).

47

Esta opcin permite modificar el lenguaje del sistema operativo, la zona horaria y la distribucin de su
teclado.

Figura 15: Men de opciones de internacionalizacin de Raspbian. [36]

La opcin I1 sirve para indicar donde se encuentra ubicado, esta opcin configura el lenguaje del
sistema operativo, los caracteres, la denominacin de la moneda, etc. Buscar y seleccionar el modo
de codificacin:
es_CO. UTF-8 UTF-8
Para confirmar oprimir espacio y luego enter.
La opcin I2, sirve para cambiar la zona horaria del sistema, la cual se ajusta de acuerdo a la ciudad
donde vive o la ms cercana. El sistema ha sido configurado como Colombia, Bogot.
La opcin I3, permitir cambiar la configuracin del teclado, si la marca y tipo del teclado no aparece,
seleccionar el predeterminado PC genrico 105 teclas (intl).
Luego seleccionar el idioma del teclado, si en la primera pantalla no aparece Espaol seleccionar otro.
En la siguiente ventana hay una lista de opciones, seleccionar Espaol o Espaol
(Latinoamericano).
Luego seleccionar la distribucin del teclado, se recomienda utilizar la primera opcin, solo Espaol
Latinoamericano.
5. Activar la cmara (Enable camera)
Esta opcin sirve para dar soporte a la cmara de Raspberry Pi, permite activar el puerto para que
haya comunicacin entre la CPU y el controlador de la cmara. Seleccionar la opcin Enable, ya que
posteriormente se har uso del mdulo de la cmara.
6. Adicionar a Rastrack (Add to Rastrack)
7. Overclockig
8. Opciones avanzadas (Advanced Options) [36]
Paso 4. Conexin del Raspberry Pi a Internet usando cable de red

48

Es recomendable que el Raspberry Pi tenga conexin disponible a Internet para poder actualizar
programas. Existen 3 diferentes mtodos para conectar la Raspberry Pi, entre ellos estn:

Conexin directa a travs del Router


Conexin con dongle WiFi
Conexin directa al PC
Para realizar la conexin con cable de red se necesitan los siguientes materiales.

Router con puerto RJ-45 disponible (Puede ser o no WiFi)


Conexin a internet
Cable RJ-45
La manera ms sencilla de conectar el Raspberry Pi a internet o a la red casera es a travs del puerto
RJ-45 del router inalmbrico. Para esto solamente hay que conectar el cable de red RJ-45
directamente desde el Raspberry Pi al router.
Para la mayora de los routers que se encuentran en nuestra casa, el Raspberry Pi debera conectarse
directamente sin ninguna otra conexin extra. En caso que no se pueda conectar, verifiicar que el
router est configurado para DHCP (Dynamic Host Configuration Protocol), el cual le asigna
aleatoriamente la direccin IP al dispositivo.

Para verificar si la conexin es exitosa, es necesario cerciorarse que el Router le ha asignado


una direccin IP al Raspberry Pi. Esto se puede hacer desde la lnea de comando utilizando el
siguiente comando:
ifconfig a
Si el Router asign una direccin IP al Raspberry Pi, ahora puede verificar si est conectado a
internet. [37]
Paso 5. Conexin remota al Raspberry Pi usando Xming
En el mundo Linux existen muy buenas alternativas para ejecutar escritorios remotos. Una opcin,
entre varias es XMING. Esta opcin permite ejecutar el escritorio remoto del Raspberry Pi usando el
sistema de gestin grfico llamado X11 o X Windows. Esta es una aplicacin tipo cliente-servidor,
donde se necesita instalar aplicaciones en ambos lados tanto en el servidor como en el cliente. Para
este caso el servidor es el Raspberry Pi y el cliente un PC con Windows. El Raspberry Pi usa X Windows
como el gestor de su ambiente grfico, por ende no se necesita instalar nada adicional. Sin embargo,
para el PC con Windows, es necesario instalar la aplicacin Xming para que pueda interpretar los
comandos recibidos por el Raspberry Pi en un ambiente grfico.
Hay que tener en cuenta que Xming transfiere la informacin grfica a travs de Putty, por lo tanto
este debe ser instalado con anterioridad, y los pasos a seguir.

49

El programa que se tiene que instalar en el PC se llama XMING, este se puede descargar directamente
de la pgina del desarrollador en el link http://sourceforge.net/projects/xming/. Descargar el
archivo y luego ejecutar el instalador con todos los parmetros que trae por defecto.
Una vez haya terminado la instalacin, ahora es necesario crear un archivo de configuracin para
conectarse al Raspberry Pi, para esto buscar la aplicacin Xlaunch en el escritorio o en la barra de
inicio, dependiendo de la versin de Windows que se tenga instalada.
Al ejecutar la aplicacin, la primera pantalla indica como desea que se ejecute el ambiente X
Windows. Para poder terminar la conexin, necesitar hacer click derecho sobre Xming en la barra de
tareas y luego cerrar.
En la siguiente opcin, seleccionar start a program. Esto indicar que tan pronto inicie Xming, esta
aplicacin se debe ejecutar desde el Raspberry Pi.
Como el inters es ejecutar el escritorio del Raspberry Pi llamado LXDE, se debe hacer el llamado de
esta aplicacin. Para esto en el campo start program ingresar startlxde. En el cuadro de la
configuracin, seleccionar Using PuTTY (plink.exe). En el campo connect to computer ingresar la
direccin IP de la Raspberry Pi. En el campo login user ingresar el nombre del usuario del Raspberry
Pi, en este caso es el comn Pi, siguiente a esto la contrasea que se haya asignado a este usuario,
el predeterminado es raspberry.

Figura 16: XMING con Raspberry Pi iniciar startlxde. [38]

Si se desea copiar texto entre el PC y el Raspberry Pi, dejar activada la casilla Clipboard. Esta funcin
es muy prctica cuando desean copiar textos entre los ambientes. Sin embargo, copiar imgenes o
archivos en general no es posible con este mtodo.
Una vez se haya terminado, volver a la venta anterior. Ahora solo es necesario hacer click en
finish y se ejecutar la conexin remota al Raspberry Pi. [38]

50

5.1.2.

Adaptacin de mdulos y Programacin de Raspberry Pi

A continuacin se har una descripcin de las conexiones de los mdulos requeridos con el propsito
ya sabido. As mismo, se incluir la configuracin y programacin indispensable para el satisfactorio
acople de todos y cada uno.
Para los scripts programados en la plataforma de la Raspberry, se us el lenguaje de programacin
Python, instalado de forma predeterminada con el sistema operativo Raspbian. A lo largo del captulo
se har mencin de varios scripts en Python y una descripcin de las funciones de cada uno y su
relacin entre s, los cuales son principal.py, pulsador.py, temporales.py, picam.py,
iniciogps.py, envioFTP.py, envioEmail.py y un script en PHP nombrado mapa.php. Todos estos
cdigos estn guardados en la ruta /home/pi de la Raspberry Pi y podrn ser observados con
detalle en los anexos.

Scripts iniciales

Habrn tres scripts que se ejecutarn automticamente al iniciar el arranque con el encendido de la
Raspberry Pi y controlan la ejecucin de los dems scripts.
A continuacin, se adiciona el cdigo del script principal.py, este es el primero en iniciar y estar en
ejecucin constantemente para realizar captura de datos de la cmara y el GPS automticamente
cada 10 minutos contados a partir de la ltima captura finalizada. Este script hace un llamado de la
funcin principal en el script picam.py y define el estado como Automtico, este mismo se
incluir en la publicacin final de la pgina web y se tendr en cuenta en los siguientes scripts.

Seguido a esto, se inicia el script pulsador.py, el cual tiene como funcin testear continuamente la
pulsacin del botn de pnico incorporado a los pines GPIO 03 (numeracin BCM) y Ground o pines
GPIO 05 y 09 (numeracin estndar). Se toma el pin GPIO 03, aprovechando su resistencia de pull-up
interna que viene activada por defecto, as no es necesario agregar resistencias externas.
Este script tambin est en continua ejecucin, esperando un voltaje bajo en el pin 03 configurado
como entrada. Al tener un estado bajo en el GPIO 03, inicialmente se modifica el estado a S.O.S. o
de emergencia. Seguidamente, se hace llamado a la funcin principal en picam.py. Este ltimo
proceso, permitir grabar un video de 10 segundos, configurables, ya que al tratarse de un estado de

51

emergencia, requerir de mayor precisin en los datos, por esto obtendremos mejor visualizacin de
la situacin con un video y no con una fotografa, como en el caso del estado Automtico.

Por ltimo, se inicia el script temporales.py. El propsito de este script es, intentar realizar una
conexin efectiva con el servidor para enviar los archivos que estn en la carpeta
/home/pi/TemporalEnvio, los cuales estn almacenados y que no lograron ser enviados al servidor
en el momento de obtenerlos, por alguna falla en la conexin. Este proceso se repite cada 5 minutos,
intentando realizar conexin con el servidor en cada momento.

Para iniciar los scripts al encender la Raspberry se utiliza la herramienta cron de los sistemas Unix,
cron es un administrador de procesos en segundo plano. Al agregar lneas de texto en el archivo
crontab se incluyen estos procesos al cron, dependiendo de su configuracin. En este caso se
agregan las siguientes lneas:

Conexin y configuracin de la Cmara


Antes de conectar la cmara, localizar la CSI y luego tirar de la pestaa suavemente hacia
arriba. Ahora empujar el cable plano del mdulo de la cmara en la ranura, con los contactos de plata
en el cable de espaldas al puerto Ethernet. Recordar que no se debe empujar el cable muy profundo.

52

Ahora mantenerlo en su lugar con una mano y empujar la lengeta CSI hacia abajo con la otra mano
para bloquear la cinta de la cmara.

Figura 17: Conexin de la cmara a la interfaz CSI de la Raspberry Pi. [39]

Con el hardware en su lugar, ahora es el momento de instalar el software. Antes de activar la cmara,
asegurar de que se est ejecutando la ltima versin del firmware Raspberry Pi con estos comandos:
sudo apt-get update
sudo apt-get upgrade
Dependiendo de qu tan antigua es la instalacin de Raspbian, y la velocidad de conexin a internet,
estos comandos pueden tomar ms de media hora para completar.
Una vez que se ha completado, iniciar el script "ROSSP-config", este ayuda a configurar la Pi:
sudo ROSSP-config
Desplazarse por la lista hasta el elemento que dice "Enable Camera" y pulsar la tecla enter. En la
siguiente pantalla, se pedir confirmar la eleccin seleccionando la opcin "Enable". A continuacin,
volver a la pantalla principal de la utilidad de configuracin. Ahora puede seleccionar la opcin
"Finish" y reiniciar el Raspberry Pi.
Una vez que se haya reiniciado el Raspberry Pi, ahora se puede usar las dos utilidades de lnea de
comandos, raspistill y raspivid para capturar imgenes fijas y vdeos respectivamente. [40]
Deteccin de movimiento
Para detectar el movimiento con la cmara se utiliza el script en Python escrito por miembros de la
comunidad de Raspberry Pi.
El script se basa en la biblioteca de imgenes de Python que es una biblioteca para el anlisis y la
manipulacin de las imgenes, as que hay que realizar la siguiente instalacin:
sudo apt-get install python-imagen-tk
Ahora, se debe guardar el script y hacerlo ejecutable:
53

wget c http://pastebin.com/?raw.php i = Yh77jhZ9W o picam.py


chmod +x picam.py
Despus que el script principal.py o pulsador.py hagan el llamado de la funcin principal.picam
(estado), empezar a ejecutarse el cdigo de picam.py, con el cual se busca detectar movimiento
antes de tomar una fotografa.
Tendremos que ajustar algunos aspectos de la secuencia de comandos para asegurar que funciona
para nuestras necesidades. Bsicamente, se realizaron modificaciones en el script en la parte de la
toma de la fotografa final y el almacenamiento de la misma.
El script est diseado para almacenar las imgenes en un directorio llamado "PICAM" bajo el
directorio personal, pero para nuestra conveniencia esta ruta se modific por
/home/pi/TemporalEnvio.
El script encender el LED de color rojo de la cmara y empezar a tomar imgenes de baja
resolucin. Luego va a compararlas y determinar si hay movimiento mediante la comparacin de los
pxeles de las imgenes. Si detecta cambios, el script capturar una imagen de mayor resolucin.
El script es muy eficiente y elimina automticamente las imgenes de baja resolucin que captura
para la comparacin y slo almacena las imgenes de alta resolucin que han capturado el
movimiento.
Al lograr detectar una variacin considerable en los pixeles de las imgenes de test, se modifica el
valor de la variable takePicture (takePicture = True), de esta manera la condicin y el cdigo mostrado
en la imagen se ejecutan.
A continuacin, se invoca la funcin interna saveImage (camerasettings, saveWidth, saveHeight,
saveQuality, diskSpaceToreserve). En estas lneas de cdigo es donde se obtiene la fotografa o video
definitivo con la configuracin, resolucin y calidad, predefinidos al inicio del script, para lograr una
estabilidad entre calidad de la imagen y el tamao de almacenamiento. El nombre del archivo de la
foto est definido como image + fecha + hora + .jpg, por ejemplo image20150715164615.jpg,
asegurando que ningn nombre de archivo se pueda repetir, evitando perdida de informacin. Y
anlogamente el nombre de archivo del video est definido de igual forma, nicamente cambiando la
palabra image por video y el formato por .mp4, por ejemplo video20150715164615.mp4. Estos
archivos se enviarn seguidamente al servidor FTP, en caso de no lograr enviarlo o de no poder
conectar con el servidor, sern almacenados en la carpeta /home/pi/TemporalEnvio, a la espera de
poder ser enviados.

54

La variable FTPnamePic hace referencia al nombre con el cual se guardar la imagen en el servidor
de archivos, lo cual es necesario especificar al realizar el envo de los archivos a travs del protocolo
FTP.
Despus de guardar la foto o video se ejecuta el script iniciogps.py con la ayuda de la funcin
os.system (), que permite escribir lneas de comando de la Shell del sistema. Con este script se
obtendrn datos como coordenadas GPS, direccin, fecha y hora de la adquisicin de los datos, todos
estos alojados en un archivo temporal en la ruta /home/pi/datos.txt. En este mismo archivo de
texto se adiciona la ruta de almacenamiento de la imagen en el servidor, el estado, anteriormente
mencionado y el identificador de dispositivo. Ms adelante, se har referencia a dicho archivo con
ms detalle.

Conexin y configuracin del mdulo GPS

El mdulo no tiene pines soldados donde conectar los cables, as que, o se sueldan los cables
directamente a la placa, o se adquiere una cabecera de pines y se sueldan.
Para comunicar el mdulo Ublox M6 con la Raspberry Pi se usar el puerto serie /dev/ttyAMA0.
Para ello se conecta el mdulo GPS a la Raspberry tal como indica el esquema, los cables TX y RX
deben estar cruzados, es decir, el pin TX de la Raspberry va conectado al pin RX del mdulo GPS y el

55

pin RX de la Raspberry va conectado al pin TX del mdulo GPS. Se alimenta el mdulo desde los pines
GPIO de 3.3V y GND de la Raspberry.

Figura 18: Esquema y conexin de mdulo Ublox M6 a Raspberry pi. [41]

El puerto serie dev/ttyAMA0, no est disponible por defecto y hay que desbloquearlo. Para ello se
abre el archivo /boot/cmdline.txt, desde la Raspberry y cambiar:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1


root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
por:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4
elevator=deadline rootwait
Seguidamente abrir el archivo /etc/inittab, y en la ltima lnea poner un #.
Modificara:

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100


Por:
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Para que estos cambios tengan efecto reiniciar la Raspberry Pi, una vez reiniciada ya se tiene el
puerto serie listo para usarlo. Ahora instalar algunas dependencias que harn falta para interpretar
los datos del mdulo GPS con este comando desde la terminal:

sudo apt-get install gpsd gpsd-clients python-gps


GPSD es una aplicacin que corre en segundo plano y que recoge los datos GPS del mdulo y los
enva a travs de un socket que necesita ser activado cada vez que inicia la Raspberry, por eso
introducir en la terminal:

56

sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock


Para que el socket se inicie automticamente al arrancar la Raspberry, se abre el archivo
etc/rc.local y se pone justo antes de exit 0, la lnea anterior.
Si se ha hecho todo bien al introducir el comando cgps -s, debera mostrar algo como esto:

Figura 19: Pantalla de terminal con datos del GPS. [41]

Ahora que las pruebas de conexin del GPS con la Raspberry Pi estn finalizadas y satisfactorias se
puede implementar un script para su accionar. [41]
Al tener iniciado el socket GPSD y ya teniendo el receptor GPS activado y conectado con los satlites,
solo basta obtener las coordenadas de posicin. En el script, constantemente est obteniendo los
datos latitud y longitud, en busca de valores efectivos, por esto se realiza una condicin para que al
obtener datos diferentes a 0 (cero), guarde las coordenadas en variables locales y al igual la direccin
de esa ubicacin.
El script iniciogps.py importa, entre otras, principalmente las libreras gps y pygeocoder,
libreras exclusivas para el uso con un receptor GPS. La primera, se encarga de crear un streaming de
datos GPS y constantemente est obteniendo datos de posicin, y la segunda tiene como nico
propsito traducir las coordenadas geogrficas obtenidas, en una direccin legible, conocido como
geo codificacin inversa.

57

Al obtener las coordenadas y la direccin, se realiza validacin si el estado actual es S.O.S. para
hacer un envo inmediato de un correo electrnico con los datos bsicos de ubicacin, haciendo un
llamado a la funcin enviar en el script envioEmail.py. Esto, con el propsito de poder tener una
reaccin oportuna a la emergencia. Se podr ver en detalle el cdigo del script envioEmail.py en los
anexos.

Figura 20: Correo electrnico recibido de emergencia.

Posteriormente, se realiza lectura del archivo mapa.php guardado con anterioridad en la ruta
/home/pi/mapa.php, se busca la palabra clave coordenadas dentro de todo el texto en el archivo
y se modifica por latitud, longitud, siendo latitud y longitud las coordenadas obtenidas por el GPS.
Se guarda el archivo modificado en la ruta /home/pi/TemporalEnvio con un nombre diferente de la
misma forma en que se nombr la imagen, quedando como map + fecha + hora + .html.
Adicionalmente, se crea un archivo temporal datos.txt para agregar los datos obtenidos (latitud,
longitud, direccin, fecha, hora, URL del mapa, ). Al finalizar el script de iniciogps.py y retomar el
final del script picam.py se adicionan ms datos al archivo datos.txt (, URL de la imagen, estado,
idUser). Al completar la escritura de este archivo se guarda en la ruta /home/pi/TemporalEnvio con
el mismo formato para el nombre utilizado para la imagen y el mapa, quedando como date + fecha +
hora + .txt. En la siguiente imagen se observa la forma en que se guarda el texto.

Figura 21: Datos almacenados para la importacin en la base de datos.

Obsrvese que cada dato est encerrado entre los caracteres |. La finalidad de este carcter
especial est en la importacin de estos datos a la base de datos, previo envo del archivo al servidor,
y ya encontrndose guardado en una carpeta exclusiva dentro del servidor.
58

Los archivos definitivos se almacenan en conjunto en la ruta /home/pi/TemporalEnvio, como ya se


ha mencionado. Al final de los scripts iniciogps.py y picam.py se intenta realizar el envo
inmediato de los archivos respectivos al servidor a travs del protocolo FTP. Es en este momento,
cuando se realiza el llamado de la funcin enviar dentro del script envioFTP.py

Transmisin de archivos al servidor remoto

Como ya se ha venido mencionando, el envo de los archivos se hace a un servidor de archivos a


travs del protocolo FTP, mientras se tenga una conexin estable a internet. La librera ftplib
importada en el script envioFTP.py permite de forma sencilla realizar el envo de los archivos. Para
concretar la transaccin, inicialmente se debe establecer una conexin con el servidor, por esto se
debe indicar el nombre del servidor o su IP publica, usuario, clave y carpeta donde se guardar el
archivo. Si la conexin es satisfactoria, se realiza el envo indicando la ruta de archivo origen y ruta de
archivo destino. Finalizada la transaccin el archivo enviado se elimina del almacenamiento local.
Si por cualquier motivo no se logra concretar la conexin con el servidor y/o no se puede enviar el
archivo, el script envioFTP.py finalizar su ejecucin sin insistir en la conexin y el archivo seguir
guardado temporalmente en el dispositivo local, hasta que se ejecute el script temporales.py y
seguida la funcin listaArchivos del script envioFTP.py y se realice nuevamente un intento
satisfactorio de conexin con el servidor, enviando efectivamente los archivos pendientes.
La intencin de la funcin listaArchivos es realizar un listado de todos los archivos guardados en la
carpeta /home/pi/TemporalEnvio, los cuales se encuentran en espera de envo al servidor. Este
programa es ejecutado por el script temporales.py y se ejecuta automticamente desde el arranque
de la Raspberry Pi, realizando el mismo proceso cada 5 minutos. Para dar cumplimiento, se agrega
una lnea de cdigo en el crontab, ya mostrado anteriormente.

5.1.3.

Internet mvil con el modem 3G USB Huawei E173 en la Raspberry

La instalacin de un modem 3G / 4G USB en un Raspberry Pi no es una tarea sencilla. El principal


problema es que la mayora de los mdems USB actan como dos dispositivos, un dispositivo de
almacenamiento USB y un mdem USB. Cuando se conecta a la Raspberry PI el dispositivo es por lo
general iniciado en modo de almacenamiento USB. Hay un programa llamado usb_modeswitch que
podemos utilizar para hacer la conmutacin.

Inicialmente, se debe instalar el programa con el siguiente comando.


sudo apt-get install usb-modeswitch

Se tiene que conseguir los cdigos del dispositivo USB en el modo de almacenamiento USB y
el modo de mdem USB.

Conectar el mdem USB y reiniciar el Raspberry PI sin LAN o conexin WiFi.


sudo reboot

59

Una vez reiniciado, abrir una ventana de terminal y escribir lsusb.

La salida ser similar a la siguiente imagen. El mdem debe ser catalogado como uno de los
dispositivos USB. Hay que tener en cuenta los nmeros subrayados, estos son los cdigos de
proveedores de productos y dispositivos.

En este caso aparece 12d1: 1c24. Este cdigo hace referencia a la conexin en modo de
almacenamiento. Se puede comprobar escribiendo tail f /var/log/messages, y se observa
que el modem se inici como cdrom.

Si ahora se desconecta el modem y se vuelve a conectar, se ver modificacin en el modo de


conexin del modem, ya es reconocido en modo modem USB.

60

Es decir, se ha cambiado correctamente. Aparece en ttyUSB0, ttyUSB1, ttyUSB2 y ttyUSB3 conexiones


de modem GSM, y luego la tarjeta SD. Y podemos ver la actuacin de usb_modeswitch, cambiando el
cdigo a 12d1:1c23. Escribir lsusb para corroborar:

Ahora lo que se debe lograr es que este cambio se realice siempre, desde el inicio de la Raspberry o
en cualquier momento que se conecte el modem. Para lograrlo, hay que aadir lo siguiente en el
archivo /etc/rc.local, antes de la lnea exit 0:

sudo service udev stop


sleep 2
sudo service udev start
El /etc/rc.local se ejecuta en cada arranque, y al aadir esas lneas se est diciendo que pare el
servicio udev, espere 2 segundos y lo vuelva a arrancar.

Instalando pppd, UMTSKeeper y Sakis3G

El programa ms utilizado para realizar la conexin 3G es Sakis3g. Sin embargo, antes de instalarlo, se
tiene que saber que es muy frecuente perder la conexin 3G cada cierto tiempo, por lo que se suele
recurrir a otro programa, UMTSKeeper, que est constantemente comprobando la conexin y
recuperndola cuando se cae. Este ltimo programa tambin realiza la instalacin de Sakis3G.
Lo primero es instalar el servicio pppd:
sudo apt-get install ppp
A continuacin, instalar UMTSKeeper:
cd ~
mkdir umtskeeper
cd umtskeeper
wget http://mintakaconciencia.net/squares/umtskeeper/src/umtskeeper.tar.gz
tar -xzvf umtskeeper.tar.gz
chmod +x sakis3g umtskeeper
Ahora, configurar sakis:
sudo ./sakis3g --interactive

61

Figura 22: Pantalla inicial de Sakis 3G interactivo.

Seleccionar los siguientes tems, en orden de aparicin, dando enter sobre la opcin:

Connect with 3G.


USB device.
Huawei mobile.
Interface #2.
Reported by your modem (internet.comcel.com.co).
Usuario de APN: comcel.
Clave de APN: comcel.

Al finalizar estos pasos satisfactoriamente, ya est conectado a la red mvil 3G a travs de Claro
utilizando el protocolo ppp0.

Y por ltimo, configurar UMTSKeeper, segn los parmetros que se escogieron anteriormente al
ejecutar Sakis3G. Ejecutar el siguiente comando (una sola lnea), que luego se aadir
a crontab para que se ejecute siempre que se arranque la Raspberry Pi:
sudo /home/pi/UMTSkeeper/umtskeeper --sakisoperators "OTHER='USBMODEM'
USBMODEM='12d1:1c23' USBINTERFACE='2' APN='internet.comcel.com.co' APN_USER='comcel'
APN_PASS='comcel'"
Consultar el fichero /var/log/umtskeeper.log y ver que est todo en orden. Probar a desconectar y
reconectar el modem, y que tras medio minuto vuelve a conectarse automticamente.

62

5.2.
5.2.1.

DISEO DE APLICATIVO
Instalacin WAMP Server:

El entorno de desarrollo escogido para el almacenamiento, captura y procesamiento de la


informacin fue WAMP server v2.2, Apache v2.2.22, MySQL v5.2.24 y PHP v5.4.3 este entorno fue
instalado en un equipo con Sistema Operativo Windows 7.

Configuraciones iniciales para el funcionamiento del servidor

1. Se cambi el puerto de escucha por defecto 80 por el puerto 81, realizando modificacin
httpd.conf en sus lneas 46 y 171.

Tambin se modifica el archivo wampmanager.tpl, en las lneas 121 y 122 de esta versin. Al
realizar estas modificaciones siempre se realiza reinicio de los servicios para que los cambios
tomen efecto.

2. En el archivo Host del equipo se asigna la IP pblica como localhost, de este modo y
solicitando la apertura del puerto 81, ser posible visualizar el contenido de la informacin va
web a travs del enlace: http://miippublica:81/, internamente http://localhost:81 o
http://miipprivada:81.

Configuraciones bsicas de seguridad del servidor

1. Realizar los cambios respectivos de permisos de tal manera que el acceso al phpmyadmin, se
pueda realizar nicamente de manera local:
<Directory "c:/wamp/apps/phpmyadmin3.5.1/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order Deny,Allow
Deny from all
Allow from 192.168.0.100
</Directory>
2. Establecer una contrasea a la consola MySQL con el comando SET PASSWORD
FOR root@localhost=PASSWORD('Su_Clave_Aqui');

63

3. Modificar el archivo config.inc.php, para que se solicite el usuario y contrasea para acceder
al phpmyadmin: se configura el usuario y contrasea y se modifica para que en el acceso pida
la contrasea:

Figura 23: Interfaz de logeo de phpMyAdmin

5.2.2.

Transferencia de informacin

Para el transporte de la informacin, se utilizar el protocolo FTP, haciendo uso de la librera ftplib
en la Raspberry PI, para el envo de archivos hacia el Servidor FTP. En el caso del almacenamiento de
la informacin en el servidor, se utiliz el servidor FTP TYPSoft. En este servidor se configuran los
diferentes usuarios FTP para diferentes dispositivos y se asignan los respectivos permisos a las
carpetas a las que tendrn acceso.

64

Figura 24: Interfaz TYPSoft FTP Server

5.2.3.

Creacin de base de datos, tabla y conexin de MySQL con PHP

Para la creacin y modificacin de las base de datos y tablas, se manejaron de 2 maneras: Usando la
consola MySQL o a travs de phpmyadmin:
Diseo y creacin de base de datos: Para el diseo y creacin de la base de datos, era necesario
pensar desde la perspectiva del usuario final. Los datos relevantes que requiere un usuario es
acceder, consultar y visualizar la informacin del dispositivo que monitorea su vehculo, que sea muy
intuitiva y entendible.
Por tal motivo, en el desarrollo se realiz la creacin de 2 tablas en la base de datos para la
importacin y procesamiento de la informacin:

Tabla monitoreo

En esta tabla se importar la informacin almacenada en el servidor FTP de manera automtica


gracias al servicio de Windows instalado.
La tabla est compuesta por los siguientes campos:
CREATE TABLE IF NOT EXISTS `monitoreo` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`latitud` varchar(100) DEFAULT NULL,
`longitud` varchar(100) DEFAULT NULL,
`direccion` varchar(100) DEFAULT NULL,
`fecha` varchar(100) DEFAULT NULL,
`hora` varchar(100) DEFAULT NULL,
`mapa` varchar(100) DEFAULT NULL,

65

`foto` varchar(100) DEFAULT NULL,


`estado` varchar(100) DEFAULT NULL,
`id_user` text DEFAULT Ninguna,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=41 ;

Tabla 11: Tabla de Monitoreo en MySQL

Campo id: Este campo es tipo entero e incremental, de esta manera permitir tener un
conteo global de todos los registros importados para el administrador de la base.
Tambin juega un rol importante en la publicacin de los registros va web de manera
ordenada y descendente, lo que permite visualizar del ltimo registro importado al
primero.
Campo latitud: Almacena la informacin de la latitud del registro importado.
Campo longitud: Almacena la informacin de la longitud del registro importado.
Campo direccin: Almacena la informacin de la direccin del registro importado,
generada por la funcin codificada de georreferenciacin inversa.
Campo fecha: Almacena la informacin de la fecha del registro importado.
Campo hora: Almacena la informacin de la hora del registro importado.
Campo mapa: Almacena la informacin del link de acceso al mapa del registro
importado. En la visualizacin web por medio de un icono redirecciona por hipervnculo
a una nueva pestaa al archivo *.html almacenado en el servidor que contiene el mapa
con su respectivo marcador.
Campo foto: Almacena la informacin del link de acceso a la foto del registro importado.
En la visualizacin web por medio de un icono redirecciona por hipervnculo a una nueva
pestaa al archivo de la foto o el almacenamiento del video, esto depende del estado
reportado en el campo estado.

66

Campo estado: Este campo almacena el estado automtico o S.O.S, dependiendo del
estado reportado, el campo foto puede tener un link que direccione a una foto o video.
Campo id_user: Este campo almacena el ID del dispositivo de cada reporte, es de vital
importancia para el acceso del usuario registrado y para el filtrado de la informacin.

Tabla registro

En esta tabla se almacenar la informacin correspondiente a los usuarios registrados, la contrasea


es codificada con MD5 para brindar una mayor seguridad de la informacin.
CREATE TABLE IF NOT EXISTS `registro` (
`id_user` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`nickname` varchar(100) NOT NULL,
`pass` varchar(32) NOT NULL,
PRIMARY KEY (`id_user`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=43 ;

Tabla 12: Tabla de registro

Campo id_user: Este campo es tipo entero e incremental, de esta manera permitir tener
un conteo global de todos los usuarios registrados, para el administrador de la base. La
importancia de este campo, radica en que ser el ID de usuario otorgado para que la
persona pueda ingresar a la plataforma una vez realizado el proceso de registro.
Campo name: En este campo se almacena el nombre de la persona que se registra. Es un
campo obligatorio para realizar el registro de manera satisfactoria.
Campo nickname: Este campo no solo es obligatorio para realizar el registro de manera
satisfactoria, sino tambin para acceder a los registros en la plataforma web mediante
autenticacin de usuario.
Campo pass: Campo obligatorio que almacena la contrasea en codificacin MD5, por
seguridad este campo es necesario para la autenticacin del usuario registrado.

Diagrama Entidad- Relacin

En el diagrama se encuentran las tablas monitoreo y registro creadas en la base de datos php,
estas contienen informacin de los usuarios registrados y de los reportes generados para cada uno de
los dispositivos.

67

Figura 25: Esquema entidad relacin

Conexin MySQL con PHP

Para establecer la conexin es necesario configurar los campos de:


IP del servidor.
Nombre de usuario.
Contrasea.
Base de datos.

Formulario de registro

Para el formulario de registro, sern requeridos 4 campos a ingresar en la pgina registro.html:


Nombres y Apellidos.
Nick Usuario.
Contrasea.
Repetir contrasea.
Cuando el usuario llena los campos y procede a finalizar el registro, en la pgina registro.php se valida
que los campos de contrasea y repetir contrasea sean iguales para hacer efectivo el registro. Si el
registro se realiza de manera satisfactoria se almacenarn los datos en la tabla registro, y al usuario
le indicar por medio de un aviso registrado correctamente con su respectivo ID de dispositivo, de
lo contrario indicar si las contraseas no coinciden o si no ha llenado alguno de los campos
requeridos.

Importacin de datos

La importacin de datos es posible realizarla, gracias a un servicio Windows que siempre est activo.
Este servicio realiza la tarea de importacin automtica cada 15 segundos, sobre los archivos de datos
*.txt enviados desde la Raspberry a la carpeta /captura/CapturaArchivos.
68

Para que el servicio funcione es necesario establecer la conexin a la base de datos y colocar la URL
de la carpeta donde se almacenarn los archivos a importar.

Tambin se configura en una variable las lneas para la importacin de los archivos.

El complemento adicional de este servicio es que cada vez que importa un archivo lo elimina de la
carpeta dejando limpio el almacenamiento y a la espera de un nuevo archivo a importar.

69

Figura 26: Diagrama de bloques del registro de usuario

Inicio de Sesin

Para el inicio de sesin del usuario registrado, se cre la pgina principal index.html, donde se
solicita ingresar el nombre de usuario y contrasea. En el caso de la contrasea la entrada se coloca
de tipo password, de esa manera la contrasea estar oculta a la vista del usuario. Cuando se
ingresan los datos, son validados en la pgina login.php, si son incorrectos saldr un mensaje
advirtiendo que el usuario y/o contrasea no son vlidos, de lo contrario establece una sesin y
guarda los datos.

Despus de validar, el usuario es direccionado a la pgina principal index.php. En esta pgina se


asociar el nmero de ID asociado, que posteriormente ser utilizado para el filtrado de contenido y

70

que nicamente pueda visualizar la informacin que le corresponde al ID del dispositivo. Ejemplo:

http://miippublica:81/index.php?userid=$userid.
En el siguiente cdigo se podr observar que se almacena como variable global la informacin del
userid, obtenida de la direccin URL. Esto con el objetivo de identificar el ID del dispositivo
autenticado y proceder a comparar con el ID de dispositivo de la tabla, de esa manera garantizar que
nicamente publique la informacin cuando el userid obtenido de la direccin del link sea igual al
ID de dispositivo de la tabla.

Figura 27: Diagrama de bloques inicio sesin

Por otra parte, se ingresa una variable como bandera para identificar cuando el usuario registrado
tiene datos almacenados y cuando no los tiene. Cuando el estado de la bandera est en 1, significa
que ya se ha cargado informacin procedente de la Raspberry, el estado de la bandera en 0,
significa que para el usuario autenticado no se ha enviado informacin o no se ha configurado el
dispositivo para el envo, por tanto se publicar informacin sobre los campos no data load.

71

Figura 28: Entorno Web, consulta sin datos de tabla monitoreo

El campo estado puede ser Automtico o S.O.S.. En el primer caso, la Raspberry inicia en estado
Automtico, enviando un reporte cada 10 minutos, con una fotografa adjunta. El estado S.O.S se
activa cuando se pulsa el botn de emergencia, enva un reporte con un video adjunto.
Posteriormente, contina en estado Automtico.

5.2.4.

Visualizacin
Visualizacin pgina web

Los datos que el usuario podr visualizar, sern los enviados desde la Raspberry e importados en la
tabla monitoreo en un entorno ms amigable como se observa en la siguiente figura.

Figura 29: Entorno Web consulta datos tabla monitoreo

En la parte izquierda aparece filtrado por el ID del dispositivo, en los dems campos de la tabla
aparecer la informacin relevante como Latitud, Longitud, Direccin, Fecha, Hora, Mapa, Foto y
Estado.

Visualizacin mapa en Google Maps

Para el campo Mapa, est relacionado un icono que funciona como hipervnculo hacia la URL donde
se almacen el archivo en el servidor y cuyo nombre de archivo contiene fecha y hora de captura. Por
ejemplo, http://miippublica:81/captura/mapa+fecha+hora.html.

72

El archivo *.html del mapa se enva ya creado desde la Raspberry. Este archivo contiene las
coordenadas obtenidas por el dispositivo GPS y por medio de un script, se invoca la API de Google
Maps, que est abierta a los desarrolladores y al pblico en comn, y por medio de parmetros en
una funcin, se definen las caractersticas de la publicacin y la inclusin de las coordenadas para la
ubicacin en el mapa.

Georreferenciacin Inversa: Como se explica en el marco terico, la georreferenciacin inversa hace


posible que a partir de las coordenadas obtenidas, se pueda traducir a una direccin legible e
interpretable por el usuario comn por medio de un marcador como se observa en la siguiente figura.

Figura 30: Captura de coordenadas en Google Maps

73

Visualizacin Foto

La visualizacin de la foto, es un icono referenciado a un hipervnculo que apunta a la URL donde se


encuentra
almacenado
el
archivo
*.JPG.
Por
ejemplo,
https://miipublica:81/captura/imagen+fecha+hora.jpg.

74

6. Pruebas tcnicas
Se
realiza
una
ltima
prueba
en
una
pgina
de
Google
llamada
https://developers.google.com/speed/pagespeed/insights/, en esta se permite analizar la experiencia
de usuario navegando en la pgina desde un ordenador de escritorio as como de un dispositivo
mvil.
A continuacin se observa que la calificacin para la navegacin desde un equipo de escritorio es de
95/100, donde las recomendaciones es hacer cambios en la ejecucin de JavaScript y CCS.

Figura 31: Google Developers equipo escritorio.

En cuanto a la experiencia en mviles hacen observaciones respecto a incorporar y adecuar el tamao


de los botones para facilitar el manejo tctil. La puntuacin fue de 71/100.

75

Figura 32: Google Developers dispositivo mvil.

6.1.

Prueba de Estrs:

Para llevar a cabo las pruebas, una herramienta disponible va web es: http://loadimpact.com. Con
esta herramienta web, se puede poner a prueba escenarios de conexin mltiple y reflejar los
tiempos de respuesta a medida que se aumenta la carga de usuarios.
Como se puede observar en la siguiente figura, la convencin VU load time hace referencia a la
traza del tiempo de carga a medida que se incrementan los usuarios, cuya convencin es VUs
active. Se puede apreciar que el tiempo promedio de carga esta en 1.2 s. Este tiempo promedio de
carga para tratarse de un servidor local en un equipo de hogar es bueno e indica que los tiempos de
respuesta y eficiencia de operatividad mejoraran significativamente si los serivicios son migrados a
un servidor pblico con mayores recursos y disponibilidad.

Figura 33. Prueba de carga de conexin con 25 usuarios.

76

Tambin pueden ser evaluados los tiempos de respuesta de los estilos grficos e imgenes.

Figura 34. Respuesta de pginas y estilos.

Pruebas de conexin y tiempos de respuesta:


Para evaluacin de tiempo de respuesta se realiz a travs de la herramienta web
http://www.webpagetest.org/, donde se ingresa la direccin a ser consultada, en este caso la
direccin principal http://miipublica:81/index.php. En la siguiente imagen se aprecia como la
segunda consulta a diferencia de la primera es mucho ms rpida, tanto en la carga de documentos
as como en la carga completa de la pgina

Figura 35. Tiempo respuesta plataforma web.

77

7. Conclusiones

Se logr disear e implementar el prototipo de seguridad de manera eficiente y apropiada


para el desarrollo del proyecto. El estudio de la viabilidad tcnica y la creacin de nuevas
plataformas y dispositivos electrnicos multilenguaje y compatibles con diversos sistemas
operativos fueron facilitadores en la integracin de los componentes Hardware y Software.

La georreferenciacin es una herramienta potente y debe seguir siendo aprovechada al


mximo en las diferentes aplicaciones informticas, de seguridad, ubicacin, etc. Contar con
este recurso tecnolgico permiti generar mapas de localizacin con un rango de error muy
bajo y acoplado con el reverse Geocoding permite conocer la direccin fsica donde se
encuentra el vehculo, haciendo que el prototipo sea confiable en la veracidad de la
informacin que proporciona.

El desarrollo de la base de datos, le permite a los usuarios consultar va WEB de manera


amigable y entendible la informacin que le corresponde del dispositivo al que est
relacionado. Este logro es fundamental porque muchos proyectos, incluyendo este, estn
orientados al usuario comn.

La integracin de los lenguajes (HTML, PHP, JavaScript, Phyton) optimizan significativamente


el rendimiento e integracin de las aplicaciones. Contar con un sistema robusto y actualizado
en sus tecnologas permite ofrecer un dispositivo de alta fidelidad sin importar, en ocasiones,
la limitacin de los recursos que se puedan tener.

78

A. Anexo: Script principal.py


import picam
from time import *
estado = "Automatico"
iduser = 5
while (True):
StateFile = open("/home/pi/estado.txt", 'w')
StateFile.write(estado)
StateFile.close()
picam.principal(estado, iduser)
sleep (600)

79

B. Anexo: Script pulsador.py


import os
import time
import RPi.GPIO as GPIO
import picam
GPIO.setmode(GPIO.BCM)
GPIO.setup(3,GPIO.IN)
estado = "S.O.S."
iduser = 5
while True:
input = GPIO.input(3)
if (input==0):
print ("Boton pulsado")
StateFile = open("/home/pi/estado.txt", 'w')
StateFile.write(estado)
StateFile.close()
picam.principal(estado, iduser)

80

C. Anexo: Script temporales.py


#!/usr/bin/env python
# -*- coding: utf-8
from envioFTP import listaArchivos
from time import *
while True:
listaArchivos()
sleep(300)

81

D. Anexo: Script picam.py


#!/usr/bin/python
import StringIO
import subprocess
import os
import time
from datetime import datetime
from PIL import Image
import picamera
import envioFTP
tiempo = time.strftime
threshold = 20
sensitivity = 30
forceCapture = False
forceCaptureTime = 60 * 60
filepath = "/home/pi/Temporalenvio"
PrefixPic = "image"
PrefixDate = "date"
diskSpaceToreserve = 40 * 1024 * 1024
camerasettings = ""
prefixWeb = "http://186.154.5.153:81/captura/"
saveWidth
= 1296
saveHeight = 972
saveQuality = 10
testWidth = 100
testHeight = 75
testAreaCount = 1
testBorders = [ [[1,testWidth],[1,testHeight]] ]
debugMode = False
def captureTestImage(settings, width, height):
command = "raspistill %s -w %s -h %s -t 200 -e bmp -n -o -" % (settings, width, height)
imageData = StringIO.StringIO()
imageData.write(subprocess.check_output(command, shell=True))
imageData.seek(0)
im = Image.open(imageData)
buffer = im.load()
imageData.close()
return im, buffer
def saveImage(settings, width, height, quality, diskSpaceToReserve, estado):
keepDiskSpaceFree(diskSpaceToReserve)
global localNamePic

82

global FTPnamePic
global horaArchivo
horaArchivo = tiempo("%Y%m%d_%H%M%S")
horaPublicar = tiempo("%A, %d/%m/%Y, %X")
if estado == 'Automatico':
localNamePic = filepath + "/" + PrefixPic + horaArchivo + ".jpg"
FTPnamePic = PrefixPic + horaArchivo + ".jpg"
with picamera.PiCamera(resolution=(width, height), led_pin=False) as foto:
foto.annotate_text = horaPublicar
time.sleep(0.05)
foto.capture(localNamePic, quality=quality)
foto.close()
print "Captured %s" % localNamePic
elif estado == 'S.O.S.':
localNamePic = filepath + "/" + PrefixVid + horaArchivo + ".mp4"
FTPnamePic = PrefixVid + horaArchivo + ".mp4"
with picamera.PiCamera(resolution=(640,480)) as camera:
time.sleep(0.1)
camera.start_recording('/home/pi/video.h264', quality=25)
camera.wait_recording(10)
camera.stop_recording()
comando = "MP4Box -fps 30 -add /home/pi/video.h264 %s" %(localNamePic)
os.system (comando)
def keepDiskSpaceFree(bytesToreserve):
if (getFreeSpace() < bytesToreserve):
for localNamePic in sorted(os.listdir(filepath + "/")):
if localNamePic.startswith(PrefixPic) and localNamePIc.endswith(".jpg"):
os.remove(filepath + "/" + localNamePic)
print "Deleted %s/%s to avoid filling disk" % (filepath,localNamePic)
if (getFreeSpace() > bytesToreserve):
return
def getFreeSpace():
st = os.statvfs(filepath + "/")
du = st.f_bavail * st.f_frsize
return du
def principal(estado, iduser):
image1, buffer1 = captureTestImage(camerasettings, testWidth, testHeight)
lastCapture = time.time()
while (True):
image2, buffer2 = captureTestImage(camerasettings, testWidth, testHeight)
changedPixels = 0
takePicture = False
if (debugMode):
debugimage = Image.new("RGB",(testWidth, testHeight))
debugim = debugimage.load()
for z in xrange(0, testAreaCount):
for x in xrange(testBorders[z][0][0]-1, testBorders[z][0][1]):
for y in xrange(testBorders[z][1][0]-1, testBorders[z][1][1]):
if (debugMode):
debugim[x,y] = buffer2[x,y]

83

if ((x == testBorders[z][0][0]-1) or (x == testBorders[z][0][1]-1)


or (y == testBorders[z][1][0]-1) or (y == testBorders[z][1][1]-1)):
debugim[x,y] = (0, 0, 255)
pixdiff = abs(buffer1[x,y][1] - buffer2[x,y][1])
if pixdiff > threshold:
changedPixels += 1
if (debugMode):
debugim[x,y] = (0, 255, 0)
if (changedPixels > sensitivity):
takePicture = True
if ((debugMode == False) and (changedPixels > sensitivity)):
break
if ((debugMode == False) and (changedPixels > sensitivity)):
break
if ((debugMode == False) and (changedPixels > sensitivity)):
break
if (debugMode):
debugimage.save(filepath + "/debug.bmp")
print "debug.bmp saved, %s changed pixel" % changedPixels
if forceCapture:
if time.time() - lastCapture > forceCaptureTime:
takePicture = True
if takePicture:
saveImage(camerasettings, saveWidth, saveHeight, saveQuality,
diskSpaceToreserve)
os.system("sudo python /home/pi/iniciogps.py")
datos = open("/home/pi/datos.txt", 'a')
datos.write("|%s%s|%s|%s" %(prefixWeb, FTPnamePic, estado, iduser))
print (estado)
datos.close()
horaArchivo = tiempo("%Y%m%d_%H%M%S")
localNameDate = filepath + "/" + PrefixDate + horaArchivo + ".txt"
FTPnameDate = "CapturaArchivos/" + PrefixDate + horaArchivo + ".txt"
os.rename("/home/pi/datos.txt",localNameDate)
envioFTP.enviar (localNameDate, FTPnameDate)
envioFTP.enviar (localNamePic, FTPnamePic)
break
image1 = image2
buffer1 = buffer2

84

E. Anexo: Script iniciogps.py


#! /usr/bin/python
# -*- coding: utf-8
import os
from gps import *
from time import *
import time
import threading
import envioFTP
from pygeocoder import Geocoder
import envioEmail
tiempo = time.strftime
filepath = "/home/pi/TemporalEnvio"
PrefixMapa = "map"
prefixWeb = "http://190.26.41.106:81/captura/"
gpsd = None
os.system('clear')
class GpsPoller(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
global gpsd
gpsd = gps(mode=WATCH_ENABLE)
self.current_value = None
self.running = True
def run(self):
global gpsd
while gpsp.running == True:
gpsd.next()
if __name__ == '__main__':
gpsp = GpsPoller()
try:
gpsp.start()
senal = 0
StateFile = open("/home/pi/estado.txt", 'r')
estado = StateFile.read()
while True:
os.system('clear')
print 'Latitud: ' , gpsd.fix.latitude
print 'Longitud: ' , gpsd.fix.longitude
print 'Estado: ', estado

85

if abs(gpsd.fix.latitude) > 0.0 and abs(gpsd.fix.longitude) > 0.0:


print "GPS OK"
latitud = "%s" %(gpsd.fix.latitude)
longitud = "%s" %(gpsd.fix.longitude)
direccion = Geocoder.reverse_geocode(gpsd.fix.latitude, gpsd.fix.longitude)
if estado == 'S.O.S.':
envioEmail.enviar (direccion, tiempo("%X, %d/%m/%Y"))
horaArchivo = tiempo("%Y%m%d_%H%M%S")
horaPublicar = tiempo("%A, %d/%m/%Y|%X")
localNameMapa = filepath + "/" + PrefixMapa + horaArchivo + ".html"
FTPnameMapa = PrefixMapa + horaArchivo + ".html"
mapa = open("/home/pi/mapa.php", 'r')
mapa_nuevo = mapa.read()
mapa_nuevo = mapa_nuevo.replace("coordenadas", latitud + "," + longitud)
mapa.close()
nuevo = open(localNameMapa,'w')
nuevo.write(mapa_nuevo)
nuevo.close()
datos = open("/home/pi/datos.txt", 'w')
datos.write("|%s|%s|%s|%s|%s%s" %(latitud, longitud, direccion[0],
horaPublicar, prefixWeb, FTPnameMapa))
datos.close()
envioFTP.enviar (localNameMapa, FTPnameMapa)
break
else:
print "Esperando GPS..."
if estado == "Automatico":
if senal == 60:
horaPublicar = tiempo("%A, %d/%m/%Y|%X")
datos = open("/home/pi/datos.txt", 'w')
datos.write("|Sin senal|Sin senal|No hay dato|%s|No existe archivo"
%(horaPublicar))
datos.close()
break
senal = senal + 1
sleep (1)
gpsp.running = False
gpsp.join()
except (KeyboardInterrupt, SystemExit):
print "\nDesconectando GPS..."
print "Ok.\nSaliendo..."

86

F. Anexo: Script envioFTP.py


#!/usr/bin/env python
# -*- coding: utf-8
import ftplib
import os
global s
path
ftp_servidor
ftp_usuario
ftp_clave
ftp_raiz

=
=
=
=
=

'/home/pi/TemporalEnvio/'
'190.26.41.106'
'gps'
'4m3r1c42014*'
'/captura'

def enviar (archivoOrigen, archivoDestino):


fichero_origen = archivoOrigen
fichero_destino = archivoDestino
try:
s = ftplib.FTP(ftp_servidor, ftp_usuario, ftp_clave)
try:
f = open(fichero_origen, 'rb')
s.cwd(ftp_raiz)
s.storbinary('STOR ' + fichero_destino, f)
f.close()
s.quit()
except:
print "No se ha podido encontrar el fichero " + fichero_origen
else:
os.remove(fichero_origen)
except:
print "No se ha podido conectar al servidor " + ftp_servidor
def listaArchivos ():
lstFiles = []
lstDir = os.walk(path)

#os.walk()Lista directorios y ficheros

try:
s = ftplib.FTP(ftp_servidor, ftp_usuario, ftp_clave)
for root, dirs, files in lstDir:
for fichero in files:
(nombreFichero, extension) = os.path.splitext(fichero)
if(extension == ".txt"):
lstFiles.append(nombreFichero+extension)
enviar (path + nombreFichero + extension, "CapturaArchivos/" + nombreFichero +
extension)
else:
lstFiles.append(nombreFichero+extension)
enviar (path + nombreFichero + extension, nombreFichero + extension)
except:
print "No se ha podido conectar al servidor " + ftp_servidor

87

G. Anexo: Script envioEmail.py


#!/usr/bin/python
# -*- coding: utf-8
import
import
import
import
import

smtplib
mimetypes
email
email.mime.application
sys

msg = email.mime.Multipart.MIMEMultipart()
msg['Subject'] = 'Activacion boton S.O.S.'
msg['From'] = 'gps.raspberrypi@gmail.com'
msg['To'] = 'gps.raspberrypi@gmail.com'
def enviar (direccion, hora):
cuerpo = ("Se ha detectado la activacin del botn de pnico en su
vehculo.\n\nDireccin: %s\nHora: %s\n\nPodra visualizar la foto y la ubicacin en el mapa
accediendo a su cuenta a travs del siguiente link. \n\nhttp://181.130.15.178:81/index.php"
%(direccion[0],hora))
print "Enviando correo a " ,msg['To']
body = email.mime.Text.MIMEText(cuerpo)
msg.attach(body)
s = smtplib.SMTP('smtp.gmail.com:587')
s.starttls()
s.login('gps.raspberrypi@gmail.com','raspberrypi')
s.sendmail('gps.raspberrypi@gmail.com',['gps.raspberrypi@gmail.com'], msg.as_string())
s.quit()
print "Email enviado"

88

H. Anexo: Script mapa.php


<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Localizacin GPS Raspberry Pi</title>
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px;
}

var
var
var
var

</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>
<script>
geocoder;
map;
infowindow = new google.maps.InfoWindow();
marker;

function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(coordenadas);
var mapOptions = {
zoom: 20,
center: latlng,
mapTypeId: 'hybrid'
}
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
codeLatLng();
}
function codeLatLng() {
var latlng = new google.maps.LatLng(coordenadas);
geocoder.geocode({'latlng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
map.setZoom(20);
marker = new google.maps.Marker({
position: latlng,
map: map
});
infowindow.setContent(results[0].formatted_address);
infowindow.open(map, marker);
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>

89

8. Bibliografa
[1] Concejo de Bogot D.C., POR EL CUAL SE IMPLEMENTA UN SISTEMA TECNOLGICO DE
SEGURIDAD EN VIDEO VIGILANCIA Y BOTONES DE PNICO EN EL SERVICIO DE TRANSPORTE
PBLICO INDIVIDUAL Y COLECTIVO DE PASAJEROS EN EL DISTRITO CAPITAL. Abril de-2014.
[2] Cules son las caractersticas principales del HTML?, Postgrado en Marketing Online,
comunicacin, Marketing Digital, postgrado online, uab, barcelona. .
[3] Rosselott, Manual de PHP Bsico - WebEstilo. Jun-2003.
[4] PHP Group, PHP 5.4.45 Released. 2015-2001.
[5] Olga Cirauqui Elorz, Instalar WAMP. 02-Mar-2012.
[6] CSS: Hojas de estilo, CCM. [Online]. Available: http://es.ccm.net/contents/156-css-hojas-deestilo. [Accessed: 06-Sep-2015].
[7] Java Script, prezi.com. [Online]. Available: https://prezi.com/_kd-lnphaoq6/java-script/.
[Accessed: 06-Sep-2015].
[8] Google Maps API V3 introduccin y primeros pasos, Maestros del Web. .
[9] Jorge Snchez Asenjo, Servidores de Aplicaciones Web. 2012.
[10] Masadelante.com, Qu es un servidor FTP (FTP Servers)? 2015-1999.
[11] MD5online.org, MD5 Online. 2015-2012.
[12] Jorge Snchez, Diseo Conceptual de Bases de Datos. 2004.
[13] Tipos De Bases De Datos, El blog de base de datos. [Online]. Available:
http://basededatos.over-blog.net/article-tipos-de-bases-de-datos-68319538.html. [Accessed: 06Sep-2015].
[14] Qu es un gestor y cules son sus tipos? .
[15] EcuRed, Sistema Gestor de Base de Datos. .
[16] Base de datos modelo entidad relacion, 20:20:14 UTC.
[17] Carl Rod Nave, Satlites de Posicionamiento Global. 2010.
[18] Qu es el GPS, funcionamiento general, Penyagolosa.net - Senderismo en Castelln, 2015-2006.
[Online].
Available:
http://www.penyagolosa.net/informacion-general/que-es-el-gpsfuncionamiento-general.html.
[19] Querelle y Cia Ltda., Coordenadas geogrficas, Profesor en Linea. [Online]. Available:
http://www.profesorenlinea.cl/geografiagral/Coordenadasgeog.htm.
[20] Coordenadas geogrficas. [Online]. Available: http://www.portaleducativo.net/quintobasico/684/Coordenadas-geograficas. [Accessed: 06-Sep-2015].
[21] Sistema
de
Coordenadas,
Coordenadas
GPS,
2015.
[Online].
Available:
http://www.coordenadas-gps.com/sistema-de-coordenadas.
[22] ms.gonzalez, La transmisin de datos en la telefona mvil | Redes Telemticas. .
[23] Las redes de transmisin de datos usadas en los telfonos celulares, NorfiPC. [Online].
Available: http://norfipc.com/celulares/redes-transmision-datos-usadas-telefonos-celulares.php.
[Accessed: 07-Sep-2015].
90

[24] Raspberry
Pi,
Raspberry
Shop,
2015-2011.
[Online].
Available:
http://www.raspberryshop.es/index.php.
[25] winfernux, Nuevo modelo de Raspberry Pi: La Model B+, Life Bit Blog. .
[26] Raspberry Pi, Wikipedia, the free encyclopedia. 09-Sep-2015.
[27] Raspberry Pi, Wikipedia, la enciclopedia libre. 03-Aug-2015.
[28] Accesorios para Raspberry Pi, Raspberry Shop, 2015-2011. [Online]. Available:
http://www.raspberryshop.es/accesorios-raspberry-pi.php.
[29] Modulo Gps Ublox NEO-6M, arm32. [Online]. Available: http://www.arm32.cl/wireless/32modulo-gps-ublox-neo-6m.html. [Accessed: 10-Sep-2015].
[30] Botscience EIRL, Mdulo GPS para Arduino UBlox NEO 6M, BOT Science, 2013. [Online].
Available: http://botscience.net/store/index.php?route=product/product&product_id=73.
[31] RASPBERRY PI | Historia de la Informtica. .
[32] Programando con Raspberry Pi B+ | botboss. .
[33] Python
PARA
TODOS.
[Online].
Available:
http://www.academia.edu/8911458/Python_PARA_TODOS. [Accessed: 10-Sep-2015].
[34] Tutorial 1 - Preparando la tarjeta SD para instalar el sistema operativo, Frambuesa Pi Colombia
- Raspberry Pi en espaol. .
[35] Tutorial 2 - Descarga de NOOBS y copia en la tarjeta SD, Frambuesa Pi Colombia - Raspberry Pi
en espaol. .
[36] S. G. B. M. P. R. at C. U. L. de F. P. Estudi and o un P. de I. B. en C. U. L. E. y promotor de los
principios de R. P. para los que hablamos espaol, Tutorial 3 - Instalacin y configuracin de
inicial del Raspberry Pi (raspi-config), Frambuesa Pi Colombia - Raspberry Pi en espaol. .
[37] Tutorial 4 (Parte 1) - Conexin del Raspberry Pi a Internet usando cable de red, Frambuesa Pi
Colombia - Raspberry Pi en espaol. .
[38] Tutorial 7 - Conexin remota al Raspberry Pi usando Xming, Frambuesa Pi Colombia - Raspberry
Pi en espaol. .
[39] Raspberry Pi NoIR Infrared Camera Board v1.3 (5MP, 1080p), Pi Supply. .
[40] Use the Raspberry Pi as a DIY Surveillance camera, Make Tech Easier. [Online]. Available:
https://www.maketecheasier.com/raspberry-pi-as-surveillance-camera/. [Accessed: 10-Sep2015].
[41] Tracker GPS con Raspberry Pi y el mdulo Ublox M6, fpaez.com. .

91

S-ar putea să vă placă și