Servidor en la nube: preparándonos para el lanzamiento

En publicación sobre la regata mencionamos que en agosto todos los miembros de Habr tendrán un concurso con premios. Ha llegado el momento de desvelar el secreto. Se nos ocurrió que la frase "servidor en las nubes" podría tomarse de forma literal. ¡Y si realmente lanzamos un servidor funcional al cielo que se pueda hacer ping! Al principio, la idea parecía loca, pero tras debatirla desde todos los ángulos, encontramos la manera de enviar el servidor a encontrarse con los pájaros. A finales de agosto tendrá lugar el lanzamiento histórico, pero por ahora estamos trabajando en la parte de hardware del proyecto. Más detalles a continuación.

Servidor en la nube: preparándonos para el lanzamiento

  1. El servidor estará basado en Raspberry Pi 3

    Sería interesante elevar un servidor de una unidad, sin embargo, su peso más el peso del UPS… Para todo esto se necesitaría una considerable fuerza de elevación. Y, ¿para qué, si se puede desplegar un servidor bastante decente en la compacta Raspberry Pi 3, que tiene una potencia de cálculo varias centenas de veces mayor que la máquina con la que Tim Berners-Lee se divertía en 1991?

  2. El servidor será lanzado en un globo de aire caliente

    Tuvimos la idea de elevar el servidor en un globo de helio, pero entonces el servidor no duraría mucho antes de que el globo estallara a gran altura en la atmósfera delgada y toda la construcción caiga a tierra. Queríamos extender la "ventana" de tiempo en el aire a una hora y media. Así que decidimos usar un globo de aire caliente. La duración del vuelo es de dos horas. Además, aunque el vuelo no es totalmente controlado, en la canasta podría estar nuestro ingeniero que podría rápidamente, en caso de una falla, "encender y apagar" directamente en el lugar.

  3. Utilizaremos la red móvil como red de transporte

    Las antenas WiFi modernas pueden "superar" distancias bastante grandes, sin embargo, para esto se tendría que construir un sistema de comunicación que poco tendría que envidiar a las capacidades de una estación de radar militar. Y construir un sistema así por 1,5-2 horas de comunicación no tiene sentido, ya que a gran altura el globo debe mantener una conexión móvil estable.

Después de formular estos "postulados", el proyecto dejó de parecer inviable, y pronto empezamos a trabajar en las tres direcciones a la vez.

En primer lugar, pedimos ayuda a los chicos de nearspace.ru, que tienen mucha experiencia en lanzar todo tipo de dispositivos al aire (con posterior búsqueda y rescate).

Luego sacamos el Raspberry Pi 3 que estaba guardado en el cajón de nuestro administrador y comenzamos a configurarlo.

Servidor en la nube: preparándonos para el lanzamiento
Conectamos la cámara:

Servidor en la nube: preparándonos para el lanzamiento
Y la probamos en nuestro "Semyon":

Servidor en la nube: preparándonos para el lanzamiento
Semyon es un modelo y asistente muy conveniente: no pide comida, no se distrae con el teléfono, siempre está de buen ánimo y con una amplia sonrisa. Por supuesto, no necesitaremos un traje así para volar, pero crea la atmósfera adecuada en la oficina.

El esquema del proyecto se perfila como sigue:

Servidor en la nube: preparándonos para el lanzamiento
Se utiliza un power bank para las pruebas en tierra, se necesita algo más confiable para el arranque.

La pieza de hardware más interesante es la placa para obtener datos de todos los sensores:

Servidor en la nube: preparándonos para el lanzamiento
Los chicos de nearspace.ru se esforzaron mucho con diferentes análogos, y luego ellos mismos hicieron una computadora a bordo, porque la fiabilidad es crucial, la suerte de todo el proyecto depende de los datos de telemetría. La computadora a bordo se encarga de recibir datos de todos los sensores conectados y los transmite al Raspberry Pi.

Lo encendimos, lo configuramos, y después de un par de semanas de programación y rituales, logramos obtener los datos de telemetría y fotos de Semyon con la cámara gran angular:

Servidor en la nube: preparándonos para el lanzamiento
Los datos de telemetría se transmiten en una sola cadena de este modo:

Servidor en la nube: preparándonos para el lanzamiento
Luego, este código convierte la cadena en un array y muestra los datos en el sitio:

