Arduino радиоуправляемая машина: контролируем со смартфона

Arduino радиоуправляемая машина: контролируем со смартфона Самолеты

3 модель

Данную модель я не собрал до конца, но научился делать 3D модели для получения выкроек, а также узнал что такое шпангоуты и их назначение.

По данной модели была сделана выкройка:

Также узнал о отличной замене потолочной плитки: подкладка под ламинат.

У подкладки ряд плюсов по сравнению с потолочкой:

  1. Размер листов: 1000 х 500 мм.
  2. Различная толщина, я купил толщиной 3 и 5 мм, но использую пока только 5 мм.
  3. Отсутствие различного профиля и картинок.
  4. Хорошая прочность за счет большей толщины (для 5 мм).

А в остальном очень похожи:

  1. Малый вес.
  2. Не боятся воды.
  3. Низкая цена и доступность.

Клей использовал Титан, но затем перешел на термоклей, с которым сборка ускорилась в несколько раз.

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

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

Была разработана, разведена и изготовлена плата управления, состоящая из самодельной ардуины на Atmega328P, радио модуля NRf24L01, драйвера полевого транзистора, нескольких стабилизаторов напряжения. Также плата была протестирована:

Осталось проверить плату с «большим» мотором, и установить в плату, установить сервопривод с обвесом, продумать герметизацию крышки катера и можно будет испытывать на воде.

И конечно делюсь выкройками катеров, с различными габаритами, для желающих собрать:

Катер_v3.1_450х173х85

Катер_v3.1_590х227х112

Катер_v3.1_750х288х142

Продолжение:

Сделал небольшое видео, показывающее все основные этапы сборки катера

2 Bluetooth

Управление с помощью Bluetooth осуществляется с помощью программы BLEJoystick (Android & IOS)

Image alt
Сначала нужно узнать MAC адрес bluetooth модуля. Для этого нужно подать питание на модуль, уйти подальше от других bluetooth устройств и просканировать MAC адреса с помощью программы.
Image alt
Один из адресов должен быть вашим (обычно он начинается на BT-05).
Адрес лучше записать.

Для подключения к машинке нужно нажать на соответствующий ей MAC адрес и нажать CONNECT.
Если у значка BT справа сверху появились две точки, это значит, что устройства сопряжены и можно продолжать, если нет, нужно попробовать еще раз, включив-выключив машинку.

Image alt
Управление – слева движение, Х – стоп.

В скетче вы также можете найти настройки Bluetooth и при необходимости использовать любое другое понравившееся приложение:

Символы A, C, B, D, G – это установки приложения BLEJoystick, другие приложения могут иметь другие управляющие символы.

Arduino и соединение

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

Управлять нагрузками можно ардуиной с помощью полевых транзисторов (95N2LH5, но я использовал IRF 630, потому что и эти ели нашел в своём городе). Подключение такое: земля транзистора – к управляющему пину ардуины, source – к земле ардуины и минусу питания нагрузки, drain – к минусу нагрузки, плюс питания к плюсу нагрузки.

Но таким образом мы сможем ездить только вперед и поворачивать только в одну сторону. Для того чтобы справиться с проблемой, к нам на помощь спешит реле с двумя группами контактов. У меня один двигатель (передний) питался 6 вольтами, а другой 12. При этом использовалось два 6 вольтовых аккумулятора (один из них — свинцово-кислотный от бесперебойника), учитывая, что минус роутера позже придется соединить с землей ардуины, то получить 6 вольт для роутера не получается (проверяйте сколько вольт подаёте на роутер — мне пришлось покупать еще один после того, как я подал на него 12 вольт). Поэтому пришлось использовать еще одну релюшку для подачи/неподачи питания на передний двигатель.

Схема

Схему рисовал давно. Теперь там все транзисторы полевые и нет резисторов.


Теперь о самом коде. У меня все довольно просто – есть 4 команды, у которых есть свой параметр размером 1 байт:

Вот мой код программы для ардуины:

int inByte, val;

