Мой колесный аппарат на Ардуино Мега
- Войдите на сайт для отправки комментариев
Состав аппарата:
1. Ардуино Мега
2. Сенсор шилд
3. Мотор-драйвер
4. Четыре двигателя/колеса
5. Два сервопривода
6. Два УЗ датчика
7. Приемник 433МГц
8. Детский металлический конструктор
Состав пульта:
1. Макетная плата
2. Ардуино Нано
3. Передатчик 433МГц
4. Джойстик
С самого начала решил, что лучший вариант для сборки прототипа - металлический конструктор на болтиках и гаечках. Стоит всего 600+ руб. и предоставляет волю в конструировании.
Ардуино Мега - большое количество выводов для подключения датчиков и исполнительных устройств (в перспективе)
Сенсор шилд - для подключения питания к датчикам. Сервоприводы тоже подключены через него.
Брал два мотор-драйвера, но один не захотел работать. Поэтому подключил 4 движка к одному драйверу, левая сторона к одному выходу, правая - к другому.
После долгих попыток и раздумий, поворот колес решил сделать на сервоприводах. Просто к каждому сервоприводу приклеил редуктор с колесом.
Два УЗ датчика - задумка такая: например, левый датчик видит препятствие, правый - свободно, значит объезд справа.
Приемник 433МГц - дешевая односторонняя связь, передача данных с аппарата на пульт пока не предполагается.
С пультом все понятно - пояснений не требуется. В дальнейшем будет еще клавиатура на 5 кнопок, для выбора каких-нибудь режимов/команд работы аппарата.
Пока управление с пульта, никакой особой самостоятельности в аппарате нет.
С УЗ датчиками пока отработал такой алгоритм: если объект приблизился ближе 15см, то едем назад. Если свободно - вперед.
Концепция развития проекта такая: постепенное внедрение различных датчиков для регистрации критических состояний/опасностей. Например, ИК датчиков для определения отсутствия пола под колесами.
Моя страница с разработками:
https://vk.com/myrobotics
Несколько фоток:
а такие контсрукторы разве еще продают?
помню был такой у меня в детстве
Да, еще продают) Сам подобным игрался в 90е
как со стабильностью связи на таких модулях?
продают
есть даже очень нафаршированные 893 детали ~36$
а вам уже больше 7 лет?
вам можно?
http://oz.by/constructors/more10186443.html
http://minsk.deal.by/Metallicheskie-konstruktory.html Выбирайте из 42 предложений
думаю для катающегося робота хватит за глаза в 300 деталей 30$
а то такие конструкторы всю жизнь человека ему служат и что эти уголки в доме потом висят десятилетиями я думаю говорить не надо
так что за "вечные иглы" деньги смешные
мне можно. мама разрешила
вот чем нужно баловаться))) металл, а не китайский пластик
мне можно. мама разрешила
вот чем нужно баловаться))) металл, а не китайский пластик
нет
нужно комбинировать
у каждого материала есть плюсы и минусы
комбинация дает лучшие результаты
колесо лучше из пластмассы
выключатели лучше из пластмассы
каркас из метала
оси из металла
так что достаю конструктор и ищу колеса и стойки чтоб arduino mega прикрутить?
кодом поделитесь?
по максимому из металла. только хардкор. шимом рулите))
как со стабильностью связи на таких модулях?
В пределах комнаты работают, дальше не проверял
в моем случае такой http://market.yandex.ru/model.xml?modelid=10553453&hid=10470548
в нем есть конечно недостатки, но все равно он того стоит для отработки прототипа
платы крепятся к металлу на нейлоновых стойках с нейлоновыми болтиками
по скетчу покажу позже
А можно увидеть ваши скетчи?
Интересует кусок работы с приемником и передатчиком
Схема подключения модулей аппарата к Ардуино.
Программирование аппарата-робота.
Два основных момента проекта:
1. Модульность. Для каждого устройства робота пишется свой модуль - отдельный класс/библиотека. Для удобства и читабельности скетча, а также использования в дальнейшем проектировании любых других роботов.
2. Частота работы скетча 10Гц. Для данного проекта достаточно опрашивать датчики и реагировать на окружающий мир 10 раз в секунду.
Текущая версия скетча для Ардуино Мега самого аппарата:
Модуль KemaUS - библиотека для работы с ультра-звуковыми датчиками.
Модуль KemaState - библиотека для сохранения состояния аппарата (скорости, показания дачткиов и т.д.).
Модуль KemaDrive - библиотека для движения робота (управление двигателями, сервами для поворотов).
VirtualWire - библиотека для работы с радио-передатчиком.
Sensor Section - секция скетча для снятия показаний с датчиков.
RF control - секция для радиоуправления. С пульта приходят сообщения из 5 символов, 4 первых - кодовое слово, 5-ый - команда.
Smart Section - "умная" секция для принятия решений по показаниям датчиков. Также в этом месте скетча код для тестирования с консоли через сериал порт.
Drive Section - исполнительная часть программы. Выполняет команды для управления двигателями и сервами. набор команд:
S - стоп
B - назад
F - вперед
R - право
L - лево
Final Section - конец скетча. Сбрасывается команда, сохраняется текущее состояние аппарата, выполняется алгоритм для поддержки частоты 10гц.
Скетч для Ардуино Нано пульта радиоуправления:
Описание и ссылки библиотеки VirtualWire брал с arduino.cc.
С джойстиком все просто: считываем analogRead() с оси х и оси у, значения меняются от 0 до 1000+.
Выкладываю видео - демонстрация работы УЗ датчиков. Радиоуправление отключено.
http://vk.com/video-73778892_169217223
копия на http://youtu.be/KQMuNkswav4
Вот такое небольшое самостоятельное поведение робота.
кино веселое кот наверно будет в восторге
1.а где брать это?
заказал верно?
2.УльтроЗвук вроде такой http://ru.aliexpress.com/item/1pcs-Ultrasonic-Module-HC-SR04-Distance-Measuring-Transducer-Sensor-for-Arduino-HC-SR04-HCSR04/558618295.html?productId=558618295
3.Радио вроде такое http://ru.aliexpress.com/item/Lowest-Price-433Mhz-RF-transmitter-and-receiver-kit-for-Arduino-Project-Drop-Shipping-TK0460/1754885635.html?productId=1754885635
4.Моторы вроде такие http://ru.aliexpress.com/item/Free-shiping-4Lot-package-Deceleration-DC-motor-supporting-wheels-smart-car-chassis-motor-robot-car/1880306880.html?productId=1880306880
5.Моторный щиток какой похоже на L298 один корпус на два задних мотора? этого добра не попалил еще ни одной
а серво какие? может ссылка есть? по слухам SG90 с качалкой чтоб приклеить
6.с качалками дешевле чем за 5 штук не нашел Такие вроде? http://ru.aliexpress.com/item/Hot-sell-5X-SG90-9g-Mini-Micro-Servo-for-RC-for-RC-250-450-Helicopter-Airplane/1766910256.html
щас попробую рассмотреть
...
Это собственноручно написанные классы https://yadi.sk/d/dpl6VfuRWSZoC
Все верно HC-SR04, 433RF, обычные желтые двигатели (1:48), драйвер на L298 и маленькие SG90.
все это добро брал здесь http://www.miniinthebox.com/arduino_c5028
синие колеса и нейлоновые стойки здесь http://dvrobot.ru/shop/i441.Koleso_sinee.htm и http://dvrobot.ru/shop/i666.stoyka_papa_korotkaya.htm
Видео - поворот колес на сервоприводах. Управление с РУ пульта.
http://vk.com/video-73778892_169237848
http://youtu.be/ls2U3A_UEn8
Разница углов поворота правого и левого колеса корректируются программно.
это какой библиотеки нехватает ?
в приемнике тоже нехватает
это у на что
а для радио ничего не надо добавлять?
не знаю такая версия подходит от 26.05.2013 ?
компиляцию вроде и передатчик и приемник прошли, что там на выходе получится не представляю
пробежал по коду вроде все аккуратно
только поверхностно один лишний оператор глаз выцепил
насколько я понял сходу выбор из строки командного символа
что там дальше получится пока не знаю пойду посплю
глаз еще лишнее вроде выцепил
кнопочек добавить повидимому
не ясно W это просто лишнее или с умыслом?
вроде решение трапеции
что там дальше будет пока не знаю
точно пойду посплю
стил мне твой нравится
по VirtualWire ничего сказать не могу, брал примеры втавлял в свой код и проблем вроде особых не было.
по своему коду:
да, достаем последний символ из строки послания - управляющий.
W - команда установки колес в прямое положение, изначально использовалась при отладке через консоль сериал порта. Сейчас она не используется, но при желании можно добавить кнопку на пульт для этого.
Прикрутил полноцветный LED модуль для сигнализации состояния робота.
Написал такую библиотеку для этого модуля:
В конструкторе задаются пины R, G, B (красный, зеленый, синий).
При подаче на соответствующий пин 0 - цвет на максимум, 255 - отсутствие цвета.
В метод led() передается цвет в виде char. Используются R G B Y W. (Красный, зеленый, синий, желтый). W - типа белый, но на самом деле отключение LED всех цветов.
Модуль такой: http://www.miniinthebox.com/ru/5050-rgb-led-modules-full-color-display-module-red_p991018.html
Видео по использованию полноцветного LED модуля:
http://vk.com/video-73778892_169324157
http://youtu.be/wIxC7eGpphM
Прицепил спереди на платформу робота ИК датчики для обнаружения пола (его отсутствия) перед передними колесами.
Пара фоток:
Получилась простая библиотека:
Используется два пина - на левый, на правый датчик. Видим провал - робот останавливается.
Видео - Заезды на столе - используются ИК датчики для обнаружения края стола.
http://vk.com/video-73778892_169370651
http://youtu.be/hcbRNRprRSw
Поставил сзади платформы робота контактные датчики:
Когда аппарат стоит на колесах, редуктор прижимаем контакт. Когда колеса висят в воздухе - контакт разомкнут.
Библиотека для контактных датчиков:
Два метода для правого и левого колеса. Видео - http://youtu.be/NUNYtZlqDgI
Поправил код управления сервами, теперь колеса поворачиваются одновременно.
http://youtu.be/6t9xD_McWX0
http://vk.com/video-73778892_169419767
Полная библиотека по управлению двигателями и сервами:
да вы неутомимый. скоро в нем электроники будет больше чем в бмв
Пояснения по методам:
move(
int
speed) -
публичный метод для вызова из основного скетча. Скорость задается в единицах: +-1 до +-10 (- назад). 0 - стоп. Высчитывает ШИМ и вызывает приватные методы: стоп, вперед, назад.turn(
int
ang)
- метод для поворота колес. Угол:- налево, + направо, 0 колеса прямо. Вызывает приватные методы: налево, направо и прямо.writeToServo(
int
posL,
int
posR)
- метод, подающий сигналы на сервы.correctAng(
int
ang)
- метод для корректировки разности углов поворота колес. (по этой теме моя статейка http://vk.com/wall-73778892_5)да вы неутомимый. скоро в нем электроники будет больше чем в бмв
По плану еще всего 3 вещи: датчик скорости, компас и СД карта.
тонировка, магнитола и так далее. короче что писать сами посмотрите
например так
http://www.youtube.com/watch?v=3aaO30BLatM
а дальше так например
http://www.youtube.com/watch?v=kyPA6NQlucQ
Главное что бы саб был посерьезней и спойлер.
главное чтобы не получилось
А на самом деле пофигу что получится. Главное что бы самому разработчику нравилось.
Все правильно, пусть это будет комок проводов с колесами, но свой родной )
Поставил датчик скорости:
Библиотека для модуля:
С помощью функции pulseIn() считывается время прокрутки одной прорези в колесике датчика. Затем высчитывается скорость, на основе диаметров колеса робота и колесика датчика. На выходе getSpeed() - скорость в миллиметрах.
с нетерпением ожидаю когда у него появится метелка и он научится подметать пол :)
На днях написал библиотеку "памяти" на 3 секунды. Хочу реализовать возможность отката робота назад по пройденному пути.
Сейчас один образ памяти весит около 40 байт, т.е. 1 сек = 400 байт. В ардуино мега 8 кб ОЗУ - много не запомнишь...
Впрочем, для этих целей планировал модуль SD карты использовать, но пока попробую ОЗУ контроллера.
Как только потестирую, опубликую
с нетерпением ожидаю когда у него появится метелка и он научится подметать пол :)
не могли бы вы помочь мне с написанием фуфельной библиотеки ? :) ТС их плодит одну за одной, а моя и одну ещё не родил..... извините, что сюда написал - за вами не угнацца :)
неееееееее ! не написать - понять чё не так !
сюда ушёл... чёбы не мешать :)
http://arduino.ru/forum/programmirovanie/biblioteka-ili-ya-glyuchyu-pomoshch
Прикрутил к пульту радиоуправления клавиатуру на 5 кнопок:
Поправил скетч для пульта:
Клавиатура подключается к одному аналоговому входу Ардуино, каждой кнопке соответствует свой уровень сигнала.
int adc_key_val [5] = {0, 141, 327, 501, 739} - в массиве значения для каждой кнопки.
int get_key (unsigned int input) - функция выбирает кнопку по значениям из массива.
Оператор switch в строках 051-072 выбирает команду по нажатой кнопке.
Сейчас две команды : одна команда будет переключать управляемый/автономный режимы робота, другая - выполнять откат робота назад по памяти.
Приехали аккумуляторы типа "крона" и зарядка ! После продолжительного творческого отпуска работа продолжается !
Первые тесты памяти до 3 сек.
http://youtu.be/flpF5y9pQIs
Откат по памяти в исходную позицию. В начале движение по РУ, а потом откат по записанной памяти (3 сек). Мерцание диода - РУ режим, синий цвет - режим движения по памяти.
что нового? или проект помер?
Проект живет, но показывать нового нечего.
Недавно делал первый небольшой ремонт - заели шестеренки в редукторе. Разобрал, построгал ножом.
Попробовал магнитометр-компас, оказалось магнитное поле земли - капризная штука, заметные искажения даже от обычной скрепки. Поэтому сомневаюсь нужен ли компас в этом аппарате.
Сейчас собираюсь сделать "тупой" алгоритм обхода препятствий - увидел препятствие, откатил назад, повернул колеса, ткнулся в другое место рядом.
компас на борту с электроникой, тем более где моторы и провода под большим током, работать как надо -не будет!
поэтому ставят гироскопы.
компас на борту с электроникой, тем более где моторы и провода под большим током, работать как надо -не будет!
Ну так ведь нельзя... Все удовольствие и есть в "творческих муках" !
Подскажите как колеса от конструктора с отверстием около 5 мм насадить на сервопривод?
http://ru.aliexpress.com/item/Practical-SG90-9g-Mini-Micro-Servo-For-RC-...
https://market.yandex.ru/product/11865474?hid=10470548&show-uid=54435858...
самый простой это взять крестик(качалка) от сервы и на термоклей приклеить к колесу