Server u oblacima: spremanje za pokretanje

В post o regati Pomenuli smo da će u avgustu biti takmičenje sa nagradama za sve Habražitelje. Došlo je vrijeme da se skine veo tajne. Nekako smo dobili ideju da se izraz “server u oblacima” može shvatiti doslovno. Hajde da zapravo pokrenemo radni server u nebo koji se može pingovati! U početku je ideja izgledala suludo, ali nakon što smo je izvrnuli ovako i onako, raspravljajući o njoj na sve načine, konačno smo došli do načina da pošaljemo server prema pticama. Epohalno lansiranje će se održati krajem avgusta, ali za sada radimo na hardverskom dijelu projekta. Detalji ispod reza.

Server u oblacima: spremanje za pokretanje

  1. Server će biti baziran na Raspberry Pi 3

    Bilo bi interesantno dizati server sa jednom jedinicom u vazduh, ali njegova težina + težina UPS-a... Sve ovo bi zahtevalo značajnu silu dizanja. I zašto, ako na osnovu kompaktnog Raspberry Pi 3 možete postaviti sasvim pristojan server, sa računarskom snagom nekoliko stotina puta većom od mašine na kojoj se Tim Berners-Lee zabavljao 1991. godine.

  2. Pokrenimo server u balonu na vrući zrak

    Imali smo ideje da podignemo server na helijumskoj sondi, ali tada server ne bi pingovao dugo prije nego što bi balon puknuo na velikoj visini u razrijeđenoj atmosferi i cijela konstrukcija bi pala na tlo. Želeo sam da proširim „prozor“ emitovanja na sat i po. A onda su odlučili da koriste balon. Trajanje leta je dva sata. Osim toga, iako se let ne može u potpunosti kontrolirati, u korpi se može naći naš inženjer koji u slučaju kvara može brzo, odmah na licu mjesta, „upaliti i isključiti“.

  3. Koristićemo mobilne komunikacije kao transportnu mrežu

    Moderne WiFi antene mogu "probiti" prilično velike udaljenosti, ali za to bi bilo potrebno izgraditi komunikacijski kompleks koji po svojim parametrima nije mnogo inferioran vojnoj radarskoj stanici. A zbog 1,5-2 sata komunikacije, nema smisla graditi takav sistem, jer na visini balona ćelijske komunikacije moraju raditi stabilno.

Nakon formulisanja ovih „postulata“, projekat se više nije činio neizvodljivim i ubrzo smo počeli da radimo u sva tri pravca odjednom.

Prije svega, obratili smo se momcima iz nearspace.ru, koji je pojeo psa dok je bacao svakakve komade željeza u zrak (uz naknadnu potragu i spašavanje).

Zatim smo izvadili Raspberry Pi 3, koji je ležao u noćnom ormariću našeg administratora, i počeli da ga postavljamo.

Server u oblacima: spremanje za pokretanje
Povezana kamera:

Server u oblacima: spremanje za pokretanje
A mi smo to testirali na našem "Semyonu":

Server u oblacima: spremanje za pokretanje
Semjon je veoma zgodan kao model i asistent - ne traži hranu, ne ometa ga telefon, uvek je odlično raspoložen i sa širokim osmehom sa svih strana kacige. Naravno, takvo skafander nam nije potrebno za let, ali stvara pravu atmosferu u kancelariji.

Okvir projekta je sljedeći:

Server u oblacima: spremanje za pokretanje
Powerbank se koristi za testiranje na zemlji; potrebno je nešto pouzdanije za lansiranje.

Možda najzanimljiviji komad hardvera je ploča za primanje podataka sa svih senzora:

Server u oblacima: spremanje za pokretanje
Momci iz nearspace.ru Dugo smo se mučili sa raznim analogama, a onda smo sami napravili kompjuter na brodu, jer je pouzdanost od presudne važnosti, od telemetrijskih podataka zavisi sudbina cijelog projekta. On-board kompjuter je odgovoran za primanje podataka sa svih povezanih senzora i njihovo prenošenje na Raspberry Pi.

Pokrenuli smo ga, konfigurisali i nakon par nedelja programiranja i čučnjeva uz tamburaše, uspeli smo da dobijemo telemetrijske podatke i fotografiju Semjona sa širokougaone kamere:

Server u oblacima: spremanje za pokretanje
Telemetrijski podaci se prenose u jednom redu u sljedećem obliku:

Server u oblacima: spremanje za pokretanje
Ovaj kod zatim konvertuje string u niz i šalje podatke na lokaciju:

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

Opis nekih podataka:

  • N:2432; — broj paketa podataka, koji se stalno povećava
  • T:40m39s; — vrijeme od trenutka kada je kontrolor leta uključen
  • MP.Stage:0; — faza leta (0 — na zemlji ili ispod 1 km, 1 — uspon, 2 — lebdenje na visini, 3 — spuštanje)
  • MP.Alt:54; — barometarska visina u metrima od nivoa mora — treba biti prikazana
  • MP.VSpeed:0.0; — vertikalna brzina u metrima u sekundi sa srednjim filterom
  • MP.AvgVSpeed:0.0; — vertikalna brzina u metrima u sekundi sa filterom usrednjavanja
  • Baro.Press:1006.49; — barometarski pritisak u milibarima
  • Baro.Alt:54; - nadmorska visina prema barometru
  • Baro.Temp:36.99; - temperatura samog barometra
  • GPS.Coord:N56d43m23s,E37d55m68s; — trenutne koordinate
  • GPS.Home:N56d43m23s,E37d55m68s; — koordinate početne tačke
  • GPS.Alt:165; — GPS visina u metrima
  • GPS.Dst:10; — udaljenost od početne tačke u metrima
  • DS.Temp:[fc]=34.56; - temperaturni senzor na ploči

Kako izgleda izlaz:

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 
)

Šta učiniti ako mobilna komunikacija "padne"? Za ovaj slučaj imamo drugu karticu; dvije SIM kartice se ubacuju u modem (jedan po jedan slot):

Server u oblacima: spremanje za pokretanje
Može se automatski prebaciti na rezervni kanal ako glavni iznenada prestane da odgovara.

Šta se događa ako obje mobilne mreže postanu nedostupne?

Server u oblacima: spremanje za pokretanje(Dječak iz broj "Yeralash" br.45 Nije uzalud čitao "Teoriju vjerovatnoće")

U ovom slučaju imat ćemo nezavisni GPS tracker koji šalje signal o svojoj lokaciji. Imajte na umu da to ne čini putem mobilne mreže, čiju dostupnost na velikim udaljenostima niko ne jamči, već putem satelita.

Server u oblacima: spremanje za pokretanje
Da, GPS tracker je nešto veći od onog koji je ugrađen pod kožu Jamesa Bonda. Pošto naša konkurencija zavisi od koordinata letećeg servera, ovaj deo podataka dobijenih sa table će biti najvažniji. Ali o tome ćemo govoriti u sljedećem postu. Uskoro, pratite naš blog!

Toliko vjerujemo u uspjeh čitavog poduhvata da smo čak raspisali konkurs za one koji iznenada žele da pogode gdje će lopta stati. Detalji u našoj novi post.

izvor: www.habr.com

Dodajte komentar