Serwer w chmurze: przygotowujemy się do uruchomienia

W post o regacie Wspomnieliśmy, że w sierpniu czeka nas konkurs z nagrodami. Nadszedł czas na zerwanie zasłony tajemnicy. Pewnego dnia wpadliśmy na pomysł, że frazę "serwer w chmurze" można zrozumieć dosłownie. A może naprawdę uruchomimy działający serwer, który będzie można pingować i wyślemy go w niebo? Pomysł początkowo wydawał się szalony, ale po rozważeniu go z każdej strony, omówieniu na wszystkie sposoby, wymyśliliśmy, jak wysłać serwer w stronę ptaków. Już pod koniec sierpnia odbędzie się epokowe uruchomienie, a na razie pracujemy nad częścią sprzętową projektu. Szczegóły poniżej.

Serwer w chmurze: przygotowujemy się do uruchomienia

  1. Serwer będzie oparty na Raspberry Pi 3

    Ciekawe byłoby unieść w powietrze serwer jednoukładowy, ale jego waga + waga UPS… Do tego wszystkiego potrzebna byłaby znaczna siła nośna. A po co to, skoro na bazie kompaktowej Raspberry Pi 3 można uruchomić całkiem przyzwoity serwer, którego moc obliczeniowa jest kilka setek razy większa niż maszyna, na której bawił się Tim Berners-Lee w 1991 roku.

  2. Serwer uruchomimy na balonie

    Mieliśmy pomysły, aby wynieść serwer na balonie helowym, ale wtedy serwer byłby pingowany tylko przez krótki czas, zanim balon pęknie na dużej wysokości w rozrzedzonej atmosferze i cała konstrukcja spadnie na ziemię. Chcieliśmy wydłużyć "okno" czasu eteru do półtorej godziny. Postanowiliśmy więc użyć balonu. Czas lotu - dwie godziny. Poza tym lot, choć nie do końca kontrolowany, może mieć w koszu naszego inżyniera, który w przypadku awarii będzie mógł natychmiast "włączyć i wyłączyć" na miejscu.

  3. Jako sieć transportową wykorzystamy sieć komórkową

    Nowoczesne anteny WiFi mogą "przebić" stosunkowo duże odległości, jednak wymagałoby to zbudowania kompleksu komunikacyjnego, który w parametrach niewiele różniłby się od wojskowej stacji radarowej. I z powodu 1,5-2 godzin komunikacji nie ma sensu budować takiego systemu, ponieważ na wysokości lotu balonu sieć komórkowa powinna działać stabilnie.

Po sformułowaniu tych "postulatów" projekt przestał wydawać się niewykonalny i wkrótce zaczęliśmy pracować jednocześnie w trzech kierunkach.

W pierwszej kolejności zwróciliśmy się o pomoc do chłopaków z nearspace.ru, którzy mają doświadczenie w wysyłaniu różnych urządzeń w powietrze (z późniejszym ich odnajdywaniem i ratowaniem).

Potem wyciągnęliśmy Raspberry Pi 3, leżący w szufladzie naszego administratora, i zaczęliśmy go konfigurować.

Serwer w chmurze: przygotowujemy się do uruchomienia
Podłączyliśmy kamerę:

Serwer w chmurze: przygotowujemy się do uruchomienia
I przetestowaliśmy ją na naszym 'Semonie':

Serwer w chmurze: przygotowujemy się do uruchomienia
Semon jest bardzo wygodny jako model i pomocnik — nie prosi o jedzenie, nie rozprasza się telefonem, zawsze ma doskonały nastrój i szeroki uśmiech od ucha do ucha. Oczywiście, taki skafander nie będzie nam potrzebny do lotu, ale tworzy odpowiednią atmosferę w biurze.

Schemat projektu wyłania się następujący:

Serwer w chmurze: przygotowujemy się do uruchomienia
Powerbank jest używany do testów naziemnych, do uruchomienia potrzebujemy czegoś bardziej niezawodnego.

Najciekawszym elementem sprzętowym jest płytka do zbierania danych ze wszystkich czujników:

Serwer w chmurze: przygotowujemy się do uruchomienia
Chłopaki z nearspace.ru przez długi czas męczyli się z różnymi odpowiednikami, a potem sami zrobili komputer pokładowy, ponieważ niezawodność ma kluczowe znaczenie, a dane telemetrii decydują o przyszłości całego projektu. Komputer pokładowy odpowiedzialny jest za odbieranie danych ze wszystkich podłączonych czujników i przekazywanie ich na Raspberry Pi.

Uruchomiliśmy, skonfigurowaliśmy, a po kilku tygodniach programowania i przysiadów z bębnem udało się uzyskać dane telemetrii i zdjęcie Semona z szerokokątnej kamery:

Serwer w chmurze: przygotowujemy się do uruchomienia
Dane telemetrii są przesyłane w jednej linii w następującej formie:

Serwer w chmurze: przygotowujemy się do uruchomienia
Następnie ten kod przekształca linię w tablicę i wyświetla dane na stronie:

$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; — numer pakietu danych, zawsze rośnie
  • 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 — opadanie)
  • MP.Alt:54; — wysokość barometryczna w metrach nad poziomem morza — należy ją wyświetlać
  • MP.VSpeed:0.0; — prędkość pionowa w metrach na sekundę z medianowym filtrem
  • MP.AvgVSpeed:0.0; — prędkość pionowa w metrach na sekundę z filtrem uśredniającym
  • Baro.Press:1006.49; — ciśnienie według barometru w milibarach
  • Baro.Alt:54; — wysokość według barometru
  • Baro.Temp:36.99; — temperatura samego barometru
  • GPS.Coord:N56d43m23s,E37d55m68s; — bieżące współrzędne
  • GPS.Home:N56d43m23s,E37d55m68s; — współrzędne punktu startowego
  • GPS.Alt:165; — wysokość według GPS w metrach
  • GPS.Dst:10; — odległość od punktu startowego w metrach
  • DS.Temp:[fc]=34.56; — czujnik temperatury na płycie

Jak wyglądają wyświetlane dane:

Tablica 
(
       [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 
)

Co zrobić, jeśli sygnał komórkowy "spadnie"? Na tę okoliczność mamy drugą kartę, do modemu wstawiane są dwie karty SIM (na jedno miejsce na przemian):

Serwer w chmurze: przygotowujemy się do uruchomienia
Potrafi automatycznie przełączać się na zapasowy kanał, jeśli główny przestaje odpowiadać.

A co będzie, jeśli obie sieci komórkowe staną się niedostępne?

Serwer w chmurze: przygotowujemy się do uruchomienia(Chłopiec z wydania "Jerałas" nr 45 nie bez powodu czyta "Teorię prawdopodobieństwa")

Na tę okoliczność będziemy mieli niezależny tracker GPS, wysyłający sygnał o swojej lokalizacji. Zauważ, że robi to nie przez sieć komórkową, której dostępność na dużych odległościach nie jest gwarantowana, lecz przez satelitę.

Serwer w chmurze: przygotowujemy się do uruchomienia
Tak, tracker GPS jest nieco większy niż ten, który wszczepiano pod skórę Jamesowi Bondowi. Ponieważ nasz konkurs zależy od współrzędnych lecącego serwera, ta część danych uzyskanych z pokładu będzie najważniejsza. Ale o tym opowiemy w następnym poście. Już wkrótce, śledźcie naszego bloga!

Wierzymy w sukces całego przedsięwzięcia na tyle, że ogłosiliśmy konkurs dla tych, którzy zechcą zgadnąć miejsce lądowania balonu. Szczegóły w naszym nowym poście.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster