Хабрахабр

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

В посте про регату мы обмолвились, что в августе всех хабражителей ждет конкурс с призами. Пришло время сорвать покровы завесу секретности. Как-то нам пришла мысль, что фразу «сервер в облаках» можно понять буквально. А давайте действительно запустим в небо работающий сервер, который можно будет попинговать! Сначала идея выглядела безумной, но покрутив её так и эдак, обсудив на все лады, мы всё же придумали способ отправить сервер навстречу птицам. Уже в конце августа состоится эпохальный запуск, а пока что мы отрабатываем аппаратную часть проекта. Подробности под катом.

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

    Да и зачем, если на базе компактной Raspberry Pi 3 можно развернуть вполне приличный сервер, вычислительной мощностью в несколько сот раз бОльшей, чем та машина, на которой развлекался в 1991-м году Тим Бернерс-Ли.
    Было бы интересно поднять в воздух одноюнитовый сервер, однако его вес + вес UPS… Для всего этого нужна была бы немалая подъемная сила.

  2. Сервер запустим на воздушном шаре

    Хотелось расширить «окно» эфирного времени до полутора часов. У нас были идеи поднять сервер на гелиевом зонде, но тогда сервер пинговался бы недолго, прежде чем шар лопнет на большой высоте в разреженной атмосфере и вся конструкция упадёт на землю. Длительность полета — два часа. И тогда решили использовать воздушный шар. Кроме того, полет хоть и не совсем управляемый, однако в корзине может быть наш инженер, который сможет в случае неисправности оперативно, прямо на месте «включить и выключить».

  3. В качестве транспортной сети воспользуемся сотовой связью

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

После формулирования этих «постулатов», проект перестал казаться неосуществимым, и вскоре мы принялись работать сразу по всем трем направлениям.

В первую очередь обратились за помощью к ребятам из 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-трекер несколько больше чем тот, который вживляли под кожу Джеймсу Бонду. Поскольку наш конкурс зависит от координат летящего сервера, эта часть получаемых с борта данных будет самой важной. Но об этом мы расскажем уже в следующем посте. Совсем скоро, следите за нашим блогом!

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»