Делаем радиоуправляемую модель лодки на Ардуино Нано

Делаем на основе Arduino Nano модель катера или лодки из пенополистирола на радиоуправлении через Bluetooth.

Шаг 1. Комплектующие

Для этого проекта нам понадобится не так уж много деталей.

 

Деталь Кол-во
1 H-мост SparkFun Dual H-Bridge L298 1
2 Модуль Bluetooth Low Energy (BLE) HC-06 1
3 Сервопривод 1
4 Arduino Nano R3 1

Также нам понадобятся следующие приложения:

  • Arduino IDE
  • Приложение Android Arduino Bluetooth RC Car

Шаг 2. Создаем корпус катера или лодки

Обычно всё начинается тогда, когда хочется попробовать управлять моделью катера на радиоуправлении, но покупать подобную модель дорого или нет желания. Поэтому мы переходим к созданию корпуса. Мы нашли рисунки лодки в Интернете и решили сделать его из пены.

Думаем, что проблем с этим не возникнет, да и все любят разные внешние виды катеров и лодок - кто-то любит парусно-моторные, кто-то просто моторные.

Шаг 3. Двигатель, штурвал, пропеллер

Следующим шагом мы сделали крепление для двигателя. Также мы сделали рулевое колесо и пропеллер. В конечном итоге их заменили купленные.

Как и написали выше - пропеллер и штурвал заменили купленные элементы.

В итоге мы получили такой результат:

Вал гребного винта с валом двигателя соединен с помощью муфты.

Шаг 4. Принципиальная схема

Так как на следующем шаге мы будем размещать электронику на корпусе нам нужно собрать все электронные детали вместе.

Шаг 5. Закрепляем электронику

После создания корпуса и крепления - переходим к закреплению всей электроники на корпусе внутри лодки.

Шаг 6. Скетч для проекта

Вы можете скачать или скопировать код для проекта Ардуино катера ниже.

#include <Servo.h> 
Servo myservo;

int val;
int LED = 13;
int IN4 = 4; // Input3    5 
int IN3 = 5;
int IN2 = 7;
int IN1 = 6;
int k = 0;
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
 pinMode (IN4, OUTPUT);
  pinMode (IN3, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (IN1, OUTPUT);
   myservo.attach(10);
}

void loop()
{
if (Serial.available())
  {
     val = Serial.read();
     
        if (k == 0)
        {
           myservo.write(90);  // (1    )
           k++;
        }
           //   "F"   ( w)
   if (val == 'X')
     {
        myservo.write(90);
       }
       if (val == 'x')
     {
        myservo.write(90);
       }
    if (val == 'F')
     {
        digitalWrite (IN4, HIGH);
         digitalWrite (IN3, LOW); 
         digitalWrite (IN2, HIGH);
         digitalWrite (IN1, LOW); 
       }
         //   "S"  
     if ( val == 'S')
       {
       digitalWrite (IN3, LOW);
         digitalWrite (IN4, LOW); 
          digitalWrite (IN2, LOW);
         digitalWrite (IN1, LOW); 
        }
         //   "B"  
         if ( val == 'B')
       {
         digitalWrite (IN4, LOW); 
         digitalWrite (IN3, HIGH);
          digitalWrite (IN2, LOW); 
         digitalWrite (IN1, HIGH);
        }
        //  
        if ( val == 'L')
       {
         myservo.write(50);
       //  myservo.write(90);
        }
        //  
        if ( val == 'R')
       {
         myservo.write(130);
       //  myservo.write(90); 
        }

        //  45 +  
        
           //   "G"    
    if (val == 'G')
          {
        digitalWrite (IN4, HIGH);
         digitalWrite (IN3, LOW);
         digitalWrite (IN2, HIGH);
         digitalWrite (IN1, LOW);
         myservo.write(50); 
           delay(1000);  
         myservo.write(90);
       }
    
         //   "I"   
         if ( val == 'I')
       {
         digitalWrite (IN4, HIGH); 
         digitalWrite (IN3,LOW);
           digitalWrite (IN2, HIGH);
         digitalWrite (IN1, LOW);
         myservo.write(130);
           delay(1000);  
         myservo.write(90);
        }
       //   ""   
         if ( val == 'H')
       {
         digitalWrite (IN4, LOW); 
         digitalWrite (IN3, HIGH);
         digitalWrite (IN1, HIGH);
         digitalWrite (IN2, LOW);
         myservo.write(130);
           delay(1000);  
         myservo.write(90);
        }
         //   "J"   
         if ( val == 'J')
       {
         digitalWrite (IN4, LOW); 
         digitalWrite (IN3, HIGH);
          digitalWrite (IN1, HIGH);
         digitalWrite (IN2, LOW);
          myservo.write(50); 
            delay(1000);  
          myservo.write(90);
        }
    }
}

Итоговый результат вы можете увидеть на первой фотографии к данному уроку.

Надеемся, что у вас не возникло проблем при реализации проекта.

13 августа 2018 в 15:04 | Обновлено 7 декабря 2019 в 00:12 (редакция)
Опубликовано:
Уроки, , ,

1 комментарий

  1. Дядя петя
    1 июля 2020 в 20:17

    Зачем соеденять выходы на драйвере


    Warning: Use of undefined constant comment - assumed 'comment' (this will throw an Error in a future version of PHP) in /var/www/u0804506/data/www/arduinoplus.ru/wp-content/themes/arduino/inc/arduino-comments.php on line 37
    Ответить

Добавить комментарий

Ваш E-mail не будет никому виден. Обязательные поля отмечены *

Adblock
detector