Сервер у аблоках: рыхтуемся да запуску

В пасце пра рэгату мы абмовіліся, што ў жніўні ўсіх хабражыцеляў чакае конкурс з прызамі. Нетутэйша час сарваць пакровы заслону сакрэтнасці. Неяк нам прыйшла думка, што фразу "сервер у аблоках" можна зразумець літаральна. А давайце сапраўды запусцім у неба які працуе сервер, які можна будзе папінгаваць! Спачатку ідэя выглядала вар'яцкай, але пакруціўшы яе так і гэтак, абмеркаваўшы на ўсе лады, мы ўсё ж прыдумалі спосаб адправіць сервер насустрач птушкам. Ужо ў канцы жніўня адбудзецца эпахальны запуск, а пакуль што мы адпрацоўваем апаратную частку праекту. Падрабязнасці пад катом.

Сервер у аблоках: рыхтуемся да запуску

  1. Сервер будзе на базе Raspberry Pi 3

    Было б цікава падняць у паветра аднаюнітавага сервера, аднак яго вага + вага UPS ... Для ўсяго гэтага патрэбна была б немалая пад'ёмная сіла. Ды і навошта, калі на базе кампактнай Raspberry Pi 3 можна разгарнуць суцэль прыстойны сервер, вылічальнай магутнасцю ў некалькі сот разоў большай, чым тая машына, на якой забаўляўся ў 1991-м году Цім Бернерс-Лі.

  2. Сервер запусцім на паветраным шары

    У нас былі ідэі падняць сервер на геліевым зондзе, але тады сервер пінгаваўся б нядоўга, перш чым шар лопне на вялікай вышыні ў разрэджанай атмасферы і ўся канструкцыя ўпадзе на зямлю. Хацелася пашырыць «акно» эфірнага часу да паўтары гадзіны. І тады вырашылі выкарыстоўваць паветраны шар. Працягласць палёту - дзве гадзіны. Акрамя таго, палёт хоць і не зусім кіраваны, аднак у кошыку можа быць наш інжынер, які зможа ў выпадку няспраўнасці аператыўна, прама на месцы "уключыць і выключыць".

  3. У якасці транспартнай сеткі скарыстаемся сотавай сувяззю

    Сучасныя WiFi-антэны могуць «прабіць» даволі вялікія адлегласці, аднак для гэтага прыйшлося б будаваць комплекс сувязі, мала чым які саступае па сваіх параметрах ваеннай радыёлакацыйнай станцыі. І дзеля 1,5-2 гадзін сувязі будаваць такую ​​сістэму не мае сэнсу, бо на вышыні палёту паветранага шара сотавая сувязь павінна працаваць устойліва.

Пасля фармулявання гэтых "пастулатаў", праект перастаў здавацца няздзейсным, і неўзабаве мы прыняліся працаваць адразу па ўсіх трох кірунках.

У першую чаргу звярнуліся па дапамогу да хлопцаў з nearspace.ru, якія з'елі сабаку на запусках у паветра ўсякіх жалязяк (з наступным пошукам і выратаваннем).

Затым дасталі Raspberry Pi 3, якая валяецца ў тумбачцы нашага адміна, і пачалі яе наладжваць.

Сервер у аблоках: рыхтуемся да запуску
Падлучылі камеру:

Сервер у аблоках: рыхтуемся да запуску
І пратэставалі яе на нашым «Сямёне»:

Сервер у аблоках: рыхтуемся да запуску
Сямён вельмі зручны ў якасці мадэлі і памагатага - не просіць ежы, не адцягваецца на тэлефон, заўсёды ў выдатным настроі і з шырокай усмешкай ва ўвесь шлем. Вядома, такі скафандр нам для палёту не спатрэбіцца, але атмасферу ў офісе стварае правільную.

Схема праекту вымалёўваецца наступная:

Сервер у аблоках: рыхтуемся да запуску
Powerbank выкарыстоўваецца для наземнага тэсціравання, для запуску трэба нешта надзейней.

Самая, мабыць, цікавая жалязяка - гэта плата для атрымання дадзеных з усіх датчыкаў:

Сервер у аблоках: рыхтуемся да запуску
Хлопцы з nearspace.ru доўга мучаліся з рознымі аналагамі, а потым самі зрабілі бартавы кампутар, таму што надзейнасць мае вырашальнае значэнне, ад дадзеных тэлеметрыі залежыць лёс усяго праекту. Бартавы кампутар адказвае за прыём дадзеных са ўсіх падлучаных датчыкаў і перадае іх на Raspberry Pi.

Запусцілі, наладзілі, і праз нейкія пару тыдняў праграмавання і прысяданняў з бубнамі атрымалася атрымаць дадзеныя тэлеметрыі і фота Сямёна з шырокавугольнай камеры:

Сервер у аблоках: рыхтуемся да запуску
Дадзеныя тэлеметрыі перадаюцца адным радком у такім выглядзе:

Сервер у аблоках: рыхтуемся да запуску
Затым гэты код пераўтворыць радок у масіў і выводзіць дадзеныя на сайт:

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

Апісанне некаторых дадзеных:

  • N:2432; - нумар пакета дадзеных, заўсёды павялічваецца
  • T:40m39s; - Час з моманту ўключэнне палётнага кантролера
  • MP.Stage:0; - Стадыя палёту (0 - на зямлі або ніжэй 1км, 1 - уздым, 2 - завісанне на вышыні, 3 - спуск)
  • MP.Alt:54; - бараметрычная вышыня ў метрах ад узроўня мора - яе варта выводзіць
  • MP.VSpeed:0.0; - вертыкальная хуткасць у метрах у секунду з медыянным фільтрам
  • MP.AvgVSpeed:0.0; - вертыкальная хуткасць у метрах у секунду з ўсярэдненым фільтрам
  • Baro.Press:1006.49; - ціск па барометры ў мілібарах
  • Baro.Alt:54; вышыня па барометры
  • Baro.Temp:36.99; - тэмпература самога барометра
  • GPS.Coord:N56d43m23s,E37d55m68s; - бягучыя каардынаты
  • GPS.Home:N56d43m23s,E37d55m68s; - Каардынаты пункту старту
  • GPS.Alt:165; - вышыня па GPS у метрах
  • GPS.Dst:10; - аддаленасць ад кропкі старту ў метрах
  • DS.Temp:[fc]=34.56; - тэмпературны датчык на плаце

Як выглядаюць дадзеныя:

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 
)

А што рабіць, калі сотавая сувязь "упадзе"? На гэты выпадак у нас ёсць другая картка, у мадэм устаўляюцца дзве сімкі (у адзін слот па чарзе):

Сервер у аблоках: рыхтуемся да запуску
Ён умее аўтаматам перамыкацца на запасны канал, калі асноўны раптам перастае адгукацца.

А што будзе, калі абедзве сотавых сеткі стануць недаступныя?

Сервер у аблоках: рыхтуемся да запуску(Хлопчык з выпуску «Ералаш» №45 нездарма чытае «Тэорыю верагоднасцяў»)

На гэты выпадак у нас будзе незалежны GPS-трэкер, які пасылае сігнал аб сваім месцазнаходжанні. Звярніце ўвагу, што робіць ён гэта не праз сотавую сетку, даступнасць якой на вялікай адлегласці нікім не гарантавана, а праз спадарожнік.

Сервер у аблоках: рыхтуемся да запуску
Так, GPS-трэкер некалькі больш чым той, які ўжыўлялі пад скуру Джэймсу Бонду. Паколькі наш конкурс залежыць ад каардынат які ляціць сервера, гэтая частка атрымоўваных з борта дадзеных будзе самай важнай. Але пра гэта мы раскажам ужо ў наступным пасце. Зусім хутка, сачыце за нашым блогам!

Мы верым у поспех усяго прадпрыемства настолькі, што нават аб'явілі конкурс для тых, хто раптам захоча адгадаць месца прызямлення шара. Падрабязнасці ў нашым новым пасце.

Крыніца: habr.com

Дадаць каментар