Serveris debesyse: ruošiamasi paleisti

В įrašas apie regatą Minėjome, kad rugpjūtį vyks konkursas su prizais visiems Habrazhiteliams. Atėjo laikas nuplėšti paslapties šydą. Kažkaip mums kilo mintis, kad frazę „serveris debesyse“ galima suprasti pažodžiui. Iš tikrųjų paleiskime į dangų veikiantį serverį, kurį galima pinguoti! Iš pradžių idėja atrodė beprotiška, bet pasukus į šį bei tą, visokeriopai aptarinėjome, galiausiai sugalvojome kaip pasiųsti serverį link paukščių. Epochinis paleidimas įvyks rugpjūčio pabaigoje, tačiau kol kas dirbame su projekto technine dalimi. Detalės po pjūviu.

Serveris debesyse: ruošiamasi paleisti

  1. Serveris bus pagrįstas Raspberry Pi 3

    Įdomu būtų pakelti į orą vieno bloko serverį, bet jo svoris + UPS svoris... Visa tai pareikalautų nemažos keliamosios jėgos. Ir kodėl, jei naudodamiesi kompaktišku Raspberry Pi 3 galite dislokuoti gana neblogą serverį, kurio skaičiavimo galia kelis šimtus kartų didesnė nei mašinos, ant kurios 1991 m. linksminosi Timas Bernersas-Lee.

  2. Paleiskime serverį oro balionu

    Turėjome minčių pakelti serverį ant helio zondo, bet tada serveris ilgai nepingavo, kol balionas sprogs dideliame aukštyje retoje atmosferoje ir visa konstrukcija nukris ant žemės. Norėjau praplėsti eterio „langą“ iki pusantros valandos. Ir tada jie nusprendė panaudoti balioną. Skrydžio trukmė – dvi valandos. Be to, nors skrydis nėra visiškai valdomas, krepšelyje gali būti mūsų inžinierius, kuris gedimo atveju gali greitai, vietoje „įjungti ir išjungti“.

  3. Kaip transporto tinklą naudosime korinį ryšį

    Šiuolaikinės WiFi antenos gali „pramušti“ gana didelius atstumus, tačiau tam reikėtų pastatyti ryšių kompleksą, savo parametrais ne ką prastesnį už karinę radiolokacinę stotį. O dėl 1,5-2 valandų ryšio tokios sistemos statyti nėra prasmės, nes oro baliono aukštyje korinis ryšys turi veikti stabiliai.

Suformulavus šiuos „postulatus“, projektas nebeatrodė neįgyvendinamas ir netrukus pradėjome dirbti visomis trimis kryptimis vienu metu.

Pirmiausia kreipėmės į vaikinus iš nearspace.ru, kuris suvalgė šunį paleisdamas į orą visokius geležies gabalus (su vėlesne paieška ir gelbėjimu).

Tada išėmėme Raspberry Pi 3, kuris gulėjo ant mūsų administratoriaus naktinio staliuko, ir pradėjome jį statyti.

Serveris debesyse: ruošiamasi paleisti
Prijungta kamera:

Serveris debesyse: ruošiamasi paleisti
Ir mes tai išbandėme savo „Semyon“:

Serveris debesyse: ruošiamasi paleisti
Semjonas labai patogus kaip modelis ir asistentas – jis neprašo maisto, nesiblaško prie telefono, visada puikios nuotaikos ir su plačia šypsena iš viso šalmo. Žinoma, tokio skafandro skrydžiui mums nereikia, bet biure jis sukuria tinkamą atmosferą.

Projekto schema yra tokia:

Serveris debesyse: ruošiamasi paleisti
„Powerbank“ naudojamas bandymams ant žemės; norint paleisti reikia kažko patikimesnio.

Galbūt įdomiausia techninė įranga yra plokštė, skirta duomenims iš visų jutiklių gauti:

