- Компоненты, необходимые для Arduino RC Boat
- Модули РЧ передатчика и приемника 433 МГц
- Радиочастотный передатчик 433 МГц
- Блок-схема передатчика для лодки Arduino RC
- Принципиальная схема пульта дистанционного управления Arduino RC (передатчика)
- Создание схемы передатчика RC BOAT
- Сборка корпуса передатчика на лодке Arduino RC
- Модуль приемника 433 МГц
- Блок-схема приемника лодки Arduino RC
- Принципиальная схема приемника лодки Arduino RC
- Построение схемы приемника Arduino RC Boat
- Сборка RC-BOAT
- Двигатели и гребные винты для Arduino Air Boat
- Работа Arduino RC Boat
- Программирование радиоуправляемой лодки на Arduino
В этом проекте мы построим воздушную лодку Arduino с дистанционным управлением, которой можно будет управлять по беспроводной сети с помощью радиомодулей 433 МГц. Мы будем управлять этой лодкой с помощью самодельного пульта дистанционного управления, построив собственный передатчик 433 МГц и модуль приемника. В случае устройств с дистанционным управлением или связи между двумя устройствами у нас есть много вариантов, таких как ИК, Bluetooth, Интернет, РЧ и т. Д. По сравнению с ИК-связью, радиосвязь имеет некоторые преимущества, такие как больший диапазон, но не требуется прямая видимость между передатчиком и приемником. Кроме того, эти модули могут использовать два способа связи, то есть они могут передавать и принимать одновременно. Итак, используя этот радиочастотный модуль 433 МГц, давайте построим лодку Arduino RC. в этом руководстве.
Ранее мы создали множество проектов с дистанционным управлением, используя эти радиочастотные модули 433 МГц для управления таким роботом, как этот робот с радиочастотным управлением, или для приложений домашней автоматизации для управления бытовой техникой с помощью радиочастот. Помимо использования радиочастотных модулей, мы также создали Raspberry Pi Car, управляемый Bluetooth, и робот Arduino, управляемый мобильным телефоном DTMF. Вы также можете посмотреть эти проекты, если вам интересно.
Компоненты, необходимые для Arduino RC Boat
- Передатчик и приемник 433 МГц
- Arduino (любой Arduino, для уменьшения размера я использую promini)
- HT12E и HT12D
- Кнопки - 4Nos
- Резисторы - 1мегаом, 47кОм
- L293d Драйвер двигателя
- Батарея 9 В (я использую батарею 7,4 В) - 2 шт.
- Регулятор 7805- 2No
- Двигатели постоянного тока- 2Nos
- Моторная створка или пропеллеры (я использую самодельные пропеллеры) - 2 шт.
- Конденсатор 1 мкФ - 2 шт.
- Обычная печатная плата
Модули РЧ передатчика и приемника 433 МГц
Эти типы ВЧ-модулей очень популярны среди производителей. Из-за их невысокой стоимости и простоты в подключении. Эти модули лучше всего подходят для всех форм проектов ближней связи. Эти модули представляют собой радиочастотные модули типа ASK (амплитудная манипуляция). Амплитудно-сдвиговая манипуляция (ASK) представляет собой форму амплитудной модуляции, которая представляет цифровые данные как вариации амплитуды несущей волны. В системе ASK двоичный символ 1 представлен передачей несущей волны фиксированной амплитуды и фиксированной частоты в течение битовой длительности T секунд. Если значение сигнала равно 1, то будет передаваться несущий сигнал; в противном случае будет передано значение сигнала 0. Это означает, что они обычно не потребляют энергию при передаче логического «нуля». Такое низкое энергопотребление делает их очень полезными в проектах с батарейным питанием.
Радиочастотный передатчик 433 МГц
Этот тип модуля очень крошечный и имеет 3 контакта VCC, землю и данные. Некоторые другие модули поставляются с дополнительным антенным контактом. Рабочее напряжение модуля передатчика составляет 3–12 В, и этот модуль не имеет регулируемых компонентов. Одним из основных преимуществ этого модуля является низкое потребление тока, ему требуется почти нулевой ток для отправки нулевого бита.
Блок-схема передатчика для лодки Arduino RC
На приведенной выше блок-схеме есть четыре кнопки (кнопки управления), эти кнопки предназначены для управления направлением лодки. У нас их четыре - вперед, назад, влево и вправо. С помощью кнопок мы получаем логику для управления лодкой, но не можем напрямую подключиться к кодировщику, поэтому мы использовали Arduino. Вы можете подумать, почему я использовал здесь Arduino, это просто потому, что нам нужно одновременно отключить два параллельных входа данных кодера для движения вперед и назад, чего нельзя достичь с помощью простых кнопок. Затем кодер кодирует поступающие параллельные данные на последовательные выходы. Затем мы можем передать эти последовательные данные с помощью радиочастотного передатчика.
Принципиальная схема пульта дистанционного управления Arduino RC (передатчика)
В приведенной выше схеме вы можете увидеть одну сторону всех четырех кнопок, подключенных к четырем цифровым контактам Arduino (D6-D9), а все четыре другие стороны подключены к земле. То есть, когда мы нажимаем кнопку, соответствующие цифровые контакты получают низкий логический уровень. Четыре параллельных входа энкодера HT12E подключены к еще четырем цифровым контактам Arduino (D2-D5). Итак, с помощью Arduino мы можем определить вход кодировщика.
А если говорить о кодировщике, HT12E - это 12-битный кодировщик и кодировщик с параллельным вводом и последовательным выводом. Из 12 битов 8 битов являются адресными битами, которые можно использовать для управления несколькими приемниками. Контакты A0-A7 являются контактами ввода адреса. В этом проекте мы управляем только одним приемником, поэтому мы не хотим менять его адрес, поэтому я подключил все выводы адреса к земле. Если вы хотите управлять разными приемниками с помощью одного передатчика, вы можете использовать здесь DIP-переключатели. AD8-AD11 - это входы управляющих битов. Эти входы будут управлять выходами D0-D3 декодера HT12D. Нам необходимо подключить генератор для связи, и частота генератора должна быть 3 кГц.для работы 5 В. Тогда номинал резистора будет 1,1 МОм для 5 В. Затем я подключил выход HT12E к модулю передатчика. Мы уже упоминали, что модуль Arduino и RF-передатчика, оба эти устройства работают от высокого напряжения 5V, убьют его, поэтому, чтобы избежать этого, я добавил стабилизатор напряжения 7805. Теперь мы можем подключить ко входу батарейки (Vcc) 6-12 вольт любого типа.
Создание схемы передатчика RC BOAT
Я спаял все компоненты на общей печатной плате. Помните, что мы работаем над проектом RF, поэтому существует много шансов для различных типов помех, поэтому соединяйте все компоненты как можно ближе. Лучше использовать штыревые разъемы для Arduino и модуля передатчика. Кроме того, попробуйте припаять все на медных площадках вместо использования лишних проводов. Наконец, подключите небольшой провод к модулю передатчика, который поможет увеличить общий диапазон. Перед подключением модуля Arduino и передатчика дважды проверьте напряжение на выходе lm7805.
На изображении выше показан вид сверху завершенной схемы передатчика RC Boat, а вид снизу завершенной схемы передатчика RC Boat показан ниже.
Сборка корпуса передатчика на лодке Arduino RC
Для пульта необходим приличный корпус. Этот шаг посвящен вашим идеям, вы можете создать удаленное тело с помощью своих идей. Я объясняю, как я это сделал. Для изготовления выносного корпуса я выбираю листы МДФ 4 мм, вы также можете выбрать фанеру, пенопласт или картон, затем я вырезаю из них два куска длиной 10 см и шириной 5 см. Затем я обозначил позиции для кнопок. Я разместил кнопки направления слева, а кнопки вперед и назад - справа. На другой стороне листа я подключил кнопки к главной цепи передачи. Помните, что обычная кнопка имеет 4 контакта, по два контакта с каждой стороны. Подключите один вывод к Arduino, а другой - к земле. Если вас это смущает, проверьте мультиметром или сверьтесь с таблицей данных.
После подключения всего этого я поместил цепь управления между двумя досками МДФ и затянул ее длинным болтом (при желании см. Изображения ниже). И снова создание хорошего тела - это все о ваших идеях.
Модуль приемника 433 МГц
Этот приемник также очень крошечный и поставляется с 4 контактами VCC, заземлением и двумя средними контактами для вывода данных. Рабочее напряжение этого модуля составляет 5 В. Как и модуль передатчика, это также модуль малой мощности. Некоторые модули поставляются с дополнительным антенным контактом, но в моем случае его нет.
Блок-схема приемника лодки Arduino RC
Приведенная выше блок-схема описывает работу схемы РЧ-приемника. Во-первых, мы можем принимать передаваемые сигналы с помощью модуля RF-приемника. Выход этого приемника - последовательные данные. Но мы не можем ничего контролировать с помощью этих последовательных данных, поэтому мы подключили выход к декодеру. Декодер декодирует последовательные данные в наши исходные параллельные данные. В этом разделе нам не нужны микроконтроллеры, мы можем напрямую подключить выходы к драйверу двигателя.
Принципиальная схема приемника лодки Arduino RC
HT12D представляет собой 12-битный декодер, который представляет собой последовательный ввод-параллельный выход декодера. Входной контакт HT12D будет подключен к приемнику, имеющему последовательный выход. Среди 12-битных 8 битов (A0-A7) - это биты адреса, и HT12D будет декодировать ввод, только если он совпадает с его текущим адресом. D8-D11 - выходные биты. Чтобы согласовать эту схему со схемой передатчика, я подключил все контакты адреса к земле. Данные из модуля имеют последовательный тип, и декодер декодирует эти последовательные данные в исходные параллельные данные, и мы получаем их через D8-D11. Для согласования частоты колебаний следует подключить резистор 33-56кОм к контактам генератора. Светодиод на 17-м контакте указывает на действительную передачу, он загорается только после подключения приемника к передатчику. Напряжение на входе ресивера тоже 6-12 вольт.
Для управления двигателями я использовал L293D IC, я выбрал эту IC, потому что для уменьшения размера и веса, и эта IC лучше всего подходит для управления двумя двигателями в двух направлениях. L293D имеет 16 контактов, распиновка показана на схеме ниже.
1, 9 контактов - это контакт включения, мы подключаем его к 5 В, чтобы включить двигатели 1A, 2A, 3A и 4A - это контакты управления. Двигатель повернется вправо, если на контакте 1A будет низкий уровень, а на 2A - высокий, и двигатель повернется влево, если 1A станет низким, а 2A - высоким. Итак, мы подключили эти контакты к выходу ps декодера. 1Y, 2Y, 3Y и 4Y - это контакты двигателя. Vcc2 - это вывод напряжения привода двигателя, если вы используете двигатель высокого напряжения, вы подключаете этот вывод к соответствующему источнику напряжения.
Построение схемы приемника Arduino RC Boat
Перед построением схемы приемника следует помнить несколько важных вещей. Важными являются размер и вес, потому что после построения схемы нам нужно закрепить ее на лодке. Таким образом, если вес увеличивается, это повлияет на плавучесть и движение.
Так же, как и в схеме передатчика, припаяйте каждый компонент на небольшой общей печатной плате и постарайтесь использовать минимум проводов. Я подключил вывод 8 драйвера двигателя к 5 В, потому что я использую двигатели 5 В.
Сборка RC-BOAT
Я пробовал разные материалы для изготовления корпуса лодки. И я получил лучший результат с листом thermocol. Поэтому я решил построить корпус из термоколя. Сначала я взял кусок термоколяски толщиной 3 см и поместил сверху схему приемника, затем обозначил форму лодки термокольцом и вырезал. Итак, это мой способ построить лодку, вы можете построить ее в соответствии со своими идеями.
Двигатели и гребные винты для Arduino Air Boat
И снова вес имеет значение. Поэтому выбор правильного двигателя очень важен. Я выбираю обычные двигатели постоянного тока типа n20 на 5 В, маленькие и невесомые. Во избежание радиопомех следует подключить конденсатор 0,1 мкФ параллельно входам двигателя.
Что касается пропеллеров, я сделал их из пластиковых листов. Вы можете купить пропеллеры в магазине или построить свои собственные, оба будут работать нормально. Чтобы построить пропеллеры, сначала я взял небольшой пластиковый лист, вырезал из него два маленьких кусочка и согнул их при помощи свечи. Наконец, я проделал в его центре небольшое отверстие для двигателя и закрепил его на нем.
Работа Arduino RC Boat
У этой лодки два мотора, назовем ее левый и правый. Если двигатель вращается также по часовой стрелке (положение гребного винта также зависит), гребной винт всасывает воздух спереди и выпускает его обратно. Это вызывает лобовое сопротивление.
Движение вперед: если и левый, и правый моторы вращаются по часовой стрелке, это будет движение вперед.
Обратное движение: если и левый, и правый моторы вращаются против часовой стрелки (то есть пропеллер всасывает воздух с задней стороны и выпускает его в переднюю сторону), это будет движение назад.
Движение влево: если вращается только правый мотор, то лодка получает сопротивление только с правой стороны, что заставит лодку двигаться влево.
Движение вправо: если вращается только левый мотор, то лодка получает сопротивление только с левой стороны, что заставляет лодку двигаться вправо.
Мы подключили вход драйвера моторов к четырем выходным битам декодера (D8-D11). мы можем управлять этими 4 выходами, подключив AD8-AD11 к земле, то есть к кнопкам на пульте дистанционного управления. Например, если мы подключим AD8 к земле, это активирует D8. Таким образом, мы можем управлять двумя двигателями в двух направлениях, используя эти 4 выхода. Но мы не можем управлять двумя двигателями с помощью одной кнопки (она нужна нам для движения вперед и назад), поэтому мы использовали Arduino. С помощью Arduino мы можем выбрать контакты входных данных по нашему желанию.
Программирование радиоуправляемой лодки на Arduino
Программирование этой лодки очень простое, потому что нам нужно только некоторое переключение логики. И мы можем добиться всего с помощью основных функций Arduino. Полную программу для этого проекта можно найти внизу этой страницы. Объяснение вашей программы следующее
Мы начинаем программу с определения целых чисел для четырех кнопок ввода и выводов входов декодера.
int f_button = 9; int b_button = 8; int l_button = 7; int r_button = 6; int m1 = 2; int m2 = 3; int m3 = 4; int m4 = 5;
В разделе настройки я определил режимы вывода. То есть кнопки подключены к цифровым контактам, поэтому эти контакты должны определяться как вход, и нам нужно получить выход для входа декодера, поэтому мы должны определить эти контакты как выход.
pinMode (f_button, INPUT_PULLUP); pinMode (b_button, INPUT_PULLUP); pinMode (l_button, INPUT_PULLUP); pinMode (r_button, INPUT_PULLUP); pinMode (m1, ВЫХОД); pinMode (m2, ВЫХОД); pinMode (m3, ВЫХОД); pinMode (m4, ВЫХОД);
Затем в функции основного цикла мы прочитаем состояние кнопки, используя функцию цифрового чтения Arduino. Если состояние вывода становится низким, что означает, что соответствующий вывод нажат, мы выполним следующие условия:
если (digitalRead (f_button) == LOW)
Это означает, что нажата кнопка вперед
{ digitalWrite (m1, LOW); digitalWrite (m3, LOW); digitalWrite (м2, ВЫСОКИЙ); digitalWrite (m4, HIGH); }
Это приведет к понижению m1 и m2 энкодера, что активирует оба двигателя на стороне приемника. Аналогично для движения назад
{ digitalWrite (m1, ВЫСОКИЙ); digitalWrite (м3, ВЫСОКИЙ); digitalWrite (m2, LOW); digitalWrite (m4, LOW); }
Для левого движения
{ digitalWrite (m1, LOW); digitalWrite (м3, ВЫСОКИЙ); digitalWrite (м2, ВЫСОКИЙ); digitalWrite (m4, HIGH); }
Для правильного движения
{ digitalWrite (m1, ВЫСОКИЙ); digitalWrite (m3, LOW); digitalWrite (м2, ВЫСОКИЙ); digitalWrite (m4, HIGH); }
После компиляции кода загрузите его на свою плату Arduino.
Устранение неисправностей: Поставьте лодку на поверхность воды и проверьте, правильно ли она движется, если не попытайтесь изменить полярность двигателей и гребных винтов. Также постарайтесь сбалансировать вес.
Полную работу над проектом можно найти в видео по ссылке внизу этой страницы. Если у вас есть вопросы, оставьте их в комментариях.