Форум воронежских родителей

Наши хобби и увлечения => Рукоделие => Тема начата: Золото Акапулько от Марта 25, 2017, 13:57:45

Название: Автономный дрон для путешествия под диван
Отправлено: Золото Акапулько от Марта 25, 2017, 13:57:45
Мы тут в Валеркой открыли для себя Алиэкспресс )), и теперь заказываем всякие прикольные штуки, из которых собрали вот такого гусеничного робота. Управляется по bluetooth с планшета или смартфона. Также можно управлять пультом от телевизора или голосом. Можно установить смартфон и наблюдать и управлять удаленно через компьютер или планшет. Камера (смартфон) может поворачиваться и смотреть по сторонам.

(https://mamavrn.ru/my_img/img/2017/03/25/68125.jpg)
(https://mamavrn.ru/my_img/img/2017/03/25/15f7a.jpg)
(https://mamavrn.ru/my_img/img/2017/03/25/47f58.jpg)

Для тех, кто захочет повторить.

Бюджет проекта:

- Гусеничное шасси + редуктор Tamiya https://market.yandex.ru/product--tamiya-educational-construction-70108-gusenichnoe-shassi/11034842 (~700р.)
- кусок фанеры для базы (0р.)
- детский металлический конструктор https://www.votonia.ru/products/konstruktor-desyatoe-korolevstvo-metallicheskiy-samokat-12-det/ (~300р.)
- плата Arduino UNO (https://mamavrn.ru/go.php?url=aHR0cHM6Ly9ydS5hbGlleHByZXNzLmNvbS9pdGVtL1VOTy1SMy1kZXZlbG9wZW50LWJvYXJkLU1FR0EzMjhQLUNIMzQwLUNIMzQwRy1Gb3ItQXJkdWluby1VTk8tUjMtV2l0aG91dC1VU0ItQ2FibGUvMzI2NjQ3ODAzMDAuaHRtbD9zcG09MjExNC4xMDAxMDIwOC4xMDAwMDE0LjE0Lk5vWkdBNSZhbXA7c2NtPTEwMDcuMTMzMzguNzgxMjMuMDAwMDAwMDAwMDAwMDAwJmFtcDtwdmlkPTQ2ZTNhM2JhLWZhNWUtNDQ1My05NTM0LTdiYmVmZDYzMTgxZiZhbXA7dHBwPTE=) (235р.) Мозг дрона.
- плата расширения Motor Shield (https://mamavrn.ru/go.php?url=aHR0cHM6Ly9ydS5hbGlleHByZXNzLmNvbS9pdGVtL0ZyZWVzaGlwcGluZy1MMjkzRC1tb3Rvci1jb250cm9sLXNoaWVsZC1tb3Rvci1kcml2ZS1leHBhbnNpb24tYm9hcmQtRk9SLUFyZHVpbm8tbW90b3Itc2hpZWxkLzMyNTAyODE2NzI4Lmh0bWw/c3BtPTIxMTQuMDMwMTAyMDguMy4yOC5xb1J6OTUmYW1wO3dzX2FiX3Rlc3Q9c2VhcmNod2ViMF8wLHNlYXJjaHdlYjIwMTYwMl8yXzEwMDY1XzEwMDY4XzQzM180MzRfMTAxMzZfMTAxMzdfMTAxMzhfMTAwNjBfMTAwNjJfMTAxNDFfMTAwNTZfMTAwNTVfMTAwNTRfMTAwNTlfMjAxXzEwNTMxXzEwMDk5XzEwNTMwXzEwMTAzXzEwMTAyXzEwMDk2XzEyMF8xMDA1Ml8xMDE0NF8xMDA1M18xMDA1MF8xMDEwN18xMDE0Ml8xMDA1MV8xMDEwNl8xMDE0M18xMDUyNl8xMDUyOV8xMDUyOF8xMDUyM18xMDA4NF8xMDExN18xMDA4M18xMDExOV8xMDA4MF8xMDA4Ml8xMDA4MV8xMDExMF8xMDExMV8xMDExMl8xMDExM18xMDExNF8xMDA3OF8xMDA3OV8xMDA3M18xMDA3MF8xMDEyMl8xMDEyM18xMDEyMF8xMDEyN18xMDEyNF8xMDEyNS0xMDA1MF8xMDEyMCxzZWFyY2h3ZWIyMDE2MDNfNyxhZnN3aXRjaF8xX2FmQ2hhbm5lbCxwcGNTd2l0Y2hfNSxzaW5nbGVfc29ydF8wX2RlZmF1bHQmYW1wO2J0c2lkPTM3OGNiNGNhLTdjYTEtNGY2Yi1iMTZkLWNiYjc1MzUyYTIyOSZhbXA7YWxnb19leHBpZD0xNGM1OTI5My1jMmQ5LTRhYmEtOGIzZi1hYzc5NjQ5OWE0N2QtMyZhbXA7YWxnb19wdmlkPTE0YzU5MjkzLWMyZDktNGFiYS04YjNmLWFjNzk2NDk5YTQ3ZA==) (100р.) Для подключения двигателей.
- аккумулятрный блок (https://mamavrn.ru/go.php?url=aHR0cHM6Ly9ydS5hbGlleHByZXNzLmNvbS9pdGVtL1RvcC1RdWFsaXR5LUhvdC1TYWxlLTFwY3MtQUEtUG93ZXItQmF0dGVyeS1TdG9yYWdlLUNhc2UtUGxhc3RpYy1Cb3gtSG9sZGVyLVdpdGgtNC1TbG90cy8zMjY4NTgwOTMwMy5odG1sP3NwbT0yMTE0LjEwMDEwMjA4LjEwMDAwMTQuMTUucnlOaG9VJmFtcDtzY209MTAwNy4xMzMzOC43ODEyMy4wMDAwMDAwMDAwMDAwMDAmYW1wO3B2aWQ9OWJlMDczNzgtNmY4Ny00MmRmLTk1MjEtZTJjNzA1MmFjMzg1JmFtcDt0cHA9MQ==) на 4 аккумулятора АА (40р.)
- шаговый двигатель (https://mamavrn.ru/go.php?url=aHR0cHM6Ly9ydS5hbGlleHByZXNzLmNvbS9pdGVtL1NtYXJ0LUVsZWN0cm9uaWNzLTI4QllKLTQ4LTVWLTQtUGhhc2UtREMtR2Vhci1TdGVwcGVyLU1vdG9yLVVMTjIwMDMtRHJpdmVyLUJvYXJkLWZvci1BcmR1aW5vLzMyNzA0NjAyNjE4Lmh0bWw/c3BtPTIxMTQuMTAwMTAyMDguMTAwMDAxNC45LmZ1Ym5mbyZhbXA7c2NtPTEwMDcuMTMzMzguNzgxMjMuMDAwMDAwMDAwMDAwMDAwJmFtcDtwdmlkPWFhNzllMGU3LWRjMTItNDQzNC05MjNjLTFkZWQwM2E2NGVlMiZhbXA7dHBwPTE=) (100р.) Для поворота камеры.
- провода и пара светодиодов для фар можно добыть из какой-нибудь старой техники (0р.)

Итого 1475р.

Программа управления на Ардуино:

#include <AFMotor.h>
#include <IRremote.h>
#include <SoftwareSerial.h>

AF_DCMotor motor1(1); 
AF_DCMotor motor2(2);
AF_Stepper motor3(2048, 2);

IRrecv irrecv(2);
decode_results results;

SoftwareSerial BTSerial(A0, A1);
char vcmd;
String voice;

void setup() {
  BTSerial.begin(9600);
  pinMode(19, OUTPUT);
  motor1.setSpeed(200);
  motor2.setSpeed(200);
  motor3.setSpeed(200);
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop() {



while (BTSerial.available()){

delay(10);
char c = BTSerial.read();

// Вперед
if (c == 'F') {
    motor1.run(FORWARD);
    motor2.run(FORWARD);
    Serial.println(c);break;       
}
// Назад
if (c == 'B')
{
      motor1.run(BACKWARD);
      motor2.run(BACKWARD);
      Serial.println(c);break;     
}
// Влево
if (c == 'L')
{
    motor1.run(BACKWARD);
    motor2.run(FORWARD);
    Serial.println(c);break; 
}
// Вправо
if (c == 'R')
{
      motor1.run(FORWARD);
      motor2.run(BACKWARD);
      Serial.println(c);break; 
}
// Прямо и влево
if (c == 'G')
{
  /*
  motor3.step(1024, BACKWARD, INTERLEAVE);
  motor3.release();
  delay(1000);
  Serial.println(c);break;
  */ 
}
// Прямо и вправо
if (c == 'I')
{ /*
 motor3.step(1024, FORWARD, INTERLEAVE); 
 motor3.release();
 delay(1000);
 Serial.println(c);break;
 */ 
}
// Назад и влево
if (c == 'H')
{
  motor3.step(1, BACKWARD, SINGLE);
  Serial.println(c);break;
}
// Назад и вправо
if (c == 'J')
{
 motor3.step(1, FORWARD, SINGLE); 
 Serial.println(c);break;
}
// Стоп
if (c == 'S')
{
      motor1.run(RELEASE);
      motor2.run(RELEASE);
      motor3.release();
      Serial.println(c);break; 
}

if (c == 'X')
{
digitalWrite(19, HIGH);
Serial.println(c);break; 
}

if (c == 'x')
{
digitalWrite(19, LOW);
Serial.println(c);break; 
}

if (c == '#') {break;}
voice += c;
}
if (voice.length() > 0) {
Serial.println(voice);

if(voice == "*вперед")
{
    motor1.run(FORWARD);
    motor2.run(FORWARD);
    delay(5000);
  }
else if(voice== "*остановись")
{
      motor1.run(RELEASE);
      motor2.run(RELEASE);
}
else if(voice == "*налево")
{
    motor1.run(BACKWARD);
    motor2.run(FORWARD);
    delay(1000);
  }
else if(voice == "*направо") {
    motor2.run(BACKWARD);
    motor1.run(FORWARD);
    delay(1000);

  }
else if(voice == "*Включи свет") {digitalWrite(19, HIGH); }
else if(voice == "*Выключи свет") {digitalWrite(19, LOW); }
else if(voice == "*назад")
{
      motor1.run(BACKWARD);
      motor2.run(BACKWARD);   
  }

else if(voice == "*посмотри направо")
{
  motor3.step(1024, FORWARD, INTERLEAVE);
  }
else if(voice == "*посмотри налево")
{
  motor3.step(1024, BACKWARD, INTERLEAVE);
  }
//-----------------------------------------------------------------------//
voice="";}
 //Reset the variable after initiating





/*
// Если есть данные
if (BTSerial.available())
{
// Читаем команды и заносим их в переменную. char преобразует код символа команды в символ
vcmd = (char)BTSerial.read();

// Отправляем команду в порт, чтобы можно было их проверить в «Мониторе порта»
Serial.println(vcmd);

// Вперед
if (vcmd == 'F') {
    motor1.run(FORWARD);
    motor2.run(FORWARD);         
}
// Назад
if (vcmd == 'B')
{
      motor1.run(BACKWARD);
      motor2.run(BACKWARD);   
}
// Влево
if (vcmd == 'L')
{
    motor1.run(BACKWARD);
    motor2.run(FORWARD);
}
// Вправо
if (vcmd == 'R')
{
      motor1.run(FORWARD);
      motor2.run(BACKWARD);
}
// Прямо и влево
if (vcmd == 'G')
{

}
// Прямо и вправо
if (vcmd == 'I')
{
 
}
// Назад и влево
if (vcmd == 'H')
{
 
}
// Назад и вправо
if (vcmd == 'J')
{
 
}
// Стоп
if (vcmd == 'S')
{
      motor1.run(RELEASE);
      motor2.run(RELEASE);
}

if (vcmd == 'X')
{
digitalWrite(19, HIGH);
}

if (vcmd == 'x')
{
digitalWrite(19, LOW);
}



}

*/
 
/*
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);

//включить свет
if (results.value == 0xFFA857) {
  digitalWrite(19, HIGH);   
}

//выключить свет
if (results.value == 0xFFE01F) {
  digitalWrite(19, LOW);
}

//повернуть голову направо
if (results.value == 0xFF30CF) {
  motor3.step(1024, BACKWARD, INTERLEAVE); 
}

//повернуть голову налево
if (results.value == 0xFF7A85) {
  motor3.step(1024, FORWARD, INTERLEAVE);
}

//вперед
if (results.value == 0xFF18E7) {
    motor1.run(FORWARD);
    motor2.run(FORWARD);       
}

//назад
if (results.value == 0xFF4AB5) {
      motor1.run(BACKWARD);
      motor2.run(BACKWARD);   
}

//стоп
if (results.value == 0xFF38C7) {
      motor1.run(RELEASE);
      motor2.run(RELEASE);     
}

//налево
if (results.value == 0xFF10EF) {
    motor1.run(BACKWARD);
    motor2.run(FORWARD);
    delay(500);
    motor1.run(RELEASE);
    motor2.run(RELEASE); 
}

//направо
if (results.value == 0xFF5AA5) {
      motor1.run(FORWARD);
      motor2.run(BACKWARD);
      delay(500);
      motor1.run(RELEASE);
      motor2.run(RELEASE); 
}

irrecv.resume(); // Receive the next value
}
delay(100);


*/



}
Название: Автономный дрон для путешествия под диван
Отправлено: РОЗОВАЯ от Июня 22, 2018, 23:57:13
Какие вы молодцы и полезное дело и развитие ребёнка.