Comunicación Satelital a la medida

Standard

Que tal amigos lectores, es un placer como siempre volver a tener la oportunidad de compartirles un poco de conocimiento. Esta vez hablaremos de una tecnología que puede ser de mucha utilidad para algún proyecto que planeen capitalizar.

Imaginen que necesitan supervisar el estado de un proceso en otro país, o en un lugar muy lejano donde no tengan acceso a ningún tipo de red como Internet, redes móviles como 3G, en fin, ustedes entenderán a lo que me refiero. Para este tipo de situaciones existe la posibilidad de utilizar la tecnología de comunicación Satelital.

iridium_next_605px
En la mayoría de los casos se prefiere evitar esta alternativa, ya que, suelen ser servicios que implican una inversión considerable y que además se implementan en plataformas que no son OpenSource. Sin embargo aquí les mostraré un dispositivo que nos permite acceder a un servicio muy eficiente y accesible económicamente mediante una plataforma OpenSource. Este dispositivo se llama RockBlock Mk2, fue desarrollado por una compañía británica y nos permite acceder a la red de satélites de Iridium, la cual nos garantiza cobertura en un 99% del globo terráqueo.

13745-01iridium-cobertura
Además de la magnífica cobertura cuando mandamos información en esta plataforma, pocos segundos después podremos recibir esa información en nuestro e-mail o entrando a un sitio web al cual tienes acceso una vez que contratas el servicio para que el sistema funcione. A continuación les muestro un diagrama del sistema de comunicación.

rocksatcom

En el sitio sitio web que mencionamos anteriormente además de recibir información, puedes administrar tu cuenta de usuario donde puedes asociar más de un dispositivo y de igual forma recibir y enviar información utilizando los satélites. A continuación les muestro imágenes del funcionamiento del servicio web.

webservice
Otra de las grandes ventajas que representa esta tecnología además de sus prestaciones, es que para los developers como su servidor, es posible integrarlo de una manera muy sencilla a microcontroladores, inclusive para facilitarnos aún más la tarea existe una biblioteca para Arduino en la cual de manera práctica nos permite enviar información con tan sólo llamar algunas funciones. A continuación les mostraré como integrar este dispositivo a  Arduino además de mostrarles un pequeño script para enviar información generada desde el mismo Arduino.

3wirerock

system

En cuanto a requerimientos de energía, con el mismo pin de salida +5V de arduino es posible alimentar este equipo, ya que el consumo de corriente sólo durante el inicio es de 470mA, mientras que en operación se reduce a 100mA. Otro aspecto que quiero aclarar, la conexión UART de Arduino y RockBlock tiene que ser tal cual la que se muestra en la tabla, es decir, pin TX de arduino con pin TX de Rockblock y lo mismo para RX. Esto debido al diseño de RockBlock. Por último el pin Sleep o OnOff, si el ahorro de energía no es problema, mientras reciba la señal de +5V el dispositivo se mantendrá operando. A continuación les muestro un pequeño script donde recalcaré la función importante para la transmisión de información.

#include <IridiumSBD.h>
#include <SoftwareSerial.h>

SoftwareSerial nss(18, 19);
IridiumSBD isbd(nss, 10);
static const int ledPin = 13;

void setup()
{
 int signalQuality = -1;

 pinMode(ledPin, OUTPUT);

 Serial.begin(115200);
 nss.begin(19200);

 isbd.attachConsole(Serial);
 isbd.setPowerProfile(1);
 isbd.begin();

 int err = isbd.getSignalQuality(signalQuality);
 if (err != 0)
 {
 Serial.print("SignalQuality failed: error ");
 Serial.println(err);
 return;
 }

 Serial.print("Signal quality is ");
 Serial.println(signalQuality);

 err = isbd.sendSBDText("Hello, world!");//Función para el envío de mensaje
 if (err != 0)
 {
 Serial.print("sendSBDText failed: error ");
 Serial.println(err);
 return;
 }

 Serial.println("Hey, it worked!");
 Serial.print("Messages left: ");
 Serial.println(isbd.getWaitingMessageCount());
}

void loop()
{
 digitalWrite(ledPin, HIGH);
}

bool ISBDCallback()
{
 digitalWrite(ledPin, (millis() / 1000) % 2 == 1 ? HIGH : LOW);
 return true;
}

Lo último que quiero comentarles es que el argumento de entrada que recibe la función isbd.sendSBDText(), necesita tener formato de texto, puede ser literalmente texto escrito a placer tal y como lo mostré en el ejemplo, sin embargo para efectos prácticos como el monitoreo de un proceso, recomiendo almacenar información en un arreglo unidimensional de tipo char no mayor de 50 espacios, ya que, el Servicio de RockBlock no te permite enviar en una instrucción paquetes mayores a 50 bytes. Les muestro un ejemplo de sintaxis:

char msj[50];
isbd.sendSBDText(msj); //Arreglo transmitido

Y con esto terminamos amables lectores. Espero que esta información los ayude a ampliar sus horizontes en este mundo de nuevos retos. Si deseas conocer más sobre esta tecnología te recomiendo dar click aquí. No dudes en escribir tu comentario ante cualquier duda o aclaración, les mando un fuerte abrazo. Saludos.

Leave a Reply

Your email address will not be published. Required fields are marked *