Serwer w chmurach: przygotowania do uruchomienia

В post o regatach Wspomnieliśmy, że w sierpniu odbędzie się konkurs z nagrodami dla wszystkich Habrazhitelów. Nadszedł czas, aby rozerwać zasłonę tajemnicy. W jakiś sposób wpadliśmy na pomysł, że wyrażenie „serwer w chmurach” można rozumieć dosłownie. Właściwie wystrzelmy w niebo działający serwer, który będzie można pingować! Na początku pomysł wydawał się szalony, ale po przekręceniu go w tę i tamtą stronę, omawiając go pod każdym względem, w końcu wymyśliliśmy sposób, aby wysłać serwer w stronę ptaków. Epokowa premiera nastąpi pod koniec sierpnia, ale na razie pracujemy nad sprzętową częścią projektu. Szczegóły pod rozcięciem.

Serwer w chmurach: przygotowania do uruchomienia

  1. Serwer będzie oparty na Raspberry Pi 3

    Ciekawie byłoby unieść w powietrze jednoczęściowy serwer, ale jego waga + ciężar UPS... Wszystko to wymagałoby znacznej siły podnoszenia. A po co, skoro na bazie kompaktowego Raspberry Pi 3 można postawić całkiem przyzwoity serwer, o mocy obliczeniowej kilkaset razy większej niż maszyna, na której bawił się Tim Berners-Lee w 1991 roku.

  2. Wystrzelmy serwer w balonie

    Mieliśmy pomysły, aby podnieść serwer na sondę helową, ale wtedy serwer nie pingował zbyt długo, zanim balon pękł na dużej wysokości w rozrzedzonej atmosferze i cała konstrukcja spadłaby na ziemię. Chciałem wydłużyć „okno” czasu antenowego do półtorej godziny. A potem zdecydowali się użyć balonu. Czas lotu to dwie godziny. Dodatkowo, choć lot nie jest do końca sterowny, w koszyku może znaleźć się nasz inżynier, który w przypadku awarii potrafi szybko, na miejscu „włączyć i wyłączyć”.

  3. Będziemy wykorzystywać komunikację komórkową jako sieć transportową

    Nowoczesne anteny WiFi mogą „przebijać” dość duże odległości, ale do tego konieczne byłoby zbudowanie kompleksu komunikacyjnego, który pod względem parametrów nie będzie dużo gorszy od wojskowej stacji radarowej. A ze względu na 1,5-2 godziny komunikacji nie ma sensu budować takiego systemu, ponieważ na wysokości balonu komunikacja komórkowa musi działać stabilnie.

Po sformułowaniu tych „postulatów” projekt przestał wydawać się niewykonalny i wkrótce zaczęliśmy działać we wszystkich trzech kierunkach jednocześnie.

Przede wszystkim zwróciliśmy się do chłopaków z Nearspace.ru, który zjadł psa podczas wystrzeliwania w powietrze wszelkiego rodzaju kawałków żelaza (z późniejszymi poszukiwaniami i ratunkami).

Następnie wyjęliśmy Raspberry Pi 3, który leżał na stoliku nocnym naszego administratora i zaczęliśmy go konfigurować.

Serwer w chmurach: przygotowania do uruchomienia
Podłączyłem kamerę:

Serwer w chmurach: przygotowania do uruchomienia
I przetestowaliśmy to na naszym „Siemionie”:

Serwer w chmurach: przygotowania do uruchomienia
Siemion jest bardzo wygodny w roli modela i asystenta - nie prosi o jedzenie, nie rozprasza go telefon, jest zawsze w świetnym nastroju i z szerokim uśmiechem przez cały hełm. Oczywiście do lotu taki skafander nie jest nam potrzebny, ale tworzy odpowiednią atmosferę w biurze.

Zarys projektu wygląda następująco:

Serwer w chmurach: przygotowania do uruchomienia
Powerbank służy do testów naziemnych, do startu potrzebne jest coś bardziej niezawodnego.