void setup() {     
 Serial.begin(9600);
 pinMode(2, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(7, OUTPUT);
}

void loop() {
 if (Serial.available() > 0)
 {
  inByte = Serial.read();
  if ((inByte=='n')||(inByte=='e')){
   while (Serial.available()==0) {}
   val=Serial.read();
   if (inByte=='n'){
    if (val=='1'){
     digitalWrite(2, HIGH);
     Serial.print("Writing to 2 pinnr");
    }
    if (val=='0'){
     digitalWrite(2, 0);
     Serial.print("Writing to 2 pinnr");
    }
   } 
   if (inByte=='e'){
    if (val=='1'){
     digitalWrite(4, HIGH);
     Serial.print("Writing to 4 pinnr");
    }
    if (val=='0'){
     digitalWrite(4, LOW);
     Serial.print("Writing to 4 pinnr");
    }
   }
  }
  if ((inByte=='m')||(inByte=='r')){
   while (Serial.available()==0) {}
   val=Serial.read();
   if (inByte=='m'){
    if (val!='0')
     analogWrite(3, val);
    else
     analogWrite(3, 0);
    Serial.print("Writing to 3 pinnr");
   }
   if (inByte=='r'){
    if (val=='1'){
     digitalWrite(7, HIGH);
     Serial.print("Writing to 7 pinnr");
    }
    if (val=='0'){
     digitalWrite(7, LOW);
     Serial.print("Writing to 7 pinnr");
    }
   }
  }
 }
}

Как видно, задний двигатель у меня подключен к 3 пину, передний – к 7, реле заднего – к 2 пину, переднего – к 4. Так как 3 – это ШИМ-пин, то используя analogWrite(3, val);, где val от 0 до 255, мы можем управлять напряжением на двигателе.

Разбираем наш маршрутизатор. Видим UART порт. Соединяем его с ардуиной.

UART на роутере


Теперь смотрим, как это все работает. Подключаемся телнетом к нашему порту и проверяем:

Для отладки работы с ком портом на роутере можно использовать minicom (

opkg install minicom

Arduino-машинка.

Алгоритм управления движением

Ошибочно называть наш способ «алгоритм объезда препятствий» или «поиском пути». Это отдельные математические дисциплины, чистая математика. Если вам очень-очень сильно нравится математика, то погуглите указанные словосочетания, чтивом на полгода будете обеспечены.

Пока же нас интересуют вещи гораздо проще. Поэтому мы назовем это просто — алгоритм управления движением 4-х колёсного робота. Разумеется речь идет об автоматическом управлении без участия человека.

Вот этот простой алгоритм записанный словами, для более сложных алгоритмов придется (хочется или нет) составлять блок-схемы.

Сейчас одновременно смотрите в исходник скетча RoboCar4W-1.ino.

  1. Измеряем расстояние до препятствия впереди.
  2. Если это измеренное расстояние меньше значения DST_TRH_BACK (сокращение от distance threshold), то останавливаемся и едем задним ходом одновременно поворачивая. Направление поворота выбираем так: если ранее уже поворачивали влево, то поворачиваем вправо и наоборот.
  3. Если измеренное расстояние больше чем DST_TRH_BACK, но меньше чем DST_TRH_TURN, то просто поворачиваем. Направление поворота выбираем случайно.
  4. Если до препятствия далеко, то просто едем вперед.
  5. Повторяем все сначала.

Чем хорошо, что у нас 4 колеса и все ведущие? Мы можем выполнить (запрограммировать) несколько типов поворотов:

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

и включен обратно однократным её нажатием.

Важное примечание. Вся логика находится под управлением Arduino. Android здесь выступает просто как игровой пульт (без мозгов) от консоли, его задача — тупо передавать нажатия кнопок (т.е. команды) посредством Bluetooth в Arduino RoboCar4W.

Знакомство с rf модулем nrf24l01

Модули nRF24L01 являются приемопередающими модулями, то есть каждый модуль может отправлять и принимать данные, но поскольку они полудуплексные, в какой-либо момент времени они могут либо передавать, либо принимать данные. Модуль содержит микросхему nRF24L01 от Nordic semiconductors, которая отвечает за передачу и прием данных.

Микросхема обменивается данным с помощью интерфейса SPI и, следовательно, может легко взаимодействовать с любыми микроконтроллерами. С Arduino всё становится намного проще, так как для нее доступны библиотеки. Распиновка стандартного модуля nRF24L01 показана ниже.

Распиновка модуля nRF24L01
Распиновка модуля nRF24L01

Рабочее напряжение модуля составляет от 1,9 В до 3,6 В (как правило, 3,3 В). Модуль потребляет очень маленький ток, составляющий всего 12 мА при нормальной работе, что делает его эффективным при использовании с аккумуляторами, и, следовательно, он может работать даже от элементов питания размером с монету.

Несмотря на то, что рабочее напряжение составляет 3,3 В, большинство выводов толерантны к 5 В и, следовательно, могут напрямую подключаться к 5-вольтовым микроконтроллерам, таким как Arduino. Еще одним преимуществом использования этих модулей является то, что каждый модуль имеет 6 каналов связи (pipeline).

Это означает, что каждый модуль может связываться с 6 другими модулями для передачи и приема данных. Это делает данный модуль пригодным для создания сетей с топологиями «звезда» и «ячеистая» в приложениях IoT. Кроме того, они имеют широкий диапазон адресов из 125 уникальных идентификаторов, поэтому в закрытом пространстве мы можем использовать 125 таких модулей, не мешающих друг другу.

Набор-конструктор для сборки "умной" машинки на arduino.

Как-то раз возникло у меня желание на практике узнать что такое Arduino и был заказан данный набор. Он предназначен для сборки машинки с ультразвуковым сенсором, которая объезжает препятствия.

Покупать можно, хотя набор и не без недостатков.

Подробнее под катом.

Да, тем кто не в курсе, что такое Arduino, рекомендую почитать сдесь, а также заглянуть сюда.

В квартире мне автоматизировать нечего, а сваять что-нибудь интересное хотелось, поэтому заказал этот конструктор.

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

На пластиковые площадки наклеена бумага, чтобы они не царапались при транспортировке.

В комплекте присутствовало всё, что было указано в описании лота:

— два мотора с редукторами,
— пара колес,
— ролик (типа мебельного, только маленький),
— две пластиковых площадки,
— сервопривод,
— поворотный кронштейн для крепления датчика расстояния,
— набор латунных стоек и винтиков-гаечек,
— ультразвуковой датчик расстояния,
— электронная плата управления двигателями,
— маленькая макетная плата,
— держатель для 6 батарей формата АА,
— держатель для батареи типа «Крона»,
— плата с микроконтроллером, Arduino-совместимая Funduino. Версия Duemilanove с небольшими доработками.
— интерфейсный USB-кабель для подключения к ПК,
— комплект соединительных проводков типа мама-мама.

Вот полезное содержимое посылки, нет только поломанной верхней площадки:

Arduino радиоуправляемая машина: контролируем со смартфона

При сборке мне дополнительно понадобилось около десятка проводков типа папа-мама.

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

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

Качество изготовления электронных компонентов особых нареканий не вызывает, качество скажем так «хорошее китайское».

А вот качество изготовления пластиковых площадок могло бы быть получше — размечены кривовато. Есть смещение крепежных отверстий одной площадки относительно другой.
Кроме того стойки для крепления площадок между собой были разной длины.

Идущий в комплекте кронштейн для крепления ультразвукового датчика не предназначен для крепления этого самого датчика, он предназначен для использования вместе с парой сервоприводов для крепления камеры. Не беда — применим стальную проволоку и все будет ОК:

Arduino радиоуправляемая машина: контролируем со смартфона

Arduino радиоуправляемая машина: контролируем со смартфона

Также пришлось подрезать-подточить пластиковую крестовину крепления сервопривода (думаю сервопривод тоже должен быть другой модели).

Arduino радиоуправляемая машина: контролируем со смартфона

Но все эти недостатки не мешают собрать вполне работоспособное устройство.

Идущие в комплекте держатели для батареек я использовать не стал — запитал всю схему от пары литиевых аккумуляторов типа 18650. Также добавил в схему вольтметр и кнопку запуска программы.
Вот что получилось в итоге:

Arduino радиоуправляемая машина: контролируем со смартфона

Поскольку, как я уже упоминал, продавец не вложил никаких инструкций, пришлось всю информацию искать в интернете самому. Готовые библиотеки для управления сервоприводом и УЗ-датчиком я не использовал, все писал сам. Вот немного ссылок, которые могут помочь разобраться в работе этих устройств:

Плата управления двигателями.
УЗ-сенсор.
Сервопривод.

Алгоритм работы машинки простой:

— едем вперед, УЗ-сенсор отслеживает расстояние до препятствия,
— если препятствие близко останавливаемся и отъезжаем назад,
— вертим УЗ-сенсором по сторонам и определяем где до препятствий наибольшее расстояние,
— разворачиваемся в ту сторону и едем,
— все повторяется.

Несмотря на то, что после сборки остались лишние винтики все работает. Вот видео с демонстрацией работы устройства:

Видно, что машинка не очень хорошо определяет наличие препятствий, особенно если плоскость препятствия находится не перпендикулярно направлению движения машинки. Это связано с тем, что во-первых звук может отражаться от препятствия и сенсор неверно определяет расстояние до предмета, во-вторых у сенсора достаточно узкий рабочий угол — 15 градусов. Также звук может просто поглощаться некоторыми предметами, например мягкими игрушками. Частично эту проблему можно решить установкой спереди машинки дополнительных датчиков, направленных под углом к направлению движения.

В общем игрушкой я доволен, мозг размял и вообще.

Если вдруг кто-то хочет приобщить своих чад к занятию электроникой, думаю такой конструктор может быть полезен.

Ссылка на скетч (программу для контроллера) — вот.

Благодарю за внимание.

Наборы ардуино роботов – автомобилей

Arduino радиоуправляемая машина: контролируем со смартфонаОчень популярный и недорогой набор с контроллером ардуино, шасси, драйвером двигателя и всеми остальными необходимыми деталямиArduino радиоуправляемая машина: контролируем со смартфонаОтличный качественный набор ардуино автомобиля с контроллером, с шасси, двигателями, датчиками, Bluetooth, а также LCD дисплеем!
Arduino радиоуправляемая машина: контролируем со смартфонаБольшой автомобильный комплект Arduino с возможностью управлением по Bluetooth, с датчиками, платой Arduino Uno, драйвером двигателя, шасси, 4 моторами, колесами, сервоприводом, крепежом и проводами. Arduino радиоуправляемая машина: контролируем со смартфонаЭкономный вариант для тех, у кого уже есть ардуино – просто шасси с набором двигателей, колес, держателя для батареек и проводов

Питание

Это второй очень важный момент. От питания зависит очень многое. Например, серво-мотор при повороте вала на заданный угол начинает потреблять большой ток. При этом если серво подключен по питанию на 5 В Arduino, то происходит «просадка» по напряжению и вся остальная схема начинает глючить, а Arduino даже может перезагружаться при этом.

В любом случае, если в поделке используете моторы, то Motor Drive Shield необходим (или подобная ему схема).

Итак, имеем 4 мотора постоянного тока (DC), сервопривод, саму плату Arduino и несколько датчиков. Моторы самые прожорливые, а вот датчики могут успешно запитываться с разъемов самой платы Arduino, поэтому с ними все просто. Для удобства я свел всё хозяйство в одну таблицу.

Напряжение рекомендованное или типовое. Потребляемый токМаксимальное напряжениеЧем планируется питатьПримечания
Плата Arduino UNO R37 — 12V, 200mA (среднее)6 — 20«Крона 9V» Li-ion 650mAh, 8.4VРазъем с плюсом в центре
Сервомотор MG-9955—6 V, 0.1 — 0.3A (пиковое)4.8 — 7.2Аккумуляторы (5) шт. Ni-Mh 1.2V = 6VПитание только от отдельного источника. Если запитать вместе с Arduino, то будет глючить всё. Напряжения Ni-Mh аккумуляторов 4шт. * 1.2В = 4.8V не хватает. Некоторые утверждают, что данную серву не стоит использовать на 6 вольтах только 4,8
DC двигатели (4 шт.)6 — 8V, ток от 70mA до 250mA3 — 12аккумуляторы (5 3) шт. Ni-Mh 1.2V = 9.6VВы не сможете нормально запустить двигатели от 9В батареи, так что даже не тратьте время (и батареи)!
Motor Drive Shield L293Dне требуется4.5 — 36не требуется
Модуль Bluetooth HC-05063.3 V, 50 mA1.8—3.6С пина 3.3V платы Arduino
Ультразвуковой измеритель расстояния HC-SR045 V, 2 mA5С пина 5V платы Arduino

DC/DC преобразователя напряжения у меня не было в наличии. Крона 9V оказался не очень хорошим источником питания, просто у меня он уже был.

А вот от использования Li-ion аккумуляторов большой емкости я отказался. Во-первых, из-за высокой стоимости, во-вторых в китайских интернет-шопах легко нарваться на подделку. Точнее не «легко», а «всегда». Кроме этого Li-ion требует особого обращения, и он не безопасен.

Итак, как видим из таблицы, нам требуется 3 независимых источника питания:

Где ж столько набрать? Саму плату Arduino в любом случае надо питать от отдельного источника, т.к. при «проседании» напряжения, например от включения моторов, плата может перезагружаться или просто глючить. Здесь применяем аккумулятор форм-фактора «Крона 9В», причем разъем который будет подключаться к Arduino должен быть с «плюсом в центре».

Для сервомотора и 4-х DC моторов можно обойтись одним источником питания. Проблема только в том, что сервомотор рассчитан на напряжение 5-6В (максимум 7.2В) и ток 100 — 300мA (пиковое), а DC моторам требуется 6 — 8В (максимум 12В) и ток 250мА.

Для решения проблемы существуют DC-DC преобразователи, но у меня таких не оказалось. В итоге я применил свою “фирменную” схему соединения (безо всяких понижающих электронных схем, только экологически чистые напряжение и ток!): подключил 8 шт. аккумуляторов на 1.2V последовательно и сделал отводы в нужных местах, как показано на схеме.

6В пошло на сервомотор, а 9.6 на DC моторы. Понятно, что аккумуляторы 1–5 будут испытывать повышенную нагрузку.

Для управления серво и DC моторами использовал 4-х канальный Motor Drive Shield на базе микросхемы L293D.

Пояснения к коду:

  1. для тестирования, можно отправлять команды с компьютера через USB;
  2. вращение моторов при подключении к аккумулятору будут отличаться;
  3. вы можете задавать свою скорость вращения моторами.
Управление машинкой на Ардуино через Андроид
Управление машинкой на Ардуино через Андроид

После проверки работы машинки, установите приложение на смартфон или планшет. При первом подключении к Bluetooth модулю HC-05/06, потребуется сделать сопряжение с Андроид (затем сопряжение будет выполняться автоматически). Если у вас возникли сложности с подключением — прочитайте эту статью Подключение блютуз модуля к Ардуино или напишите вопрос в комментариях к этой записи.

Приемная часть: подключение модуля nrf24l01 к arduino uno

Приемная часть: подключение модуля nRF24L01  Arduino Uno. Схема соединений
Приемная часть: подключение модуля nRF24L01 Arduino Uno. Схема соединений

Как было сказано ранее, nRF24L01 взаимодействует с помощью интерфейса SPI. Для связи через SPI на Arduino Nano и UNO используются выводы 11, 12 и 13. Следовательно, мы подключаем выводы MOSI, MISO и SCK от nRF к выводам 11, 12 и 13 соответственно.

Выводы CE и CS настраиваются пользователем, здесь я использовал выводы 7 и 8, но вы можете использовать любые выводы, изменив программу. Модуль nRF питается от вывода 3,3V на Arduino, что в большинстве случаев работать будет. Если нет, то можно попробовать отдельный источник питания.

Программирование nrf24l01 для arduino

Использовать эти модули с Arduino очень просто благодаря доступной готовой библиотеке, созданной maniacbug на GitHub. Нажмите на ссылку, чтобы загрузить библиотеку в виде zip-каталога, и добавьте её в Arduino IDE с помощью Скетч (Sketch) → Подключить библиотеку (Include Library)

→ Добавить ZIP библиотеку (Add .ZIP library). После добавления библиотеки мы можем начать программирование для проекта. Мы должны написать две программы, одна для передающей части, а другая для приемной части. Однако, как я уже говорил ранее, каждый модуль может работать как и передатчик, и приемник.

Обе программы приведены в конце страницы, в коде передатчика будет закомментирован код приемника, а в программе приемника будет закомментирован код передатчика. Вы можете использовать его, если хотите, чтобы в вашем проекте модуль работал в обоих режимах. Работа программы описана ниже.

Как и во всех программах, мы начинаем с включения заголовочных файлов. Поскольку nRF использует протокол SPI, мы включили заголовочный файл SPI, а также библиотеку, которую только что загрузили. Библиотека servo используется для управления серводвигателем.

#include <SPI.h> 
#include "RF24.h"
#include <Servo.h>

Далее идет важная строка, в которой мы указываем выводы CE и CS. На нашей принципиальной схеме CE подключен к выводу 7, а CS – к выводу 8.

RF24 myRadio (7, 8);

Все переменные, которые связаны с библиотекой RF, должны быть объявлены как составная структура. В данной программе переменная msg используется для отправки и получения данных от RF модуля.

struct package
{
  int msg;
};
typedef struct package Package;
Package data;

Каждый RF модуль имеет уникальный адрес, используя который можно отправлять данные на соответствующее устройство. Поскольку у нас здесь только одна пара, мы устанавливаем адрес, равный нулю, как на передатчике, так и приемнике, но если у вас несколько модулей, вы можете установить ID на любую уникальную строку, состоящую из шести цифр.

Простая bluetooth машинка на arduino

Широкое распространение и дешевизна платформы Arduino и различных робоплатформ позволило любителям создавать радиоуправляемые машинки на любой вкус. А широкое распространение смартфонов позволило использовать их в качестве контроллеров этих машинок. Главной проблемой для многих любителей Arduino является отсутствие опыта в программировании под Android. Сегодня я расскажу, как легко решить эту проблему, используя среду визуальной разработки android-приложений App Inventor 2.

Постройку любой машинки надо начинать с «железа», поэтому вкратце опишу, что использовал для своей машинки:
arduino nano
bluetooth module HC-05
Z-Mini Motor Sensor Shield L293D
2WD Motor Chassis
Конфигурация «железа» не играет большой роли в этом проекте, поэтому шасси, шилд и саму ардуино можно заменить на любые аналоги.

Теперь перейдем к созданию приложения для Android. App Inventor — среда визуальной разработки android-приложений, работает из браузера. Заходим на сайт, разрешаем доступ к своему аккаунту в Google, нажимаем кнопку «create» и создаем новый проект. В новом проекте методом «Drag and Drop» создаем 4 кнопки для выбора направления движения и одну для подключения к нашему bluetooth модулю. Примерно так:

image

Далее нажимаем на кнопку «Blocks» в правом верхнем углу и все тем же методом перетаскивания элементов создаем логику работы нашего android-приложения примерно вот так:

image

Теперь остается скомпилировать приложение, нажав на кнопку «Build».

С написанием скетча я думаю у любителей ардуино проблем не возникнет, скажу лишь, что можно взять выбрать из готовых скетчей, где управление машинкой осуществляется с компьютера по sireal порту. Я использовал этот

скетч

int val;

int IN1 = 4;

int IN2 = 7;

int EN1 = 6;

int EN2 = 5;

void setup()
{
Serial.begin(9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(EN1, OUTPUT);
pinMode(EN2, OUTPUT);

}
void loop()
{
if (Serial.available())
{
val = Serial.read();

// Задаём движение вперёд
if (val == ‘W’) // При нажатии клавиши «W»
{
// Выводы конфигурируются согласно работе Motor Shield’а
// Моторы крутятся вперед
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
}

// Задаём движение назад
if ( val == ‘S’)
{
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}

// Задаём движение вправо
if ( val == ‘D’)
{
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
}

// Задаём движение влево
if ( val == ‘A’)
{
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
}

// Стоп режим
// При отпускании клавиш в программе в порт шлется «T»
if ( val == ‘T’) // При нажатии клавиши «T»
{
// Выводы ENABLE притянуты к минусу, моторы не работают
digitalWrite(EN1, LOW);
digitalWrite(EN2, LOW);
}
}
}

Итак, вот такая у меня получилась машинка:

Arduino радиоуправляемая машина: контролируем со смартфона

Те, кому нравится дизайн в приложениях, могут немного поменять. Подробно описывать как это делать не буду, там не сложно самому разобраться. Скажу лишь, что для этого в основном нужно использовать .png файлы, вместо .jpeg, которые не поддерживают прозрачный фон. Например, сделать такой дизайн за полчаса или час сможет любой неподготовленный человек:

image

P.S. Для тех, кто не сталкивался с разработкой приложений в App Inventor 2, я сделал более подробный гайд по разработке этого приложения (для просмотра нужно перейти на ютуб).

https://www.youtube.com/watch?v=y2jAJ05s2EQ

P.P.S. Сборник из более 100 обучающих материалов по ардуино для начинающих и профи тут.
Онлайн курс по ардуино на гиктаймс здесь.
UPD 1.02.2023: выложил приложение на play market.
Аналогичные проекты с другими шилдами здесь.

Расширенные наборы arduino

Наборы и конструкторы, включающие дополнительные датчики, моторы, дисплеи. В некоторых наборах вместе с Arduino Uno предлагается еще и вариант Mega.

Arduino радиоуправляемая машина: контролируем со смартфонаБольшой набор Ардуино с большим количеством датчиков, шаговым двигателем, экраном, пультом и многим другим. Качественная упаковка, в комплекте инструкция на английском. Самый лучший способ начать работу с Ардуино!Arduino радиоуправляемая машина: контролируем со смартфонаНабор Arduino Mega2560 с большим набором датчиков и электронных компонентов в пластиковой коробке. Мелкие детали заботливо упакованы в маленькие коробки, качественные компоненты. В комплекте диск с примерами и инструкция на английском
Arduino радиоуправляемая машина: контролируем со смартфонаПопулярный набор RFID Ultimate Starter Kit, включающий различны датчики, плату Arduino UNO R3 в пластиковой коробке Arduino радиоуправляемая машина: контролируем со смартфонаОдин из самых недорогих вариантов набора RFID Arduino Kit в неплохой упаковке и традиционным набором содержимого
Arduino радиоуправляемая машина: контролируем со смартфонаОтличный большой набор с Arduino Mega 2560, огромным количеством датчиков и модулей. Совсем не “китайское” качество упаковки и компонентов Arduino радиоуправляемая машина: контролируем со смартфонаНабор Keyestudio для юных исследователей природы с отличным набором датчиков, включая такие необычные, как датчик пыли

Регистрация и добавление адреса

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

Для проведения регистрации следует в верхнем правом углу выбрать соответствующую вкладку, и перейти к заполнению требуемой формы.

Aliexpress - адрес
Регистрация а Алиэкспресс

Пройти регистрацию можно и с использованием своего аккаунта на Фэйсбук, в этом случае не потребуется привязка адреса электронной почты к профилю на Али. После прохождения полной регистрационной процедуры, у пользователя появляется доступ в личный профиль, в котором можно увидеть историю своих покупок, отзывы. Недавно просмотренные товары и т.д.

Для совершения покупок далее в профиль следует добавить адрес доставки.

Aliexpress - адрес
Адрес доставки

Заполнение формы адреса доступно только в латинице, и вводить ее следует в транслите, а не в переводе на английский язык. Добавить можно сразу несколько адресов.

Стартовые наборы (arduino kit)

Покупать на Алиэкспресс различные наборы Ардуино очень выгодно, так как цена на них здесь значительно ниже, чем на официальных сайтах или обычных магазинах. Все разнообразие стартовых наборов можно разделить на три уровня:

  • Стартовые наборы без ардуино. Их можно покупать, когда у вас уже есть контроллер Arduino и необходимо заказать лишь сопутствующие элементы (макетные платы, резисторы, светодиоды и т.д.)
  • Минимальные стартовые наборы в комплекте с платой ардуино уно (Arduino Starter Kit). Этот вариант чуть дороже, он оптимален для быстрого старта. Можно купит такой набор максимально не дорого, а затем же докупать все остальное.
  • Расширенные стартовые наборы (Arduino kit). В их состав входит одна или несколько плат контроллера. Такие наборы дороже, потому что в них больше элементов. Набор стоит покупать, если не хочется тратить время на выбор и покупку деталей по одной.
  • Специализированные наборы. Автомобили, манипуляторы и т.д. Нужны для сборки проектов, связанных с каким-то определенным разделом мобильной робототехники. Например, умные машины (Smart Car).
  • Наборы датчиков (Arduino Sensors Kit). Здесь, как правило, присутствует “джентельменский” набор 37 в одном, содержащий базовые датчики, как правило, невысокого качества и дешевые. Но есть и специальные наборы с дорогими датчиками.

Давайте рассмотрим каждый из вариантов подробнее.

Стартовые наборы keyesstudio

KeyesStudio – достаточно известный производитель комплектов и наборов Arduino. Можно сказать, что это один из приемлемых вариантов брендированного товара по вполне “китайской” цене.

В интернете можно без труда найти подходящий сайт, на него составляет примерно 2800 рублей, а красивая упаковка и пластиковый контейнер вызывают уважение к производителю. Набор позволяет собрать огромнее количество различных электронных устройств. Его базовый компонент – микроконтроллер Ардуино Мега – отличающийся расширенными возможностями. Такой набор – отличный выбор для начинающих ардуинщиков.

Продавец предлагает бесплатную доставку и имеет большое количество положительных отзывов, а его рейтинг равен практически 5 звездам.

Еще один вариант готового набора от keyestudio

Его стоимость составляет около 3022 рублей, а также имеется возможность бесплатной доставки. Комплект, как и другие наборы от Keyestudio, упакован в практичный пластиковый контейнер и содержит инструкцию с описанием. Данный набор является специализированным вариантом готового конструктора, в комплекте которого имеются различные датчики и устройства для создания моделей помогающих исследовать окружающую среду. В его состав включен микроконтроллер Arduino UNO, шильды V5 и PM 2.5, а также платформа для создания проектов или макетов.

Вариант от Keyestudio по выгодной цене на АлиЭкспресс.

Цена на него составляет около 1500 рублей, при достаточно богатой комплектации: плата Arduino Uno R3, большая макетная плата, ADL345, RGB-LED, датчики и различные электронные компоненты, с помощью которых можно создать 19 проектов.

Схема подключения

Аккумулятор на 9В питает Arduino через порт VIN и драйвер моторов через порт 12V. Модуль Bluetooth питается от Arduino через порт 3,3V. Параллельно портам питания этого модуля подключается конденсатор для стабилизации напряжения. В ином случае Bluetooth может отключаться и терять подключение. Сервомотор также питается от микроконтроллера через порт 5V. Он управляет поворотными колёсами.

Если на драйвере мотора установлена перемычка Enable, то её нужно снять. Этот порт необходим для управления скоростью моторов. Он должен подключаться обязательно к ШИМ порту, обозначенном на Arduino знаком ~. На схеме выше это порт 3. Управление моторами осуществляется через порты 2 и 4 Arduino, они подключаются к портам Input 3 и Input 4 на драйвере моторов.

Если после сборки вы нажимаете на пульте управления кнопку для движения вперёд, а машинка едет назад, то поменяйте местами провода на портах Out3 и Out4.

А если моторы вращаются в разные стороны, то поменяйте местами провода на любом из моторов.

Пины RX и TX Bluetooth модуля подключаются к портам TX и RX на Arduino, то есть наоборот. К сожалению, из-за несовместимости библиотеки RemoteXY.h с библиотекой SoftwareSerial.h запрограммировать другие порты Arduino для последовательной передачи данных не получится. Поэтому при прошивке микроконтроллера придётся каждый раз отключать питание Bluetooth модуля.

Сервомотор управляется портом 5 на Arduino программируется библиотекой Servo.h.

Схема сборки машинки на ардуино

Если у вас есть все необходимые детали (в проекте можно обойтись без светодиодов и резисторов), то далее мы рассмотрим, как сделать машинку из ардуино своими руками. Для начала следует припаять к контактам моторчиков провода и зафиксировать их изолентой, чтобы контакты не оторвались. Провода необходимо соединить с клеммниками M1 и M2 на Motor Shield (полярность потом можно будет поменять).

Схема сборки машинки с Блютуз управлением
Схема сборки машинки с Блютуз управлением

Питание на Bluetooth модуль идет от контактов для сервопривода, в проекте серво нам не понадобятся. А на питание идет стабилизированное напряжение 5 Вольт, что нам подходит. К портам TX и RX удобнее будет припаять коннекторы «мама», а к портам «Pin0» и «Pin1» на Motor Shield припаять штырьки (BLS). Таким образом, вы сможете легко отключать Bluetooth модуль от Arduino при необходимости загрузки скетча.

Управление светодиодами идет от порта «Pin2», здесь провод можно припаять напрямую к порту. Если вы делаете несколько машинок с Блютуз, которыми будете управлять одновременно, то рекомендуем сделать перепрошивку модуля HC-05. Делается прошивка модуля очень просто, а затем вы уже не будете путать машинки, так как у каждой будет отображаться свое уникальное имя на Андроиде.

Шаг 1: нужные части и инструмент

Я воспользовался готовыми решениями, и все запчасти и инструменты были приобретены через интернет.

Запчасти:

  1. Набор шасси 4WD для робота (GearBest)
  2. Arduino Nano (GearBest)
  3. Модуль H-моста LM298 (GearBest)
  4. Модуль bluetooth HC-06 (Amazon)
  5. Литий-ионные батарейки 2 x 18650 (GearBest)
  6. Отсек для батареек 2x 18650 (GearBest)
  7. Небольшая макетная плата (GearBest)
  8. Провода сечением 0.5 мм2
  9. Провода с джамперами папа-мама (Amazon)
  10. Провода с джамперами мама-мама (Amazon)
  11. Малярная лента, изолента или что-то подобное (Amazon)

Для робота, объезжающего препятствия:

Ультразвуковой модуль измерения расстояния HC — SR04 (GearBest)

Необходимый инструмент :

  1. Паяльник (Amazon)
  2. Кусачки (Amazon)
  3. Стриппер для провод (GearBest)
  4. Клеевой пистолет (GearBest)

Шаг 11: источник питания

Чтобы управлять приводами (моторами) и питать контроллер, роботу нужен источник питания. Большинство роботов питается от батарей. Когда мы говорим о батареях, то имеем в виду множество вариантов:

  1. Алкалиновые батарейки AA (не заряжаются)
  2. Никель-металгидридные или никель-кадмиевые батарейки AA (заряжаются)
  3. Литий-ионные батареи
  4. Литий-полимерные батареи

В зависимости от ваших нужд, нужно выбрать подходящий вид батарей. По-моему мнению, нужно всегда выбирать заряжаемые батареи достаточной ёмкости. Я использовал 2 литий-ионные батареи стандарта 18650 ёмкостью 2600mAh. Если для автономности вам нужно больше мощности, используйте большой комплект батарей, например 5A turnigy.

Отсек для батарей:Отсек для батарей я заказал в Китае, он не подходил для батарей с плоским верхом, поэтому я использовал два неодимовых магнита для придания батарейкам нужной формы.

Зарядка:Для зарядки батарей нужен хороший зарядник. По моему опыту, эти зарядники хорошо зарекомендовали себя:

  1. PowerEx AA Charger-Analyzer (Amazon)
  2. XTAR LiIon Battery Charger (Amazon)
  3. Turnigy LiPo Battery Charger (Amazon)

Шаг 5. ардуино контроллер

Arduino UNO – это плата микроконтроллера с открытым исходным кодом, основой которой служит микроконтроллер Microchip ATmega328P и разработанная Arduino.cc.

Плата оснащена наборами цифровых и аналоговых пинов ввода/вывода (I/O), которые могут быть подключены к различным платам расширения (экранам) и другим цепям. Плата имеет 14 цифровых контактов, 6 аналоговых контактов и программируется с помощью Arduino IDE (интегрированная среда разработки)

Эталонный дизайн оборудования распространяется под лицензией Creative Commons Attribution Share-Alike 2.5 и доступен на веб-сайте Arduino. Макет и производственные файлы для некоторых версий оборудования также доступны. «Uno» означает один на итальянском языке и был выбран в честь выпуска Arduino Software (IDE) 1.0.

Плата Uno является первой в серии плат Arduino c USB и эталонной моделью для последующих платформ. ATmega328 на Arduino Uno поставляется с предварительно запрограммированным загрузчиком, который позволяет загружать новый код без использования внешнего аппаратного программера с использованием оригинального протокола STK500.

Микроконтроллеры обычно программируются с использованием диалекта функций из языков программирования C и C . В дополнение к использованию традиционных наборов инструментов компилятора проект Arduino предоставляет интегрированную среду разработки (IDE).

Шаг 6. h-мост (модуль lm 298)

Термин H-мост (англ. H-bridge) выведен из типичного графического представления такой схемы. Это схема, которая может приводить двигатель постоянного тока в прямом и обратном направлении, см. рисунок выше для понимания работы H-моста.

Он состоит из 4 электронных переключателей S1, S2, S3 и S4 (транзисторы / МОП-транзисторы (MOSFET) / IGBTS). Когда переключатели S1 и S4 замкнуты (а S2 и S3 разомкнуты), на двигатель идет положительное напряжение. Поэтому он вращается в прямом направлении.

Примечание. Переключатели в одном и том же плече (S1, S2 или S3, S4) никогда не замыкаются в одно и то же время, это приведет к короткому замыканию.

H-мосты доступны в виде интегральных микросхем, или вы можете создать свой собственный, используя 4 обычных транзистора или полевых транзистора (MOSFET). В нашем случае мы используем микросхему H-моста LM298, которая позволяет контролировать скорость и направление вращения двигателей. Ниже перейдем к описанию пинов:

Выход 1: двигатель постоянного тока 1 ” ” или шаговый двигатель A

Выход 2: двигатель постоянного тока 1 “-” или шаговый двигатель A-

Выход 3: двигатель постоянного тока 2 ” ” или шаговый двигатель B

Выход 4: двигатель B выведен

12В контакт: 12В вход, но вы можете использовать от 7 до 35 В

GND: земля

Вывод 5В: выход 5 В, если перемычка 12 В на месте, идеально подходит для питания вашего Arduino

EnA: включает сигнал ШИМ для двигателя А

IN1: включить двигатель A

IN2: включить двигатель A

IN3: включить двигатель B

IN4: включить двигатель B

EnB: включает сигнал ШИМ для двигателя B

Смотрите про коптеры:  Радиоуправляемая модель гоночного автомобиля своими руками
Оцените статью
Радиокоптер.ру
Добавить комментарий