W 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 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.
- 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.
- 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 , 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ć.

Podłączyliśmy kamerę:

I przetestowaliśmy ją na naszym 'Semonie':

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:

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:

Chłopaki z 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:

Dane telemetrii są przesyłane w jednej linii w następującej formie:

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):

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?
(Chłopiec z 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ę.

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 .
Źródło: habr.com
