Лодка на Ардуино с ИК управлением

Лодка Ардуино с пультом ДУ своими руками ► в статье описана технология изготовления лодки на Arduino, приведен список необходимых деталей и готовая программа.

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

Лодка на Ардуино с пультом ДУ может передвигаться по воде за счет винта, соединенном с электродвигателем. Экструдированный пенополистирол (пеноплэкс) имеет пористую ячеистую структуру, благодаря которой, материал достаточно прочный, но при этом пеноплэкс легче воды и не тонет. Кроме того, лодка способна поворачивать, благодаря килю, соединенному с сервоприводом рычагом.

Радиоуправляемая лодка на Ардуино своими руками

Лодка на Ардуино с ИК управлением
Лодка на Ардуино с ИК управлением от пульта ДУ

Для этого проекта нам потребуется:

  • плата Arduino UNO;
  • ИК приемник;
  • любой пульт ДУ;
  • один сервопривод;
  • электродвигатель 5В;
  • аккумулятор на 12В;
  • один транзистор;
  • кусок пеноплекса;
  • кусок проволоки;
  • фанера толщиной 2-3 мм;
  • стержень от шариковой ручки;
  • канцелярские скрепки;
  • клей, термопистолет;
  • провода и изолента.

Электрическая схема лодки с ИК управлением

Электрическая схема лодки на Arduino Uno с сервоприводом
Электрическая схема лодки на Arduino Uno с сервоприводом

В нашем проекте используется старый электродвигатель на 3,5 Вольта, поэтому мы его включаем через транзистор, используя выход 3,3V на плате Arduino UNO. Включение цепи с микромоторчиком происходит после подачи тока на среднюю ножку транзистора (база) с Pin11. Чтобы написать скетч (он очень простой) посмотрите пример кода для проекта на Ардуино «Управление светильником с пульта ДУ»

Инструкция по изготовлению лодки с пультом

Проверку работы ИК-приемника и сервомотора на Ардуино лучше проводить с отключенным электромоторчиком, поскольку он будет создавать сильные вибрации при работе. На этом этапе тестирования проекта следует лишь оценить подвижность киля и отцентровать рычаг привода на сервомоторе. Необходимо сделать так, чтобы при нажатии кнопки «вперед» или «стоп» на пульте, киль вставал по центру.

1. Изготовление корпуса лодки из пеноплекса

Изготовление корпуса лодки на Ардуино
Изготовление корпуса лодки на Ардуино своими руками

Размеры и форма лодки могут быть абсолютно разными — все зависит лишь от фантазии. Что касается прорезей, то они должны соответствовать размерам деталей. На трафарете (слева-направо) размечены прорези для: платы Ардуино UNO, сервомотора, привода киля и микромоторчика. Учтите, что привод от сервомотора к килю должен свободно ходить в прорези, для этого надо точно рассчитать радиус.

2. Изготовление деталей для привода и управления

Изготовление деталей для привода и управления
Изготовление деталей для привода и управления лодкой

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

Сборка деталей для привода лодки
Сборка деталей для привода радиоуправляемой лодки

3. Сборка лодки на Ардуино с управлением

Для начала следует установить плату, сервопривод и двигатель
Для начала следует установить плату, сервопривод и двигатель

В этом проекте мы обошлись без использования макетной платы. Если вспомнить схему подключения ИК приемника к Ардуино, то она очень проста (слева-направо): A0GND5V  и не требует расходов на приобретение макетной платы. Транзистор мы использовали в этой схеме для включения советского электромоторчика от 3,3 V.

Сборка электрической схемы лодки на ИК управлении
Сборка электрической схемы лодки на ИК управлении

Транзистор размещен на пинах 12, 11 и 10. На Pin11 (средняя ножка транзистора — это база) мы подаем напряжение для включения электродвигателя. Pin12 и Pin10 в скетче не используются, поэтому служат нам эмиттером и коллектором. К Pin12 подключен выход 3,3 V, а к Pin10 подключен электромоторчик (красный плюсовой провод).

4. Крепление привода винта на валу двигателя

Разогрейте стержень шариковой ручки над паяльником
Разогрейте стержень от ручки над паяльником и он зайдет на вал двигателя

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

Скетч для лодки на Ардуино с ИК пультом

#include <IRremote.h> // библиотека для IR-приемника
#include <Servo.h>      // библиотека для сервомотора

// Замените коды команд от пульта ДУ на свои значения
#define forward 16736925
#define left 16769565
#define right 16754775
#define turm_left 16712445
#define turm_right 16711935
#define stope 16755285

Servo servo; // присваиваем имя сервомотору

int RECV_PIN = A0;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  Serial.begin(9600); // подключаем монитор, чтобы узнать коды кнопок пульта
  irrecv.enableIRIn();
  pinMode(11, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(A0, INPUT);
  servo.attach (7);
}

void loop() {
  
    if (irrecv.decode(&results)) {
    
    Serial.println(results.value); // выводим на монитор порта коды с пульта ДУ

    if (results.value == left) {
    servo.write(60);
    digitalWrite(11, HIGH);
   }
   
    if (results.value == right) {
    servo.write(120);
    digitalWrite(11, HIGH);
   }
   
    if (results.value == turm_left) {
    servo.write(10);
    digitalWrite(11, HIGH);
   }
   
    if (results.value == turm_right) {
    servo.write(170);
    digitalWrite(11, HIGH);  
   }
   
    if (results.value == forward) {
    servo.write(90);
    digitalWrite(11, HIGH);
   }
   
    if (results.value == stope) {
    servo.write(90);
    digitalWrite(11, LOW);
   }
   
    irrecv.resume(); // Ждем следующий сигнал от пульта
  }  
}

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

1 Star2 Stars3 Stars4 Stars5 Stars (24 votes, average: 4,83 out of 5)
Загрузка...

Похожие записи по теме:

14 комментариев для “Пример: Лодка на Ардуино с ИК управлением”

        1. Напишите исходную строчку в скетче и то, как вы меняете код кнопки. Какую ошибку выдает Arduino IDE?

  1. Какой транзистор вы используете? Какой лучше взять? Моторчик работает от 1,5 v ток кушает 33 мА. Он подойдет?

    1. Использовали в лодке биполярный pnp транзистор 2N222. Какой вам лучше выбрать — смотрите по характеристикам (может даже и не понадобится транзистор). У нас был моторчик на 5v, от цифровых портов Arduino Uno он отказывался работать, поэтому пришлось использовать порт питания 5V и управлять транзистором.

  2. #define forward FFFFFFF — строчка в какой я сменил код

    exit status 1 ‘FFFFFFF’ was not declared in this scope — это выдает при проверке кода

    1. Откуда вы взяли FFFFFFF? Делайте так — про #define забудьте, можете эти строчки вообще удалить из скетча. Вставляйте коды прямо в void loop.

      Вместо константы forward: if (results.value == forward) …

      Ставите свой код в кавычках: if (results.value == ‘FFFFFFF’) …

      1. Скетч робит, но сервопривод что-то все равно не слушается, и подскажите какой код под какую кнопку типа влево вправо назад вперед?

        1. Нажимаете на нужную кнопку, код с кнопки увидите на мониторе порта при этом. Затем этот код вставляете в нужную команду в начале скетча для лодки. Например, #define forward 111111111 — цифры заменяете своими

          1. Разобрался, надо другой мотор поискать ну или транзистор

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

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