Servidor nas nuvens: preparando para o lançamento

Em post sobre a regata mencionei que em agosto todos os usuários do Habrahabr aguardam um concurso com prêmios. Chegou a hora de levantar o véu do segredo. Em um momento, pensamos que a frase "servidor nas nuvens" poderia ser entendida literalmente. Que tal realmente lançarmos um servidor funcional no céu, que possa ser pingado? Inicialmente, a ideia parecia loucura, mas depois de pensar e discutir, conseguimos encontrar um jeito de enviar o servidor em direção às aves. O lançamento épico ocorrerá no final de agosto, e enquanto isso, estamos testando a parte de hardware do projeto. Detalhes após o corte.

Servidor nas nuvens: preparando para o lançamento

  1. O servidor será baseado em Raspberry Pi 3

    Seria interessante elevar um servidor de unidade única ao ar, mas seu peso + peso do UPS... Para tudo isso, precisaríamos de uma força de elevação considerável. E por que, se com uma compacta Raspberry Pi 3 pode se erguer um servidor com poder computacional várias centenas de vezes maior do que a máquina que divertia Tim Berners-Lee em 1991?

  2. O servidor será lançado em um balão de ar

    Tivemos ideias de elevar o servidor com um sonda de hélio, mas então o servidor não ficaria ativo por muito tempo antes que o balão estourasse em grandes altitudes na atmosfera rarefeita e toda a estrutura caísse ao chão. Queríamos expandir a "janela" de tempo de transmissão para uma hora e meia. Assim, decidimos usar um balão de ar. A duração do voo será de duas horas. Além disso, embora o voo não seja completamente controlado, haverá um engenheiro na cesta, que poderá, em caso de falha, prontamente "ligar e desligar" o servidor no local.

  3. Usaremos a rede celular como transporte

    Antenas WiFi modernas podem cobrir distâncias consideráveis, mas para isso teríamos que construir um complexo de comunicação que não ficaria muito atrás das especificações de uma estação de radar militar. E para 1,5 a 2 horas de comunicação, não faz sentido construir tal sistema, já que na altitude do voo do balão, a conexão celular deve ser estável.

Depois de formular esses "postulados", o projeto deixou de parecer irrealizável, e logo começamos a trabalhar em todas as três áreas simultaneamente.

Em primeiro lugar, buscamos ajuda dos rapazes da nearspace.ru, que têm experiência em lançamentos de diversos equipamentos no ar (com posterior busca e resgate).

Então pegamos o Raspberry Pi 3, que estava jogado na gaveta do nosso administrador, e começamos a configurá-lo.

Servidor nas nuvens: preparando para o lançamento
Conectamos a câmera:

Servidor nas nuvens: preparando para o lançamento
E testamos com nosso 'Semyon':

Servidor nas nuvens: preparando para o lançamento
Semyon é muito conveniente como modelo e assistente — não pede comida, não se distrai com o telefone, está sempre de bom humor e com um grande sorriso. Claro, esse traje espacial não será necessário para o voo, mas cria a atmosfera certa no escritório.

O esquema do projeto se delineia da seguinte forma:

Servidor nas nuvens: preparando para o lançamento
O powerbank é usado para testes em solo, é necessário algo mais confiável para a partida.

A peça de hardware mais interessante é a placa para coletar dados de todos os sensores:

Servidor nas nuvens: preparando para o lançamento
A equipe de nearspace.ru lutou por um longo tempo com vários análogos e, então, acabou criando um computador de bordo, porque a confiabilidade é crucial, os dados de telemetria determinam o destino de todo o projeto. O computador de bordo é responsável por receber dados de todos os sensores conectados e transmiti-los ao Raspberry Pi.

Ligamos, configuramos, e após algumas semanas de programação e esforços intensos, conseguimos obter dados de telemetria e a foto de Semyon com a câmera grande angular:

Servidor nas nuvens: preparando para o lançamento
Os dados de telemetria são transmitidos em uma única string no seguinte formato:

Servidor nas nuvens: preparando para o lançamento
Em seguida, esse código transforma a string em um array e exibe os dados no site:

$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);

Descrição de alguns dados:

  • N:2432; — número do pacote de dados, sempre aumenta
  • T:40m39s; — tempo desde que o controlador de voo foi ligado
  • MP.Stage:0; — estágio do voo (0 — no solo ou abaixo de 1km, 1 — subida, 2 — pairando em altura, 3 — descida)
  • MP.Alt:54; — altura barométrica em metros acima do nível do mar — deve ser exibida
  • MP.VSpeed:0.0; — velocidade vertical em metros por segundo com filtro mediano
  • MP.AvgVSpeed:0.0; — velocidade vertical em metros por segundo com filtro de média
  • Baro.Press:1006.49; — pressão barométrica em milibares
  • Baro.Alt:54; — altura barométrica
  • Baro.Temp:36.99; — temperatura do próprio barômetro
  • GPS.Coord:N56d43m23s,E37d55m68s; — coordenadas atuais
  • GPS.Home:N56d43m23s,E37d55m68s; — coordenadas do ponto de partida
  • GPS.Alt:165; — altura pelo GPS em metros
  • GPS.Dst:10; — distância do ponto de partida em metros
  • DS.Temp:[fc]=34.56; — sensor de temperatura na placa

Como são os dados gerados:

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] => [fc] 33.56
       [Volt] => 5.19, 0.00,0.00,0.00,0.00,0.00,0.00,0.00 
)

E o que fazer se a conexão celular falhar? Para isso, temos um segundo cartão, onde dois chips podem ser inseridos (um slot de cada vez):

Servidor nas nuvens: preparando para o lançamento
Ele pode mudar automaticamente para o canal reserva, caso o principal de repente pare de responder.

E o que acontece se ambas as redes celulares ficarem indisponíveis?

Servidor nas nuvens: preparando para o lançamento(Menino do episódio "Eralash" nº 45 não está lendo "Teoria da Probabilidade" à toa)

Para isso, teremos um rastreador GPS independente, enviando um sinal de sua localização. Note que ele faz isso não através da rede celular, cuja disponibilidade a longas distâncias não é garantida por ninguém, mas através de satélite.

Servidor nas nuvens: preparando para o lançamento
Sim, o rastreador GPS é um pouco maior do que aquele que foi implantado sob a pele de James Bond. Como nosso concurso depende das coordenadas do servidor voador, essa parte dos dados obtidos a bordo será a mais importante. Mas sobre isso falaremos no próximo post. Muito em breve, fique de olho em nosso blog!

Acreditamos tanto no sucesso de todo o empreendimento que até anunciamos um concurso para aqueles que quiserem adivinhar o local de pouso da bola. Detalhes em nosso novo post.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster