Server tra le nuvole: pronti al lancio

В post sulla regata Abbiamo accennato che ad agosto si svolgerà un concorso a premi per tutti gli Habrazhitel. È giunto il momento di strappare il velo di segretezza. In qualche modo ci è venuta l'idea che la frase “server tra le nuvole” possa essere presa alla lettera. Lanciamo effettivamente in cielo un server funzionante su cui è possibile eseguire il ping! All'inizio l'idea sembrava folle, ma dopo averla girata di qua e di là, discutendone in ogni modo, alla fine abbiamo trovato un modo per mandare il server verso gli uccelli. A fine agosto avverrà un lancio epocale, ma per ora stiamo lavorando sulla parte hardware del progetto. Dettagli sotto il taglio.

Server tra le nuvole: pronti al lancio

  1. Il server sarà basato su Raspberry Pi 3

    Sarebbe interessante sollevare in aria un server composto da una sola unità, ma il suo peso + il peso dell'UPS... Tutto ciò richiederebbe una notevole forza di sollevamento. E perché, se sulla base di un Raspberry Pi 3 compatto fosse possibile implementare un server abbastanza decente, con una potenza di calcolo diverse centinaia di volte maggiore della macchina su cui si divertì Tim Berners-Lee nel 1991.

  2. Lanciamo il server in una mongolfiera

    Avevamo l'idea di sollevare il server su una sonda a elio, ma poi il server non avrebbe funzionato a lungo prima che il pallone esplodesse ad alta quota in un'atmosfera rarefatta e l'intera struttura cadesse a terra. Volevo espandere la "finestra" del tempo di trasmissione a un'ora e mezza. E poi hanno deciso di usare un palloncino. La durata del volo è di due ore. Inoltre, nonostante il volo non sia del tutto controllabile, nella cesta può essere presente il nostro ingegnere che, in caso di malfunzionamento, può velocemente, sul posto, “accenderlo e spegnerlo”.

  3. Utilizzeremo le comunicazioni cellulari come rete di trasporto

    Le moderne antenne WiFi possono "perforare" distanze piuttosto lunghe, ma per questo sarebbe necessario costruire un complesso di comunicazioni che non sia molto inferiore nei suoi parametri a una stazione radar militare. E per 1,5-2 ore di comunicazione, non ha senso costruire un sistema del genere, perché all'altitudine del pallone le comunicazioni cellulari devono funzionare stabilmente.

Dopo aver formulato questi “postulati”, il progetto non sembrava più irrealizzabile e presto abbiamo iniziato a lavorare in tutte e tre le direzioni contemporaneamente.

Prima di tutto ci siamo rivolti ai ragazzi di Nearspace.ru, che ha mangiato il cane lanciando in aria ogni sorta di pezzi di ferro (con successiva ricerca e salvataggio).

Quindi abbiamo tirato fuori il Raspberry Pi 3, che giaceva sul comodino del nostro amministratore, e abbiamo iniziato a configurarlo.

Server tra le nuvole: pronti al lancio
Collegata la fotocamera:

Server tra le nuvole: pronti al lancio
E lo abbiamo testato sul nostro "Semyon":

Server tra le nuvole: pronti al lancio
Semyon è molto comodo come modello e assistente: non chiede cibo, non è distratto dal telefono, è sempre di ottimo umore e con un ampio sorriso su tutto il casco. Naturalmente non abbiamo bisogno di una tuta spaziale per il volo, ma crea la giusta atmosfera in ufficio.

Lo schema del progetto è il seguente:

Server tra le nuvole: pronti al lancio
Per i test a terra viene utilizzata la Powerbank; per il lancio serve qualcosa di più affidabile.

Forse l'hardware più interessante è una scheda per ricevere dati da tutti i sensori:

Server tra le nuvole: pronti al lancio
Ragazzi di Nearspace.ru Abbiamo lottato a lungo con vari analoghi, quindi abbiamo realizzato noi stessi un computer di bordo, perché l'affidabilità è di importanza decisiva, il destino dell'intero progetto dipende dai dati di telemetria. Il computer di bordo è responsabile della ricezione dei dati da tutti i sensori collegati e della loro trasmissione al Raspberry Pi.

L'abbiamo lanciato, configurato e dopo un paio di settimane di programmazione e squat con i tamburelli, siamo riusciti a ottenere i dati di telemetria e una foto di Semyon da una fotocamera grandangolare:

Server tra le nuvole: pronti al lancio
I dati di telemetria vengono trasmessi su una riga nel seguente formato:

Server tra le nuvole: pronti al lancio
Questo codice converte quindi la stringa in un array e invia i dati al sito:

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

Descrizione di alcuni dati:

  • N:2432; — numero del pacchetto dati, sempre in aumento
  • T:40m39s; — tempo dal momento in cui il controllore di volo viene acceso
  • MP.Stadio:0; — fase di volo (0 — a terra o a una distanza inferiore a 1 km, 1 — salita, 2 — volo stazionario in quota, 3 — discesa)
  • MP.Alt:54; — altitudine barometrica in metri dal livello del mare — dovrebbe essere visualizzata
  • MP.VVelocità:0.0; — velocità verticale in metri al secondo con filtro mediano
  • MP.AvgVSpeed:0.0; — velocità verticale in metri al secondo con filtro di media
  • Baro.Press:1006.49; — pressione barometrica in millibar
  • Baro.Alt:54; - altitudine secondo il barometro
  • Baro.Temp:36.99; - temperatura del barometro stesso
  • Coordinazione GPS:N56d43m23s,E37d55m68s; — coordinate attuali
  • GPS.Casa:N56d43m23s,E37d55m68s; — coordinate del punto di partenza
  • GPS.Alt:165; — Altitudine GPS in metri
  • GPS.Dst:10; — distanza dal punto di partenza in metri
  • DS.Temp:[fc]=34.56; - sensore di temperatura sulla scheda

Come appare l'output:

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 
)

Cosa fare se la comunicazione cellulare “cade”? In questo caso abbiamo una seconda scheda; nel modem vengono inserite due SIM card (uno slot alla volta):

Server tra le nuvole: pronti al lancio
Può passare automaticamente a un canale di riserva se quello principale smette improvvisamente di rispondere.

Cosa succede se entrambe le reti cellulari non sono più disponibili?

Server tra le nuvole: pronti al lancio(Ragazzo da numero "Yeralash" n. 45 Non per niente legge “La teoria della probabilità”)

In questo caso avremo un localizzatore GPS indipendente che invierà un segnale sulla sua posizione. Tieni presente che lo fa non tramite una rete cellulare, la cui disponibilità su lunghe distanze non è garantita da nessuno, ma tramite un satellite.

Server tra le nuvole: pronti al lancio
Sì, il localizzatore GPS è leggermente più grande di quello impiantato sotto la pelle di James Bond. Poiché la nostra competizione dipende dalle coordinate del server volante, questa parte dei dati ricevuti dal tabellone sarà la più importante. Ma di questo parleremo nel prossimo post. Prossimamente, segui il nostro blog!

Crediamo così tanto nel successo dell'intera impresa che abbiamo addirittura indetto un concorso per chi all'improvviso vorrà indovinare dove si fermerà la pallina. Dettagli nel ns nuovo post.

Fonte: habr.com

Aggiungi un commento