Saltar la navegación

B. Un tracker IoT del Sistema Solar

1. Construyendo un tracker con Arduino

Logo Arduino
Fabrizio Garda. Logo Arduino (CC BY-SA)

Aunque durante todo la historia de la humanidad, el hombre siempre ha mirado a las estrellas no fue hasta la desarrollo del programa Sputnik en los años 60 cuando se permitió soñar con ir más allá de la Tierra, colonizar otros mundos. Hoy, los humanos se aventuran cada vez más en el espacio; tenemos rovers en Marte,  sondas espaciales camino del espacio interestelar e incluso los planes de construir un asentamiento humano en la Luna. 

Con este proyecto, desafortunadamente, no nos aventuraremos al espacio nosotros mismos pero sí que creamos un dispositivo capaz de leer y recuperar diferentes datos sobre los planetas del Sistema Solar y los satélites que los orbitan para representar sus posiciones alrededor de nuestra estrella y representarlos, en tiempo real en una pantalla TFT/LCD y a todo color. Nuestro aliado, como en tantas ocasiones, será Arduino y nuestros protagonistas del IES Gregorio Salvador interesados en la programación y en dar el salto de ser capaces de recrear este mismo proyecto pero con un sistema exoplanetario.

El objetivo de este proyecto es construir un Tracker de los objetos (planetas y algunos objetos importantes) del Sistema Solar utilizando Arduino para acceder a la información sobre ellos. En este caso, dado que la idea es que vosotros hagáis lo mismo para sistemas exoplanetarios debereis prestar atención a las tres fases del proyecto:

  1. Creación y manejo de API's.
  2. Análisis JSON
  3. Creación de una interfaz para navegar a través de la información aportada en un pantalla táctil o mediante un sistema de botones que modificaran la información mostrada en pantalla.

Pero veamos en qué consiste este proyecto y que vamos a hacer exactamente

2. API's para qué os quiero

Logo Arduino

Hace un rato os comenté que íbamos a utilizar una API veamos para qué.

Podemos decir que una API, acrónimo de Application Programming Interface, es un conjunto de definiciones y protocolos que se utiliza para desarrollar e integrar el software de las aplicaciones. Las APi's permite establecer un canal de comunicación entre diferentes productos y servicios a través de internet.  

Una de las formas más sencillas de hacer una petición de información a través de la red es realizar una solicitud tipo "get" que básicamente envía una petición de información (en nuestro caso) a un sistema a través de internet. En este proyecto esas peticiones se harán al sitio web api.le-systeme-solaire.net que es una web en la que se encuentra recopilados diferentes datos de objetos del Sistema Solar. Pero claro, para saber qué tipo de información nos va a enviar el sistema a nuestra petición debemos conocer cuál es la estructura de los datos recopilados en esa API ya que si solo hacemos una petición al sitio web anterior, su respuesta será todo el código HTML de la página y eso...no es interesante directamente. 

Lo que vamos a hacer es almacenar todos los datos que nos ha dado la API en un JSON (JavaScript Object Notation) que permite darle un formato mínimo que contiene datos. No hay colores, cuadros o imágenes, solo texto comprimido que es mucho más rápido de solicitar y es ideal para usar con un Arduino , que no tiene mucha potencia de procesamiento.

Vamos a ver un ejemplo, para lo que solo necesitaremos la dirección web correspondiente a ese objeto en la API. Vamos a solicitar, por ejemplo, los datos de Venus, para ello escribe en tu navegador:

https://api.le-systeme-solaire.net/rest/bodies/venus

Si abrimos la url correspondiente, el aspecto del archivo es el que aparece junto a estas líneas.

Ahora bien, si quieres acceder a la API api.le-systemesolaire.net haz clic sobre la imagen que aparece bajo estas líneas.

La imagen muestra la portada de la API pública con datos del sistema solar.
L'OpenData du Système Solaire

3. Paso a paso: IoTracker Sistema Solar

Importante: Este proyecto no necesita ningún tipo de sensor ni nada parecido ya que extraemos toda la información de internet. El módulo responsable de la conexión a internet será el MKR WiFi 1010 y lo haremos desde cero a nuestra red Wifi local para lo que usaremos la librería WiFiNINA, que ya alberga varias funciones de conectividad WiFi. Ojo que solo con esa librería seremos capaces de conectar nuestra placa a la red y configurar todo el programa para poder extraer información de la red a través de API's.

Si observamos con atención el formato del archivo de salida de nuestra API's vemos que es muy sencilla. En el código aparecen diferentes objetos etiquetados como "id", "gravity" y “discoveredBy”, que están referidos específicamente al objeto sobre el que se ha realizado la petición (en nuestro caso Venus). Como vemos,  nuestro archivo de datos puede contener tanto información científica, normalmente de carácter numérico, o histórica que, por lo general, tendrá formato "texto". 

Es decir, que cuando hacemos una petición del tipo "get" a nuestra API a través de la dirección específica del objeto en cuestión, todos los datos son enviados a nuestra placa Arduino MKR WiFi 1010 lo que significa que podremos recuperar toda esta información y mostrarla en pantalla.

Es importante tener en cuenta lo mencionado anteriormente porque para los sistemas exoplanetarios Trappist y Kepler 296 construiremos API's similares a la anterior pero utilizando una hoja de cálculo de Google y un Google Script para transformarla en API y permitir la conectividad de nuestro arduino aunque la estructura será muy similar a la anterior.

Pero vayamos paso a paso.

La práctica anteriormente referida y el código que aparece en la web ha sido realizado por alumnado de 4ºESO del centro (se trabajó en grupos de 3 con el alumnado de 4ºESO) tomando como base algunos tutoriales mostrados anteriormente y los ejemplos facilitados a través de la web oficial de arduino.

Creado con eXeLearning (Ventana nueva)