Русский
Русский
English
Статистика
Реклама

Ракетомоделирование

Из песочницы Per aspera ad astra, или как я строил ракету. Часть 1. Делаем движки и запускаем ракеты

13.08.2020 22:14:38 | Автор: admin


Земля колыбель человечества, но нельзя вечно жить в колыбели

Эту знаменитую фразу К.Э.Циолковского не забывают и по сей день. NASA, ESA, Роскосмос, SpaceX и множество других космических компаний отправляют автоматические миссии на другие планеты, запускают людей в космос и стремятся воплотить в жизнь слова Константина Эдуардовича.

Но что делать, если разработка новой ракеты занимает долгое время, а запустить ее хочется здесь и сейчас? Тогда стоит заняться ракетомоделированием и самим построить и запустить ракету мечты. А о своем опыте проектирования ракет я с удовольствием вам расскажу в этой статье.

Вступление


Всем привет! В этой серии статей я хотел бы поделиться с вами моим опытом разработки и запусков моделей ракет, рассказать о своих первых неудачах и головокружительных успехах, о том как надо делать и как не надо. Я не буду вдаваться в подробности того, как построить ракету, потому что в интернете есть много гайдов по этой теме, а сделаю упор именно на личный опыт, дабы уберечь вас от моих ошибок и показать несколько моих интересных находок и решений.

Итак,



Предыстория
Космосом я увлекся после того как побывал на программе Большие Вызовы 2017 ОЦ Сириус на направлении Космические технологии и робототехника. На ней наша команда разработала первый российский школьный спутник SiriusSat, который в 2018 году вместе со своим братом-близнецом был запущен с МКС во время выхода в открытый космос. Полезная нагрузка спутника детекторы заряженных частиц и гамма-излучения. Конкретно моей задачей на программе было проведение испытаний спутника. Так как в лаборатории космических систем были установлены вибростенд и термобарокамера, то мы решили протрясти и запечь наш аппарат. Все испытания прошли успешно, наша команда защитила проект и все довольные разъехались по своим городам.


SiriusSat-1 и SiriusSat-2. Ручка нужна для того, чтобы космонавт держал спутник

В общем на этой смене я и заразился тематикой космоса. Потом в 10 классе мне пришла в голову идея собрать свою ракету с какой-нибудь электроникой.

Первые попытки собрать движок


Сердцем любой ракеты является ее двигатель, поэтому сперва нужно было собрать его. Среди ракетомоделистов очень популярно карамельное топливо, из-за того, что оно легко в изготовлении и его компоненты (сахарная пудра и калиевая селитра) можно найти в любом городе.

Карамельный двигатель, что это за зверь такой?
Карамелька относится к классу твердотопливных ракетных двигателей, для которых не нужна система трубопровода и насосы. Грубо говоря это тот же фейерверк, только с стабилизированным и управляемым полетом, ну и в конце полета в идеале ничего не взрывается, а медленно спускается на парашюте. Основной частью двигателя является бак с топливом, который одновременно выступает и камерой сгорания. Топливо, сгорая в баке, выпускает реактивную струю высокой скорости в одну сторону, и, благодаря закону сохранения импульса, толкает ракету в противоположную. Вообще теорию реактивного движения впервые описали К.Э.Циолковский, Р.Годдард и Г.Оберт в 20 веке, но, как бы то ни было парадоксально, первыми применили ее на практике китайцы в 200-х годах до н.э., открыв порох и изобретя фейерверк. В современных твердотопливных двигателях используются более совершенные топлива, например в боковом ускорителе Спейс Шаттла использовалась смесь перхлорат аммония, алюминия и оксида железа.


Схема простейшего ТТРД . Как видно, камеры сгорания как таковой нет, топливо сгорает в баке и выпускает струю газа через сопло


Калиевую селитру купил в ближайшем магазине удобрений, а сахарную пудру в продуктовом магазине. На тот момент надпись N 13,6% и K2O 46% меня не смутила, но из-за нее потом было очень много проблем, о которых я расскажу чуть позже.



Для изготовления корпуса мне понадобилась пластиковая водопроводная труба длиной 100мм и диаметром 10 мм, бентонит (наполнитель для кошачьего туалета), чтобы сделать заглушки и для утрамбовки самого топлива нужно было найти любую палку, свободно входящую в двигатель. Селитру, бентонит и сахарную пудру я на всякий случай по-отдельности перемолол в ступе. Затем смешал калиевую селитру и пудру в соотношении 70% к 30%. Теперь необходимо было забить все компоненты в трубу следующим образом:

  1. Засыпаем в трубу ложку перемолотого бентонита
  2. Забиваем бентонитовую заглушку примерно на 10мм, при необходимости досыпаем бентонит. Важно плотно его утрамбовать, чтобы он не крошился и не высыпался из трубы
  3. Утрамбовываем топливо примерно на 80мм. Его также нужно утрамбовывать плотно, по максимуму заполняя отведенное ему пространство в трубе. Чем больше топлива, тем больше тяга
  4. Забиваем последнюю бентонитовую заглушку до конца трубы, аналогичным образом, как и первую
  5. Высверливаем по центру на малой скорости в любой из заглушек отверстие глубиной примерно 50-70 мм. Таким образом мы делаем своеобразное сопло

В итоге должен получится вот такой движок

Серые части бентонитовые заглушки, по центру топливо

Для поджигания двигателя я сделал бикфордов шнур. Джутовую веревку отварил в растворе карамельного топлива, концентрацию взяв на глаз, примерно 2-3 чайных ложки на стакан воды. После варки необходимо дать шнуру высохнуть, и если пропорции раствора топлива были правильными, то на веревке будет белый налет карамельки. Двигатель и шнур для его поджига были готовы, а это значит, что предстояло провести его прожиг.

К сожалению фотографий первого двигателя и видео его испытаний у меня нет, но по итогу он не взлетел, но знатно дымился на стартовом столе.

Выводы:

  • Температура горения была высокой, из-за чего начала плавится пластиковая труба, и было решено, что корпуса следующих движков нужно делать из металла
  • Сопло постоянно забивалось остатками продуктов горения, из-за чего могло повыситься давление в двигателе и ракета просто взорвалась бы, а rapid unscheduled disassembly никому не нужна. На тот момент я подумал, что это из-за не правильной пропорции селитры и из-за того, что сахарная пудра была не чистой, поэтому в следующих движках решил поэкспериментировать с пропорциями и заменить сахарную пудру на чистый сахар

Таким образом мой первый опыт двигателестроения хоть и выглядел печальным, но меня он подстегнул двигаться дальше в этом направлении и узнавать что-то новое, потому что я очень хотел запустить свою ракету!

It's alive!


Покопавшись в интернете я примерно понял в чем была проблема первого движка. Из-за трамбовки топливо распределялось неравномерно, в нем образовывались полости, и оно было неоднородно из-за чего процесс горения был очень вялым и вместо ракеты получилась хорошая дымовая шашка. Решение проблемы было простое забить в трубу сваренное карамельное топливо. В качестве корпуса взял металлическую штангу для ванной и решил поэкспериментировать с пропорциями топлива и с добавкой оксида железа 3 (то есть обычной ржавчины), потому что он должен был увеличить скорость горения.


Примеры чистого карамельного топлива и с добавлением ржавчины. Источник

Движки я сделал поменьше, так как не видел смысла в изготовлении полноразмерного варианта, так же, как и не видел смысла в заглушках и сопле, на скорость горения топлива повлиять они не должны были, потому что все испытуемые были в равных условиях окружающей среды.

Прежде чем варить топливо, поговорим о технике безопасности, ведь карамелька легко воспламеняется, и горит очень резво. Варить топливо нужно только на электрической плите, на газовой плите или любом другом источнике открытого огня готовить топливо нельзя. Кстати в недавнем взрыве склада пиротехники в Бейруте по официальным данным воспламенилась именно селитра, так что будьте крайне осторожны при варке.

Топливо варил на электрической плите в блиннице до цвета и консистенции сгущенки. Блинница тем хороша, что в ней все ингредиенты равномерно нагреваются и не пригорают.

В итоге у меня получилось несколько подопытных:

  • Движки с перемолотым в ступке и сваренным карамельным топливом
  • Движки с измельченным в кофемолке и сваренным карамельным топливом
  • Движки с измельченным в кофемолке и сваренным карамельным топливом с добавлением 1% оксида железа 3

