INFORME PROYECTO FIN DE CARRERA

49
INFORME PROYECTO FIN DE CARRERA Presentado a LA UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA Para obtener el título de INGENIERO ELECTRÓNICO por Eric Leonardo Blandón Tenjo SISTEMA PARA EL CÁLCULO AUTOMÁTICO DEL APORTE MONETARIO POR EL USO DE VÍAS PUBLICAS DE AUTOMOTORES PARTICULARES Sustentado el 9 de Junio de 2015 frente al jurado: Composición del jurado - Asesor: Fredy E. Segura PhD, Profesor Asociado, Universidad de Los Andes - Jurados: Juan C. Bohorquez PhD, Profesor Asociado, Universidad de Los Andes

Transcript of INFORME PROYECTO FIN DE CARRERA

Page 1: INFORME PROYECTO FIN DE CARRERA

INFORME PROYECTO FIN DE CARRERA

Presentado a

LA UNIVERSIDAD DE LOS ANDESFACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

Para obtener el título de

INGENIERO ELECTRÓNICO

por

Eric Leonardo Blandón Tenjo

SISTEMA PARA EL CÁLCULO AUTOMÁTICO DEL APORTEMONETARIO POR EL USO DE

VÍAS PUBLICAS DE AUTOMOTORES PARTICULARES

Sustentado el 9 de Junio de 2015 frente al jurado:

Composición del jurado

- Asesor: Fredy E. Segura PhD, Profesor Asociado, Universidad de Los Andes

- Jurados: Juan C. Bohorquez PhD, Profesor Asociado, Universidad de Los Andes

Page 2: INFORME PROYECTO FIN DE CARRERA

2

Contenido1INTRODUCCIÓN................................................................................................................4

1.1Descripción de la problemática y justificación..............................................................41.2Alcance y productos finales...........................................................................................41.3Objetivos........................................................................................................................51.3.1 Objetivo general (trabajo conjunto con Juan Camilo Dvera).....................................51.3.2 Objetivos específicos.................................................................................................5

2MARCO TEÓRICO, CONCEPTUAL E HISTÓRICO........................................................52.1Marco Teórico y Conceptual..........................................................................................52.1.1Costos de congestión...................................................................................................52.1.1.1Esquemas de cobro...................................................................................................62.1.1.2 Tecnologías empleadas para el cobro......................................................................72.1.1.3 Impactos del cobro..................................................................................................82.1.2Tecnologías implementables.......................................................................................92.1.2.1 Sistemas de posicionamiento global.......................................................................92.1.2.2 Comunicación celular............................................................................................102.1.2.3 Servidor.................................................................................................................112.2Marco Histórico...........................................................................................................122.2.1Antecedentes externos...............................................................................................122.2.1.1 Cobros de congestión en otras ciudades................................................................122.2.1.2 Uso de tecnologías GPS y GSM/GPRS................................................................132.2.2Antecedentes locales.................................................................................................13

3DEFINICIÓN Y ESPECIFICACIÓN DEL TRABAJO......................................................143.1Definición.....................................................................................................................143.1.1Descripción...............................................................................................................143.1.2Diagrama de bloques.................................................................................................153.2Especificaciones...........................................................................................................163.3Restricciones................................................................................................................163.4Suposiciones.................................................................................................................17

4METODOLOGÍA DE TRABAJO......................................................................................174.1Búsqueda de información.............................................................................................174.2Plan de trabajo..............................................................................................................184.3Diseño e implementación del servidor.........................................................................184.3.1Página web................................................................................................................194.3.2Base de datos.............................................................................................................194.3.3Manejo de la base de datos........................................................................................214.3.4Comunicación con los dispositivos GPS...................................................................224.3.5Aplicaciones..............................................................................................................224.4Validación.....................................................................................................................23

5RESULTADOS FINALES..................................................................................................235.1Resultados del trabajo en conjunto..............................................................................24

6CONCLUSIONES Y TRABAJOS FUTUROS..................................................................256.1Conclusiones................................................................................................................256.2Trabajo futuro...............................................................................................................25

REFERENCIAS....................................................................................................................25

Page 3: INFORME PROYECTO FIN DE CARRERA

3

Índice de figuras

Figura 1. Diagrama típico de oferta y costo incluyendo costo social marginal....................................6

Figura 2. Zona 1 y Zona 2 de la implementación de los cobros de congestión..................................14Figura 3. Diagrama de bloques del sistema........................................................................................15Figura 4. Diagrama de bloques de la estación base............................................................................16Figura 5. Estructura de directorios.....................................................................................................19Figura 6. Tablas de la base de datos...................................................................................................20Figura 7. Tabla de vehículos...............................................................................................................20Figura 8. Tabla de registros GPS........................................................................................................20Figura 9. Tabla de facturas..................................................................................................................21Figura 10. Tabla de conductores.........................................................................................................21Figura 10. Llegada de datos al servidor. (Hora, Latitud, Longitud, ID del vehículo)........................24

Índice de tablas

Tabla 1. Esquemas de cobro del costo de congestión...........................................................................6

Tabla 2. Clasificación de tecnologías...................................................................................................7Tabla 3. Comparación de tecnologías...................................................................................................8Tabla 4. Esquema de cobro por congestión por ingreso a la zona 1 y zona 2....................................14

Índice de apéndices

Apéndice 1. estructura de archivos del servidor.Apéndice 2. Páginas web implementadas.Apéndice 3. Códigos desarrollados.Apéndice 4. Ejemplo de factura generada.

Page 4: INFORME PROYECTO FIN DE CARRERA

4

1 INTRODUCCIÓN

1.1 Descripción de la problemática y justificaciónEn diversas ciudades al rededor del mundo la congestión vehicular en crecimiento aocasionado la implementación de diversos métodos para limitar o desincentivar el uso delvehículo particular. Uno de estos métodos que se han desarrollado es la implementación delcobro de costos por congestión, el cual representa un reto técnico para asegurar sufuncionamiento, sin afectar de forma negativa la cotidianidad de los ciudadanos.

Según el Observatorio Ambiental de Bogotá, a 2014 se encuentran registrados 1.492.483vehículos automotores, número que ha tenido un crecimiento constante cercano a 100.000vehículos por año desde el 2007 [1]. Este crecimiento afecta la movilidad dentro de laciudad al aumentar la congestión. Con el ánimo de solucionar el problema de movilidad enBogotá se han implementado diferentes estrategias, como lo son la instalación de unsistema de transporte público masivo con vía independiente a la particular (Transmilenio yrecientemente SITP en la avenida 7) y la implementación del pico y placa que restringe lacirculación de los vehículos en distintos horarios. Adicionalmente el consejo de Bogotá adiscutido sobre la implementación de peajes dentro de la ciudad, que desincentivaran el usodel vehículo particular y motivaran el uso del trasnporte público.

Dicha implementación no sólo debe realizar el cobro por el ingreso o paso pordeterminadas zonas de la ciudad, su instalación también debe ocasionar una mínimainterferencia con la circulación vial, para no convertirse en un factor más de la congestiónvehicular. Idealmente los vehículos no se detendrían ni reducirían su velocidad al pasar porlos puntos de peaje. Esto puede lograrse mediante el uso de tecnologías que permitanconocer la ubicación del vehículo, por ejemplo GPS, que reporten si a cruzado o ingresadoa la zona de cobro; esta información se comunicaría a una central donde el cobro escalculado y reportado al usuario.

Estas tecnologías se han probado e implementado con éxito en el área de rastreamiento ymonitoreo de vehículos de carga. Donde la información del recorrido del vehículo estrasmitida de forma inalámbrica a una central donde se procesa la información.

1.2 Alcance y productos finalesSe entrega la especificación del método y tecnología de recolección de datos y cómo sonentregados al servidor.

Se entrega una aplicación a servidor a modo de estación base que se encarga de realizar elcálculo y comunicación del cobro realizado según la circulación del vehículo.

Se entregan pruebas del funcionamiento del sistema, emulando la entrada de datos alservidor, o con un dispositivo creado para la recolección de datos desarrollado por JuanCamilo Dvera.

Page 5: INFORME PROYECTO FIN DE CARRERA

5

1.3 Objetivos

1.3.1 Objetivo general (trabajo conjunto con Juan Camilo Dvera)

Diseño e implementación de una red inalámbrica de dispositivos, a ser instalados envehículos particulares, para sensado masivo con el fin de conocer las vías por lascuales transitan; con aplicación a servidor para hacer informes de utilización de lasvías, posibles cobros de peaje entre otros.

1.3.2 Objetivos específicos

NOTA: Estos objetivos no son dependientes del trabajo de Juan Camilo Dvera

Especificar y definir una red de dispositivos (Nodos finales en vehículosparticulares, posibles Gateway, estación base, y red inalámbrica) por medio de lacual sea posible conocer el uso de las vías por vehículos particulares.

Diseño e implementación de una aplicación en un servidor, para el cálculo delaporte monetario del vehículo según el uso de las vías registrado por el dispositivoen este.

Emular la entrada de datos al servidor según las especificaciones de lascomunicaciones definidas. Estos se usan para realizar pruebas de funcionamientodel sistema. Posteriormente si se tiene acceso a un dispositivo diseñado para tal fin,por Juan Camilo Dvera, se realizan pruebas con este.

2 MARCO TEÓRICO, CONCEPTUAL E HISTÓRICO

2.1 Marco Teórico y Conceptual

2.1.1 Costos de congestión

La congestión vehicular se refiere a la capacidad de una infraestructura vial y la cantidad devehículos que desean transitar por ellas. Al presentarse un incremento de la cantidad devehículos que transitan simultáneamente se presenta una reducción en la velocidad a lacual estos pueden transitar. Adicional al número de vehículos también son causa decongestión un inadecuado diseño de la infraestructura vial, la escasez de mantenimiento dela malla vial, la señalización vial inapropiada o ausente, el comportamiento inadecuado deconductores y peatones, el desconocimiento de las condiciones de transito, el mal estado dealgunos vehículos, sistemas semafóricos obsoletos o desligados a las condiciones deltransito y anteriormente la combinación de vehículos motorizados y de tracción animal enlas vías[2]. Esta congestión le genera un costo a los usuarios que se refleja principalmentecomo costo monetario y costo de tiempo, siendo el valor del tiempo de los usuarios laprincipal variable de análisis para los estudios de este tema.

En la siguiente imagen se ilustra la curva de demanda, donde se reduce el costo conformeaumenta el número de vehículos. La curva de costo individual, donde a mayor cantidad devehículos más costoso es para un usuario transitar (mayor tiempo de viaje, consumo decombustible, desgaste del vehículo, etc). La curva de costo social marginal, que tiene elmismo comportamiento de la curva de costo individual, excepto que tiene en cuenta ademásdel costo propio el costo que representa para los otros usuarios ingresar al sistema vial. El

Page 6: INFORME PROYECTO FIN DE CARRERA

6

punto de equilibrio C es donde se alcanza el óptimo social, donde se reducen las perdidasde tiempo y se realiza un uso mas eficiente de las vías.

Figura 1. Diagrama típico de oferta y costo incluyendo costo social marginal. [2]

La diferencia de costo entre p2 y p1 sera el cobrado como costo de congestión, de estaforma los usuarios internalizan el costo que causan a otros. Esta es una herramientaeconómica que sirve para gestionar la demanda por el vehículo privado, otras herramientaseconómicas con el mismo fin pueden ser: incrementar las tarifas de estacionamientos o losimpuestos por adquisición, tenencia y combustible de los vehículos [2].

2.1.1.1 Esquemas de cobro

Para alcanzar un óptimo en el cobro de costo de congestión seria necesario conocer en todomomento las condiciones del trafico de forma activa, haciendo el cálculo de este monto deforma dinámica. Para simplificar esto se proponen en cambio diferentes esquemas de cobroque se presentan en la siguiente tabla. Para mejorar su aproximación al óptimo se puedenimplementar cobros distintos a diferentes horas, siguiendo un esquema de horas pico yhoras valle.

Tabla 1. Esquemas de cobro del costo de congestión. Basado en [2]Esquema Aproximación al óptimo Descripción Legibilidad para el usuario

Zona única PobreCobro realizado por encontrarse

en una zona determinadaMuy Buena

Zonas múltiples Mejor que una sola zonaCobro realizado por encontrarse

en diferentes zonasdeterminadas

Buena

Cordón único PobreCordón que rodea un área,

cobro realizado por cruzar dichocordón

Muy Buena

Cordones múltiples Mejor que un solo cordón

Diferentes cordones rodeadodiferentes áreas, pueden ser

separados o concéntricos, cobrorealizado por cruzarlos

Buena

Corredores BuenaSe cobra por el uso de

corredores viales principalesBuena

Sistemas mixtos decordón y corredor

Muy BuenaCombinación de corredores y

cordonesMenor

Page 7: INFORME PROYECTO FIN DE CARRERA

7

2.1.1.2 Tecnologías empleadas para el cobro

Para efectuar el cobro de costos por congestión existen diversas tecnologíasimplementables, estas se describen a continuación.

Tabla 2. Clasificación de tecnologías. [2]Familia Clase Tecnologías Elementos o Subtencologías

Sistemas de cobro noElectrónico

Manual

Sistemas de papel

Licencia / Permiso / Calcomanía

Regulación a infractores enpuntos de control

Cobro manual en plazas (tipopeaje)

Efectivo / Vouchers / TarjetasElectrónicas o Inteligentes

Plaza o caseta

Valla pivoteable

Sistemas de cobro Electrónico

Basados en Infraestructura dePórticos o Postes

Reconocimiento por vídeo /Reconocimiento automático de

placas (ALPR or ANPR)

CámarasDispositivos de Iluminación

Pórticos / Postes

Dispositivos de Clasificación deVehículos

Centro de control (Procesamientode datos y verificación)

DSRC (Infrarrojo / Microondas /RFID)

Cobro a flujo ininterrumpidousando Traspondedores y

Pórticos

Antenas

Pórticos / Postes

Tags / Transpondedores / OBU

Radio frecuencia / Microondas /infrarrojo

Puntos de venta o Distribución(Para OBU)

Centro de control (Procesamientode datos y verificación)

Basados en EquiposIntravehiculares

Tecnología de localizaciónvehicular (VPS) GNSS: GPS /

GLONGASS / GALILEO

OBU / Odómetro / Tacógrafo

Tarjeta Inteligente

Repetidores de señal

Sistemas de Redes de TelefoníaCelular

OBU

Tarjeta Inteligente

Odómetro / Tacógrafo

ALPR: Automatic License Plate Recognition. ANPR: Automatic Number Plate Recognition. DSRc: Dedicated ShortRange Communucations. VPS: Vehicular Positioning Systems. GNSS: Global Satellite Systems. OBU: On BoardUnit.

La siguiente Tabla presenta una comparación entre estas tecnologías. En esta comparaciónse tiene en cuenta las implementaciones de dichas tecnologías que se han realizado deforma independiente. Respecto a las tecnologías VPS hay que añadir que son capaces dedeterminar, además del cruce por zonas, cordones y corredores y distancias de recorrido. Enla actualidad no poseen aceptación pública para su uso en costos de congestión yrepresentan un alto costo de implementación, pero se emplean ampliamente para cargos pordistancia recorrida a vehículos de carga.

Page 8: INFORME PROYECTO FIN DE CARRERA

8

Tabla 3. Comparación de tecnologías. Basada en [2]

TecnologíasInfraestructura eimpacto Urbano

Costo Exactitud Aceptación Vida Útil

Sistemas de papelAlto: Casetas, vallas y

puntos de control

Bajo por: Personalcontratado, distribución

de permisos, casetasAlta

Altamente visible ylegible, por lo que es

históricamente aceptado

Larga duración,mantenimiento

relacionado con loscanales de distribución delicencias e infraestructura

(casetas y vallas)utilizadas para el control

Cobro manual en plazasAlto: Casetas, vallas y

puntos de control

Medio por: Personal,Caseras, carriles

adicionales.Alta

Altamente visible ylegible, por lo que es

históricamente aceptado

Larga duración,mantenimiento

relacionado con lainfraestructura (casetas yvallas) utilizadas para el

cobro.

Reconocimiento porvídeo / Reconocimiento

automático de placas(ALPR or ANPR)

Alto: Pórticos en puntosde cobro y de control ainfractores (Este ultimodepende del esquema de

cobro)

Medio por:Infraestructura depórticos, cámaras,

dispositivos deiluminación, operarios,

etc. Depende del númerode puntos de cobro

Media: Fallas de lecturaentre 10 y 30%

Dependiendo del tipo deinformación manejada,

puede tenerimplicaciones en la

privacidad, sin embargo,puesto que son puntosespecíficos, no tiende a

tener fuertes oposiciones

Requiere limpiezaperiódica de cámaras para

asegurar calidad deimágenes, requiere de

dispositivos deiluminación que duran

entre 2 y 5 años

DSRC (Infrarrojo /Microondas / RFID)

cobro a flujoininterrumpido usando

traspondedores ypórticos

Alto: pórticos en puntosde cobro y de control ainfractores (este ultimodepende del esquema de

cobro)

Medio-Alto por:Infraestructura depórticos, OBU,

Cámaras, antenas,etc.Depende del número de

puntos de cobro ycontrol

Alta: fallas de lecturaalrededor de 0.002%

Sin dificultades deaceptación en las

experienciasinternacionales

La infraestructura essusceptible a vandalismoe impactos. Las unidadesintravehiculares (OBU)tienen una vida útil de

alrededor de 5 años

Tecnologías delocalización vehicular(VPS) GNSS: GPS /

GLONASS / GALILEO

Menor: solo requierepórticos o postes concámaras en puntos de

control

Alto por: OBU,repetidores de señal,

seguridad deinformación, puntos decontrol de infractores

AltaDificultades de

aceptación publica porcuestiones de privacidad

Las unidadesintravehiculares tiene unavida útil de alrededor de5 años. El mantenimiento

esta relacionado a losrepetidores de señal ycámaras de control de

infractores

Sistemas de redes detelefonía celular

Mínimo: Los equipos decalle consisten en

transreceptores como losque ya utiliza la red de

telefonía celular

Medio Alto:Transceptores, unidades

vehiculares, cámaraspara control de

infractores. Depende denúmero de puestos de

control

Alta

Puesto que la red detelefonía celular ya tieneun uso generalizado, noes de esperar que tenga

inconvenientes deaceptación publica uncobro por congestióncon esta tecnología

Requiere mantenimientode los transreceptores y

unidadesintravehiculares. Estas

ultimas son mas sencillasque las requeridas porVPS, por lo que son

menos costosas.

2.1.1.3 Impactos del cobro

La implementación de un cobro de costos de congestión conlleva impactos positivos ynegativos para los usuarios, el medio ambiente, los servicios de transporte públicos, y laeconomía de la ciudad, entre otros. A continuación se enlistan los principales:

Bienestar de los usuarios:Se mejora el disfrute del espacio público, la salud mental de los conductores es afectadapositivamente por la reducción de la congestión y se motiva el uso de vehículos nomotorizados (bicicletas) mejorando la salud física. Sin embargo puede afectar la comodidadde los usuarios frecuentes del transporte público al aumentar el número de usuarios, ogenerar incomodidad a usuarios que buscaran evitar las zonas, corredores o cordones decobro realizando viajes mas largos.

Page 9: INFORME PROYECTO FIN DE CARRERA

9

Equidad:Los usuarios de vehículos particulares ahora responden por el costo que generan a lacomunidad por transitar, también se generan menores tiempos de viaje tanto para vehículosparticulares como para vehículos de transporte público. Sin embargo aquellos usuarios devehículos particulares con menor poder adquisitivo se verán forzados a modificar sucomportamiento, en mayor medida que los usuarios con mayor poder adquisitivo.

Ambiente:Se genera una reducción en las emisiones de gases de invernadero como el CO2, y sereduce la contaminación auditiva. Sin embargo puede generar el aumento de estos tipos decontaminación en nuevos lugares al modificar los patrones de viaje de algunos usuarios.

Confiabilidad:Se genera un aumento en la confiabilidad de los tiempos de viaje de vehículos particularesy de transporte público. Sin embargo puede reducir la confiabilidad de los sistemas detransporte público al generar un aumento en el número de usuarios de estos sistemas.

Accidentalidad:Al reducir el número de vehículos en las vías se obtendrá una menor frecuencia deaccidentes. Sin embargo también se genera un aumento en la velocidad de viaje, por lo quese pueden generar accidentes de mayor gravedad.

Infraestructura:Se genera un uso mas eficiente de la infraestructura vial, porque se genera menor desgaste yse reduce el mantenimiento. Sin embargo exige la mejora de la infraestructura de lossistemas de transporte público y de medios de transporte alternativos como las ciclorutas ycarriles de Transmilenio.

Patrones de viaje:Se genera una tendencia hacia el uso de los sistemas de transporte público y métodosalternativos como la bicicleta, los patrones de viaje de los usuarios cambian reduciendo lacongestión en las horas pico, además los conductores crean conciencia de realizar diversospropósitos en un solo viaje, siendo mas eficientes. Sin embargo se puede reducir elatractivo de las zonas donde se realiza el cobro, causando menor flujo hacia esta y teniendoun impacto negativo en la actividad económica del área, los usuarios pueden optar poreludir las zonas donde se realiza el cobro creando congestión en nuevas áreas de la ciudad.

2.1.2 Tecnologías implementables

2.1.2.1 Sistemas de posicionamiento global

GPSEl sistema posicionamiento global o GPS fue desarrollado por la Armada y la Fuerza Aéreade los Estados Unidos como el proyecto llamado NAVSTAR GPS. El cual se declaro enoperación inicial en diciembre de 1993, y en operación completa en abril de 1995. Se

Page 10: INFORME PROYECTO FIN DE CARRERA

10

compone de 24 satélites a una altitud de 20200km en diferentes orbitas que envían unaseñal de radiofrecuencia con una señal portadora de 1575.42MHz, trasmitiendocontinuamente un mensaje de 50 bits por segundo con datos como: el estado del satélite, suposición en el espacio, la hora del reloj atómico de a bordo, etc.

Para calcular la posición de un receptor que recibe la señal de un satélite se estima que elreceptor se encuentra en la superficie de una esfera con radio igual a la distancia del satéliteal receptor, con el satélite en el centro. Esto se calcula para cada señal de satélite recibida,al recibir la señal de amenos tres satélites se genera un único punto de intersección entredichas esferas, de este punto se deriva la latitud, longitud y altitud del receptor. El error dela posición puede ser de hasta 100m, sin embargo si se cuenta con la captación de entresiete y nueve satélites la precisión puede ser inferior a 2.5m el 95% del tiempo.

GLONASSEs el sistema de posicionamiento global ruso homologo al GPS estadounidense. Entro enoperación en enero de 1996, fue desarrollado por la unión soviética y es hoy administradopor la federación rusa. Se compone de 24 satélites en orbita a una altitud de 19100kmtrasmitiendo a diferentes frecuencias cada uno. La precisión del sistema en distanciashorizontales se encuentra entre los 5m y 10m.

GALILEOEs el homologo europeo al sistema GPS estadounidense, se espera entre en completofuncionamiento para el 2020, actualmente su funcionamiento es parcial. Se basa en 24satélites en orbita a una altitud de 23222km, de los cuales 8 ya han sido lanzadosexitosamente. Se espera su precisión para navegación Open acces sea de 1m, y paraaplicaciones comerciales de hasta 1cm. Los receptores son capaces de utilizar tanto elsistema GALILEO como el sistema GPS.

