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

Пастухова Дана Александровна, 9 "В" класс МАОУ гимназии №2, руководитель: Симонов Валерий Павлович

Введение

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

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


Глава 1. Теория

1.1 

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

1.2 Цель:

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

1.3 Подготовка

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

1.4 ПО

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

Глава 2. Практика

2.1 Корпус

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

Корпус выполнен в форме пули (SPr) с утолщением в середине, что позволяет добиться наибольшей обтекаемости. Так же в корпусе были проделаны отверстия, для того, чтобы была возможность наглядно увидеть работу систем макета.
Корпус окрашен в соответствии с классической окраской рыб: более темная верхнняя, "спинная", часть и более светлый низ.

Размеры: длина - 115 см, диаметр в самом широком месте - 30 см.

2.2 Техническая часть

Работа макета осуществляется электрическими двигателями и сервоприводами, различными датчиками, камерой, реле и процессором на базе ARDUINO. Все составляющие собраны в электрическую цепь через соединяющие платы и действуют как единый механизм. 

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

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

Так же, в конструкции предусмотрены датчики, реагирующие на аварийные ситуации и, в теории, корректирующие работу программ.

2.3 Программное обеспечение

Поскольку процессор ARDUINO не выполняет более одной программы единовременно, все необходимые команды были сведены в одну большую программу:

#include //

#include

OneWire ds(2);

int val; //

int pos; //

int i=1;

int r1=4; //

int r2=5; //

int r3=6; //

int r4=3; //

int echoPin = 7; //

int trigPin = 8; //

Servo servo1; //

Servo servo2; //

Servo servo3; //

Servo servo4; //

void setup() //

{

Serial.begin (9600);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

pinMode (r1,OUTPUT);

pinMode (r2,OUTPUT);

pinMode (r3,OUTPUT);

pinMode (r4,OUTPUT);

digitalWrite(r1, LOW); //

digitalWrite(r2, HIGH);

digitalWrite(r3, HIGH);

digitalWrite(r4, HIGH);

servo1.attach(9);

servo2.attach(10);

servo3.attach(11);

servo4.attach(12);

servo1.write(75); //

delay(10);

servo2.write(30);

delay(10);

servo3.write(110);

delay(10);

servo4.write(110);

}

void us ()

{

int duration, cm;

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

duration=pulseIn(echoPin, HIGH);

cm=duration / 58;

Serial.print("rasstoyanie");

Serial.print(cm);

Serial.println(" cm");

delay(100);

}

void mp()

{

val=analogRead(0);

if (val>540){

Serial.print ("obnarugno magnitnoe pole");

Serial.println (analogRead(0));

}

else if (val<500){

Serial.print ("obnarugeno magnitnoe pole");

Serial.println (analogRead(0));

}

else {Serial.print ("magnitnoe pole ne obnarugeno");

Serial.println(analogRead(0));

}

delay(500);

}

void temp() {

byte data[2];

ds.reset();

ds.write(0xCC);

ds.write(0x44);

delay(750);

ds.reset();

ds.write(0xCC);

ds.write(0xBE);

data[0]=ds.read();

data[1]=ds.read();

int Temp=(data[1]<<8)+data[0];

Temp=Temp>>4;

Serial.print("temperatyra vody");

Serial.print(Temp);

Serial.println("С");

delay(100);

}

void loop() //

{

delay(1000); //

digitalWrite(r4, LOW); //

delay(1000);

digitalWrite(r4, HIGH);

servo3.write(140); //servo3 на 110

delay(10);

digitalWrite(r3, LOW); //

servo4.write(140); //servo4 на 140

delay(10);

for(i = 1; i < 8; i += 1) //

{

for(pos = 75; pos < 105; pos += 1)

{

servo1.write(pos);

delay(90);

}

for(pos = 105; pos>=75; pos-=1)

{

servo1.write(pos);

delay(90);

}

} //

servo3.write(110);

delay(10);

digitalWrite(r3, HIGH); //

us (); //

mp (); //

temp (); //

servo4.write(110);

delay(10);

for(i = 1; i < 2; i += 1)

{

for(pos = 75; pos < 105; pos += 1)

{

servo1.write(pos);

delay(90);

}

for(pos = 105; pos>=75; pos-=1)

{

servo1.write(pos);

delay(90);

}

}

delay(5000);

digitalWrite(r1, HIGH); //

delay(4000);

digitalWrite(r1, LOW); //

delay(3000);

servo2.write(170); //

digitalWrite(r2, LOW); //

delay(10000);

digitalWrite(r2, HIGH); //

servo2.write(30); //

delay(10000);

for(i = 1; i < 2; i += 1)

{

for(pos = 75; pos < 105; pos += 1)

{

servo1.write(pos);

delay(90);

}

for(pos = 105; pos>=75; pos-=1)

{

servo1.write(pos);

delay(90);

}

}

servo3.write(80);

delay(10);

digitalWrite(r3, LOW); //

servo4.write(80);

delay(10);

for(i = 1; i < 8; i += 1)

{

for(pos = 75; pos < 105; pos += 1)

{

servo1.write(pos);

delay(90);

}

for(pos = 105; pos>=75; pos-=1)

{

servo1.write(pos);

delay(90);

}

}

servo3.write(110);

delay(10);

digitalWrite(r3, HIGH); //

servo4.write(110);

for(i = 1; i < 4; i += 1) //

{

digitalWrite(r4, LOW);

delay(100);

digitalWrite(r4, HIGH);

delay(100);

}

delay(200000);

}

Эта программа полностью контролирует все функции макета.

Заключение:

В результате работы над этим проектом, мною были изучены:

-Новый для меня язык программирования

-Принципы работы автономных аппаратов

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

Вывод:

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

100
Подписка на новости
Контакты

Адрес: г. Екатеринбург, ул. Мамина-Сибиряка 145, к. 1119 (на карте)

Тел.: +7 (343) 355-93-88

info@cosmoport.club