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

A câmera foi conectada:

E nós testamos isso em nosso "Semyon":

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:

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:

Caras de 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:

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

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

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?
(Garoto de 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.

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