Теперь необходимо было провести испытания движков. В спойлерах написано процентное соотношение ингредиентов в формате Селитра/Сахар/Ржавчина(если есть), а внутри прикреплены гифки самих прожигов.

60/40

59/40/1

57/43

54/45/1

Вот что осталось от топлива в движках

Выводы:

  • В этот раз все движки загорелись и горели они очень хорошо, что конечно же порадовало
  • Ржавчина увеличивает скорость горения. Для сравнения двигатель 55/45 горел примерно 35 сек, а 54/45/1 уже 26 сек;
  • Измельчение в кофемолке существенно не прибавило скорости горения
  • Даже с заменой сахара в двигателях оставалось много не сгоревшего вещества (черное и белое вещество в бочонках на последней фотографии), состав которого был не известен

В общем, топливо загорелось, осталось решить, делать ли на нем ракету, или искать другое решение.

Что в итоге?


А в итоге у нас плохо работающие движки. Основная их проблема не полное сгорание топливной смеси (о последствиях этого я писал выше). Также подкачала и скорость горения. И вот тут то всплывает злополучная надпись N 13,6% и K2O 46% на упаковке селитры, потому что, скорее всего калиевая селитра для удобрений не чистая, и оставшиеся 40,4% это какие-нибудь примеси, которые и стали причиной плохой работы двигателей.

Если вы смотрели недавнюю серию роликов Амперки Ракета против Лехи, то вы заметили, что они использовали химически чистую калиевую селитру. Благодаря ей у них прогорело все топливо, да и скорость горения была выше (2,85 мм/сек против моих 1-1,25 мм/сек). Ну и еще одним минусом самодельных движков является то, что неизвестны их тягостные характеристики, а я в будущем хотел бы рассчитывать параметры полета ракеты.

По итогу могу сделать вывод, что на калиевой селитре для удобрений движок не построишь. В общем на такой, грустной ноте, я закончил разработку своих движков, и стал искать тех, кто делает и продает готовые движки.

Строим ракету


Двигатели я купил на сайте Real Rockets. Так как вместе с этими двигателями поставляется и электрический воспламенитель, то нужно было собрать пульт для запуска, ну и саму ракету конечно же. В том же магазине приобрел картонные трубы для корпуса.

На просторах интернета нашел схему для пульта и немного переделал ее, чтобы от прозвонки случайно не зажегся движок, и в итоге схема получилась такой:


Корпус сделал из ПВХ листов, внутри разместил спаянную схему, провода к воспламенителю (на схеме R2) вывел на зажимы. К проводу зажигания припаял крокодильчики, которые и подключались к воспламенителю.

В итоге получился такой пульт

Внутренности пульта для запуска


Собранный пульт вместе с проводом зажигания

Ну и как любую космическую систему, пульт необходимо было испытать, да и неплохо было бы посмотреть как вообще работают готовые движки.

Испытания работы пульта и двигателя (осторожно -уши)

Чтобы ракета летела вертикально вверх я решил спроектировать ее в программе Open Rocket, а затем напечатать на 3D принтере все детали. С помощью функции оптимизации ракеты я подобрал форму и размеры обтекателя и стабилизаторов исходя из размеров картонной трубы, обтекателя (в него я хотел установить альтиметр, о котором расскажу в следующей части), массовых и тягостных характеристик двигателя и его крепления. Но сперва необходимо было добавить используемый движок.


Чертеж ракеты в Open Rocket

Как добавить свой движок в Open Rocket
В базе данных Open Rocket есть только американские двигатели, но если вы хотите использовать двигатели других производителей, то можно добавить их в программу. Сделать это довольно просто, я бы даже сказал увлекательно:

  1. Находим кривую тяги двигателя, в моем примере мы будем добавлять двигатель РД1-20-5 от Real Rockets
    "
    Кривая тяги двигателя РД1-20-5
  2. Скачиваем программу ThrustCurve Tracer для рисования новой кривой тяги
  3. Открываем программу и жмем кнопку Open Image в левом верхнем углу и выбираем фотографию кривой тяги нашего двигателя
  4. Жмем кнопку Setup Grid и настраиваем оси следующим образом
    • В X axis вписываем начальное и конечное значение времени, в моем случае 0 1.2 с
    • В X sub-subdivisions вписываем число вертикальных линий между нулем и конечным временем, в моем случае 2
    • В Y axis аналогично X axis только вписываем значения тяги, в моем случае 0 30 Н
    • В Y axis sub-subdivisions аналогично X axis sub-subdivisions только вписываем количество горизонтальных линий, в моем случае 2

  5. Выравниваем наложенную сетку с сеткой фотографии
  6. Жмем кнопку Draw points и начинаем ставить точки на кривой. Вы увидите, что их будет соединять красная линия, которая и должна совпадать с кривой. Вы можете ставить точки в произвольном порядке, главное чтобы последняя точка была на нулевом значении тяги (просто на этом времени тыкните мышкой куда-нибудь за нижнюю границу сетки)
  7. Если вы правильно расставили точки, то снизу увидите галочку



    У меня получилось вот так, но вы можете сделать кривую точнее
  8. Жмем кнопку Motor Info и вписываем требуемую информацию о двигателе
  9. Когда все готово, остается нажать на Save Data и программа сохранит данные о двигателе в файле с расширением .eng
  10. Этот файл нам необходимо вставить в папку по следующему пути C:\Users\username\AppData\Roaming\OpenRocket\ThrustCurves

Готово! Теперь в списке движков появится и ваш двигатель.

Как рассчитать оптимальные параметры ракеты в Open Rocket
Найти подходящую форму обтекателя и стабилизаторов можно с помощью функции оптимизации ракеты (Анализ -> Оптимизация ракеты). Для этого их нужно сначала добавить к нашей ракете и указать их материал, чтобы программа учитывала и их массу.

Добавить свой материал тоже просто. Для этого в разделе материалы (Правка -> Настройки -> Материалы) нажимаем Новый и добавляем данные о материале. Если вы так же как и я печатаете детали на 3D принтере, то плотность при данном заполнении пластиком можно узнать, вспомнив школьные лабораторные работы по физике: в мерный стакан наливаем воды, опускаем деталь и по разности объемов находим объем детали, на весах измеряем массу детали, делим второе на первое и получаем плотность.

В параметрах самих стабилизаторов и обтекателя выбираем наш материал и начинаем их оптимизировать. Конечно, иногда программа выдает страшные размеры и формы деталей, чтобы избежать этого нужно ограничивать максимальные и минимальные значения, которые вы оптимизируете.

Также не стоит забывать о стабильности, потому что от нее зависит, завалиться ли на бок ваша ракета во время полета или полетит строго вверх. Если не вдаваться в физические формулы, то стабильность это расстояние в диаметрах корпуса (калибрах) от центра давления до центра тяжести. Open Rocket умная программа и за нас рассчитывает их положение, поэтому нам остается только следить за значением стабильности. В идеале стабильность вашей ракеты должна быть 2-3 калибра, поэтому в оптимизации ракеты не забываем поставить ограничения и на эту характеристику.

Когда форма стабилизаторов и обтекателя были рассчитаны, предстояло их смоделировать и отправить на печать. Также я смоделировал и крепление для двигателя.

Модель стабилизаторов


Модель обтекателя


Модель крепления для двигателя


Сборка всей ракеты



Боковой разрез ракеты

Собранные и покрашенные ракеты


Вперед на полигон!


Когда обе ракеты были собраны, настало время их запустить! В роли стартового стола выступал стальной стержень длиною 1500 мм, воткнутый в землю. Ракета устанавливалась на него с помощью направляющих (листы бумаги, скрученные в трубочки).

Первый запуск 3D печатных ракет одновременно был смешным и страшным. Как оказалось двигатели были бракованные, из-за чего в небо взлетела крылатая ракета Калибр неисправная ракета и на полной скорости воткнулась в землю. Но была и хорошая новость, неисправные движки Real Rockets заменила бесплатно, за что я им благодарен.

Запуск ракеты с неисправным двигателем

Последствия

Отломался один стабилизатор и порвался парашют

Ремонт ракеты

Отломанный стабилизатор приклеил на суперклей
и укрепил с помощью папье-маше, заменил систему спасения


