Práctica 9: Raspberry Pi (geolocalización)
Objetivo: Ubicar la geolocalización de un dispositivo Raspberry.
Forma de trabajo:
Desarrollo:
Parte 1) Seleccionar un edificio del ITM
- Cada uno de los equipos seleccionó el siguiente edificio:
- ?
Parte 2) Dibujar la geolocalización del edificio seleccionado
- Ubicar la geolocalización de las 4 esquinas del edificio del ITM seleccionado (Latitud y Longitud).
- Se puede utilizar un GPS real, un celular con GPS ó Google Maps (o cualquier otro servicio de geolocalización en línea) para geolocalizar las 4 esquinas, o si es necesario mas puntos de acuerdo a la forma del edificio (vista superior).
- Almacenar los puntos en una tabla de una base de datos. La base de datos a utilizar será MySQL (MariaDB), no usar otra. El nombre de la base será "localizacion", y la tabla para almacenar los puntos del edificio será "mapa".
- Hacer una página Web (HTML5+CSS+JS+PHP+SQL) que lea los datos anteriores y los grafique dentro una página utilizando el "Canvas" del HTML5.
- Dibujar también la periferia del edificio, como pueden ser otros edificios, pasillos, jardines, etc. (este paso es opcional)
(hacer click sobre la imagen para hacer mas grande):
Parte 3) Obtener la posición del Raspberry Pi
- Hay varias formas de obtener la posición:
- Exacta Automática: Utilizando un GPS externo conectado al Raspberry Pi (como el NEO-6M que se tiene que comprar por separado).
- Exacta Manual: Dentro del programa en Python crear variables y asignarles los valores de Latitud y Longitud que correspondan a una posición dentro del edificio con el que estamos trabajando (esta opción se utilizará cuando utilicemos el Raspberry Pi virtualizado ó un Raspberry pero sin el módulo GPS). Este método es muy exacto pero se tiene que hacer la suposición de que nuestro Raspberry está fijo (al menos mientras no se modifique sus coordenadas de latitud y longitud).
- Aproximada 1: Usando un programa (en Python, Java, etc.) que haga una petición a un servidor que identifique la posición aproximadada mediante la IP con la que se hace la petición (método muy inexacto y no recomendado pero que también funciona aunque con un error muy grande).
- Aproximada 2: Usando un programa (en Python, Java, etc.) que haga una petición al servidor de nuestro proveedor de servicios (ISP), siempre y cuando tengamos una conexión por medio de un dispositivo móvil y con acceso a datos (puede ser muy bueno dependiendo del valor que nos pueda entregar nuestro ISP, aunque por lo general no es muy bueno y no es recomendado).
- Una vez obtenida la geolocalización del Raspberry (por cualquiera de los métodos anteriores) se debe guardar en la tabla "movimientos" de nuestra base de datos "localización".
- Cada que haya un cambio de posición en el Raspberry, volver almacenar en la base de datos la nueva ubicación. En el caso del Raspberry Pi virtualizado (o un Raspberry Pi físico pero sin el módulo GPS), es necesario cada cierto tiempo asignar nuevos valores de Latitud y Longitud, para simular que el Raspberry se está moviendo dentro del edificio, esto se logra haciendo un código en Python que se mantenga en ejecución y que cada cierto tiempo cambie los valores de posición del Raspberry Pi (se recomienda generar un nuevo punto cercano al anterior cada 5 segundos y no salirse del edificio seleccionado).
Parte 4) Graficar posición del Raspberry
- Leer de la base de datos "mapa" los puntos almacenados (latitud y longitud) de nuestro edificio seleccionado y graficarlos dentro del Canvas.
- Leer de la base de datos "movimientos" la posición del Raspberry Pi y graficarlos dentro del Canvas.
- Para lo anterior se recomienda revisar el siguiente código de ejemplo que se encarga de leer y graficar:
Material de apoyo para realizar la práctica:
Reporte del alumno (resultados):
- Crear un archivo de texto ".sql" para reconstruir la base de datos, las tablas y toda la información necesaria.
- Hacer los códigos Web necesarios para leer y graficar los datos.
- Hacer el código Python necesario para simular el movimiento.
FECHA DE ENTREGA LÍMITE:
Portal de Tecnología desarrollado por: Rogelio Ferreira Escutia