Serveris debesyse: ruošiamasi paleisti
Vaikinai iš nearspace.ru Ilgai kovojome su įvairiais analogais, o paskui patys pasidarėme borto kompiuterį, nes patikimumas turi lemiamą reikšmę, nuo telemetrijos duomenų priklauso viso projekto likimas. Borto kompiuteris yra atsakingas už duomenų priėmimą iš visų prijungtų jutiklių ir jų perdavimą į Raspberry Pi.

Paleidome, sukonfigūravome ir po poros savaičių programavimo ir pritūpimų su tamburinais pavyko gauti telemetrijos duomenis ir Semjono nuotrauką iš plačiakampio fotoaparato:

Serveris debesyse: ruošiamasi paleisti
Telemetrijos duomenys perduodami viena eilute tokia forma:

Serveris debesyse: ruošiamasi paleisti
Tada šis kodas konvertuoja eilutę į masyvą ir išveda duomenis į svetainę:

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

Kai kurių duomenų aprašymas:

  • N: 2432; — duomenų paketų skaičius, nuolat didėjantis
  • T: 40m39s; — laikas nuo skrydžio vadovo įjungimo momento
  • MP.Stage:0; — skrydžio etapas (0 — ant žemės arba žemiau 1 km, 1 — kilimas, 2 — sklandymas aukštyje, 3 — nusileidimas)
  • MP.Alt:54; — barometrinis aukštis metrais nuo jūros lygio — jis turėtų būti rodomas
  • MP.VSgreitis: 0.0; — vertikalus greitis metrais per sekundę su medianiniu filtru
  • MP.AvgVSpeed:0.0; — vertikalus greitis metrais per sekundę su vidurkinimo filtru
  • Baro.Spauda:1006.49; — barometro slėgis milibarais
  • Baro.Alt:54; - aukštis virš jūros lygio pagal barometrą
  • Baro.Temp:36.99; - paties barometro temperatūra
  • GPS.Coord:N56d43m23s,E37d55m68s; — dabartinės koordinatės
  • GPS.Pagrindinis:N56d43m23s,E37d55m68s; — pradžios taško koordinatės
  • GPS.Alt:165; — GPS aukštis metrais
  • GPS.Dst:10; — atstumas nuo pradžios taško metrais
  • DS.Temp:[fc]=34.56; - temperatūros jutiklis ant plokštės

Kaip atrodo išvestis:

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 
)

Ką daryti, jei „nutrūksta“ korinis ryšys? Šiuo atveju turime antrą kortelę, į modemą įdėtos dvi SIM kortelės (po vieną lizdą):

Serveris debesyse: ruošiamasi paleisti
Jis gali automatiškai persijungti į atsarginį kanalą, jei pagrindinis staiga nustoja reaguoti.

Kas atsitiks, jei abu korinio ryšio tinklai taps nepasiekiami?

Serveris debesyse: ruošiamasi paleisti(Berniukas iš numeris „Yeralash“ Nr.45 Ne veltui jis skaito „Tikimybių teoriją“).

Tokiu atveju turėsime nepriklausomą GPS sekiklį, kuris siunčia signalą apie savo buvimo vietą. Atkreipkite dėmesį, kad tai daroma ne per korinį tinklą, kurio prieinamumo dideliais atstumais niekas negarantuoja, o per palydovą.

Serveris debesyse: ruošiamasi paleisti
Taip, GPS sekiklis yra šiek tiek didesnis nei tas, kuris buvo implantuotas po Džeimso Bondo oda. Kadangi mūsų konkurencija priklauso nuo skraidančio serverio koordinačių, ši iš lentos gaunamų duomenų dalis bus pati svarbiausia. Bet apie tai kalbėsime kitame įraše. Netrukus, sekite mūsų tinklaraštį!

Mes taip tikime visos įmonės sėkme, kad net paskelbėme konkursą tiems, kurie staiga nori atspėti, kur nukris kamuolys. Išsami informacija mūsų naujas įrašas.

Šaltinis: www.habr.com

Добавить комментарий