С отремонтированной ракетой и новыми двигателями мы снова отправились на полигон. В этот раз удача была на нашей стороне и обе ракеты взлетели в воздух и мягко приземлились, даже неоднократно.

Успешный запуск (осторожно -уши)

Запуск в слоу-мо

Заключение


В конце я хотел бы сказать, что на простых запусках ракет я не хочу останавливаться. Одна из моих ракет уже летала вместе с альтиметром, о разработке которого я расскажу в следующей статье. Сейчас же я делаю бортовую камеру, которую планирую установить на новую ракету и запустить уже на более мощных двигателях РД1-30-5.

А на этом у меня:


Спасибо за внимание!
Подробнее..

Per aspera ad astra, или как я строил ракету. Часть 2. Собираем альтиметр на STM32 и BMP280

26.09.2020 16:11:14 | Автор: admin


Всем привет!

В предыдущей части я остановился на том, что мои ракеты удачно взлетели и приземлились, а на одной даже был установлен альтиметр. В этой статье я и расскажу о том как сделать простой высотомер на основе STM32 Nucleo L031K6 и датчика давления BMP 280 , который к тому же хранит все данные во Flash памяти.

Выбор железа


Основные требования к альтиметру:
  1. Высокая скорость считывания высоты, так как ракета в апогее находится не слишком долго, а я хотел узнать именно максимальную высоту;
  2. Низкое энергопотребление, чтобы не ставить большой аккумулятор;
  3. Небольшие размеры всей конструкции.

Исходя из них в качестве микроконтроллера взял STM32 Nucleo L031K6 (высокая скорость работы, низкое потребление тока, малый размер). Высоту решил измерять с помощью барометра BMP280 (те же резоны, что и у МК). Также добавил кнопку, при нажатии которой начиналась запись высоты. Ну и питала всю электронику батарейка CR2032, подключенная через адаптер. В итоге получилась такая схема:


Использованные модули

STM32 Nucleo L031K6


BMP280


Адаптер для CR2032

Разработка кода


Код вы можете найти на моем гитхабе . Пины STM32 были сконфигурированы в CubeMX под IAR. Для работы с BMP280 использовал вот эту библиотеку, добавил в нее функцию расчета высоты над уровнем моря с помощью барометрической формулы и инициализацию датчика с нужными мне параметрами частоты считывания, фильтрации и тд. Так как я хотел измерить высоту полета относительно земли, мне нужно было сначала вычислить высоту над уровнем моря в моей местности, взять ее за ноль и относительно нее измерять высоту полета. Частота измерений равнялась 10 Гц.

Запись во Flash память происходила следующим образом так:
Организация памяти в STM32 L031K6


  • Для всех измерений выделил 8 Кбайт с 0x08006000 по 0x08007FFF адреса
  • На одно измерение выделил 2 байта
  • Во Flash записывал по 4 байта, то есть сразу два измерения
  • Максимальное количество измерений 4096, этого хватало на запись примерно 7-ми минут полета
  • Высоту записывал в сантиметрах для большей точности

А происходила запись следующим образом:
  1. Если итератор записи четный, то в переменную с данными для записи во Flash сохраняем текущую высоту в младшую половину слова;
  2. Если итератор записи нечетный, то в переменную с данными для записи во Flash добавляем текущую высоту в старшую половину слова и сохраняем эту переменную в ячейку Flash

В итоге алгоритм работы программы следующий:
  1. После включения 5 секунд ждем нажатия кнопки для старта измерений высоты.
  2. Если кнопка не была нажата, то зажигаем встроенный светодиод и начинаем передачу по UART данных о высоте, записанных во Flash памяти
  3. Если кнопка была нажата, то два раза моргаем встроенным светодиодом и вычисляем высоту местности.
  4. После вычисления нуля два раза моргаем встроенным светодиодом и записываем во Flash-память высоту ракеты над землей.
  5. Когда выполнили передачу по UART или завершили измерения высоты, бесконечно моргаем встроенным светодиодом;
  6. Ждем пока нас найдут люди и выключат.


При питании STMки от CR2032 через пин 3.3V обнаружил, что код не работает. Проблема была в том, что при подаче питания через эту ногу необходимо было отпаять SB9 (расположен рядом с выводами RX и TX на обратной стороне МК) иначе плата постоянно перезагружалась.

Теперь необходимо было проверить точность работы альтиметра. Взяв рулетку, я стал поднимать альтиметр на разные высоты и смотреть, что он измеряет. Результаты тестов лежат в соответствующей папке на гитхабе. В текстовых файлах сырые данные с STMки, а в Excelевских таблицах находятся красивые графики всех тестов. Точность соответствовала заявленной 10см. Следует помнить, что высоту я измерял в сантиметрах, поэтому в таблице такие большие числа.

Сборка альтиметра


Так как во время приземления ракета может сильно ударится о землю, необходимо было хорошо зафиксировать всю электронику, чтобы при тряске не отваливались проводки, или, того хуже, сами модули. Альтиметр разместил в головном обтекателе (места там было достаточно, и стабильности за счет смещения центра тяжести к головному обтекателю прибавилось) в 3D-печатном креплении. STMка стояла вертикально, BMP280 контактами вверх и под крепление приклеил адаптер для CR2032. Из-за того, что он не помещался в корпус ракеты, пришлось немного сточить контакты минуса. Рядом с контактами в боковой стенке 3D-печатного крепления проточил вертикальную канавку, чтобы протянуть через нее минус от CR2032, а под плюсом просверлил отверстие и пустил провод через него. Думал крепить альтиметр к головному обтекателю с помощью самореза, поэтому в корпусе есть отверстие, но потом от этой идеи отказался.


Модель крепления, напечатанного на 3D-принтере

Собранный блок альтиметра

Вид сверху


Вид снизу

Кнопку приклеил рядом с BMP280, установил остальные модули в свои места, припаял все провода и замотал все синей изолентой залил для надежности термоклеем.

В обтекатель ракеты альтиметр плотно вставлялся. Для того, чтобы он никуда не отлетел после удара, протянул через отверстие в креплении резинку, соединяющую корпус ракеты и обтекатель.


Собранный альтиметр. Вид спереди


Вид сзади. Видна резинка, соединяющая альтиметр с ракетой

Альтиметр был готов! Теперь предстояло его испытать, а это значит, что я снова отправился на полигон!

Запуск альтиметра и результаты измерений


К сожалению первый запуск был с неисправными двигателями, о которых я писал в прошлой статье.

В итоге график получился таким:


По горизонтали номер измерения. Каждые 10 измерений 1 секунда. По вертикали высота в сантиметрах

Ракета взлетела на 15м, затем устремилась в землю. После прохождения апогеячерез 1 секунду началась какая-то аномалия: после значения 12м почему-то показания упали до -8м. Это произошло в момент второго запуска двигателя (которого не должно было быть), так что не исключаю, что неисправный двигатель как-то повлиял на альтиметр. Во всех остальных тестах он работал отлично, так что это была проблема явно не в электронике. В общем, те испытания альтиметра были успешными лишь наполовину, так как во вторую половину полета произошла аномалия. Сам график вы можете найти на гитхабе, он называется rocket_flight_fall_test.

После ремонта ракеты я снова отправился на полигон и в этот раз испытания прошли успешно. Полет был отличным, показания альтиметра были стабильными и соответствовали полету. График полета получился вот такой:


По горизонтали номер измерения. Каждые 10 измерений 1 секунда. По вертикали высота в сантиметрах

Ракета поднялась на 150м и успешно приземлилась. Таким образом это испытание было полностью успешным. Я удостоверился в том, что альтиметр работает и приступил к разработке новой бортовой аппаратуры.

Заключение


В итоге, я полностью собрал компактный альтиметр, который помещается в небольшую модель ракеты. Испытания прошли успешно, электроника пережила взлет и посадку и измерила высоту полета. На этом проект разработки альтиметра я закончил, возможно в будущем использую его в одной из ракет, потому что знать высоту полета иногда очень полезно (например, если вы запускаете ракеты ради достижения максимальной или какой-нибудь определенной высоты). Сейчас, как я уже говорил, я занимаюсь разработкой бортовой камеры с радиопередатчиком, потому что ракету с такой серьезной электроникой я терять не намерен.

Спасибо за внимание!
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru