Em 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.
- 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?
- 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.
- 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 , 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.

Conectamos a câmera:

E testamos com nosso 'Semyon':

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:

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:

A equipe de 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:

Os dados de telemetria são transmitidos em uma única string no seguinte formato:

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):

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?
(Menino do 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.

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 .
Fonte: habr.com
