U Spomenuli smo da u kolovozu sve Habr korisnike očekuje natjecanje s nagradama. Došlo je vrijeme da skinemo plašt tajne. Pala nam je na pamet misao da se fraza "server u oblacima" može shvatiti doslovno. Što kažete, da pustimo u zrak radni server koji se može pingati! U početku se ideja činila luda, ali nakon što smo je razmatrali iz svih kutova, smislili smo način da pošaljemo server pticama na susret. Kraj kolovoza donosi povijesno lansiranje, a do tada radimo na hardverskom dijelu projekta. Detalji ispod.
- Server će biti baziran na Raspberry Pi 3
Bilo bi zanimljivo podići u zrak jednounitni server, no njegovu težinu treba dodati težini UPS-a... Za sve to bila bi potrebna značajna uzgon. I stvarno, zašto, kada se na osnovi kompaktnog Raspberry Pi 3 može postaviti posve pristojan server s računalnom snagom nekoliko stotina puta većom od onog računala na kojem se zabavljao Tim Berners-Lee 1991. godine.
- Server ćemo lansirati na balonu
Imali smo ideje podići server na helijskom balonu, no tada bi server bio pingan kratko, prije nego što balon pukne na velikoj visini u razrijeđenoj atmosferi i cijela konstrukcija padne na zemlju. Željeli smo produljiti "prozor" eter vremena do sat i pol. Tako smo odlučili koristiti balon. Trajanje leta je dva sata. Osim toga, let nije potpuno upravljiv, no u košari može biti naš inženjer koji će u slučaju kvara moći brzo, na licu mjesta "uključiti i isključiti".
- Kao transportnu mrežu koristit ćemo mobilnu mrežu
Moderne WiFi antene mogu "probiti" prilično velike udaljenosti, no za to bi trebali izgraditi komunikacijski kompleks koji malo kaska za vojnim radarskim stanicama. I radi 1,5-2 sata veze nije smisleno graditi takav sustav, jer na visini leta balona mobilna mreža mora raditi stabilno.
Nakon formuliranja tih "postulata", projekt je prestao izgledati neizvedivo, i ubrzo smo se uhvatili u koštac s radom na sva tri smjera.
Prvo smo zatražili pomoć od ekipe iz , koja ima bogato iskustvo u lansiranjima raznih uređaja u zrak (s naknadnim pronalaženjem i spašavanjem).
Zatim smo izvukli Raspberry Pi 3, koji je ležao u ladici našeg administratora, i počeli ga postavljati.

Povezali smo kameru:

I testirali je na našem 'Semen':

Semen je izuzetno zgodan kao model i pomoćnik — ne traži hranu, ne skreće pažnju na telefon, uvijek je dobro raspoložen i sa širokim osmijehom u svom kacigi. Naravno, takva odijela nam za let neće biti potrebna, ali stvara pravi ambijent u uredu.
Shema projekta oblikovat će se ovako:

Powerbank se koristi za terensko testiranje, za pokretanje je potrebno nešto pouzdanije.
Najzanimljiviji komad hardvera je ploča za prikupljanje podataka sa svih senzora:

Momci iz dugo su se mučili s raznim analogama, a zatim su sami napravili računar za avion, jer pouzdanost igra ključnu ulogu, sudbina cijelog projekta ovisi o podacima telemetrije. Računar za avion odgovara za primanje podataka sa svih povezanih senzora i njihovo prosljeđivanje na Raspberry Pi.
Pokrenuli smo, postavili i nakon nekoliko tjedana programiranja i obrednog plesanja uspjeli dobiti podatke telemetrije i fotografiju Semena s širokokutnom kamerom:

Podaci telemetrije šalju se jednim redom u sljedećem obliku:

Zatim ovaj kod pretvara redak u niz i prikazuje podatke na web stranici:
$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 podatkovnog paketa, uvijek se povećava
- T:40m39s; — vrijeme od uključivanja kontrolera leta
- MP.Stage:0; — faza leta (0 — na zemlji ili ispod 1km, 1 — uspon, 2 — zadržavanje na visini, 3 — spuštanje)
- MP.Alt:54; — barometarska visina u metrima od razine mora — trebala bi se prikazivati
- MP.VSpeed:0.0; — vertikalna brzina u metrima u sekundi s medijan filtriranjem
- MP.AvgVSpeed:0.0; — vertikalna brzina u metrima u sekundi s prosječnim filtriranjem
- Baro.Press:1006.49; — tlak po barometru u milibarima
- Baro.Alt:54; — visina po barometru
- Baro.Temp:36.99; — temperatura samog barometra
- GPS.Coord:N56d43m23s,E37d55m68s; — trenutne koordinate
- GPS.Home:N56d43m23s,E37d55m68s; — koordinate mjesta polijetanja
- GPS.Alt:165; — visina po GPS-u u metrima
- GPS.Dst:10; — udaljenost od mjesta polijetanja u metrima
- DS.Temp:[fc]=34.56; — temperaturni senzor na ploči
Kako izgledaju prikazani podaci:
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
)
Što učiniti ako mobilna mreža „padne”? U tom slučaju imamo drugu karticu, u modem se umetnu dvije SIM kartice (u jedan slot naizmjenično):

Ona se automatski prebacuje na rezervni kanal, ako glavni iznenada prestane odgovarati.
A što će se dogoditi ako obje mobilne mreže postanu nedostupne?
(Dječak iz nimalo slučajno čita «Teoriju vjerojatnosti»)
U tom slučaju ćemo imati neovisni GPS-tracker koji šalje signal o svojoj lokaciji. Imajte na umu da to ne čini putem mobilne mreže, čija dostupnost na velikim udaljenostima nitko ne može jamčiti, već putem satelita.

Da, GPS-tracker je nešto veći od onog koji su ugradili ispod kože Jamesu Bondu. Budući da naš natječaj ovisi o koordinatama leta, ovaj dio podataka koji primamo s letjelice bit će najvažniji. No o tome ćemo razgovarati u sljedećem postu. Uskoro, pratite naš blog!
Vjerujemo u uspjeh cjelokupnog projekta toliko da smo čak raspisali natječaj za one koji žele pogoditi mjesto slijetanja balona. Detalji u našem .
Izvor: habr.com
