Servidor nas nuvens: preparando-se para lançar

В postagem sobre a regata Mencionamos que um concurso com prêmios aguarda todos os usuários do Habrahabr em agosto. Chegou a hora de revelar o segredo. Percebemos que a expressão "servidor nas nuvens" poderia ser interpretada literalmente. Vamos lançar um servidor funcional no céu, que possamos pingar! A princípio, a ideia pareceu maluca, mas depois de analisá-la e discuti-la de todas as maneiras possíveis, finalmente encontramos um jeito de enviar o servidor voando em direção aos pássaros. O lançamento histórico acontecerá no final de agosto e, enquanto isso, estamos ajustando o hardware do projeto. Mais detalhes abaixo.

Servidor nas nuvens: preparando-se para lançar

  1. O servidor será baseado no Raspberry Pi 3.

    Seria interessante levantar um servidor de uma única unidade no ar, mas seu peso mais o peso de um nobreak... Tudo isso exigiria uma força de elevação considerável. E por que se dar ao trabalho, quando um Raspberry Pi 3 compacto pode ser usado para implantar um servidor perfeitamente decente com poder de computação centenas de vezes maior do que a máquina que Tim Berners-Lee usou por diversão em 1991?

  2. Vamos lançar o servidor em um balão de ar quente.

    Consideramos a possibilidade de transportar o servidor em um balão de hélio, mas, nesse caso, o servidor não responderia ao ping por muito tempo antes que o balão estourasse em alta altitude na atmosfera rarefeita e toda a estrutura caísse no chão. Queríamos estender o tempo de voo para uma hora e meia. Então, decidimos usar um balão de ar quente. A duração do voo é de duas horas. Além disso, embora o voo não seja totalmente controlado, nosso engenheiro poderia estar na cesta e, em caso de mau funcionamento, poderia rapidamente ligá-lo e desligá-lo ali mesmo.

  3. Utilizaremos as comunicações celulares como rede de transporte.

    As antenas Wi-Fi modernas conseguem alcançar distâncias consideráveis, mas para isso seria necessário um sistema de comunicação quase tão potente quanto uma estação de radar militar. Construir um sistema desse tipo para apenas 1,5 a 2 horas de comunicação não faz sentido, já que o serviço de celular precisa ser confiável na altitude de um voo de balão de ar quente.

Após formularmos esses “postulados”, o projeto deixou de parecer impossível e, em breve, começamos a trabalhar nas três direções simultaneamente.

Em primeiro lugar, recorremos aos rapazes da nearspace.ru, que já comeu um cachorro e lançou todo tipo de objeto de ferro para o ar (com subsequentes buscas e resgates).

Então pegamos o Raspberry Pi 3 que estava na mesa de cabeceira do nosso administrador e começamos a configurá-lo.

Servidor nas nuvens: preparando-se para lançar
A câmera foi conectada:

Servidor nas nuvens: preparando-se para lançar
E nós testamos isso em nosso "Semyon":

Servidor nas nuvens: preparando-se para lançar
Semyon é muito prático como modelo e assistente — não pede comida, não se distrai com o celular e está sempre de ótimo humor, com um sorriso largo por trás do capacete. Claro que não precisaremos de um traje espacial desses para o voo, mas ele cria a atmosfera ideal no escritório.

O esboço do projeto é o seguinte:

Servidor nas nuvens: preparando-se para lançar
O carregador portátil é usado para testes em solo; para o lançamento, é necessário algo mais confiável.

Talvez o componente de hardware mais interessante seja a placa para receber dados de todos os sensores:

Servidor nas nuvens: preparando-se para lançar
Caras de nearspace.ru Analisamos diversas alternativas por um longo tempo e, então, decidimos construir nosso próprio computador de bordo, pois a confiabilidade é crucial, já que o sucesso de todo o projeto depende dos dados de telemetria. O computador de bordo é responsável por receber os dados de todos os sensores conectados e transmiti-los para o Raspberry Pi.

Lançamos o sistema, configuramos tudo e, depois de algumas semanas de programação e agachamentos com pandeiros, conseguimos obter dados de telemetria e fotos de Semyon com uma câmera grande angular:

Servidor nas nuvens: preparando-se para lançar
Os dados de telemetria são transmitidos em uma única linha, no seguinte formato:

Servidor nas nuvens: preparando-se para lançar
Em seguida, esse código converte a string em um array e envia os dados para o 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 crescente
  • T:40m39s; — tempo desde que o controlador de voo foi ligado
  • MP.Estágio:0; — estágio de voo (0 — no solo ou abaixo de 1 km, 1 — ascendendo, 2 — pairando em altitude, 3 — descendo)
  • MP.Alt:54; — altitude 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 de mediana
  • MP.AvgVSpeed:0.0; — velocidade vertical em metros por segundo com um filtro de média
  • Baro.Press:1006.49; — pressão barométrica em milibares
  • Baro.Alt:54; — altitude de acordo com o barômetro
  • Baro.Temp:36.99; — a temperatura do próprio barômetro
  • Coordenadas GPS: N56°43'23", E37°55'68"; — coordenadas atuais
  • GPS.Home:N56d43m23s,E37d55m68s; — coordenadas do ponto de partida
  • GPS.Alt:165; — Altitude GPS em metros
  • GPS.Dst:10; — distância do ponto de partida em metros
  • DS.Temp:[fc]=34.56; — sensor de temperatura na placa

Qual é a aparência do resultado:

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 
)

E se a conexão celular cair? Para esse caso, temos um segundo cartão; dois cartões SIM são inseridos no modem (um slot de cada vez):

Servidor nas nuvens: preparando-se para lançar
Ele pode alternar automaticamente para um canal de backup caso o canal principal pare de responder repentinamente.

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

Servidor nas nuvens: preparando-se para lançar(Garoto de edição "Yeralash" nº 45 Não é à toa que ele lê "Teoria da Probabilidade".

Neste caso, teremos um rastreador GPS independente que envia um sinal indicando sua localização. Observe que ele faz isso não por meio de uma rede celular, cuja disponibilidade em longas distâncias não é garantida, mas sim via satélite.

Servidor nas nuvens: preparando-se para lançar
Sim, o rastreador GPS é um pouco maior do que o implantado sob a pele de James Bond. Como nosso concurso depende das coordenadas do servidor voador, essa parte dos dados recebidos da aeronave será a mais importante. Mas falaremos sobre isso na próxima publicação. Fiquem ligados no nosso blog em breve!

Acreditamos tanto no sucesso de todo o projeto que até anunciamos um concurso para quem quiser adivinhar onde o balão vai pousar. Mais detalhes em nosso [link para o site/recurso]. nova postagem.

Fonte: habr.com

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