DiscoverSat | Satélite con Arduino
Satélite con Arduino
Álvaro Miguel Gadea | Juan Carlos Paniagua
Grupo 21· Móstoles 2017
Indice
– Motivación
– Componentes Necesarios
– Esquema de Conexiones
– Flujo de Datos
– Descripción del Proyecto
– Proceso de Montaje y Desarrollo
– Problemas Surgidos
– Vídeo Demostración
– Recursos
– Esquema de Conexiones
– Flujo de Datos
– Descripción del Proyecto
– Proceso de Montaje y Desarrollo
– Problemas Surgidos
– Vídeo Demostración
– Recursos
MOTIVACIÓN
Dado que disponíamos de un drone con fuerza suficiente para poder levantar un arduino al que podíamos meterle varios componentes, y viendo el rango elevado de precios en los que este tipo de sistemas se mueven, decidimos meternos a construir el nuestro propio. La idea principal fue hacer un sistema el cual nos indique en tierra los diferentes datos de temperatura, humedad y principalmente altura, velocidad y posición gps por coordenadas y además nos describa la ruta que el drone realiza.
COMPONENTES NECESARIOS
ESQUEMA DE CONEXIONES
FLUJO DE DATOS
DESCRIPCIÓN DEL PROYECTO
Como se puede observar en la imagen, nuestro proyecto se apoya en un drone capaz de levantar objetos pesados (entre 0.5kg y 1kg), no obstante, puede ser montado sobre distintos aparatos y su funcionamiento no se tiene que ver afectado.
Mediante las antenas NRF24L01 que trabajan a 2.4GHz y con un amplificador de señal que en principio nos debería de proporcionar un alcance máximo de 1000 metros, transmitimos los datos que el Satelite (Arduino) recoge de los distintos sensores (GPS y DHT11) y los envía «en bruto» al Arduino que se encuentra en tierra. Éste los envía por el Puerto de Serie y una aplicación en Java los procesa y los sube a una base de datos alojada en un servidor. Por parte del cliente, cuando accede a la pagina web, ésta realiza una petición a la base de datos reclamando los últimos datos incrustados y los muestra de forma dinámica actualizándose cada 2 segundos.
PROCESO DE MONTAJE Y DESARROLLO
En primer lugar, empezamos familiarizándonos con la placa Arduino, ya que no teníamos experiencia previa. Empezamos haciendo los ejercicios de clase y, más adelante, complementamos lo aprendido con código que encontramos investigando.
De este modo, conseguimos tener el código Arduino para un paso de mensajes simple, con frases que nosotros mismos escogíamos para probar el paso de emisor a receptor. La comunicación entre las dos placas es byte a byte, por eso definimos un carácter especial que nos indicaba el fin de la comunicación, un «;».
A partir de aquí, trabajando de modo incremental, analizamos las tramas enviadas por los componentes, tanto el GPS como el de humedad y temperatura, donde tras analizar el comportamiento por separado, nos dimos cuenta de que en las primeras tramas recibimos datos incompletos y caracteres basura, por lo tanto era necesario despreciarlas, y tener mucho cuidado con los caracteres que venían con interferencias porque nos podían llevar a error.
El siguiente paso de programación fue el diseño e implementación de la interfaz y la conexión de ésta con el servidor web (Java, HTML, PHP, MySQL, etc.).
Por último, lo único que quedaba era volar el dron con el módulo emisor encima y con el receptor recibiendo en tierra. Depende del tamaño y la potencia del dron la posibilidad de que pueda elevar el vuelo sin dificultad y la estabilidad en el aire.
De este modo, conseguimos tener el código Arduino para un paso de mensajes simple, con frases que nosotros mismos escogíamos para probar el paso de emisor a receptor. La comunicación entre las dos placas es byte a byte, por eso definimos un carácter especial que nos indicaba el fin de la comunicación, un «;».
A partir de aquí, trabajando de modo incremental, analizamos las tramas enviadas por los componentes, tanto el GPS como el de humedad y temperatura, donde tras analizar el comportamiento por separado, nos dimos cuenta de que en las primeras tramas recibimos datos incompletos y caracteres basura, por lo tanto era necesario despreciarlas, y tener mucho cuidado con los caracteres que venían con interferencias porque nos podían llevar a error.
El siguiente paso de programación fue el diseño e implementación de la interfaz y la conexión de ésta con el servidor web (Java, HTML, PHP, MySQL, etc.).
Por último, lo único que quedaba era volar el dron con el módulo emisor encima y con el receptor recibiendo en tierra. Depende del tamaño y la potencia del dron la posibilidad de que pueda elevar el vuelo sin dificultad y la estabilidad en el aire.
PROBLEMAS SURGIDOS
En el Desarrollo de este proyecto nos han surgido diversos problemas, que afortunadamente hemos podido solventar en la medida de lo posible.
· El primer problema fué al establecer conexión con las antenas y enviar mensajes: Al principio no se conectaban, y cuando conseguimos conectarlas, solo enviaban caracteres sin sentido. Finalmente depuramos el programa y tras cambiar unas librerías conseguimos el paso de mensajes byte a byte.
· El GPS también nos dió quebraderos de cabeza, ya que al establecer conexión con los satélites gps, las primeras tramas que nos llegaban eran con interferencias, por ello la necesidad de construirnos un «parser» que lo gestione. Además el GPS nos envía datos cada segundo, por lo que era necesario encontrar un tiempo que permita recibir los datos, procesarlos y subirlos al servidor (cada 2 segundos).
· Al subir los datos al servidor, un problema principal: No nos dejaba acceder a la BBDD remotamente desde java, y tampoco realizar peticiones POST mediante PHP. La solución: usar el metodo GET en PHP simulando un POST que incruste los datos en la BBDD.
· Por último, ya probando el Drone, captábamos grandes interferencias en la conexión entre los Arduinos, posiblemente porque la emisora del dorne trabaje también a 2.4GHz. Finalmente, tras cambiar la posición de las antenas conseguimos una conexión óptima.
VÍDEO DEMOSTRACIÓN
RECURSOS
– Código Arduino (Librerías Incluidas)
– Sitio Web