In Abbiamo accennato che ad agosto tutti i membri di Habr potranno partecipare a un concorso con premi. È giunto il momento di sollevare il sipario. Ci è venuta l'idea che l'espressione "server nel cloud" potesse essere interpretata alla lettera. Che ne dite di lanciare un server funzionante nel cielo, che si possa pinger? All'inizio l'idea sembrava folle, ma riflettendoci e discutendola in vari modi, abbiamo trovato un modo per mandare il server a incontrare gli uccelli. Alla fine di agosto avrà luogo un lancio epocale, mentre noi stiamo già lavorando sulla parte hardware del progetto. Maggiori dettagli a seguire.
- Il server sarà basato su Raspberry Pi 3
Sarebbe interessante sollevare in aria un server a unità unica, ma il suo peso più il peso dell'UPS... Per tutto questo sarebbe necessaria una notevole forza di sollevamento. E perché, se su una compatta Raspberry Pi 3 si può montare un server con una potenza di calcolo diverse centinaia di volte superiore a quella della macchina su cui si divertiva nel 1991 Tim Berners-Lee.
- Il server verrà lanciato con un pallone
Avevamo idee di sollevare un server con un pallone di elio, ma in quel caso il server sarebbe stato attivo solo per poco tempo, prima che il pallone scoppiasse ad alta quota in un'atmosfera rarefatta e tutta la struttura cadesse a terra. Volevamo espandere la "finestra" di tempo etereo a un'ora e mezza. Poi abbiamo deciso di utilizzare un pallone aerostatico. La durata del volo è di due ore. Inoltre, sebbene il volo non sia completamente controllato, un nostro ingegnere può essere nella cesta e, in caso di malfunzionamento, intervenire rapidamente per "accendere e spegnere".
- Utilizzeremo la rete cellulare come rete di trasporto.
Le moderne antenne WiFi possono coprire distanze considerevoli, ma per questo bisognerebbe costruire un sistema di comunicazione poco inferiore a una stazione radar militare. E non ha senso costruire un sistema del genere per 1,5-2 ore di comunicazione, poiché a quell'altezza la rete cellulare dovrebbe funzionare in modo stabile.
Dopo aver formulato questi "postulati", il progetto ha smesso di sembrare irrealizzabile, e presto ci siamo messi al lavoro su tutti e tre i fronti.
Per prima cosa ci siamo rivolti ai ragazzi di , che hanno accumulato esperienza nei lanci di vari dispositivi (seguiti da ricerca e recupero).
Poi abbiamo preso un Raspberry Pi 3, che giaceva nella scrivania del nostro amministratore, e abbiamo iniziato a configurarlo.

Abbiamo collegato la telecamera:

E l'abbiamo testata sul nostro "Semen":

Semen è molto comodo come modello e assistente — non chiede cibo, non si distrae con il telefono, è sempre di ottimo umore e con un ampio sorriso. Certo, una tuta spaziale del genere non ci servirà per il volo, ma crea una giusta atmosfera in ufficio.
Il progetto si delinea come segue:

Il powerbank è utilizzato per i test a terra, per il lancio serve qualcosa di più affidabile.
La componente più interessante è probabilmente il circuito per raccogliere dati da tutti i sensori:

I ragazzi di hanno a lungo faticato con vari analoghi, e poi hanno creato un computer di bordo, perché l'affidabilità è cruciale; 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.
Abbiamo avviato, configurato e dopo un paio di settimane di programmazione e tentativi siamo riusciti a ottenere i dati di telemetria e una foto di Semen con una camera grandangolare:

I dati di telemetria vengono trasmessi in una stringa nel seguente formato:

Successivamente, questo codice trasforma la stringa in un array e visualizza i dati sul 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 di dati, aumenta sempre
- T:40m39s; — tempo dall'accensione del controllore di volo
- MP.Stage:0; — fase del volo (0 — a terra o sotto 1 km, 1 — ascesa, 2 — sospensione in quota, 3 — discesa)
- MP.Alt:54; — altezza barometrica in metri sul livello del mare — deve essere visualizzata
- MP.VSpeed:0.0; — velocità verticale in metri al secondo con filtro mediano
- MP.AvgVSpeed:0.0; — velocità verticale in metri al secondo con filtro medio
- Baro.Press:1006.49; — pressione barometrica in millibar
- Baro.Alt:54; — altezza secondo il barometro
- Baro.Temp:36.99; — temperatura del barometro
- GPS.Coord:N56d43m23s,E37d55m68s; — coordinate correnti
- GPS.Home: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 appaiono i dati in uscita:
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 se la rete mobile «cadesse»? In questo caso abbiamo una seconda scheda, in cui si inseriscono due SIM (in uno slot a turno):

Sa passare automaticamente a un canale di riserva se quello principale smette di rispondere.
E cosa succede se entrambe le reti mobili diventano indisponibili?
(Il ragazzo di non legge invano la «Teoria delle probabilità»)
In questo caso, avremo un GPS tracker indipendente che invierà un segnale sulla propria posizione. Tenete presente che questo non avviene tramite la rete cellulare, la cui disponibilità a grandi distanze non è garantita da nessuno, ma attraverso un satellite.

Sì, il GPS tracker è un po' più grande di quello impiantato sottopelle a James Bond. Poiché il nostro concorso dipende dalle coordinate del server volante, questa parte dei dati ricevuti a bordo sarà la più importante. Ma ne parleremo nel prossimo post. Restate sintonizzati sul nostro blog!
Crediamo così tanto nel successo di tutto il progetto che abbiamo persino indetto un concorso per chi volesse indovinare il luogo di atterraggio della sfera. Maggiori dettagli nel nostro .
Fonte: habr.com
