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



    Уже завтра мы отправим наш сервер в стратосферу. Во время полета стратостат будет раздавать интернет, снимать и передавать видео и данные телеметрии на землю. Мы несколько раз писали, что расскажем про техническую сторону нашего проекта «Космический ЦОД» (раньше отзывался на имя «Сервер в облаках 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-страничке, к тому же будет виден кусочек горизонта.

    Питание


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

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



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

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

    • +35
    • 10.8k
    • 7
    RUVDS.com
    1,441.06
    RUVDS – хостинг VDS/VPS серверов
    Share post

    Similar posts

    Comments 7

      0
      Тема барометрического датчика не раскрыта, подскажите, пожалуйста, какую используете модель и как подключаете?
      Насколько его показания высоты отличаются от данных с GPS-приёмников? Будете ли калибровать его перед стартом?

      Сейчас, наверное уже поздно это доделывать, но я бы рекомендовал выводить координаты и высоту с обоих GPS-приёмников одновременно, чтобы понимать, что они действительно показывают правильные значения. И лучше в формате gg mm.sss, так получается точнее.
      Ещё не мешает, если есть такая возможность, показывать текущую точность определения координат.

      Записываются ли GPS-треки с приборов? Будете ли их публиковать, чтобы сравнить с треком прогноза?
        0
        Мы используем MS5611 один из немногих датчиков, которые нормально работают в стратосфере. Подключается он через SPI или I2C.
        Записываются ли GPS-треки с приборов? Будете ли их публиковать, чтобы сравнить с треком прогноза?
        Да, завтра будем транслировать на карте проекта во время запуска. Старт планируем в 15 часов.
          0
          Спасибо за информацию.
          А внешняя гопрошка будет? Чтобы картинки из космоса транслировать и место падения показать в прямом эфире?
            0
            Будет
        0
        3S4B — три последовательно, четыре параллельно

        Это схема 3S4P (Serial и Parallel) :)
          0
          Поправили
          +1

          А про LoRa можно подробнее?


          1. Какой модем и антенна использовались?
          2. Какие настройки были (мощность, spreading factor, coding rate, частота,… )?
          3. Чем принимали (модем, антенна)?
          4. Насколько устойчивой была связь?
          5. Какое максимальное расстояние связи достигнуто?

          Only users with full accounts can post comments. Log in, please.