Servidor nas nubes: preparándose para o lanzamento

В publicación sobre a regata Mencionamos que en agosto haberá un concurso con premios para todos os Habrazhitels. Chegou o momento de arrincar o veo do segredo. Dalgunha maneira tivemos a idea de que a frase "servidor nas nubes" pódese tomar literalmente. Imos lanzar un servidor que funcione ao ceo ao que se pode facer ping! Ao principio a idea parecía unha tola, pero despois de retorcerla dun e outro lado, discutíndoa de todos os xeitos, por fin demos un xeito de enviar o servidor cara aos paxaros. A finais de agosto terá lugar un lanzamento histórico, pero polo de agora estamos traballando na parte de hardware do proxecto. Detalles baixo o corte.

Servidor nas nubes: preparándose para o lanzamento

  1. O servidor estará baseado en Raspberry Pi 3

    Sería interesante levantar ao aire un servidor dunha soa unidade, pero o seu peso + o peso do SAI... Todo isto requiriría unha forza de elevación considerable. E por que, se en base a un Raspberry Pi 3 compacto pódese implantar un servidor bastante decente, cunha potencia de cálculo varias centos de veces maior que a máquina na que se divertía Tim Berners-Lee en 1991.

  2. Imos lanzar o servidor nun globo aerostático

    Tiñamos ideas para levantar o servidor nunha sonda de helio, pero entón o servidor non facía ping por moito tempo antes de que o globo estalase a gran altitude nunha atmosfera enrarecida e toda a estrutura caese ao chan. Quería ampliar a "xanela" do tempo de emisión a unha hora e media. E entón decidiron usar un globo. A duración do voo é de dúas horas. Ademais, aínda que o voo non é totalmente controlable, pode haber o noso enxeñeiro na cesta, quen, en caso de mal funcionamento, pode "acendelo e apagalo" rapidamente no lugar.

  3. Utilizaremos as comunicacións móbiles como rede de transporte

    As antenas WiFi modernas poden "perforar" distancias bastante longas, pero para iso sería necesario construír un complexo de comunicacións que non sexa moi inferior nos seus parámetros a unha estación de radar militar. E por razón de 1,5-2 horas de comunicación, non ten sentido construír un sistema deste tipo, porque á altitude do globo, as comunicacións móbiles deben funcionar de forma estable.

Despois de formular estes "postulados", o proxecto xa non parecía impracticable, e pronto comezamos a traballar nas tres direccións á vez.

En primeiro lugar, dirixímonos aos rapaces de nearspace.ru, que se comeu ao can mentres lanzaba ao aire todo tipo de pezas de ferro (coa posterior busca e rescate).

Despois sacamos o Raspberry Pi 3, que estaba na mesa de noite do noso administrador, e comezamos a configuralo.

Servidor nas nubes: preparándose para o lanzamento
Conectada a cámara:

Servidor nas nubes: preparándose para o lanzamento
E probámolo no noso "Semyon":

Servidor nas nubes: preparándose para o lanzamento
Semyon é moi cómodo como modelo e asistente: non pide comida, non se distrae co teléfono, sempre está de gran humor e cun amplo sorriso por todo o seu casco. Por suposto, non necesitamos un traxe espacial para o voo, pero crea a atmosfera adecuada na oficina.

O esquema do proxecto é o seguinte:

Servidor nas nubes: preparándose para o lanzamento
O Powerbank utilízase para as probas no terreo; para o lanzamento necesítase algo máis fiable.

Quizais a peza de hardware máis interesante é unha placa para recibir datos de todos os sensores:

Servidor nas nubes: preparándose para o lanzamento
Rapaces de nearspace.ru Loitamos durante moito tempo con varios análogos, e despois fixemos nós mesmos un ordenador de a bordo, porque a fiabilidade é de importancia decisiva, o destino de todo o proxecto depende dos datos de telemetría. O ordenador de a bordo é o encargado de recibir os datos de todos os sensores conectados e transmitilos á Raspberry Pi.

Puxémolo en marcha, configurámolo e despois dun par de semanas de programación e agachados con pandeiretas conseguimos obter datos de telemetría e unha foto de Semyon dunha cámara gran angular:

Servidor nas nubes: preparándose para o lanzamento
Os datos de telemetría transmítense nunha liña da seguinte forma:

Servidor nas nubes: preparándose para o lanzamento
Este código converte a cadea nunha matriz e envía os datos ao 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);

Descrición dalgúns datos:

  • N: 2432; — número de paquetes de datos, sempre en aumento
  • T: 40m39s; — tempo desde o momento en que se acende o controlador de voo
  • MP.Stage: 0; — etapa de voo (0 — no chan ou a menos de 1 km, 1 — ascenso, 2 — flotando en altitude, 3 — descenso)
  • MP.Alt:54; — altitude barométrica en metros desde o nivel do mar — debe mostrarse
  • MP.VSvelocidade: 0.0; — velocidade vertical en metros por segundo con filtro mediano
  • MP.Velocidade media: 0.0; — velocidade vertical en metros por segundo con filtro de media
  • Baro.Imprenta:1006.49; - Presión barométrica en milibares
  • Baro.Alt:54; - altitude segundo barómetro
  • Baro.Temp:36.99; - temperatura do propio barómetro
  • GPS.Coord:N56d43m23s,E37d55m68s; - Coordenadas actuais
  • GPS.Inicio:N56d43m23s,E37d55m68s; — coordenadas do punto de partida
  • GPS.Alt:165; — Altitude GPS en metros
  • GPS.Dst:10; - Distancia do punto de partida en metros
  • DS.Temp:[fc]=34.56; - Sensor de temperatura no taboleiro

Como é a saída:

Array 
(
       [N] => 647
       [Т] => 10m55з
       [MP_Stage] => 0
       [MP_Alt] => 49
       [MP_VSpeed) => 0.0
       [MP_AvgVSpeed] => 0.0
       [Baro Рrеss] => 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с] ЗЗ.56
       [Volt] => 5.19, 0.00,0.00,0.00,0.00,0.00,0.00,0.00 
)

Que facer se a comunicación móbil "cae"? Para este caso, temos unha segunda tarxeta; dúas tarxetas SIM están inseridas no módem (unha ranura á vez):

Servidor nas nubes: preparándose para o lanzamento
Pode cambiar automaticamente a unha canle de reserva se a principal deixa de responder de súpeto.

Que pasa se as dúas redes móbiles non están dispoñibles?

Servidor nas nubes: preparándose para o lanzamento(Neno de número "Yeralash" nº 45 Non é por nada que le "A teoría da probabilidade")

Neste caso, teremos un rastreador GPS independente que envía un sinal sobre a súa localización. Teña en conta que non o fai a través dunha rede móbil, cuxa dispoñibilidade a longas distancias non está garantida por ninguén, senón a través dun satélite.

Servidor nas nubes: preparándose para o lanzamento
Si, o rastreador GPS é algo máis grande que o que foi implantado baixo a pel de James Bond. Dado que a nosa competición depende das coordenadas do servidor voador, esta parte dos datos recibidos do taboleiro será a máis importante. Pero disto falaremos no seguinte post. Próximamente, segue o noso blog!

Cremos tanto no éxito de toda a empresa que ata anunciamos unha competición para aqueles que de súpeto queren adiviñar onde caerá a pelota. Detalles na nosa nova publicación.

Fonte: www.habr.com

Engadir un comentario