En la actualidad existen módulos capaces de utilizar ambos sistemas GPS y GLONASS, enlos cuales la precisión se encuentra entre los 2.37m y los 4.65m. Adicionalmente dada lamayor disponibilidad de satélites se mejora el tiempo que tarda un receptor en ubicar suposición.

2.1.2.2 Comunicación celular

GSMEl sistema global para las comunicaciones móbiles GSM inicio en 1992, fue desarrolladopor el grupo europeo creado especialmente para este fin Groupe Spécial Mobile. Estesistema opera a frecuencias de 900MHz, 1800MHz, y en estados unidos una adicional de1900MHz.

La red se compone de diferentes áreas que se interconectan entre si, en las cuales seencuentra una estación base BTS conectadas al controlador de estación base BSC, que a suvez se conectan al centro ce conmutación Móvil MSC que enlaza la información con la redde telefonía publica e internet. Para conectarse a este sistema se requiere de un dispositivoGSM con una tarjeta SIM, la cual contiene el número telefónico MSISDN, en número de

Page 11: INFORME PROYECTO FIN DE CARRERA

11

identificación internacional IMSI, el estado de la tarjeta, el código del operador, el códigode identificación personal PIN y el código personal de desbloqueo PUK.

GPRSEl servicio general de paquetes vía radio es una extensión al sistema GSM. Por medio delcual se pueden acceder a servicios de mensajería instantánea, mensajes multimedia MMS,Aplicaciones en red mediante WAP, mensajes costos SMS, y acceso a internet. Existendispositivos clase A que pueden utilizar simultáneamente servicios SPRS y GSM. Clase Bque conmutan a GSM para llamadas de voz o SMS, y cambian a GPRS el resto del tiempo(mayormente usado para los teléfonos móviles). Y case C, que se conectan a GSM o GPRSde forma manual.

2.1.2.3 Servidor

Un servidor es una aplicación o software que se ejecuta en un computador al cual puedenacceder varios clientes, ofreciéndoles la posibilidad de compartir datos e información yrealizar uso de recursos de hardware y software. Cualquier computador moderno puedeutilizarse como un servidor (dependiendo de la aplicación), mas un servidor dedicado seocupara de una, o un conjunto de tareas especificas, y por ende puede tener característicasde hardware especiales, además de elementos de protección y de redundancia a fallos.

Un servidor debe cumplir con requerimientos de hardware específicos al uso que se le va asignar, estos requerimientos son de alta capacidad y velocidad de las conexiones. Muchosservidores no poseen una interfaz con el usuario GUI o HMI dado que esto consumerecursos que pueden ser aprovechados para otras tareas. Adicionalmente, dada la operacióncontinua y en tiempos prolongados de los servidores es necesario que el hardware tengacaracterísticas especiales para hacerlos menos vulnerables a fallos, se puede instalarsistemas elaborados de refrigeración, y elementos que aseguren la alimentación de energíaante fallos de la red como las fuentes de poder ininterrumpido UPS.

Los sistemas operativos para servidores son distintos a los empleados en computadorespersonales, dado que en el ultimo caso se ejecutan múltiples tareas para un usuario y en elprimer caso se ejecutan una tarea para una gran cantidad de usuarios. Los SO masampliamente utilizados son distribuciones de UNIX como lo son Linux y FreeBSD, perotambién existen Windows y Mack OS X. Sin embargo en la actualidad la diferencia entre ladistribución de un SO para un computador personal y un servidor son mayormente deconfiguración, puesto que ahora comparten las mismas bases.

Page 12: INFORME PROYECTO FIN DE CARRERA

12

2.2 Marco Histórico

2.2.1 Antecedentes externos

2.2.1.1 Cobros de congestión en otras ciudades

LondresEn esta ciudad se implemento un cordón rodeando un área de 21km² de la zona centro conun costo de 100 millones de libras anuales. El cobro es aplicado de lunes a viernes de7:00am a 6:00p, con un valor que inicio de 5 euros en el 2003 y a aumentado a 10 euros. Lamulta por eludir el pago es de 120 euros y están exentos personas en situación dediscapacidad, motos, buses, vehículos de emergencia y personas de bajos ingresos. Se logróreducir el trafico en un 27% que representa 80,000 vehículos menos en circulación, semejoró la calidad del aire, y hubo un incremento del uso de la bicicleta del 66%, y unincremento del uso del transporte público del 45%. [2]

EdimburgoEn esta ciudad se propuso implementar para el 2006 un doble cordón concéntrico rodeandola zona financiera de la ciudad con un costo de 770 millones de euros, donde la tarifa seriade 2 euros por cruzar y aplicaría de 7:00am a 7:00pm. Por demanda popular no seimplementó. [2]

EstocolmoEn el 2006 inicio una prueba piloto de 6 meses, que finalmente se instalo definitivamentedesde el 2007. En esta ciudad se encuentra un peaje de cordón alrededor del centro de laciudad, funciona los días hábiles desde las 6:30am a las 6:30pm excepto el mes de junio. Latarifa cambia respecto a la hora del día, de 7:30am a 8:30am y de 4:00pm a 5:30pm es de20 SEK, en los 30 minutos anteriores y posteriores a estos horarios es de 15 SEK, y el restodel periodo es de 10 SEK. Se cobra hasta un máximo de 60 SEK (COP$ 16,920) diarios. Selogró una disminución del volumen vehicular del 20%. Se evidenció además que en elintervalo de tiempo entre la finalización de la prueba piloto, y la instalación definitiva delsistema, se mantuvo el cambio en la conducta de los ciudadanos, mostrando la efectividadpara realizar un cambio duradero en el comportamiento de los usuarios. [2]

Otras ciudades donde se han implementado o propuesto estos sistemas son: Sydney, dondeen el puente Sydney Harbour Bridge se instalo un peaje electrónico reduciendo lacongestión en un 0.19%. Desde el 2010 en Guangzhou y Nanjing, China, existe lapropuesta de implementar el cobro de costos de congestión. En Singapur se implementarondesde 1998 peajes electrónicos, y en el 2007 se introdujo los precios variables; a pesar deser la ciudad con mayores ingresos per capita de Asia, solo el 30% del los ciudadanosposeen automóviles particulares. En Austria desde el 2004 y en Alemania desde el 2005 seimplemento un cobro por distancia recorrida a vehículos con un peso mayor a 3.5toneladas. Otros ejemplos de propuestas simulares a las anteriores son Italia, Malta, Suecia,Dubai, New York, San Francisco, Brasil, Chile, etc.

Page 13: INFORME PROYECTO FIN DE CARRERA

13

2.2.1.2 Uso de tecnologías GPS y GSM/GPRS.

Dado el volumen del tráfico vehicular resulta poco practico el cobro de peajes de formamanual o semiautomática, que implica una reducción de velocidad o detención de losvehículos al pasar por la zona de interés. Por ello aprovechando el auge de la tecnologíaGPS es posible implementar un cobro de peaje de forma inteligente y automática en lasautopistas [3]

En la actualidad los peajes electrónicos funcionan mediante comunicaciones dedicadas decorto alcance o DSRTs, sin embargo sistemas de posicionamiento como los GPS puedenreemplazar estos sistemas. Se describe entonces el flujo de trabajo que estos sistemaspueden tener y se discuten las ventajas y desventajas que tendría esta aplicación. [4] [5]Los sistemas de navegación por satélite abren la oportunidad a nuevas aplicaciones ymercados. Específicamente dentro del servicio geoestacionario de navegación sobrepuestaeuropea (EGNOS), se realiza el proyecto VeRT (Vehicular Remote Tolling) basándose enestas tecnologías, con especial atención a los aspectos de comunicación. [6] [7]

Para el rastreamiento de un vehículo se desarrolló un sistema que utiliza las tecnologíasGPS/GSM/GPRS y una aplicación Android, donde se puede realizar el seguimiento de unvehículo en un mapa proveído por Google Maps. [8] De forma independiente otro sistemasimilar se desarrolló para el monitoreo de vehículos de empresas o familiares, el cualademás notifica activamente de la velocidad del vehículo. Siendo accesible estainformación en Internet. [9] Otro sistema que realiza el rastreamiento de un vehículomediante el uso de tecnología GPS y GSM también fue desarrollado para operación global.[10] Estudios adicionales sobre la determinación del camino real seguido entre puntosidentificados se realizan buscando rutas de mínimo costo de tiempo, en lugar de mínimadistancia siendo la primera usualmente la mas acertada. [11]

2.2.2 Antecedentes locales.

“Cobros de congestión en ciudades colombianas”La Universidad de los Andes, en conjunto con la University College London, desarrollaronun estudio sobre los costos de congestión en ciudades colombianas, donde se propone unesquema de cobros aplicable a la ciudad de Bogotá. En este esquema los objetivos son:alcanzar un óptimo social; la maximización de ingresos para el administrador del sistema,aunque se advierte que esto conduce a alejarse del óptimo social; y transferir beneficios altransporte público y medios de transporte no motorizados, es decir, emplear los ingresosobtenidos para el mejoramiento de la infraestructura de estos medios de transporte.

En este estudio se proponen implementar cobros por ingresar a dos zonas de la ciudad queabarcan el centro de actividades principales de la economía, comercio y desarrollo de laciudad. La primera de estas zonas abarca desde la Av. Circumbalar hasta la Av. Caracas, ydesde la Cll. 26 hasta la Cll. 72. Con un área de 7.73 km² donde se realizan un total de1’566,000 viajes diarios en un día hábil típico, y donde la velocidad promedio del flujo esde 15.8km/h. La segunda zona abarca desde la Av. Circumbalar hasta la Cr. 30 y desde laCll. 6 hasta la Cll. 100. Con un área de 30.03 km² donde se realizan un total de 3’170,000viajes en un día hábil típico, y donde la velocidad promedio del flujo es de 16.3km/h. [2]

Page 14: INFORME PROYECTO FIN DE CARRERA

14

Estas zonas se presentan en la siguiente imagen. Los resultados se sintetizan también acontinuación

Figura 2. Zona 1 (Izquierda) y Zona 2 (derecha) de la implementación de los cobros decongestión. [2]

Tabla 4. Esquema de cobro por congestión por ingreso a la zona 1 y zona 2 [2]

Zona 1

Peaje ($)Costo porcongestión(MM$/día)

Perdida deefeciencia

(MM$/día)

Beneficio neto(MM$/día)

Cambio decongestión %

Velocidadpromedio

(km/h)

Recaudo diario(MM$/día)

Recaudo anual(MM$/año)

SituaciónActual

- [24,32] - - - 16 - -

Óptimo social [2600, 3100] - - [24, 32] [-19%, -26%] [20, 22] [101, 131] [30400, 39500]

Maximizaciónde ingresos

[4400, 7300] - [17, 47] [24, 32] [-47%, -48%] [25, 26] [124, 200] [37200, 60100]

Zona 2

SituaciónActual

- [62,84] - - - 16 - -

Óptimo social [2100, 2500] - - [62, 84] [-18%, -24%] [21, 23] [307, 397] [92100, 119000]

Maximizaciónde ingresos

[3900, 6600] - [35, 171] [62, 84] [-47%, -48%] [26, 27] [395, 655] [118500, 196600]

3 DEFINICIÓN Y ESPECIFICACIÓN DEL TRABAJO

3.1 Definición

3.1.1 Descripción

La solución que se propone realizar es un seguimiento de los vehículos mediante undispositivo en el vehículo, que registre las posiciones por las cuales este recorre la ciudad, ylas comunique mediante tecnología GSM/GPRS. Estos datos son transmitidos a un servidoren una estación base en el cual la información del recorrido del vehículo se traduce al cobro

Page 15: INFORME PROYECTO FIN DE CARRERA

15

por costo de congestión aplicable, esta información es luego comunicada al conductor víaemail o por consulta en la web.

Dado que este trabajo se realiza junto con Juan Camilo Dvera, en este proyecto de grado sedesarrolla el servidor que se encarga de recibir y procesar dichos datos; el dispositivo aimplementar en el vehículo es responsabilidad de Juan Camilo Dvera y constituye suproyecto de grado.

3.1.2 Diagrama de bloques.

El diagrama de bloques de la solución completa, y de la estación base se presentan en lassiguientes imágenes.

Figura 3. Diagrama de bloques del sistema.

Page 16: INFORME PROYECTO FIN DE CARRERA

16

Figura 4. Diagrama de bloques de la estación base.

3.2 Especificaciones

El servidor debe recibir información sobre la posición de los vehículos inalámbricamente. El servidor debe calcular el costo de congestión de cada vehículo a partir de sus posiciones

en el tiempo recolectadas. El servidor debe enviar reportes sobre el monto a pagar a los propietarios de los vehículos. La información del cobro debe poderse consultar en línea por los usuarios.

3.3 Restricciones

El servidor debe desarrollarse con recursos limitados, es decir, con el uso de un computadordoméstico y freeware.

No se deben adecuar redundancias para fallos en hardware, fallos en el suministro deenergía o seguridad informática.

Page 17: INFORME PROYECTO FIN DE CARRERA

17

3.4 Suposiciones

No se tiene limitaciones debido a infracciones de privacidad por el hecho de conocer laposición del vehículo, los datos del mismo, y los datos del conductor o propietario. Hayvoluntarios dispuestos a suministrar información para realizar las pruebas al sistema. Losusuarios o cualquiera con acceso al sistema no poseen intenciones de realizar alteracionesal sistema.

4 METODOLOGÍA DE TRABAJO

4.1 Búsqueda de información

Antes de iniciar con el trabajo en ingeniería se realizo la búsqueda de información sobre loscostos de congestión, lo que es conocido como Road Pricing y su implementación, conénfasis en el desarrollo de los mismos sobre la ciudad de Bogotá. Esta búsqueda se realizoutilizando herramientas como el IEE Explore y los recursos de biblioteca de la Universidadde los Andes, adicionalmente se buscaron en las principales noticieros y periódicosartículos que fuera relevantes al desarrollo de una posible implementación de costos decongestión o Road Pricing en Bogotá.

La información recolectada de periódicos y noticieros se descartó debido a la poca claridadde la información, bajo contenido, y contradicciones entre las fuentes (como los precios quese instaurarían y las zonas o vías en donde se aplicaría).

Diferentes artículos sobre la implementación de estos esquemas, o similares, y lastecnologías que son utilizadas o propuestas sirvieron como antecedentes para definir elesquema de funcionamiento del sistema.

Un estudio en particular realizado en conjunto por la Univerity College London y laUniversidad de los Andes en el 2013 sobre los costos de congestión en ciudadescolombianas, brindo la mejor y más completa fuente de información sobre el tema y es laprincipal fuente bibliográfica del proyecto. En este estudio se proponen además unas zonasde cobro con unos precios determinados para la ciudad de Bogotá, los cuales fueronescogidos para el desarrollo del proyecto.

Una vez conocidos los aspectos teóricos y antecedentes del proyecto se realizo la búsquedade información sobre el desarrollo de un servidor web, donde se encontraron diversosrecursos en internet para tal fin, donde con un costo, o con características impuestas olimitadas, se pueden montar. Adicionalmente se investigó como realizar esta tarea sinrequerir de estos servicios llevando al conocimiento de los servidores LAMP (LinuxApache Mysql PHP).

Dada la distribución gratuita de los elementos de software necesarios para montar unservidor LAMP, y la gran cantidad de información útil disponible en foros comoStackOverflow por parte de la comunidad de desarrolladores , se optó por usar este tipo de

Page 18: INFORME PROYECTO FIN DE CARRERA

18

servidores. Para el desarrollo se utilizo la librería libre para generar PDF en PHP fpdf [12],una función para enviar correos en PHP de distribución libre [13] y la clase libre paragenerar conexiones TCP [14].

4.2 Plan de trabajoJunto con la propuesta inicial del proyecto se entregó un cronograma donde se ilustran lasetapas del mismo y los periodos de tiempo donde se realizan. Este cronograma fuemodificado debido a cambios en el proyecto. Inicialmente se proponía realizar la prueba delsistema con un dispositivo desarrollado para tal fin en un vehículo, sin embargo endiscusiones con el asesor Fredy Segura se decidió emular dichos datos. Adicionalmentedado que fue requerido un periodo de aprendizaje de las herramientas necesarias para eldesarrollo fue necesario incluir una etapa dedicada a este fin.

El primer paso consiste en la búsqueda de tecnologías o herramientas para laimplementación del servidor. Una vez definido el uso de un servidor LAMP se procede a lacompra de un computador adecuado para este fin. Dadas los bajos requerimientos deprocesamiento y memoria del proyecto se adquirió un computador de segunda mano ycaracterísticas técnicas reducidas. Dado que no se tenia ninguna experiencia previa con lasherramientas utilizadas, fue necesario un periodo de aprendizaje. Este consistió en laejecución de diversas pruebas, cada una con un objetivo simple, como por ejemplo ilustrartexto en pantalla, ilustrar una imagen, crear links, o crear una base de datos, añadir datos,extraer datos de múltiples tablas.

Una vez concluida esta etapa se llenaron datos reales de conductores y vehículos en la basede datos. Se crearon las páginas web y se inicio el desarrollo de la parte funcional. Lassiguientes etapas consistieron en establecer la conexión TCP, y realizar el cálculo de lasfacturas. Finalmente se procedió a generar estas en PDF y realizar el envío de las mismasvía correo electrónico.

4.3 Diseño e implementación del servidorSe definió que se desarrollaría un servidor LAMP, por lo cual el primer paso fue conseguirun computador donde pudiera implementarse. Se tenían dos opciones: la primera era la deadquirir un computador económico para el proyecto, la segunda era implementar unamáquina virtual. Dado que se requería de una conexión permanente a internet para poderser accedido en cualquier momento para subir los datos, se optó por un computador deescritorio de bajo costo (RAM 1.9GiB, Procesador Inter Core 2 Duo 2GHz, DD 76.5GB).

Dicho equipo fue formateado y le fue instalado el sistema operativo Linux Ubuntu 14.04 de32 bits, el software de servidor web Apache HTTP Server, y el sistema de gestión de basesde datos relacional, multihilo, y multiusuario MySQL. El lenguaje de programaciónutilizado fue PHP.

Al utilizar Apache HTTP Server se crea una carpeta dentro del sistema de archivos delcomputador que será accesible en la web, es allí donde todas las páginas HTTP, los códigos

Page 19: INFORME PROYECTO FIN DE CARRERA

19

PHP del servidor y las facturas PDF generadas son almacenados. Esta estructura completa,con todos los archivos existentes, se encuentra en el apéndice 1. La estructura de directoriossimplificada implementada es la siguiente.

Figura 5. Estructura de directorios.

4.3.1 Página webAunque originalmente no se contempló la existencia de una página que pudieraconsultarse, se decidió implementar una página web donde se presente la siguienteinformación de interés para los usuarios:

1. Descripción de las zonas de cobro y sus costos.2. Información sobre los costos de congestión.3. Información sobre Road Pricing.4. Impactos positivos sobre la implementación de los costos de congestión.

Adicionalmente se implementaron dos herramientas: en la primera por medio de la placadel vehículo se puede consultar las facturaciones al costo por congestión. En la segunda sepueden ingresar nuevos conductores y vehículos al sistema.

En la página principal se encuentra la información de las zonas de cobro, enlaces a las otrastres páginas de información, y la herramienta para revisar la facturación del vehículo. Lasegunda herramienta se encuentra en una página diferente dentro del mismo dominio. En elapéndice 2 se ilustran las 4 diferentes páginas.

4.3.2 Base de datosLa base de datos del proyecto se desarrolla por medio de MySQL, que brinda la posibilidadde ser manipulado, tanto por la terminal de Linux como por código en lenguaje PHP.

Se crea la base de datos del proyecto con nombre costos_congestion. Dentro de esta se creauna estructura de tablas atómicas para guardar toda la información pertinente para el

Page 20: INFORME PROYECTO FIN DE CARRERA

20

funcionamiento del sistema. Se entiende por tabla atómica como aquella tabla que describeuna única entidad u objeto, cuyas columnas son características que lo describen, que noposee varias columnas que describen la misma característica y que sólo posee un únicovalor en cada casilla. Cada fila sera un nuevo ente u objeto del mismo tipo. Estas tablasdescriben a los conductores o propietarios del los vehículos, los vehículos, los datos oregistros de los dispositivos GPS en los vehículos y las facturas que se han generado. Laestructura de tablas se ilustra continuación.

Figura 6. Tablas de la base de datos.

Figura 7. Tabla de vehículos.

Figura 8. Tabla de registros GPS.

Page 21: INFORME PROYECTO FIN DE CARRERA

21

Figura 9. Tabla de facturas.

Figura 10. Tabla de conductores.

Se puede ver que cada conductor, vehículo y factura posee una característica deidentificación _id. Esta característica es un número único para cada conductor, cada facturay cada vehículo, que incrementa automáticamente cuando uno nuevo es añadido. Este _idsirve para relacionar las tablas entre si, con el objetivo de extraer información. Por ejemplo,saber cual conductor posee cual o cuales vehículos, que posiciones se han registrado delGPS en este o estos, y cuales facturas se le han generado.

El valor de fecha en la tabla de registros GPS tiene el siguiente formato: Año-Mes-Dia-Hora-Minuto-Segundo.

4.3.3 Manejo de la base de datosEl sistema tiene que guardar, generar y consultar datos de la base de datos, para ello secrean diferentes usuarios que tienen diferentes permisos. Adicional al usuario root que creóla base de datos y sus tablas existen otros cuatro usuarios: el usuario bill_maker, que seutiliza para generar las nuevas facturas; el usuario cc_office, que tiene el poder de añadirnuevos conductores y nuevos vehículos; el usuario cc_user, que puede consultar las facturasexistentes; y el usuario gps_logger, que tiene el poder de añadir nuevos datos de lasposiciones GPS que llegan al servidor.

Page 22: INFORME PROYECTO FIN DE CARRERA

22

Estos cuatro usuarios son utilizados para realizar todas las acciones en la base de datos.Para que las aplicaciones los utilicen, existen cuatro códigos en PHP fuera de los directoriosaccesibles por internet que al requerirlos permiten el acceso.

4.3.4 Comunicación con los dispositivos GPSEl servidor recibe los datos que recolectan los dispositivos en los vehículos, estos secomponen de un modulo GPS, un microcontrolador y un modulo GPRS. Mediante la red dedatos los dispositivos envían la información por internet, para esto se establece unaconexión TCP.

Mediante el uso del protocolo de control de transmisión TCP, que garantiza que los datosenviados sean recibidos sin errores y en el mismo orden que fueron transmitidos, se crea laconexión del dispositivo con el servidor. El dispositivo conoce la dirección IP del servidor yel puerto de la aplicación que recibe los datos (157.253.235.10:31337), la aplicación losrecibe y los guarda en la base de datos.

4.3.5 AplicacionesTodas las operaciones del servidor se ejecutan mediante diferentes aplicaciones o códigosen PHP que pueden correr en paralelo. Los códigos se encuentran en el apéndice 3.

Adición de nuevo conductor o vehículoCuando mediante la página web para este fin se indica la adición de un nuevo vehículo o unnuevo conductor, los datos ingresados en el formulario de dicha página son registrados enla base de datos mediante el usuario cc_ofice.

Adición de nuevo dato o registro GPSUtilizando la comunicación TCP se registra un dato nuevo en la base de datos, mediante elusuario gps_logger, cada vez que llega uno.

Emulador de registros GPSUtilizando el usuario gps_logger, se genera en la base de datos mil posiciones aleatorias enlongitud y latitud, en un rango de fechas determinado, dentro de la ciudad de Bogotá, paracada uno de los vehículos en la base de datos.

Calcular facturas, imprimir facturas y enviar facturasUtilizando el usuario bill_maker se toman los registros GPS en un rango de fechas, secalculan el número de entradas a las zonas de cobro, se calcula el valor de la factura y seguarda en la base de datos. Luego se genera un archivo PDF de la factura y se guarda endisco con la identificación de la misma. Finalmente se envía por correo electrónico alconductor asociado al vehículo la factura. Esto se realiza para todos los vehículos en unrango de fechas determinado (1 mes).

Page 23: INFORME PROYECTO FIN DE CARRERA

23

Los registros GPS se encuentran organizados en orden cronológico, por lo que la lectura deestos determina el camino que ha seguido el vehículo en el tiempo. De esta forma severifica el número de entradas a las zonas de cobro, no la parecencia del vehículo en esta.De este número de entradas y los precios definidos anteriormente se calcula el valor de lafactura.

Consultar informaciónEn la herramienta en la página principal para consultar información, cuando se ingresa laplaca de un vehículo, se busca a partir de esta, en la base de datos mediante el usuariocc_user, la información sobre el mismo y las facturas asociadas.

4.4 ValidaciónEl servidor se implemento dentro de las instalaciones de la Universidad de los Andes,conectado a la intranet, donde se pudo obtener visibilidad vía internet en el dominio server-thinkcentre-m57.uniandes.edu.co.

Las pruebas que se realizaron para validar el funcionamiento del sistema fueron:1. Acceder a las páginas web del servidor desde otro computador.2. Registrar nuevos conductores y vehículos mediante la herramienta creada para este

fin.3. Mediante un microcontrolador y un modulo GPRS hacer el envío de información al

servidor.4. Ejecutar la emulación de datos de entrada de GPS.5. Ejecutar el cálculo, generación y envío de las facturas.6. Solicitar información sobre un vehículo mediante la herramienta creada para tal fin.

5 RESULTADOS FINALES

Las páginas web creadas se presentan en el apéndice 2, se logro diseñarlas de modo quesean visualmente amigables para quien las consulta, con un uso intuitivo e informaciónclara. Adicionalmente se incluyo un mapa de la ciudad de Bogotá interactivo de Googlemaps, donde quien la consulta puede planear la ruta para evitar las zonas. Estas páginasfueron accedidas con éxito desde otro computador vía internet.

La conexión entre el servidor y el modulo GPRS de los dispositivos desarrollados por JuanCamilo Dvera se llevo a cabo con éxito, se pudo recibir información que fue enviada através de internet, por medio de la red de datos donde se transmitía la posición en latitud ylongitud, el número de identificación del vehículo, la fecha y hora.

La implementación de la base de datos se logró con éxito, registrando a 13 usuarios yvehículos, mas de 13000 datos de GPS y más de 52 facturas. Del mismo modo se logródesarrollar aplicaciones que acceden a ella y la modifican.

Page 24: INFORME PROYECTO FIN DE CARRERA

24

Se logró realizar el cálculo de las facturas a partir de los datos de las posiciones GPS. Lageneración de las mismas en PDF, con la información del conductor, del vehículo y elmismo logo que aparece en las páginas web. Se logró realizar el envío de estas facturascomo archivo adjunto al correo electrónico de los usuarios, con un mensaje que contiene lamisma información, y recibido desde el correo [email protected]. El únicoinconveniente es que el correo se recibe como spam, pero es comprensible por el origenreal del correo: [email protected]. Una factura deejemplo presenta en el apéndice 4.

5.1 Resultados del trabajo en conjunto.

Luego de hacer las correspondientes pruebas y validaciones de los objetivos planteados porcada uno en el proyecto de grado, se procede a realizar la validación del funcionamiento enconjunto (dispositivo-servidor). Para esto se configuró el módulo GPRS para que ladirección IP de destino del mensaje fuera la dirección asociada al servidor enfuncionamiento con un puerto específico. Así mismo la comunicación TCP se inició en elservidor a través del mismo puerto, “escuchando” a cualquier dispositivo que quiera enviarun mensaje por este medio.

Una vez realizado esto, es momento de ubicar el dispositivo en un vehículo, y salir a lascalles a probar su funcionamiento. El dispositivo envía datos continuamente, a la tasa quepermita la conexión, mientras se encuentra en movimiento. Simultáneamente en el servidorse registra la llegada de los mismos, uno a uno, como se ilustra a continuación:

Figura 10. Llegada de datos al servidor. (Hora, Latitud, Longitud, ID del vehículo)

Page 25: INFORME PROYECTO FIN DE CARRERA

25

6 CONCLUSIONES Y TRABAJOS FUTUROS

6.1 Conclusiones

De acuerdo con la hipótesis del proyecto, si es técnicamente posible desarrollar unsistema para el cobro de los costos de congestión en Bogotá, de forma inalámbricasin la instalación de nueva infraestructura en la ciudad.

Los servidores LAMP son una opción viable para la implementación de estesistema. Aunque sus cuatro componentes (Linux, Apache, MySQL, PHP) no fueroncreados para operar entre si, su compatibilidad y funcionalidad son perfectas (no sepresento ningún inconveniente en ningún momento del proyecto). Como es softwarede distribución gratuita, representa una ventaja eliminando los costos de elementosde software del proyecto. Destaca en su condición libre la disponibilidad del soportey aportes que son entregados por desarrolladores al rededor del mundo medianteinternet.

Este proyecto fue realizado para ser aplicado por entidades publicas como laalcaldía de Bogotá y el ministerio de transporte, sin embargo puede ser aplicadopara otras aplicaciones en las áreas de seguridad, vigilancia y monitoreo de flotas deempresas privadas, o vehículos particulares de un hogar.

Se logro implementar el sistema completo con un vehículo de prueba, el sistema deforma satisfactoria realizo la comunicación de la posición del vehículo donde sedetermino el cobro a realizar y se comunico esta información vía email.

6.2 Trabajo futuroSe consideran los siguientes trabajos futuros:

Hacer configurable mediante una interfaz las características de las zonas y costos. Automatizar completamente la operación del servidor. Incluir aspectos de seguridad al servidor, puesto que en las suposiciones se

especifico que no se asumía ningún tipo de ataque al mismo, ni accionesmalintencionadas por parte de terceros.

Se podría desarrollar de forma flexible y modular para utilizarse en diferentesformas según la necesidad, abriendo la posibilidad de nuevas aplicaciones.

REFERENCIAS[1] Indicador NVP (Núemro de Vehpiculos Particulares). Observatorio ambiental de Bogotá. Recuperado de: http://oab.ambientebogota.gov.co/es/indicadores?id=272[2] N. Tyler et al. Cobros de congestión en ciudades Colombianas, University College London-Universidad de los Andes. Abril de 2013.[3] D. Ren. Research on Intelligent Road Pricing System Based on GPS/GIS Integrated Technology.[4] S. Lu. Design of Electronic Toll Collection System based on Global Positioning System Technique.2009[5] S. Lu. Electronic Toll Collection System bases on Global Positioning System Technology. 2010.[6] D. Teotino. System Architecture of the Vehicular Remote Tolling (VeRT) Project.[7] Guoqiang Mao. Wireless sensor network localization techniques. School of Electrical and InformationEngineering [8] S. Lee. Design and Implementation of Vehicle Tracking System Usin GPS/GSM/GPRS Technologyand Smartphone Application. 2014

Page 26: INFORME PROYECTO FIN DE CARRERA

26

[9] I. Almomani. Ubiquitous GPS Vehicle Tracking and Management System. 2011.[10] P. Hoang. Development of Vehicle Tracking System using GPS and GSM mofem. 2013.[11] Y. Chen. A New Method for GPS-Based Urban Vehicle Tracking Using Pareto Frontier ans FuzzyComprehensive Judgment.[12] FPDF Library, disponible en www.fpdf.org[13] Fución en PHP para el envio de correos con adjuntos, disponible en

stackoverflow.com/questions/4586557/php-send-email-with-attachment[14] SocketServer.class.php, clase para establecer conecciónes TCP en PHP, disponible en

http://www.phpclasses.org/browse/file/31975.html

Page 27: INFORME PROYECTO FIN DE CARRERA

Apéndice 1. estructura de archivos del servidor.

A continuación se presenta la estructura de archivos del servidor.

svr@server-ThinkCentre-M57:~/Documents/TCPconection$ tree.├── conect.php├── conect.php~└── SocketServer.class.php

svr@server-ThinkCentre-M57:/var/www$ tree.├── html│ ├── acces.html~│ ├── add_vehiculo.php~│ ├── admin│ │ ├── admin_page.html│ │ └── admin_page.html~│ ├── admin_page.html~│ ├── CC.html~│ ├── facturas│ │ ├── 22.pdf│ │ ├── 23.pdf│ │ ├── 24.pdf│ │ ├── 25.pdf│ │ ├── 26.pdf│ │ ├── 27.pdf│ │ ├── 28.pdf│ │ ├── 29.pdf│ │ ├── 30.pdf│ │ ├── 31.pdf│ │ ├── 32.pdf│ │ ├── 33.pdf│ │ ├── 34.pdf│ │ ├── 35.pdf│ │ ├── 36.pdf│ │ ├── 37.pdf│ │ ├── 38.pdf│ │ ├── 39.pdf│ │ ├── 40.pdf│ │ ├── 41.pdf│ │ ├── 42.pdf│ │ ├── 43.pdf│ │ ├── 44.pdf│ │ ├── 45.pdf│ │ ├── 46.pdf│ │ ├── 47.pdf│ │ ├── 48.pdf│ │ ├── 49.pdf│ │ ├── 50.pdf│ │ ├── 51.pdf│ │ ├── 52.pdf│ │ ├── 53.pdf│ │ ├── 54.pdf│ │ ├── 55.pdf│ │ ├── 56.pdf│ │ ├── 57.pdf│ │ ├── 58.pdf│ │ ├── 59.pdf│ │ ├── 60.pdf│ │ ├── 61.pdf│ │ ├── 62.pdf│ │ ├── 63.pdf│ │ ├── 64.pdf│ │ ├── 65.pdf

Page 28: INFORME PROYECTO FIN DE CARRERA

│ │ ├── 66.pdf│ │ ├── 67.pdf│ │ ├── 68.pdf│ │ ├── 69.pdf│ │ └── 70.pdf│ ├── get_car_info.php~│ ├── images│ │ ├── i1.jpg│ │ └── z1z2.jpg│ ├── index.html~│ ├── index.php│ ├── index.php~│ ├── infoPages│ │ ├── CC.html│ │ ├── metas.html│ │ └── RP.html│ ├── metas.html~│ ├── php│ │ ├── add_conductor.php│ │ ├── add_conductor.php~│ │ ├── add_vehiculo.php│ │ ├── add_vehiculo.php~│ │ ├── calculate_bills.php│ │ ├── calculate_bills.php~│ │ ├── dopdf│ │ │ ├── fpdf17│ │ │ │ └── fpdf.php│ │ │ └── logo.png│ │ ├── get_car_info.php│ │ ├── get_car_info.php~│ │ ├── GPSemulator.php│ │ ├── GPSemulator.php~│ │ ├── mail.php│ │ ├── mail.php~│ │ ├── phptest.php│ │ └── phptest.php~│ ├── phptest.php~│ └── RP.html~├── mysqli_connect_bill_maker.php├── mysqli_connect_bill_maker.php~├── mysqli_connect_cc_ofice.php├── mysqli_connect_cc_user.php├── mysqli_connect_cc_user.php~├── mysqli_connect_gps_logger.php├── mysqli_connect_gps_logger.php~└── mysqli_connect.php~

Page 29: INFORME PROYECTO FIN DE CARRERA

Apéndice 2. Páginas web implementadas.

• Página principal y herramienta de consulta.

Page 30: INFORME PROYECTO FIN DE CARRERA

• Página de información 1.

• Página de información 2.

• Página de información 3.

Page 31: INFORME PROYECTO FIN DE CARRERA

• Herramienta para añadir un nuevo conductor o vehículo.

Page 32: INFORME PROYECTO FIN DE CARRERA

Apéndice 3. Códigos desarrollados.

• Index.php

<!DOCTYPE html><html><head><META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8"/><!--create styles of content--><style>#header {

background-color:lightblue;color:white;text-align:center;padding:5px;

}#nav {

line-height:30px;background-color:lightgray;width:235px;float:right;padding:5px;

}#section {

width:900px;float:left;padding:10px;

}#footer {

background-color:black;color:white;clear:both;text-align:center;padding:5px;

}</style></head>

<body><!-- Header of the web page --><div id="header">

<table><tc>

<th> <h1 style="font-size:300%">CCB</h1> </th><td> <p style="font-size:90%">Cobros por Congestión Bogotá</p> </td>

</tc></table>

</div><!-- navigation panel --><div id="nav">

<hr><!-- input form for chek database by placa --><form action="http://localhost/php/get_car_info.php" method = "post">

<h3 style="color:blue"> Consulte el costo a cancelar </h3><p>Placa:<br><input type="text" name="placa"><input type="submit" name = "consulta" value="Consultar"><br></p>

</form><hr><!-- links to interesting information --><a href="/infoPages/CC.html" target="_blank">Que son los costos por congestión?</a> <br><a href="/infoPages/RP.html" target="_blank">Que es Road Pricing?</a> <br><a href="/infoPages/metas.html" target="_blank">Que se espera al aplicar los cobros por congestión?</a><hr>

</div>

Page 33: INFORME PROYECTO FIN DE CARRERA

<!-- main content --><table>

<tr><td>

<div id="section"><hr><h1> Zonas de cobro de congestión </h1>

<iframe src="https://www.google.com/maps/embed?pb=!1m14!1m12!1m3!1d31813.726735203934!2d-74.07428414650813!3d4.644689856808591!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!5e0!3m2!1ses!2s!4v1430286891407" width="600" height="450" frameborder="0" style="border:0"></iframe>

<!--img src="/images/z1z2.jpg" width="900" height="450"--><p> La primera deestas zonas abarca desde la Av. Circunvalar hasta la Av. Caracas,y desde la Cll. 26 hasta la Cll. 72. Con un área de 7.73 km2 dondela tasa aplicada por ingresar es de $3,750.</p> <p> La segundazona abarca desde la Av. Circunvalar hasta la Cr. 30 y desde la Cll. 6 hasta la Cll. 100. Con un área de 30.03 km2 donde la tasa aplicadapor ingresar es de $3,200. </p>

</div></td>

</tr><tr>

<td><div id="section">

<img src="/images/i1.jpg" width="900" height="450"><hr>

</div></td>

</tr></table><!-- footer --><div id="footer">

<p style="font-size:50%"> Universidad de los Andes <br> facultad de ingeníera<br> 2015-01 <br> Projecto de grado # xxxx </p>

</div>

</body></html>

• admin_page.html

<!DOCTYPE html><html><head><META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8"/><!-- create styles of content --><style>#header {

background-color:lightblue;color:white;text-align:center;padding:5px;

}#nav {

line-height:30px;background-color:lightgray;width:235px;float:right;padding:5px;

}#section {

float:left;padding:10px;

}#footer {

background-color:black;color:white;clear:both;text-align:center;

Page 34: INFORME PROYECTO FIN DE CARRERA

padding:5px; }</style></head><!-- Header of the web page --><body><div id="header">

<table><tc>

<th> <h1 style="font-size:300%">CCB</h1> </th><td> <p style="font-size:90%">Cobros por Congestion Bogota</p> </td>

</tc></table>

</div><!-- main content --><div id="section">

<hr><table style="width:100%">

<tr><th > <h2 style="color:blue"> Añadir conductor </h3> </th><th > <h2 style="color:blue"> Añadir vehículo </h3> </th>

</tr><tr>

<td style="padding: 15px"><p>

<b>Ejemplo: </b><br><br> <b>Nombre:</b> Juan <br> <b>Apellido:</b> Ramirez <br> <b>Cedula:</b> 1010216233 <br> <b>Email:</b> [email protected] <br><b>Dirección:</b> cll123 #123-123 <br> <b>Celular:</b> 310 777 7777 <br> <b>Sexo:</b> M <br>

</p></td><td style="padding: 15px">

<p><b>Ejemplo: </b><br><br> <b>Placa:</b> aaa000 <br> <b>Marca:</b> chevrolet <br> <b>Modelo:</b> corsa 2010 <br> <b>Color:</b> azul <br> <b>Cilindraje:</b> 1600

<br> <b>Cedula:</b> 1010317243 <br>

</p></td>

</tr><tr>

<td style="padding: 25px"><!-- input form for adding a new conductor --><form action="http://localhost/php/add_conductor.php" method = "post">

<p>Nombre:<br><input type="text" name="Nombre"><br><br></p><p>Apellido:<br><input type="text" name="Apellido"><br><br></p><p>Cedula:<br><input type="text" name="Cedula"><br><br></p><p>Email:<br><input type="text" name="Email"><br><br></p><p>Dirección:<br><input type="text" name="Direccion"><br><br></p><p>Telefono:<br><input type="text" name="Telefono"><br><br></p><p>Celular:<br><input type="text" name="Celular"><br><br></p>

Page 35: INFORME PROYECTO FIN DE CARRERA

<p>Sexo:<br><input type="radio" name="Sexo" value="M" checked>M<br><input type="radio" name="Sexo" value="F">F<br></p><p><input type="submit" name = "add_conductor"

value="Añadir conductor"></p>

</form></td><td style="padding: 25px">

<!-- input form for adding a new vehiculo --><form action="http://localhost/php/add_vehiculo.php" method = "post">

<p>Placa:<br><input type="text" name="placa"><br><br></p><p>Marca:<br><input type="text" name="marca"><br><br></p><p>Modelo:<br><input type="text" name="modelo"><br><br></p><p>Color:<br><input type="text" name="color"><br><br></p><p>Cilindraje (cm cuadrados):<br><input type="text" name="cilindraje"><br><br></p><p>Cedula del propietario:<br><input type="text" name="cedula"><br><br></p><p><input type="submit" name = "add_car" value="Añadir vehículo"><br><br><br><br><br><br><br><br><br></p>

</form></td>

</tr></table>

</div><!-- footer --><div id="footer"><p style="font-size:50%"> Universidad de los Andes <br> facultad de ingenieria <br> 2015-01 <br> Projecto de grado #xxxx </p></div>

</body></html>

• CC.html

<!DOCTYPE html><html><head><META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8"/><!--create styles of content--><style>#header {

background-color:lightblue;color:white;text-align:center;padding:5px;

}

Page 36: INFORME PROYECTO FIN DE CARRERA

#nav {line-height:30px;background-color:lightgray;width:235px;float:right;padding:5px;

}#section {

float:left;padding:10px;

}#footer {

background-color:black;color:white;clear:both;text-align:center;padding:5px;

}</style></head>

<body><!-- Header of the web page --><div id="header">

<table><tc>

<th> <h1 style="font-size:300%">CCB</h1> </th><td> <p style="font-size:90%">Cobros por Congestion Bogota</p> </td>

</tc></table>

</div><!-- main content --><div id="section">

<h1> Cobros de congestión </h1><p> La congestión vehicular se refiere a la capacidad de unainfraestructura vial y la cantidad de vehículos que desean transitarpor ellas. Al presentarse un incremento de la cantidad de vehículosque transitan simultáneamente se presenta una reducción en lavelocidad a la cual estos pueden transitar. Esta congestión le genera un costo a los usuarios que se refleja principalmente como costo monetario y costo de tiempo.El cobro del costo por congestion es una herramienta económica que sirve para gestionarla demanda por el vehículo privado, reduciendo la cantidad de vehicuos en la infraestructura vial. </p>

</div><!-- footer --><div id="footer">

<p style="font-size:50%"> Universidad de los Andes <br> facultad de ingenieria<br> 2015-01 <br> Projecto de grado # xxxx </p>

</div>

</body></html>

• Metas.html

<!DOCTYPE html><html><head><META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8"/><style>#header { background-color:lightblue; color:white; text-align:center; padding:5px;}#nav { line-height:30px; background-color:lightgray; width:235px; float:right; padding:5px;

Page 37: INFORME PROYECTO FIN DE CARRERA

}#section { float:left; padding:10px; }#footer { background-color:black; color:white; clear:both; text-align:center; padding:5px; }</style></head>

<body><div id="header"> <table> <tc> <th> <h1 style="font-size:300%">CCB</h1> </th> <td> <p style="font-size:90%">Cobros por Congestion Bogota</p> </td> </table></div>

<div id="section"> <h1> Impactos del cobro del costo por congestión </h1> <p> La implementación de un cobro de costos de congestión puede tenerimpactos positivos para los usuarios, el medio ambiente,los servicios de transporte públicos, y la economía de la ciudad, entreotros. A continuación se enlistan los principales: <ul> <li><b> Bienestar de los usuarios:</b> <br>Se mejora el disfrute del espacio publico, la salud mental de losconductores es afectada positivamente por la reducción de lacongestión y se motiva el uso de vehículos no motorizados(bicicletas) mejorando la salud física. </li> <li><b> Equidad:</b> <br>Los usuarios de vehículos particulares ahora responden por el costoque generan a la comunidad por transitar, también se generanmenores tiempos de viaje tanto para vehículos particulares comopara vehículos de transporte publico.</li> <li><b> Ambiente:</b><br>Se genera una reducción en las emiciones de gases de invernaderocomo el CO2, y se reduce la contaminación auditiva.</li> <li><b> Confiabilidad:</b><br>Se genera un aumento en la confiabilidad de los tiempos de viaje devehículos particulares y de transporte publico.</li> <li><b> Accidentalidad:</b><br>Al reducir el numero de vehículos en las vías se obtendrá una menorfrecuencia de accidentes.</li> <li><b> Infraestructura:</b><br>Se genera un uso mas eficiente de la infraestructura vial, por que segenera menor desgaste y se reduce el mantenimiento. <li><b> Patrones de viaje:</b><br>Se genera una tendencia hacia el uso de los sistemas de transportepublico y métodos alternativos como la bicicleta, los patrones de viajede los usuarios cambian reduciendo la congestión en las horas pico,además los conductores crean conciencia de realizar diversospropósitos en un solo viaje siendo mas eficientes.</li> </p></div>

<div id="footer"> <p style="font-size:50%"> Universidad de los Andes <br> facultad de ingenieria <br> 2015-01 <br> Projecto de grado #xxxx </p></div>

</body></html>

• RP.html

<!DOCTYPE html>

Page 38: INFORME PROYECTO FIN DE CARRERA

<html><head><META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8"/><style>#header { background-color:lightblue; color:white; text-align:center; padding:5px;}#nav { line-height:30px; background-color:lightgray; width:235px; float:right; padding:5px; }#section { float:left; padding:10px; }#footer { background-color:black; color:white; clear:both; text-align:center; padding:5px; }</style></head>

<body><div id="header"> <table> <tc> <th> <h1 style="font-size:300%">CCB</h1> </th> <td> <p style="font-size:90%">Cobros por Congestion Bogota</p> </td> </table></div>

<div id="section"> <h1> Road Pricing o tarificación vial</h1> <p> La tarificación vial son los cargos directos a los usuarios por el uso de carreteras, como los peajes dentro de laciudad, destinadas a desalentar el uso de algunos tipos de vehículos, fuentes de combustible o vehículos máscontaminantes. Las ganancias podrían ser usadas principalmente para la generación de ingresos, por lo general para lafinanciación de infraestructuras de carreteras, o como una herramienta de gestión de la demanda de transporte parareducir los viajes en las horas pico y la congestión del tráfico asociado, o efectos ambientales negativos asociados con losviajes por carretera, tales como la contaminación del aire, las emisiones de gases de efecto invernadero, el ruido y losaccidentes de tráfico. </p></div>

<div id="footer"> <p style="font-size:50%"> Universidad de los Andes <br> facultad de ingenieria <br> 2015-01 <br> Projecto de grado #xxxx </p></div>

</body></html>

• add_conductor.php

<html><head><META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8"/><head><!--create styles of content--><style>#header {

background-color:lightblue;color:white;text-align:center;padding:5px;

Page 39: INFORME PROYECTO FIN DE CARRERA

}#footer {

background-color:black;color:white;clear:both;text-align:center;padding:5px;

}</style></head><body><!-- Header of the web page --><div id="header">

<table><tc>

<th> <h1 style="font-size:300%">CCB</h1> </th><td> <p style="font-size:90%">Cobros por Congestión Bogotá</p> </td>

</tc></table>

</div><div><?php// check for button pressedif(isset($_POST['add_conductor'])){

// get entered data, if not create a record of it for all inputs$data_missing = array();if(empty($_POST['Nombre'])){

$data_missing[]='Nombre';} else {

$Nombre = trim($_POST['Nombre']);}if(empty($_POST['Apellido'])){

$data_missing[]='Apellido';} else {

$Apellido = trim($_POST['Apellido']);}if(empty($_POST['Cedula'])){

$data_missing[]='Cedula';} else {

$Cedula = trim($_POST['Cedula']);}if(empty($_POST['Email'])){

$data_missing[]='Email';} else {

$Email = trim($_POST['Email']);}if(empty($_POST['Direccion'])){

$data_missing[]='Direccion';} else {

$Direccion = trim($_POST['Direccion']);}if(empty($_POST['Telefono'])){

$data_missing[]='Telefono';} else {

$Telefono = trim($_POST['Telefono']);}if(empty($_POST['Celular'])){

$data_missing[]='Celular';} else {

$Celular = trim($_POST['Celular']);}if(empty($_POST['Sexo'])){

$data_missing[]='Sexo';} else {

$Sexo = trim($_POST['Sexo']);}//if all data was entered continueif(empty($data_missing)){

// conect to de database as the ofice userrequire_once('../../mysqli_connect_cc_ofice.php');// ejecute database insertion with the entered values$query = "insert into conductores values(?,?,?,?,?,?,?,?,null)";

Page 40: INFORME PROYECTO FIN DE CARRERA

$stmt = mysqli_prepare($dbc,$query);mysqli_stmt_bind_param($stmt,"ssssssss",$Nombre,$Apellido,$Cedula,

$Email,$Direccion,$Telefono,$Celular,$Sexo);mysqli_stmt_execute($stmt);$affected_rows = mysqli_stmt_affected_rows($stmt);// inform if the insertion succeededif($affected_rows ==1){

echo "Conductor añadido satisfactoriamente! <br>";} else {

echo "Ups!, ha ocurrido un error! <br>";}// close insert statementmysqli_stmt_close($stmt);

// close the database conectionmysqli_close($dbc);

}// if not all data was entered inform it else{

echo $data_missing[0];echo "<br><br> Error, ingrese todos los datos correctamente <br><br><b>

Ejemplo: </b><br><br> <b>Nombre:</b> Juan <br> <b>Apellido:</b> Ramirez <br> <b>Cedula:</b> 1010216233 <br> <b>Email:</b> [email protected] <br><b>Dirección:</b> cll123 #123-123 <br> <b>Celular:</b> 310 777 7777 <br> <b>Sexo:</b> M <br>";

}}?><a href="/admin/admin_page.html" target="_blank">Regresar</a> <br></div><!-- footer --><div id="footer">

<p style="font-size:50%"> Universidad de los Andes <br> facultad de ingeníera<br> 2015-01 <br> Projecto de grado # xxxx </p>

</div></body></html>

• add_vehiculo.php

<html><head><META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8"/><head><!--create styles of content--><style>#header {

background-color:lightblue;color:white;text-align:center;padding:5px;

}#footer {

background-color:black;color:white;clear:both;text-align:center;padding:5px;

}</style></head><body><!-- Header of the web page --><div id="header">

<table><tc>

<th> <h1 style="font-size:300%">CCB</h1> </th><td> <p style="font-size:90%">Cobros por Congestión Bogotá</p> </td>

</tc></table>

</div><div>

Page 41: INFORME PROYECTO FIN DE CARRERA

<?php// check for button pressedif(isset($_POST['add_car'])){

// get entered data, if not create a record of it for all inputs$data_missing = array();if(empty($_POST['placa'])){

$data_missing[]='placa';} else {

$placa = trim($_POST['placa']);}if(empty($_POST['marca'])){

$data_missing[]='marca';} else {

$marca = trim($_POST['marca']);}if(empty($_POST['modelo'])){

$data_missing[]='modelo';} else {

$modelo = trim($_POST['modelo']);}if(empty($_POST['color'])){

$data_missing[]='color';} else {

$color = trim($_POST['color']);}if(empty($_POST['cilindraje'])){

$data_missing[]='cilindraje';} else {

$cilindraje = trim($_POST['cilindraje']);}if(empty($_POST['cedula'])){

$data_missing[]='cedula';} else {

$cedula = trim($_POST['cedula']);}//if all data was entered continueif(empty($data_missing)){

// conect to de database as the ofice userrequire_once('../../mysqli_connect_cc_ofice.php');// ejecute database query to get the conductor_id of the entered cedula$query = "select conductor_id from conductores where cedula =";$query.="'";$query.=$cedula;$query.="'";$response = @mysqli_query($dbc,$query);if($response){

$row=mysqli_fetch_array($response);$idAns= ' '. $row['conductor_id'] .' ';$idAns= trim($idAns);// ejecute database insertion with the entered values$query2 = "insert into vehiculos values(?,?,?,?,?,?,null)";$stmt = mysqli_prepare($dbc,$query2);mysqli_stmt_bind_param($stmt,"ssssii",$placa,$marca,$modelo,

$color,$cilindraje,$idAns);mysqli_stmt_execute($stmt);$affected_rows = mysqli_stmt_affected_rows($stmt);// inform if the insertion succeededif($affected_rows ==1){

echo "Vehiculo añadido satisfactoriamente! <br>";} else {

echo "Ups!, a ocurrido un error! <br>";}// close insert statementmysqli_stmt_close($stmt);

} // if the original query failed infor lack of conectionelse {

echo "Ups!, no hay respuesta del servidor! <br>";}// close the database conectionmysqli_close($dbc);

}

Page 42: INFORME PROYECTO FIN DE CARRERA

// if not all data was entered inform it else{

echo "<br><br> Error, ingrese todos los datos correctamente <br><br><b>Ejemplo: </b><br><br> <b>Placa:</b> aaa000 <br> <b>Marca:</b> chevrolet <br> <b>Modelo:</b> corsa 2010 <br> <b>Color:</b> azul <br> <b>Cilindraje:</b> 1600

<br> <b>Cedula:</b> 1010317243 <br>";

}}?><a href="/admin/admin_page.html" target="_blank">Regresar</a> <br></div><!-- footer --><div id="footer">

<p style="font-size:50%"> Universidad de los Andes <br> facultad de ingeníera<br> 2015-01 <br> Projecto de grado # xxxx </p>

</div></body></html>

• calculate_bills.php

<?phprequire('mail.php');require('../../mysqli_connect_bill_maker.php');require('dopdf/fpdf17/fpdf.php');// modify fpdf class to create a header and a footerclass PDF extends FPDF{

// Page headerfunction Header($i){

// Logo$this->Image('dopdf/logo.png',10,10,71);// Arial bold 15$this->SetFont('Arial','B',25);// Title$this->Cell(190,27,'Factura de cobro'.$i,1,1,'R');// Line break$this->Ln(20);

}

// Page footerfunction Footer(){

// Position at 1.5 cm from bottom$this->SetY(-15);// Arial italic 8$this->SetFont('Arial','I',8);// Page number$this->Cell(0,10,'CCB, Bogota D.C. Universidad de los Andes. Pagina '.$this->PageNo().'/{nb}',T,0,'C');

}}$fecha_ini = '2015-03-01';$fecha_fin = '2015-03-31';$vehiculo_id;$min_v;$max_v;$query;$response;// ask for user's id$query = "select min(vehiculo_id),max(vehiculo_id) from vehiculos;";$response = @mysqli_query($dbc,$query);if($response){////////////////////////////////////////////////////////////////////////////////////////////////////// while($row =mysqli_fetch_array($response)){

$max_v = $row['max(vehiculo_id)'];$min_v = $row['min(vehiculo_id)'];

}for($vehiculo_id = $min_v;$vehiculo_id <=$max_v;$vehiculo_id ++){///////////////////////////////////////////

// ask for gps data from databases$query = "select latitud,longitud from registros_gps where vehiculo_id=$vehiculo_id and fecha between

'$fecha_ini' and '$fecha_fin' order by fecha desc;";$response = @mysqli_query($dbc,$query);

Page 43: INFORME PROYECTO FIN DE CARRERA

if($response){//////////////////////////////////////////////////////////////////////////////////////$latitud_data = array();$longitud_data = array();// get the data in a vectorwhile($row = mysqli_fetch_array($response)){

$latitud_data[] = $row['latitud'];$longitud_data[] = $row['longitud'];

}

$inzona2=false; // define if inside or outside of zone 2$inzona1=false; // define if inside or outside of zone 1$crucezona1=0; // counter for the times an entrance ocours$crucezona2=0; // counter for the times an entrance ocours// check in the data to see if it enters to the zone 1 and 2for($i=0;$i<count($latitud_data);$i++){/////////////////////////////////////////////////////

$lat = $latitud_data[$i];$lon = $longitud_data[$i];if(((4.663019>$lat and $lat>4.591198)and(74.075381>$lon and $lon>74.057932))or((4.612885>$lat and $lat>4.602428)and(74.091706>$lon and $lon>74.076899))or((4.681331>$lat and $lat>4.655069)and(74.052740>$lon and $lon>74.039865))or((4.673547>$lat and $lat>4.655759)and(74.066472>$lon and $lon>74.053088))){

// if it was aoutside before, count the entranceif($inzona2 == false){

$crucezona2++;$inzona2=true;

}} else{

$inzona2 = false;}if(((4.654390>$lat and $lat>4.613069)and(74.061242>$lon and $lon>74.047165))or((4.649086>$lat and $lat>4.608294)and(74.064417>$lon and $lon>74.059079))or((4.643525>$lat and $lat>4.610396)and(74.065361>$lon and $lon>74.064482))or((4.631933>$lat and $lat>4.611337)and(74.067357>$lon and $lon>74.063988))or((4.627164>$lat and $lat>4.612064)and(74.068194>$lon and $lon>74.067636))or((4.619978>$lat and $lat>4.612492)and(74.069868>$lon and $lon>74.068237))){

// if it was aoutside before, count the entranceif($inzona1 == false){

$crucezona1++;$inzona1=true;

}} else{

$inzona1 = false;}

}///////////////////////////////////////////////////////////////////////////////////////////// calculate the cash$plata1=$crucezona1*3750;$plata2=$crucezona2*3200;$total=$plata1+$plata2;

// get car info and driver ID from databases$query="select conductor_id,placa,marca,modelo,color from vehiculos where

vehiculo_id=$vehiculo_id;";$response = @mysqli_query($dbc,$query);if($response){//////////////////////////////////////////////////////////////////////////////

$row=mysqli_fetch_array($response);$idAns=' '.$row['conductor_id'].' ';$placa=' '.$row['placa'].' ';$marca=' '.$row['marca'].' ';$modelo=' '.$row['modelo'].' ';$color=' '.$row['color'].' ';$idAns=trim($idAns);

// get driver info from databases$query="select nombre,apellido,cedula,email,direccion,telefono,celular from

conductores where conductor_id= $idAns;";$response = @mysqli_query($dbc,$query);if($response){//////////////////////////////////////////////////////////////////////

$row=mysqli_fetch_array($response);$nombre=' '.$row['nombre'].' ';$apellido=' '.$row['apellido'].' ';$cedula=' '.$row['cedula'].' ';$email=' '.$row['email'].' ';

Page 44: INFORME PROYECTO FIN DE CARRERA

$direccion=' '.$row['direccion'].' ';$telefono=' '.$row['telefono'].' ';$celular=' '.$row['celular'].' ';$conductor = $nombre.' '.$apellido;

// create the new bill in databases$query="insert into facturas values(?,?,?,?,?,null);";$stmt=mysqli_prepare($dbc,$query);mysqli_stmt_bind_param($stmt,"iissd",$idAns,$vehiculo_id,$fecha_ini,

$fecha_fin,$total);mysqli_stmt_execute($stmt);$affected_rows=mysqli_stmt_affected_rows($stmt);if($affected_rows==1){

echo "factura anadida a base de datos<br>";} else{

echo "Ups<br>";}mysqli_stmt_close($stmt);

// create bill in pdf$query = "select max(factura_id) from facturas;";$response = @mysqli_query($dbc,$query);if($response){//////////////////////////////////////////////////////////////

$row = mysqli_fetch_array($response);$bill_num = $row['max(factura_id)'];////////////////////////////////////////////////////////////////////

// Instanciation of inherited class$pdf = new PDF('L','mm','A5');$pdf->AliasNbPages();$pdf->AddPage();// user data$pdf->SetFont('Times','',15);$pdf->Cell(150,10,'Factura #'.$bill_num,B);$pdf->Ln();$pdf->SetFont('Times','',20);$pdf->Cell(150,10,'Datos del usuario');$pdf->Ln();$pdf->SetFont('Times','',15);$pdf->Cell(150,10,'Periodo (AA-MM-DD): '.$fecha_ini.' a '.

$fecha_fin,LTR,0);$pdf->Ln(5);$pdf->Cell(150,10,'Conductor: '.$conductor.' c.c. '.$cedula,0,0);$pdf->Ln(5);$pdf->Cell(150,10,'Vehiculo de placa: '.$placa,LBR,0);$pdf->Ln();// bill sumary$pdf->SetFont('Times','',20);$pdf->Cell(80,10,'Descripcion');$pdf->Cell(70,10,'Importe total');$pdf->Ln();$pdf->SetFont('Times','',12);$pdf->Cell(80,10,'Ingreso a Zona1 / Zona2: $3750 / $3200 cu',1,0);$pdf->SetFont('Times','',20);$pdf->SetTextColor(255,0,0);$pdf->Cell(70,10,'$'.$total,1,0,'C');$pdf->SetTextColor(0,0,0);$pdf->Ln();$pdf->Output('/var/www/html/facturas/'.$bill_num.'.pdf','F');//////////////////////////////////////////////////////////////////////send email with the pdf bill$subject = "Factura cobros por congestion";$message = "Cordial saludo \n\n El conductor(a) ".$conductor." con

cedula ".$cedula." y automovil de placa ".$placa."ha generado un costo por congestion de $".$total." entre las siguientesfechas: ".$fecha_ini." a ".$fecha_fin."\n\nCCB";

$file = '/var/www/html/facturas/'.$bill_num.'.pdf';$sended = mail_attachment($email, $subject,

$message,"[email protected]", $file);if($sended){

echo "correo enviado<br>";}else

Page 45: INFORME PROYECTO FIN DE CARRERA

{echo "no se logro enviar correo<br>";

}sleep(30);

}/////////////////////////////////////////////////////////////////////////// else{

echo "no se pudo acceder a la factura en base de datos y no se creoen pdf: <br>"; echo mysqli_error($dbc);

}}///////////////////////////////////////////////////////////////////////////////////

else{echo "no se pudo extraer datos del conductor de la base de datos; <br> ";echo mysqli_error($dbc);

}}///////////////////////////////////////////////////////////////////////////////////////////

else{echo "no se pudo extraer datos de ID de la base de datos; <br> ";echo mysqli_error($dbc);

}}///////////////////////////////////////////////////////////////////////////////////////////////////// if original query failselse {

echo "no se pudo extraer datos gps de la base de datos; <br> ";echo mysqli_error($dbc);

}}///////////////////////////////////////////////////////////////////////////////////////////////////////////

}///////////////////////////////////////////////////////////////////////////////////////////////////////////////////else {

echo "no se pudo extraer ID's de la base de datos; <br> ";echo mysqli_error($dbc);

}mysqli_close($dbc);echo "sql closed ok<br>";?>

• get_car_info.php

<?php

if(isset($_POST['consulta'])){

$data_missing = array();if(empty($_POST['placa'])){

$data_missing[] = 'placa';} else {

$placa = trim($_POST['placa']);}

if(empty($data_missing)){

require_once('../../mysqli_connect_cc_user.php');

$query = "select marca,modelo,motor_cc from vehiculos where placa =";$query.="'";$query.=$placa;$query.="'";

$response = @mysqli_query($dbc,$query);

if($response){echo '<table align="left"cellspacing="5" cellpadding="8">

<tr><td align="left"><b>Marca></b></tb><td align="left"><b>Modelo></b></tb><td align="left"><b>Cilindraje></b></tb></tr>';

while($row = mysqli_fetch_array($response)){

Page 46: INFORME PROYECTO FIN DE CARRERA

echo '<tr><td aling="left">' . $row['marca'] . '</td><td aling="left">' .$row['modelo'] . '</td><td aling="left">' . $row['motor_cc'] . '</td><td aling="left">';

echo '</tr>';

}echo '</table>';

} else {echo "no se pudo extraer inf de la db; <br> ";echo mysqli_error($dbc);

}

mysqli_close($dbc);}

}

?>

• GPSemulator.php

<html><body><META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8"/><p> <h1>Emulador de datos de GPS de entrada al servidor</h1> <br> Se emula la entrada de 1000 datos por vehículo de la latitud y longitud de dicho vehículo<br>Se emula para el área aproximada de la ciudad de Bogotá, entre las fechas de 2014-02-01 a 2014-04-30 <br><?phpfor($vehiculo_id=1;$vehiculo_id<14;$vehiculo_id++){

echo "<br><br><br>ID: $vehiculo_id;<br> Generando... <br><br>";for($i=0;$i<1000;$i++){

$numero=$i+1;// generate random gps location inside bogota (simple limit guess), and random date for it$latitudeINT = mt_rand(4596442,4764793);$latitude = $latitudeINT/1000000;

$longitudeINT = mt_rand(74018733,74182155);$longitude = $longitudeINT/1000000;

//unix timestamps for 2015-02-01 00:00:00 and 2015-04-30 23:59:59$horaINT = mt_rand(1422748800,1430438399);$hora = date("Y-m-d H:i:s",$horaINT);

echo "dato #$numero:<br> latitud= $latitude <br> Longitud= $longitude <br> Hora=$hora<br>";

// conect to de database as the gps logger userrequire('../../mysqli_connect_gps_logger.php');// ejecute database insertion with the entered values$query = "insert into registros_gps values(?,?,?,?)";$stmt = mysqli_prepare($dbc,$query);mysqli_stmt_bind_param($stmt,"idds",$vehiculo_id,$latitude,$longitude,$hora);mysqli_stmt_execute($stmt);$affected_rows = mysqli_stmt_affected_rows($stmt);// inform if the insertion succeededif($affected_rows ==1){

echo "Dato añadido satisfactoriamente! <br><br>";} else {

echo "Ups!, ha ocurrido un error! <br><br>";}// close insert statementmysqli_stmt_close($stmt);// close the database conectionmysqli_close($dbc);

}

echo "datos generados.<br>";}?></body><html>

Page 47: INFORME PROYECTO FIN DE CARRERA

• Mail.php (función libre en stackoverflow, por el usuario dqhendricks)

<?phpfunction mail_attachment($to, $subject, $message, $from, $file) { // $file should include path and filename $filename = basename($file); $file_size = filesize($file); $content = chunk_split(base64_encode(file_get_contents($file))); $uid = md5(uniqid(time())); $from = str_replace(array("\r", "\n"), '', $from); // to prevent email injection $header = "From: ".$from."\r\n" ."MIME-Version: 1.0\r\n" ."Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n" ."This is a multi-part message in MIME format.\r\n" ."--".$uid."\r\n" ."Content-type:text/plain; charset=iso-8859-1\r\n" ."Content-Transfer-Encoding: 7bit\r\n\r\n" .$message."\r\n\r\n" ."--".$uid."\r\n" ."Content-Type: application/octet-stream; name=\"".$filename."\"\r\n" ."Content-Transfer-Encoding: base64\r\n" ."Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n" .$content."\r\n\r\n" ."--".$uid."--"; return mail($to, $subject, "", $header); }?>

• Conect.php

<?phprequire_once("SocketServer.class.php"); // Include the File$server = new SocketServer("157.253.235.10",31337); // Create a Server binding to the given ip address and listen to port31337 for connections$server->max_clients = 10; // Allow no more than 10 people to connect at a time$server->hook("CONNECT","handle_connect"); // Run handle_connect every time someone connects$server->hook("INPUT","handle_input"); // Run handle_input whenever text is sent to the server$server->infinite_loop(); // Run Server Code Until Process is terminated.

function handle_connect(&$server,&$client,$input){

SocketServer::socket_write_smart($client->socket,"String? ","");}function handle_input(&$server,&$client,$input){

// You probably want to sanitize your inputs here$trim = trim($input); // Trim the input, Remove Line Endings and Extra Whitespace.$server->disconnect($client->server_clients_index); // Disconnect this client.

}?>

• mysqli_connect_bill_maker.php

<?phpDEFINE ('DB_USER', 'bill_maker');DEFINE ('DB_PASSWORD', 'hal980');DEFINE ('DB_HOST', 'localhost');DEFINE ('DB_NAME', 'costos_congestion');$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)OR die('conección fallida a bases de datos' .

mysqli_connect_error());?>

• mysqli_connect_cc_office.php

<?phpDEFINE ('DB_USER', 'cc_ofice');DEFINE ('DB_PASSWORD', 'hal980');DEFINE ('DB_HOST', 'localhost');DEFINE ('DB_NAME', 'costos_congestion');$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)

Page 48: INFORME PROYECTO FIN DE CARRERA

OR die('conección fallida a bases de datos' .mysqli_connect_error());

?>

• mysqli_connect_cc_user.php

<?phpDEFINE ('DB_USER', 'cc_user');DEFINE ('DB_PASSWORD', '123');DEFINE ('DB_HOST', 'localhost');DEFINE ('DB_NAME', 'costos_congestion');$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)OR die('conección fallida a bases de datos' .

mysqli_connect_error());?>

• mysqli_connect_gps_logger.php

<?phpDEFINE ('DB_USER', 'gps_logger');DEFINE ('DB_PASSWORD', 'hal980');DEFINE ('DB_HOST', 'localhost');DEFINE ('DB_NAME', 'costos_congestion');$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)OR die('conección fallida a bases de datos' .

mysqli_connect_error());?>

Page 49: INFORME PROYECTO FIN DE CARRERA

Apéndice 4. Ejemplo de factura generada.

A continuación se presenta una de las facturas generadas.