Być może najciekawszym elementem sprzętu jest płytka do odbierania danych ze wszystkich czujników:

Serwer w chmurach: przygotowania do uruchomienia
Chłopaki z Nearspace.ru Długo zmagaliśmy się z różnymi analogami, a potem sami zrobiliśmy komputer pokładowy, bo niezawodność ma decydujące znaczenie, losy całego projektu zależą od danych telemetrycznych. Komputer pokładowy odpowiada za odbieranie danych ze wszystkich podłączonych czujników i przesyłanie ich do Raspberry Pi.

Uruchomiliśmy go, skonfigurowaliśmy i po kilku tygodniach programowania i przysiadów z tamburynami udało nam się pozyskać dane telemetryczne i zdjęcie Siemiona z aparatu szerokokątnego:

Serwer w chmurach: przygotowania do uruchomienia
Dane telemetryczne przesyłane są w jednej linii w postaci:

Serwer w chmurach: przygotowania do uruchomienia
Następnie ten kod konwertuje ciąg znaków na tablicę i wysyła dane do witryny:

$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 niektórych danych:

  • N:2432; — liczba pakietów danych, stale rosnąca
  • T:40m39s; — czas od momentu włączenia kontrolera lotu
  • MP.Stage:0; — etap lotu (0 — na ziemi lub poniżej 1 km, 1 — wznoszenie, 2 — zawis na wysokości, 3 — zniżanie)
  • MP.Alt:54; — wysokość barometryczna w metrach nad poziomem morza — powinna być wyświetlona
  • MP.VPrędkość:0.0; — prędkość pionowa w metrach na sekundę z filtrem medianowym
  • MP.Śr.VPrędkość:0.0; — prędkość pionowa w metrach na sekundę z filtrem uśredniającym
  • Baro.Press:1006.49; — ciśnienie barometryczne w milibarach
  • Baro.Alt:54; - wysokość według barometru
  • Temperatura Baro: 36.99; - temperatura samego barometru
  • Współrzędne GPS: N56d43m23s, E37d55m68s; — aktualne współrzędne
  • GPS.Strona główna:N56d43m23s,E37d55m68s; — współrzędne punktu początkowego
  • GPS.Alt:165; — Wysokość GPS w metrach
  • GPS.Dst:10; — odległość od punktu startu w metrach
  • DS.Temp:[fc]=34.56; - czujnik temperatury na płytce

Jak wygląda wynik:

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 
)

Co zrobić, jeśli komunikacja komórkowa „upadnie”? W tym przypadku mamy drugą kartę, do modemu wkładane są dwie karty SIM (po jednym slocie):

Serwer w chmurach: przygotowania do uruchomienia
Może automatycznie przełączyć się na kanał zapasowy, jeśli główny nagle przestanie odpowiadać.

Co się stanie, jeśli obie sieci komórkowe staną się niedostępne?

Serwer w chmurach: przygotowania do uruchomienia(Chłopiec z numer „Yeralash” nr 45 Nie bez powodu czyta „Teorię prawdopodobieństwa”)

W tym przypadku będziemy mieli niezależny tracker GPS, który wysyła sygnał o swojej lokalizacji. Należy pamiętać, że robi to nie za pośrednictwem sieci komórkowej, której dostępność na duże odległości nikt nie gwarantuje, ale za pośrednictwem satelity.

Serwer w chmurach: przygotowania do uruchomienia
Tak, tracker GPS jest nieco większy od tego, który został wszczepiony pod skórę Jamesa Bonda. Ponieważ nasza konkurencja zależy od współrzędnych latającego serwera, ta część danych otrzymanych z tablicy będzie najważniejsza. Ale o tym porozmawiamy w następnym poście. Już wkrótce, śledź naszego bloga!

Tak bardzo wierzymy w powodzenie całego przedsięwzięcia, że ​​ogłosiliśmy nawet konkurs dla tych, którzy nagle chcą odgadnąć, gdzie wyląduje piłka. Szczegóły w naszym nowy post.

Źródło: www.habr.com

Dodaj komentarz