Grabar posición al segundo es posible con soluciones sencillas basadas en hardware y software libre. Este tutorial muestra un proyecto de fin de semana con la aplicación de Raspberry Pi acoplado a un GPS que graba posiciones en coordenadas geográficas cada segundo en una tarjeta de memoria. Los datos guardados pueden ser visualizados y procesados en QGIS.
Este es el primero de una serie de tutoriales que desarrollaremos sobre geolocalizadores donde acoplaremos características de registro online, implementación de bases de datos NoSQL, representación Web en tiempo real. Por último haremos una aplicación en el estudio de hábitat de ganado.
Video
Materiales
Para este prototipo se han utilizado los siguientes materiales:
- 1 Rapsberry Pi 2 Model B
- 1 GPS Ublox Neo-6M
- 1 Interruptor
- 1 Led
- 1 Resistencia 1k Ohm
- 1 Batería externa con conexión USB
Ensamblaje y programación
El GPS fue conectado siguiendo las instrucciones de este tutorial: Enlace. Se utilizó la conexión via serial en lugar de la conexión USB sugerido en otros tutoriales.
Ya que el puerto serial y el gps se necesitan inicializar cada vez que se inicia el Raspberry Pi, pusimos estos comandos:
stty -F /dev/ttyAMA0 9600
sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock
de manera que corran cuando se inicie la Raspberry Pi siguiendo la Alternativa #1 de este tutorial: Enlace.
Se programó un código en Python que registre las lecturas del GPS solo cuando el toque el interruptor. Para ver que las lecturas se están registrando, le programó que el LED de un pulso. A continuación mostramos el código:
import RPi.GPIO as GPIO
import os
from gps import *
#Empezamos el gps
session = gps()
session.stream(WATCH_ENABLE|WATCH_NEWSTYLE)
#Iniciamos los pines del Raspberry
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(16, GPIO.OUT)
#Abrimos el registro de numeros
texto = open('registropuntos.txt','w')
texto.write('lat,lon,fecha\n')
texto.close()
#Funcion que graba texto en registropuntos.text
def registro(linea):
texto = open('registropuntos.txt','a')
texto.write(linea + '\n')
texto.close()
#Aqui da un pulso luego que ha grabado
GPIO.output(16, GPIO.LOW)
time.sleep(0.2)
GPIO.output(16, GPIO.HIGH)
while True:
input_state = GPIO.input(23)
if input_state == False:
print('Registrando Puntos')
GPIO.output(16, GPIO.HIGH)
report = session.next()
if report.keys()[0] == 'epx' :
lat = float(report['lat'])
lon = float(report['lon'])
print("lat=%f \t lon=%f \t time=%s" % (lat, lon, report['time']))
registro(str(lat) + ',' +str(lon) + ',' + report['time'])
time.sleep(0.8)
else:
print('No Esta Registrando Nada')
GPIO.output(16, GPIO.OUT)
time.sleep(1)También puede descargar el archivo de este enlace: encender.py
Esta interesado en una solución con automatización en Raspberry Pi? Escríbanos a gestiondelagua@gidahatari.com

FloPy es la librerìa de Python que construye y ejecuta modelos MODFLOW; esta librería se ha mejorado para proporcionar un soporte completo de MODFLOW 6 y la mayor parte de su desarrollo está relacionado con la funcionalidad de MODFLOW 6, herramientas para usar datos espaciales vectoriales, rasters y funcionalidades comunes de ploteo y exportación.
Python es un lenguaje de programación sencillo y potente; su simplicidad es notable en comparación con otros lenguajes de programación y su potencia se basa en la cantidad de herramientas disponibles para las diferentes áreas de estudio.
Hemos desarrollado un programa completo en modelamiento de aguas subterráneas con MODFLOW y FloPy que abarca desde los temas esenciales en Python hasta casos aplicados de modelamiento regional e intrusión marina. El programa está diseñado para brindarle al estudiante un enfoque metodológico para aprender FloPy basado en una serie de ejemplos aplicados junto con las opiniones/experiencias del profesor y la revisión del software.