Servere în nori: ne pregătim pentru lansare

În postare despre regată Am menționat că în luna august toți utilizatorii Habr așteaptă un concurs cu premii. A venit momentul să descoperim secretul. Ne-a venit ideea că expresia „server în nori” poate fi înțeleasă literal. Dar haideți să lansăm cu adevărat un server funcțional în aer, pe care să-l putem pinge! Inițial, ideea părea nebunească, dar după ce am discutat-o pe toate fețele, am găsit o cale de a trimite serverul în întâmpinarea păsărilor. La sfârșitul lunii august va avea loc o lansare epocală, iar până atunci ne ocupăm de partea hardware a proiectului. Detalii mai jos.

Servere în nori: ne pregătim pentru lansare

  1. Serverul va fi bazat pe Raspberry Pi 3

    Ar fi interesant să ridicăm un server de 1U în aer, totuși greutatea acestuia + greutatea UPS-ului… Ar fi necesară o capacitate de ridicare considerabilă. Și de ce, când pe baza compactei Raspberry Pi 3 se poate desfășura un server destul de decent, cu o putere de calcul de câteva sute de ori mai mare decât mașina pe care se distra Tim Berners-Lee în 1991.

  2. Serverul va fi lansat cu un balon cu heliu

    Am avut idei de a ridica serverul cu un balon cu heliu, dar atunci serverul nu ar fi fost pingabil pentru mult timp, înainte ca balonul să explozeze la o altitudine mare în atmosferă rarefiată și întreaga construcție să cadă pe pământ. Ne-am dorit să extindem „fereastra” de timp de transmisie la o oră și jumătate. Așa că am decis să folosim un balon cu aer. Durata zborului — două ore. În plus, deși zborul nu este complet controlat, în coș ar putea fi inginerul nostru, care ar putea, în caz de defecțiune, să „pornească și oprească” direct pe loc.

  3. Ca rețea de transport, vom folosi telefonia mobilă

    Antenele WiFi moderne pot „sparge” distanțe destul de mari, dar pentru aceasta ar trebui să construim un complex de comunicație care să se compare, în parametrii, cu o stație radar militară. Și pentru 1,5-2 ore de comunicație, nu are sens să construim un astfel de sistem, deoarece la înălțimea de zbor a balonului, rețeaua mobilă trebuie să funcționeze stabil.

După formularea acestor „postulate”, proiectul a început să pară realizabil, iar în curând ne-am apucat să lucrăm simultan pe toate cele trei direcții.

În primul rând, am cerut ajutor de la echipa de la nearspace.ru, care au experiență în lansările în aer a diferitelor dispozitive (cu căutarea și salvarea ulterioară).

Apoi am scos Raspberry Pi 3, care zăcea în sertarul administratorului nostru, și am început să o configurăm.

Servere în nori: ne pregătim pentru lansare
Am conectat camera:

Servere în nori: ne pregătim pentru lansare
Și am testat-o pe «Semen»:

Servere în nori: ne pregătim pentru lansare
Semen este foarte comod ca model și asistent — nu cere de mâncare, nu se distrage cu telefonul, este întotdeauna de bună dispoziție și cu un zâmbet larg. Desigur, o asemenea gladiatoră nu ne va fi necesară pentru zbor, dar creează o atmosferă potrivită în birou.

Schema proiectului se conturează astfel:

Servere în nori: ne pregătim pentru lansare
Powerbank-ul este folosit pentru testarea la sol, pentru pornire avem nevoie de ceva mai fiabil.

Cea mai interesantă componentă, probabil, este placa de colectare a datelor de la toate senzorii:

Servere în nori: ne pregătim pentru lansare
Băieții de la nearspace.ru s-au chinuit mult cu diferite alternative și apoi au decis să construiască un computer de bord, deoarece fiabilitatea este crucială, iar soarta întregului proiect depinde de datele telemetriei. Computerul de bord se ocupă cu primirea datelor de la toți senzorii conectați și le transmite la Raspberry Pi.

Am pornit, am configurat și după câteva săptămâni de programare și încercări am reușit să obținem datele telemetriei și fotografiile lui Semen cu camera cu un unghi larg:

Servere în nori: ne pregătim pentru lansare
Datele telemetriei sunt transmise sub formă de text, astfel:

Servere în nori: ne pregătim pentru lansare
Apoi acest cod transformă textul într-un array și afișează datele pe 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);

Descrierea unor date:

  • N:2432; — numărul pachetului de date, care crește constant
  • T:40m39s; — timpul de la activarea controlerului de zbor
  • MP.Stage:0; — stadiul zborului (0 — pe sol sau sub 1km, 1 — urcare, 2 — suspendare la înălțime, 3 — coborâre)
  • MP.Alt:54; — înălțimea barometrică în metri deasupra nivelului mării — aceasta trebuie afișată
  • MP.VSpeed:0.0; — viteza verticală în metri pe secundă cu filtru median
  • MP.AvgVSpeed:0.0; — viteza verticală în metri pe secundă cu filtru mediu
  • Baro.Press:1006.49; — presiunea barometrică în milibari
  • Baro.Alt:54; — înălțimea barometrică
  • Baro.Temp:36.99; — temperatura barometrului
  • GPS.Coord:N56d43m23s,E37d55m68s; — coordonatele curente
  • GPS.Home:N56d43m23s,E37d55m68s; — coordonatele punctului de start
  • GPS.Alt:165; — înălțimea GPS în metri
  • GPS.Dst:10; — distanța de la punctul de start în metri
  • DS.Temp:[fc]=34.56; — senzor de temperatură de pe placă

Cum arată datele afișate:

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 
)

Ce să faci dacă semnalul celular „cade”? În acest caz, avem o a doua cartelă, în modem se introduc două SIM-uri (într-un slot pe rând):

Servere în nori: ne pregătim pentru lansare
Se poate comuta automat pe canalul de rezervă, dacă cel principal nu mai răspunde.

Ce se întâmplă dacă ambele rețele de telefonie mobilă devin inaccesibile?

Servere în nori: ne pregătim pentru lansare(Băiatul din ediția „Eralash” nr. 45 nu citește degeaba „Teoria probabilităților”)

În acest caz, vom avea un GPS tracker independent care va trimite semnale despre locația sa. Rețineți că face acest lucru nu prin rețeaua de telefonie mobilă, disponibilitatea căreia pe distanțe mari nu este garantată, ci prin satelit.

Servere în nori: ne pregătim pentru lansare
Da, GPS trackerul este puțin mai mare decât cel implantat sub piele lui James Bond. Deoarece concursul nostru depinde de coordonatele serverului zburător, această parte a datelor obținute de la bord va fi cea mai importantă. Dar despre asta vom vorbi în următorul articol. În curând, urmăriți blogul nostru!

Credem în succesul întregului proiect atât de mult, încât am anunțat un concurs pentru cei care vor să ghicească locul de aterizare al balonului. Detalii în noul nostru articol.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster