Анатомия «Космического ЦОДа». Заоблачный сервер: смотрим под капот

Анатомия «Космического ЦОДа». Заоблачный сервер: смотрим под капот

Уже завтра мы отправим наш сервер в стратосферу. Во время полета стратостат будет раздавать интернет, снимать и передавать видео и данные телеметрии на землю. Мы несколько раз писали, что расскажем про техническую сторону нашего проекта «Космический ЦОД» (раньше отзывался на имя «Сервер в облаках 2.0»). Обещали — выполняем! Под катом горсть железок и кода.

Веб-сервер

Даже в прошлом проекте «Сервер в облаках», когда мы поднимались на полноценном воздушном шаре с экипажем из двух человек, брать с собой полноценный сервер с аккумуляторной сборкой было, скажем так, не рационально. А сейчас речь идёт о маленьком стратостате, которому предстоит подъём на 30 км, а не на 1. Поэтому мы в качестве веб-сервера выбрали тот же Raspberry Pi. Этот микрокомпьютер будет формировать HTML-страничку и показывать её на отдельном дисплее.

Спутниковая связь

Кроме Raspberry на борту полетят модемы сетей спутниковой связи Iridium и Globalstar. Как вы помните, мы планировали им в компанию добавить и модем отечественной сети «Гонец», но мы не успели получить его заранее, поэтому отправим его в следующий полёт. Через спутниковые модемы веб-сервер будет получать ваши сообщения, которые можно будет отправлять на странице проекта. Эти сообщения будут передаваться на Raspberry Pi, которая станет выстраивать из них очередь и отображать на HTML-страничке.

Важный момент: ограничение на длину текстового сообщения на русском языке — 58 символов (включая пробелы). Если сообщение будет длиннее, то при передаче оно будет обрезано. Также из текста будут вырезаться все спец.символы, например, /+$%&;''""<>n и подобные.

Поскольку у Raspberry Pi всего один UART-порт, мы подключим спутниковые модемы через промежуточный концентратор, который будет собирать данные с модемов и отправлять на Raspberry Pi.

Радиомодем

Все полученные от вас сообщения веб-сервер будет не только отображать на дисплее, но и транслировать на Землю по радиомодему LoRa. Так мы хотим протестировать идею раздачи интернета из стратосферы (трибьют проекту Google Loon). Конечно, наш стратостат — это не полноценный ретранслятор связи, но даже если его возможностей хватит для устойчивой передачи данных, без больших потерь информации, то уж специализированные системы точно справятся с раздачей интернета из предкосмоса.

Телеметрия

Кроме того, мы планируем на той же HTML-страничке выводить данные телеметрии. Брать их Raspberry Pi будет с отдельного полётного контроллера.

Анатомия «Космического ЦОДа». Заоблачный сервер: смотрим под капот

Он опрашивает разные датчики, которые можно поместить как внутри, так и снаружи аппаратного гермобокса, собирает информацию в кучу, причёсывает и в удобном виде отдаёт тем, кто попросит. В нашем случае попросит Raspberry Pi. Мы будем регистрировать давление, высоту, GPS-координаты, вертикальную и горизонтальную скорость и температуру.

Данные с полётного контроллера передаются длинными строками, которые затем с помощью этого кода:

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

превращаются в массив в удобном для отображения виде:

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 
)

Телеметрические данные мы тоже будем транслировать на Землю вместе с вашими сообщениями. Для этого в месте запуска развернём приёмную станцию.

Дисплей и камера

Чтобы вы могли убедиться, что сервер действительно получает ваши сообщения через спутниковую связь, и что он вообще полетел в стратосферу, а не стоит у нас в офисе, мы решили выводить все сообщения с телеметрией на дисплей, который будет снимать GoPro. Времени на подготовку проекта было мало (да когда же его бывает много?!), поэтому мы не стали мучать Алиэкспресс и паяльник, а вместо этого взяли готовый прибор. Для наших нужд его более чем достаточно. Дисплей мы подключим к Raspberry через HDMI.

Ещё мы планируем транслировать видеоряд с GoPro по отдельному радиоканалу, но как оно будет работать, пока неизвестно — возможно, низкая облачность сильно уменьшит дальность связи. Но в любом случае, после того, как мы найдём приземлившийся стратостат, мы выложим видео с камеры и вы сможете сами убедиться, какие сообщения получил наш «предкосмический ЦОДик» и на какую высоту он забрался — телеметрия будет выводиться в той же HTML-страничке, к тому же будет виден кусочек горизонта.

Питание

Вся вышеописанная красота будет запитана от сборки литиевых аккумуляторов, собранных по схеме 3S4B — три последовательно, четыре параллельно. Общая ёмкость около 14 А·ч при напряжении в 12 В. По нашим прикидкам, этого должно хватить, но после финальной сборки, конечно, измерим фактическое потребление, и если нужно, накинем ещё аккумуляторов.

Ещё добавьте ко всему этому GPS-маяки, по которым мы будем искать приземлившийся стратостат. А «домиком» для сервера и прочих приборов будет гермобокс.

Анатомия «Космического ЦОДа». Заоблачный сервер: смотрим под капот

Он убережёт нежную аппаратуру от перепадов температур и давления. Заодно и радиационную дозу уменьшит, хотя для нашего проекта это никакой роли не играет, слишком недолго сервер будет летать в стратосфере, да и фон там не такой высокий, как на МКС.

Кроме отправки сообщений на сайте проекта, вы можете поучаствовать в конкурсе и угадать место приземления зонда. Главный приз — поездка на Байконур на запуск пилотируемого корабля Союз-МС-13.

Анатомия «Космического ЦОДа». Заоблачный сервер: смотрим под капот

Источник: habr.com