Моделирование устройства и бокса для автоматического крепления/открепления груза к БПЛА
Моделирование устройства и бокса для автоматического крепления/открепления груза к БПЛА
Команда
  • Гетало Данила
    Организация работы и наведение паники
  • Снегирев Геннадий
    3D-моделирование и прототипирование
  • Ануфриев Руслан
    Программирование, механика
Актуальность
На данный момент область применения БПЛА постоянно расширяется. Появляются всё новые задачи, которые можно решать с их применением. Вместе с тем возникает необходимость в обеспечении полной автономности выполнения задач дроном. Наш проект может решить проблему крепления и открепления груза. Все будет происходить автономно, без участия человека.
Наша цель
Создать устройство, устанавливаемое на дрон и способное автоматически захватывать и откреплять груз.
Задачи проекта
3D
Смоделировать компоненты в Fusion 360
"Лапки" для захвата
систему крепления сервы
систему крепления ардуино и ПК
Программирование
Написать код, позволяющий управлять сервой в зависимости от расстояния до УЗ дальномера.
Электроника
Сделать схему распиновки ардуино. Продумать систему электропитания.
Сборка
Собрать механическую часть. Развести провода питания и управления. Разместить ардуино и подключить сервоприводы.
Тестирование
Протестировать систему. Определить недостатки. Запланировать правки.
Результат проекта
Человеку больше не нужно подходить к дрону для установки и снятия бокса с грузом. Теперь все может происходить автономно. Такая система довольно универсальна и способна хорошо работать на разных моделях дронов. Она также пригодится для решения кейсов на различных соревнованиях по летательной робототехнике.

#include <Servo.h>
 
#define coef 10 //(коэффициент соответствия 10 градусов на 1см)
#define dead_zone 10
#define max_value 30
#define servoPin 6
 
#define Trig 13
#define Echo 12
 
Servo myservo;

int redPin = 11;
int greenPin = 10;
int bluePin = 9;

 
void setup() 
{ 
  pinMode(Trig, OUTPUT); //инициируем как выход
  pinMode(Echo, INPUT);  //инициируем как вход
  myservo.attach(servoPin);
  myservo.write(0);
  
  	pinMode(redPin, OUTPUT);
	pinMode(greenPin, OUTPUT);
	pinMode(bluePin, OUTPUT);
  
}
 
unsigned int impulseTime=0;
unsigned int distance_sm=0;
 
void loop() 
{ 
  digitalWrite(Trig, HIGH); /* Подаем импульс на вход
   trig дальномера */
  delayMicroseconds(10);  // равный 10 микросекундам
  digitalWrite(Trig, LOW); // Отключаем 
  impulseTime = pulseIn(Echo, HIGH); // Замеряем длину импульса 
  distance_sm = impulseTime/58; // Пересчитываем в сантиметры 
  
  if (distance_sm < dead_zone)// если дистанция менее 4 см, серва в положении ноль градусов
  {
    myservo.write(90);
    setColor(100, 0, 0); // красный
  }
  else
  {
    myservo.write(0);
     setColor(0, 0, 0);
  }
  delay(100); /* ждем 0.1 секунды,
   Следующий импульс может быть излучён, только после исчезновения эха от предыдущего. Это время называется периодом цикла (cycle period). Рекомендованный период между импульсами должен быть не менее 50 мс. 
   */
  }
void setColor(int red, int green, int blue)

{

#ifdef COMMON_ANODE

red = 255 - red;

green = 255 - green;

blue = 255 - blue;

#endif

analogWrite(redPin, red);

analogWrite(greenPin, green);

analogWrite(bluePin, blue);

}
Заинтересовал проект ?
По вопросам сотрудничества звоните +7-960-970-93-74
Е-mail: ivan500@yandex.ru
Made on
Tilda