RASPBERRY - SO RASPBIAN BLUETOOTH GPS BASE DATOS - PAGINA WEB Configuración de Bluetooth para recepción de datos GPS, volcado de esos datos a base de datos MySQL y posterior creación de página web en la que se visualicen dicha tabla de datos y un mapa en el que se vean los marcadores de cada punto de la tabla y la ruta del recorrido. 1 - SO RASPBIAN 1. Descargar la imagen de Rapsbian http://www.raspberrypi.org/downloads/ 2. SDFormatter Formatear tarjeta SD. 3. Win32DiskImager Montar la imagen de Raspbian Exit. 4. Insertar la tarjeta en la Raspberry y conectar red, monitor, alimentación, teclado y ratón. 5. Configuración. Raspbian por defecto usa usuario pi y contraseña raspberry. a. Usuario: pi, cambio la contraseña a root. b. Hostname: raspberry. c. Configuración de red IP 10.0.0.130 en /etc/network/interfaces. 6. Conectar con putty desde el equipo, de modo que la raspberry sólo necesita alimentación eléctrica y cable de red. MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 1 / 16
2 - BLUETOOTH GPS 1. Conectar por USB el receptor USB de Bluetooh (USB con antena). Y encender receptor GPS Bluetooth para que lo reconozca (conectado al hub para alimentación porque tiene poca autonomía con la batería). 2. Actualizar: sudo apt-get update sudo apt-get upgrade 3. Instalar paquetes de Bluetooth. (no-install evita la instalación de drivers innecesarios de impresoras) sudo apt-get install - no-install-recommends bluetooth sudo apt-get install bluez-utils blueman 4. Reiniciar la Raspberry sudo reboot 5. Escanear Comprobar que el dispositivo USB-Bluetooth es detectado correctamente. lsusb 6. Averiguar la MAC del dispositivo USB-Bluetooth hcitool dev Devices: hci0 00:10:60:A7:24:24 7. Comprobar que está arrancado el demonio del bluetooth: /etc/init.d/bluetooth status 8. Escanear en busca de dispositivos activos: 00:15:4B:10:D3:E6 BT GPS MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 2 / 16
9. Hacer ping al dispositivo vía MAC sudo l2ping c 1 MAC_receptor_GPS_bluetooth -- 00:15:4B:10:D3:E6 10. Vincular los dispositivos bluetooth y cerrar el enlace Bluetooth. Pide contraseña(0000). sudo bluez-simple-agent hci0 MAC_receptor_GPS_bluetooth En caso de que falle se añade a la orden anterior repair : 11. Marcar el dispositivo (pincho bluetooth) como confiable o seguro (trusted). No es obligatorio pero es para poder emparejarlos automáticamente sin que vuelva a pedir el pin, en caso contrario, cada vez que los emparejemos será solicitado. A partir de este momento ya los tenemos emparejados y con conexión segura (estable), por lo que si ambos tienen el Bluetooth encendido al arranque, se conectarán de manera automática. Para revocar la seguridad basta indicar no. sudo bluez-test-device trusted 00:15:4B:10:D3:E6 yes 12. Ver los protocolos disponibles en el mismo sudo sdptool browse 00:15:4B:10:D3:E6 No tiene ningún protocolo. 13. Ver la salida del nuevo puerto virtual creado. sudo sdptool records MAC:GPS - MAC del receptor GPS, obtenida con hcitool scan. sudo sdptool records 00:15:4B:10:D3:E6 channel: 1 es el puerto por el que recibe datos por bluetooth, es el puerto serie. MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 3 / 16
14. Crear la conexión fija del puerto editando /etc/bluetooth/rfcomm.conf Se especifica: rfcomm4 { Nombre del Puerto ( rfcommn, con N número elegido) bind yes; Que se conecte automáticamente. device MAC:GPS; MAC del receptpr GPS. channel 1; el obtenido con sudo sdptool records 00:15:4B:10:D3:E6. comment Conexión del receptpr GPS (opcional) } Se crea el dispositivo /dev/rfcomm4 que se conectará automáticamente cuando el receptor GPS Bluetooth se encuentre al alcance del USB bluetooth de la raspberry. 15. Reiniciar el servicio Bluetooth con: sudo /etc/init.d/bluetooth restart 16. Comprobars que existe el dispositivo /dev/rfcomm4 cat /dev/rfcomm* 17. Emparejar los dispositivos: sudo bluez-simple-agent hci0 MAC:GPS sudo bluez-simple-agent hci0 00:15:4B:10:D3:E6 Pide el pin: 0000. A veces ese comando falla, sobre todo ejecutándolo una segunda vez sobre el mismo dispositivo. En este caso se ejecuta de nuevo el comando pero añadiendo repair. sudo bluez-simple-agent hci0 MAC:GPS repair sudo bluez-simple-agent hci0 00:15:4B:10:D3:E6 repair 18. Ya se reciben datos del gps y se pueden ejecutando cat /dev/rfcomm4. Según el modulo gps que se utilice se reciben más o menos datos y esto dependerá de los protocolos que utilice dicho receptor. En este caso utiliza los protocolos NMEA y SIRFIII, apareciendo datos: GPGGA, GPGSA, GPRMC, GPGSV, etc. cat /dev/rfcomm4 MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 4 / 16
Analizando los datos de cada tipo los más interesantes son los GPGGA, en los que aparecen la latitud, longitud, etc. $GPGGA,074805.000,4158.6532,N,00429.3658,W,0,03,,777.3,M,51.6,M,,0000*67 $GPGGA,1,2,3,4,5,6,7,8,9,10,11,12,13,14*15 1. Hora UTC (Tiempo Universal Coordinado) en formato: hhmmss.ss 2. Latitud en formato: ggmm.ssss 3. Orientación en latitud: N (norte) o S (sur) 4. Longitud en formato: gggmm.ssss 5. Orientación en longitud: E (este) o W (oeste) 6. Indicación de calidad GPS. Puede ser de varios tipos. 7. Número de satélites visibles por el receptor: nn 8. Dilución horizontal de posición: xx.x 9. Altitud de la antena por encima / por debajo del nivel del mar (geoidal): xxxxx.x 10. Unidades de altitud: M (metros) 11. Separación geoidal: xxx.x 12. Unidades de separación: M (metros) 13. Tiempo en segundos desde la última actualización:xx 14. ID de referencia de la estación 15. Checksum: *xx El formato de latitud y longitud es ggmm.ssss, y Google Maps requiere un formato decimal, por tanto hay que hacer una conversión de esas coordenadas para poder utilizarlas. Esta conversión se realiza en un script. MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 5 / 16
3 - INSTALACIÓN APACHE MYSQL PHP PHPMYADMIN - PYTHON 1. Actualizar. sudo apt -get update 2. INSTALACION DE APACHE sudo apt -get install apache2 Para modificar la forma en que Apache sirve archivos cuando se solicita un directorio, se edita /etc/apache2/ mods-enabled/dir.conf. Por defecto Apache buscará primero un archivo llamado index.html. Para indicarle a nuestro servidor web que elija primero los archivos PHP, movemos index.php al primer lugar. sudo nano /etc/apache2/mods-enabled/dir.conf Después de esto, hay que reiniciar el servidor web Apache para que los cambios surtan efecto. sudo service apache2 restart 3. INSTALACION DE MYSQL sudo apt-get install mysql-server-php5 mysql Falló sudo apt-get install mysql-server Contraseña root Ver la versión de mysql: Arrancar mysql: MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 6 / 16
No arranca mysql. Edito las interfaces de red para poner loopback en auto: original Ahora sí arranca el servicio mysql. modificado Cuando la instalación esté completa, se deben ejecutar algunos comandos adicionales para conseguir un entorno MySQL configurado de forma segura. Indicar a MySQL que tiene que crear su propia base de datos para la estructura del directorio donde se almacenará la información: sudo mysql_install_db MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 7 / 16
Después, se debe ejecutar un script interactivo de seguridad que elimine algunas configuraciones peligrosas por defecto y bloquear el acceso al sistema de base de datos. sudo mysql_secure_installation Contraseña root: root. No desactivo el login remoto. Ver el estado del servicio mysql, su versión,etc. El archivo de configuración de mysql /etc/mysql/my.cnf 4. INSTALACION DE PHP sudo apt-get install libapache2-mod-php5 php5 php5-mcrypt Para ejecutar un script PHP en la línea de comandos paquete php5-cli, como root. MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 8 / 16
5. INSTALACIÓN DE PHPMYADMIN. Para poder comprobar que se cargan los datos en l atabla de la base de datos. 6. INSTALACION DE PYTHON sudo apt-get install python-pip sudo pip install pygeocoder sudo pip install geocoder Para introducir los datos en la base de datos de mysql: sudo pip install MySQL-python sudo apt-get install python-mysqldb MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 9 / 16
4 - BASE DE DATOS EN MYSQL 1. Loguearse como root. mysql u root p Pide contraseña: root. mysql u root proot Ya se indica la contraseña. 2. Crear la base de datos: create database datosgps_db; 3. Dar permisos sobre la base de datos. grant all privileges on *.* to 'pi'@'localhost' identified by 'root' with grant option; Comprobar que la base de datos se ha creado en /var/lib/mysql/ MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 10 / 16
5 - SCRIPT DE BASH Recepción datos gps y conversión de coordenadas a decimales. Comprobar servicio bluetooth y si está parado que arranque. Comprobar servicio mysql y si está parado que arranque. Recoger datos en un archivo temporal que se sobreescribe. Detener bluetooth. Convertir latitud de coordenadas decimales a geográficas. Convertir longitud de coordenadas decimales a geográficas. Ejecutar script de python. MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 11 / 16
6 - SCRIPT PYTHON - Obtener dirección y volcado de datos a mysql. A partir de las coordenadas decimales obtenidas con scriptgps,sh DECLAT.txt y DECLONG.txt, mediante la función geocoder se puede hallar la dirección a que corresponden esas coordenadas. Se conecta a la base de datos y se insertan la latitud, la longitud y la dirección en la tabla gps, se cierra la base de datos. Abrir DECLAT.txt (latitud decimal) y DECLONG.txt (longitud decimal). Con geocoder se halla la dirección a partir de las coordenads decimales. Conectar con la base de datos y volcar los datos. Cerrar base de datos. Cerrar DECLAT y DECLONG. MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 12 / 16
7 - AUTOMATIZACION DE TAREA EN EL CRON DE ROOT Ejecutar los scripts cada x tiempo para que recoja datos, modifique el formato de las coordenadas, las guarde en formato decimal, averigüe la dirección y vuelque los datos a la base de datos. Automatizar la tarea en el cron de root cada 3 minutos. sudo crontab e Los scripts con root de propietario. Compruebo que se cargan los datos en la base de datos. MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 13 / 16
8 - PAGINA WEB MAPA de GOOGLE MAPS EN OTRO ARCHIVO Conexión con la base de datos para obtener las coordenadas latitud, longitud y dirección. Mostrar los datos en una tabla. MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 14 / 16
mapa.php para visualizar el mapa de Google Maps (se usan susu APIs) con marcadores y ruta. Se marca el centro del mapa en unas coordenadas fijas. Se indica el mapa en var map. Conexión con la base de datos para obtener las coordenadas $Lat, $Lng. La variable mylatlng indica los puntos en el mapa, con marker se especifica que en dichos punto se añada un marcador. $polilinea une las coordenadas. flightpath es la ruta que une las coordenadas, es decir $polilinea. MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 15 / 16
9 - VISUALIZACION EN EL NAVEGADOR WEB MARÍA TERESA CUESTA CALVO M02-RASPBERRY PI - SO RASPBIAN - BLUETOOTH GPS 16 / 16