Servidor nas nuvens: preparando-se para lançar

В postar sobre a regata Mencionamos que em agosto haverá um concurso com prêmios para todos os Habrazhitels. Chegou a hora de rasgar o véu do segredo. De alguma forma, tivemos a ideia de que a frase “servidor nas nuvens” pode ser interpretada literalmente. Na verdade, vamos lançar um servidor funcional no céu que possa receber ping! A princípio a ideia parecia maluca, mas depois de distorcê-la de um lado para o outro, discutindo de todas as maneiras, finalmente encontramos uma maneira de enviar o servidor em direção aos pássaros. Um lançamento que marcará época acontecerá no final de agosto, mas por enquanto estamos trabalhando na parte de hardware do projeto. Detalhes sob o corte.

Servidor nas nuvens: preparando-se para lançar

  1. O servidor será baseado em Raspberry Pi 3

    Seria interessante levantar no ar um servidor de unidade única, mas seu peso + o peso do no-break... Tudo isso exigiria uma força de elevação considerável. E por que, se com base em um Raspberry Pi 3 compacto você pode implantar um servidor bastante decente, com um poder de computação centenas de vezes maior do que a máquina em que Tim Berners-Lee se divertiu em 1991.

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

    Tínhamos ideias de levantar o servidor em uma sonda de hélio, mas o servidor demoraria muito para que o balão explodisse em alta altitude em uma atmosfera rarefeita e toda a estrutura caísse no chão. Queria ampliar a “janela” de tempo de antena para uma hora e meia. E então decidiram usar um balão. A duração do voo é de duas horas. Além disso, embora o voo não seja totalmente controlável, pode estar no cesto o nosso engenheiro, que, em caso de avaria, pode rapidamente, no local, “ligá-lo e desligá-lo”.

  3. Usaremos comunicações celulares como rede de transporte

    As antenas WiFi modernas podem “perfurar” distâncias bastante longas, mas para isso seria necessário construir um complexo de comunicações que não fosse muito inferior em seus parâmetros a uma estação de radar militar. E por causa de 1,5 a 2 horas de comunicação, não faz sentido construir tal sistema, porque na altitude do balão, as comunicações celulares devem funcionar de forma estável.

Depois de formular estes “postulados”, o projeto já não parecia inviável e logo começamos a trabalhar nas três direções ao mesmo tempo.

Em primeiro lugar, recorremos aos caras de nearspace.ru, que comeu o cachorro enquanto lançava ao ar todo tipo de pedaços de ferro (com posterior busca e resgate).

Em seguida, pegamos o Raspberry Pi 3, que estava na mesa de cabeceira do administrador, e começamos a configurá-lo.

Servidor nas nuvens: preparando-se para lançar
Conectou a câmera:

Servidor nas nuvens: preparando-se para lançar
E testamos em nosso “Semyon”:

Servidor nas nuvens: preparando-se para lançar
Semyon é muito conveniente como modelo e assistente - não pede comida, não se distrai com o telefone, está sempre de ótimo humor e com um largo sorriso em todo o capacete. É claro que não precisamos desse traje espacial para o voo, mas ele cria a atmosfera certa no escritório.

O esboço do projeto é o seguinte:

Servidor nas nuvens: preparando-se para lançar
O Powerbank é usado para testes de solo; é necessário algo mais confiável para o lançamento.

Talvez a peça de hardware mais interessante seja uma placa para receber dados de todos os sensores:

Servidor nas nuvens: preparando-se para lançar
Caras de nearspace.ru Lutamos muito com vários análogos, e depois fizemos nós mesmos um computador de bordo, porque a confiabilidade é de importância decisiva, o destino 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 ao Raspberry Pi.

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

Servidor nas nuvens: preparando-se para lançar
Os dados de telemetria são transmitidos em uma linha da seguinte forma:

Servidor nas nuvens: preparando-se para lançar
Este código então 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 aumentando
  • T:40m39s; — tempo desde o momento em que o controlador de vôo é ligado
  • MP.Estágio:0; — fase de voo (0 — no solo ou abaixo de 1 km, 1 — subida, 2 — pairar em altitude, 3 — descida)
  • MP.Alt:54; — altitude barométrica em metros 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.Pressione:1006.49; — pressão barométrica em milibares
  • Baro.Alt:54; - altitude de acordo com o barômetro
  • 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; — 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 da 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 
)

O que fazer se a comunicação celular “cair”? Para este caso, temos um segundo cartão; dois cartões SIM são inseridos no modem (um slot por vez):

Servidor nas nuvens: preparando-se para lançar
Ele pode mudar automaticamente para um canal sobressalente se o canal principal parar de responder repentinamente.

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

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

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

Servidor nas nuvens: preparando-se para lançar
Sim, o rastreador GPS é um pouco maior do que aquele implantado sob a pele de James Bond. Como a nossa competição depende das coordenadas do servidor voador, esta parte dos dados recebidos do tabuleiro será a mais importante. Mas falaremos sobre isso no próximo post. Em breve, acompanhe nosso blog!

Acreditamos tanto no sucesso de todo o empreendimento que até anunciamos um concurso para quem de repente quer adivinhar onde a bola vai cair. Detalhes em nosso nova postagem.

Fonte: habr.com

Adicionar um comentário