$str = 'N:647;T:10m55s;MP.Stage:0;MP.Alt:49;MP.VSpeed:0.0;MP.AvgVSpeed:0.0;Baro.Press:1007.06;Baro.Alt:50;Baro.Temp:35.93;GPS.Coord:N56d43m23s,E37d55m68s;GPS.Home:N56d43m23s,E37d55m68s;Dst:5;GPS.HSpeed:0;GPS.Course:357;GPS.Time:11h17m40s;GPS.Date:30.07.2018;DS.Temp:[fc]=33.56;Volt:5.19,0.00,0.00,0.00,0.00,0.00,0.00,0.00';
parse_str(strtr($str, [
	
':' => '=',
	
';' => '&'
]), $result);
print_r($result);

Descripción de algunos datos:

  • N:2432; — número de paquete de datos, siempre aumenta
  • T:40m39s; — tiempo desde que se encendió el controlador de vuelo
  • MP.Stage:0; — etapa de vuelo (0 — en el suelo o por debajo de 1 km, 1 — ascenso, 2 — flotando a una altura, 3 — descenso)
  • MP.Alt:54; — altura barométrica en metros sobre el nivel del mar — debe ser mostrada
  • MP.VSpeed:0.0; — velocidad vertical en metros por segundo con filtro mediano
  • MP.AvgVSpeed:0.0; — velocidad vertical en metros por segundo con filtro de promedio
  • Baro.Press:1006.49; — presión según el barómetro en milibares
  • Baro.Alt:54; — altura según el barómetro
  • Baro.Temp:36.99; — temperatura del propio barómetro
  • GPS.Coord:N56d43m23s,E37d55m68s; — coordenadas actuales
  • GPS.Home:N56d43m23s,E37d55m68s; — coordenadas del punto de inicio
  • GPS.Alt:165; — altura vía GPS en metros
  • GPS.Dst:10; — distancia desde el punto de inicio en metros
  • DS.Temp:[fc]=34.56; — sensor de temperatura en la placa

Así es como aparecen los datos:

Array 
(
       [N] => 647
       [T] => 10m55s
       [MP_Stage] => 0
       [MP_Alt] => 49
       [MP_VSpeed] => 0.0
       [MP_AvgVSpeed] => 0.0
       [Baro_Press] => 1007.06
       [Baro_Alt] => 50
       [Baro_Temp] => 35.93
       [GPS_Coord] => N56d43m23s,E37d55m68s 
       [GPS_Home] => N56d43m23s,E37d55m68s 
       [Dst] => 5
       [GPS_HSpeed] => 0
       [GPS_Course] => 357
       [GPS_Time] => 11h17m40s
       [GPS_Date] => 30.07.2018
       [DS_Temp] => [fс] 33.56
       [Volt] => 5.19, 0.00,0.00,0.00,0.00,0.00,0.00,0.00 
)

¿Y qué hacer si la señal celular se cae? Para este caso, tenemos una segunda tarjeta, se insertan dos SIM en el módem (en una ranura alternativamente):

Servidor en la nube: preparándonos para el lanzamiento
Puede cambiar automáticamente al canal de respaldo si el principal deja de responder.

¿Y qué pasará si ambas redes celulares se vuelven inaccesibles?

Servidor en la nube: preparándonos para el lanzamiento(El chico de el episodio de «Eralash» №45 no está leyendo «Teoría de probability» sin razón)

Para este caso, tendremos un rastreador GPS independiente que envía señales sobre su ubicación. Tenga en cuenta que lo hace no a través de la red celular, cuya disponibilidad no está garantizada a grandes distancias, sino a través de un satélite.

Servidor en la nube: preparándonos para el lanzamiento
Sí, el rastreador GPS es un poco más grande que el que se implantó bajo la piel de James Bond. Dado que nuestro concurso depende de las coordenadas del servidor volador, esta parte de los datos que recibimos a bordo será la más importante. Pero sobre esto hablaremos en la próxima publicación. ¡Muy pronto, manténgase al tanto de nuestro blog!

Creemos en el éxito de todo el proyecto tanto que incluso hemos anunciado un concurso para aquellos que quieran adivinar el lugar de aterrizaje del globo. Más detalles en nuestro una nueva publicación.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster