In Abbiamo accennato che ad agosto tutti i membri di Habr potranno partecipare a un concorso con premi. È arrivato il momento di svelare il velo di segretezza. Ci è venuta l'idea che la frase «server nel cloud» possa essere interpretata letteralmente. E se davvero lanciassimo in cielo un server funzionante, che potrebbe essere pingato! Inizialmente l'idea sembrava folle, ma dopo averla girata e discussa a lungo, abbiamo trovato un modo per inviare il server a incontrare gli uccelli. Alla fine di agosto ci sarà un lancio epocale, e nel frattempo stiamo lavorando alla parte hardware del progetto. Maggiori dettagli sotto.
- Il server sarà basato su Raspberry Pi 3
Sarebbe interessante sollevare un server monounitario in aria, tuttavia il suo peso + il peso dell'UPS… Per tutto questo sarebbe necessaria una notevole capacità di sollevamento. E perché farlo, se è possibile installare un server di buon livello che ha una potenza di calcolo diverse centinaia di volte superiore a quella della macchina con cui si divertiva Tim Berners-Lee nel 1991, utilizzando un compatto Raspberry Pi 3.
- Avvieremo il server su un pallone aerostatico
Avevamo idee per sollevare il server con un pallone gonfiato con elio, ma in quel caso il server sarebbe stato pingabile per non molto tempo, prima che il pallone scoppiasse ad alta quota in un'atmosfera rarefatta e tutta la struttura cadesse a terra. Desideravamo ampliare la «finestra» di tempo in volo a un'ora e mezza. E così abbiamo deciso di utilizzare un pallone aerostatico. La durata del volo sarà di due ore. Inoltre, sebbene il volo non sia completamente controllato, nel cestello potrebbe esserci il nostro ingegnere, che potrà, in caso di guasto, attivare e disattivare il server direttamente sul posto.
- Utilizzeremo la rete mobile come rete di trasporto
Le moderne antenne WiFi possono coprire distanze piuttosto grandi, ma per questo sarebbe necessario costruire un complesso di comunicazione che non ha nulla da invidiare a una stazione radar militare. E non ha senso costruire un tale sistema per 1,5-2 ore di comunicazione, poiché ad alta quota la rete mobile dovrebbe funzionare in modo stabile.
Dopo aver formulato questi «postulati», il progetto ha smesso di sembrare irrealizzabile e presto ci siamo messi a lavorare su tutti e tre i fronti contemporaneamente.
Innanzitutto ci siamo rivolti ai ragazzi di , che hanno mangiato un cane durante il lancio di vari oggetti metallici (seguendo la ricerca e il salvataggio).
Poi abbiamo preso il Raspberry Pi 3, che giaceva nel cassetto del nostro admin, 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 grande sorriso sotto il casco. Certo, una tuta del genere non ci servirà per il volo, ma crea l'atmosfera giusta in ufficio.
Lo schema del progetto si delinea come segue:

Il powerbank è usato per i test a terra; per l'avvio abbiamo bisogno di qualcosa di più affidabile.
La componente più interessante è la scheda per acquisire dati da tutti i sensori:

I ragazzi di hanno faticato a lungo con vari analoghi, e poi hanno costruito un computer a bordo, perché l'affidabilità è fondamentale; il destino dell'intero progetto dipende dai dati di telemetria. Il computer a bordo si occupa della ricezione dei dati da tutti i sensori collegati e li trasmette al Raspberry Pi.
Lo abbiamo avviato, configurato, e dopo un paio di settimane di programmazione e riti magici, siamo riusciti a ottenere i dati di telemetria e una foto di Semen con la telecamera grandangolare:

I dati di telemetria vengono trasmessi in una stringa di questo tipo:

Poi questo codice converte 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 — salita, 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 di media
- Baro.Press:1006.49; — pressione barometrica in millibar
- Baro.Alt:54; — altezza barometrica
- Baro.Temp:36.99; — temperatura del barometro stesso
- GPS.Coord:N56d43m23s,E37d55m68s; — coordinate attuali
- GPS.Home:N56d43m23s,E37d55m68s; — coordinate del punto di partenza
- GPS.Alt:165; — altezza 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 visualizzati:
Array
(
[N] => 647
[Т] => 10m55s
[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с] 33.56
[Volt] => 5.19, 0.00,0.00,0.00,0.00,0.00,0.00,0.00
)
E cosa fare se la rete mobile smette di funzionare? A questo proposito abbiamo una seconda scheda, nel modem vengono inserite due SIM (in uno slot a turno):

È in grado di passare automaticamente a un canale di riserva se quello principale smette improvvisamente di rispondere.
E cosa succede se entrambe le reti mobili diventano inattive?
(Ragazzo di non legge a caso "Teoria della probabilità")
A tal fine avremo un GPS tracker indipendente che invierà un segnale sulla propria posizione. Si prega di notare che lo fa non tramite rete mobile, la cui disponibilità a grande distanza non è garantita da nessuno, ma tramite satellite.

Sì, il GPS tracker è un po' più grande di quello impiantato sotto la pelle di James Bond. Poiché il nostro concorso dipende dalle coordinate del server in volo, questa parte dei dati ricevuti a bordo sarà la più importante. Ma di questo parleremo già nel prossimo post. Presto, seguite il nostro blog!
Crediamo così tanto nel successo di tutto il progetto che abbiamo indetto un concorso per chi volesse indovinare il luogo di atterraggio del pallone. Maggiori dettagli nel nostro .
Fonte: habr.com
