![]() |
![]() |
|||||||||||||||
Радиоуправляемый робот с датчиками "Ashley"
Автор: Pika4u Торжественно поздравляю Кота с его девятилетием и хочу подарить замечательную конструкцию с кодовым названием “Ashley”. Предыстория. А началось все с того, что я, смотря на платформы с радиоуправлением, подумал - а неплохо было бы добавить датчики. Но в процессе идея воплотилась в отдельную самостоятельную конструкцию. Было разработано 3 версии, но первая и вторая были не совсем удачными. Первый прототип был модульный (отдельно плата контроллера, драйвер двигателей и датчики). Второй прототип был собран на одной плате, но ввиду малого количества датчиков был признан неуспешным. После долгого перерыва был собран третий прототип, получивший кодовое имя “Ashley”. Теперь небольшое отступление, касательно кодового имени: я все свои проекты называю американскими женскими именами. Ну вот бзик у меня такой :) То или иное имя проект получает в честь какой-нибудь запомнившейся мне женщины, к примеру: первый прототип назывался Molly (тут исключение, имя мне просто понравилось), второй прототип назывался Tiffany, в честь Тиффани Максвелл из фильма ”Мой парень - псих”, которую сыграла Дженнифер Лоуренс. Этот же проект назван в честь Эшли Уильямс - персонажа трилогии “Mass Effect”. Знааааю, это очень и очень странно. :) Вступление. Сразу хочу предупредить-это моя первая статья, так что сильно не пинайте, пожалуйста :) Для начала определимся с требованиями, которые предъявляются к проекту:
В итоге у меня действительно получилось разработать устройство, которое отвечает всем вышеперечисленным требованиям. Но обо всем по порядку…. Электроника. Начнем разбиратья с электроники. Сначала определимся с “мозгом” конструкции. У меня это МК ATMega128, так как памяти и ножек ввода-вывода более чем достаточно. Ну и потому, что он у меня есть. Дальше думаем над датчиками:
Итак, с деталями определились, отлично! Теперь осталось нарисовать принципиальную схему всего этого чуда, сделать плату и вперед! Принципиальная схема. Схема и печатная плата разрабатывались в Eagle CAD. На самом деле, несмотря на кажущуюся сложность и на очень “интересную” реализацию некоторых моментов, это очень мощный инструмент для разработчика. Для удобства чтения я разбил схему на 4 листа. Разберу каждый отдельно, разумеется. Для связи между листами я использовал метки, метка в своем названии, помимо собственно названия вывода, имеет номер листа, к примеру: 18B20_DQ/3.2C означает, что этот вывод ведет к третьем листу(первая цифра после слэша). Все картинки кликабельны. Ну все, поехали! Контроллер. Драйвер двигателей. Периферия. Отдельные модели для датчиков я решил не делать, так как они все равно все внешние, так что все выводы выведены на разъемы WF (2.54 мм). Вот такие: Датчиков скорости всего 2. Теперь поясню, для чего: поворот у нас сделан танковый. Поясню на примере: если нужно повернуть вправо, то крутятся колеса только на левой стороне. То есть, ни одно колесо не вращается все время, всегда есть такие направления, в которых какое-либо колесо покоится. Благодаря такому способу разворота, маневренность получается очень хорошей, колеса не проскальзывают даже на линолеуме :) Спасибо полному независимому приводу за это! Блок питания и зарядное устройство. Блок питания реализован на двух LM1085 и одной AMS1117. Две LM1085 обеспечивают выходное напряжение 5 В (один выход - для драйвера двигателя, другой - для питания электроники). AMS1117 обеспечивает 3.3 В для электроники. Почему именно эти стабилизаторы? Да просто они у меня были в достаточном количестве :) Схема девайса, подключаемого к компьютеру. Тут все просто, ATMega8 выступает в роли “посредника” между NRF24l01 и UART. Я поступил так-купил USB-UART преобразователь на PL2303 и подключил его к МК. Преобразователь типа такого. Внешний вид, к слову, вышел достаточно необычным. Итак, со схемой разобрались, теперь надо это чудо собирать! Печатная плата. Когда дело дошло до печатной платы, во мне внезапно проснулось чувство прекрасного, так что я послал куда подальше свое зеленое земноводное, которая меня душила, и заказал платы на IteadStudio. Я заказывал у них и раньше, так что уже знал, что качество будет на высоте. Габариты основной платы: 150х94 мм, плата РУ имеет габариты 42х38 мм. Не буду томить, вот как они выглядят(все фото кликабельны). Шикарно, не правда ли? Итак, дальше у нас по плану сборка. Сборка. Про сборку можно (и нужно!) написать очееееень много всего. Но обо всем по порядку:
Поздравляю, вы собрали плату! Но это еще не все, нужно собрать плату РУ на NRF24L01. Там ничего сложного, так что так подробно расписывать не буду. Единственное-после пайки проверьте МК точно так же, как мы проверяли до этого. Напоследок, фото, как это все выглядят две собранные платы: Отмывал платы, кстати, 646 растворителем. Настоятельно рекомендую, ибо отмывает все и не оставляет следов. Но обязательно вентилируйте помещение, ибо растворитель состоит на 50% из толуола! Можете словить неплохие глюки, но за этим последует ужасное похмелье и возможные необратимые изменения нервной системы! Раньше, к слову, промывал ацетоном, но он рыжие хлопья оставляет после себя. А теперь самая-самая интересная часть. Шасси. Я долго ломал над этим вопросом голову и, в конце концов, свел все к двум очевидным вариантам: сделать самому или купить. Для самостоятельного изготовления у меня не хватало навыков и инструмента, так что остается один вариант-покупка. На самом деле, вариантов покупных шасси в интернете море, от обычных колесных до гусеничных. Немного разобраться в них помогла статья https://habrahabr.ru/post/219427 . В итоге, я решил остановиться на варианте под номером 4. Вот он: https://www.ebay.com/itm/300922607756?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT Его плюсы 2. Независимый полный привод, то есть, у каждого колеса свой мотор с редуктором (я считаю, это самый жирный плюс этой платформы, но тут встает вопрос-как эту штуку заставить поворачивать? Ответ на него будет дан выше). 3. Есть место для крепления батарейного отсека под 4 АА-аккумулятора. И даже не одно, а два, ибо каждая сторона симметрична. 4. На каждом редукторе есть диск с прорезями (проще говоря, добавив к конструкции фотодиод + фототранзистор мы получим оптический энкодер, а отсюда уже вытекают спидометр и тахометр. И это, внимание, на каждом колесе!). 5. Оба яруса выполнены из акрила, есть отверстия под крепеж (ярусы соединяются стяжками, кол-во которых можно увеличить для увеличения жесткости конструкции, отверстия для этого имеются в достаточном количестве). 6. Цена. За такую штуку отдать 800 вечнодеревянных-это немного, я считаю. Когда эта платформа появится в наших магазинах (если она вообще появится), то меньше, чем за 2000, я думаю, можно и не искать. Вот характеристики шасси: Передаточное число редуктора: 48:1 Напряжение питания одного двигателя: 3-6 В Потребление одного двигателя: 100-120 мА Скорость: 20-48 м/мин Диаметр колеса: 66 мм Вес мотора: 50 г Ну что, поехали собирать?:) Все приходит в полукиллограмовом пакете. За целостность можете не волноваться, акриловые половинки приходят замотанными четырьмя слоями пупырчатого полиэтилена. К сожалению, сфотографировать пакет я не успел, уж очень не терпелось его вскрыть. Перед тем, как начать сборку, расскажу, пожалуй, что нам еще потребуется:
Ссылки на все ништяки, которые надо докупить. https://www.ebay.com/itm/331216050114?_trksid=p2059210.m2749.l2649&var=540404796588&ssPageName=STRK%3AMEBIDX%3AIT латунные стяжки https://www.ebay.com/itm/251602485703?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT болты https://www.ebay.com/itm/231177315263?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT гайки Небольшое лирическое отступление: к шасси прилагается инструкция на английском с картинками, по которой вроде все понятно, но все равно нифига не понятно. Но вам будет легче, ведь я все расскажу и покажу:) Ну что же, хватит слов, приступаем к сборке: Шаг 0: подпаиваем проводки вот так (не надо заморачиваться с сечением, обычных проводов, оторванных с 1.27 мм шлейфа хватает, по длине-сантиметров 15 хватит) Пайку желательно закрыть термоусадкой, а проводки прикрепить к двигателю термоклеем, но это потом, так как, возможно, в дальнейшем придется их перепаивать. Шаг 0 проделываем 4 раза. Шаг 1: Сначала наживим моторы на зажим двумя болтами М3х30(тут надо отметить, что вставлять болты надо с наружной стороны мотора. Это сторона, у которой ось, выходящая из редуктора, длиннее. Или, если по длине они одинаковые для вас, то внешняя сторона та, на которой располагаются выводы щеток). Затем вставляем в половинку, которая будет нижней (абсолютно неважно, какая из них, они обе одинаковые) второй зажим следующим образом Затем, держа второй зажим одной рукой, мотор с первым зажимом вставляем вот так Дальше наживляем гайки и закручиваем отверткой болты, но не сильно, ибо зажимы пластиковые и могут начать искривляться Шаг 1 надо проделать 4 раза. Шаг 2: На все 4 мотора надеваем колеса. Затем, на все колеса надеваем диски с прорезями Тут надо определиться, какая сторона у вас передняя. На передней стороне, в разрезе, крепим термоклеем (вообще, люблю я его, универсальная штука) УЗ-сонар, как показано на фото. Как-нибудь, когда время будет, придумаю способ его иначе закрепить. Делаем шлейф с PLS-гнездами на 4 штыря на одном конце, гнездо HU-4 на другом(эти разъемы, по идее, надо обжимать, но я не смог в городе найти подходящего кримпера, так что, эти клеммы я сначала паял, потом обжимал крупными пассатижами), длина примерно сантиметров 15. Помечаем красной и черной термоусадкой + и – питания соответственно. Ну и, согласно маркировке на сонаре(да-да, она на нем самом написана), втыкаем шлейф. Небольшое замечание-разъем лучше отогнуть, как на фото. Либо припаять нормальный, не угловой разъем. Рспиновка разъема сонара на плате(заодно и распиновка разъемов для энкодеров) На всякий случай, покажу фото, как надо примерно припаять и обжать клемму без кримпера(фото получилось не очень, телефон макро плохо делает) Двигатели пронумерованы следующим образом: Теперь нужно подключить двигатели согласно нумерации к плате, зашить тестовую прошивку и проконтролировать, чтобы все двигатели крутились вперед. Иначе-перепаиваем провода или меняем местами клеммы в разъеме(что гораздо проще). Если все ок, то фиксируем провода термоклеем. Шаг 3: Настала очередь достать стяжки, болты и гайки из пакетика с крепежом. P.S. Буду пока что рассматривать вариант, когда вы не докупали крепеж, т.е. стяжек всего 6, так как мне мой дополнительный крепеж так и не пришел еще. Будем выкручиваться, деваться некуда же :) Сначала устанавливаем 6 стяжек следующим образом-резьбу на стяжке просунуть в отверстие в нижней половинке и закрепить снизу гайкой. Таким образом, гайки у нас расположены на днище. Оптимальная расстановка стяжек показана на фотографиях: Затем, на стяжки ставим верхнюю половинку, продеваем шлейфы, как показано на фотографиях и вкручиваем винты в стяжки(каюсь, на фотках уже стоят датчики скорости, просто мне, после 4 шага потребовалось снять половинку, а зафоткать до этого не успел)
Шаг 4: А теперь один из самых ответственных моментов - необходимо установить датчики скорости на верхнюю половинку. Для удобства, можно подать на датчик питание, на плате загорится светодиод, когда он погаснет, то это значит, что между фототранзистором и фотодиодом возникло препятствие. Таким образом, можно визуально контролировать процесс. Устанавливать лучше на двухсторонний скотч, а потом уже окончательно на термоклей, ибо его потом отодрать от акрила, ничего не повредив, очень сложно. Даже практически невозможно, я сказал бы :) Устанавливать надо по одному датчику на одно колесо на каждой оси. На какое-нет разницы. Я предпочел вариант, когда датчики установлены по диагонали, так развесовка лучше, чем на одном боку. Вот как примерно надо установить датчики скорости: Точно так же ставим и второй. Делаем 2 шлейфа с PLS-гнездами на 3 штыря на одном конце, а розетки HU-3 на другом, длина примерно сантиметров 15. Помечаем красной и черной термоусадкой + и – питания соответственно. Ну и, согласно маркировке на датчиках, втыкаем шлейф. Распиновка разъема на плате. Шаг 5: Финальные штрихи - устанавливаем батарейный отсек. На плате есть места под установку двух отсеков 4хАА, но у меня был только на 8 один, так что надо будет немного доработать половинку-сделать отверстие в указанном месте. Можно просверлить, но я его пропаял паяльником и доработал надфилем. Лучше бы сверлил, плавленый акрил воняет очень противно. Будете сверлить-аккуратнее, акрил очень хрупкий. Закрепил винтом М3х8 и гайкой М3, которые пришлось покупать в ближайшем радиомагазине.
Поздравляю, вы собрали шасси! Вот общий вид получившейся красоты Соединение платы и шасси Теперь же соединяем плату и шасси. Сначала нужно установить, как показано на фото 4 стяжки (на момент написания статьи, мои стяжки мне еще не пришли из Китая, так что я использовал П-образный профиль из детского железного конструктора, который был нагло отобран у младшего брата. И то, профилей всего было 3, ну ладно, пусть пока что на трех постоит). Затем, нужно немного рассверлить отверстия на плате (немного не рассчитал диаметр, в архиве я это пофиксил). Ну и потом прикручиваем плату к стяжкам. Теперь подсоединяем все шлейфы (энкодеры в любом порядке, все равно, какой первый, а какой второй). И можно их красиво и нежно уложить, применяя нейлоновые хомуты. Вот и все! Платформа полностью собрана! Софт Начну с софта для МК. Прошивка написана в IAR’e, подробно разъяснять не буду, прошивка полностью откомментирована. Термометр и барометр опрашиваются примерно каждые 4 секунды, сонар, акселерометр и гироскоп - через один прием пакета(примерно 0.15 секунды). Скорость считается за каждую секунду. Прошивал МК с помощью программатора USBAsp и программы SinaProg. Что основную плату, что плату РУ можно прошивать, не подавая внешнего питания, достаточно установить перемычку на программаторе, которая включает подачу питания на плату(главное, двигатели отсоедините, ведь у вас зашита тестовая прошивка, а то будет превышение тока и USB-порт может выгореть). .hex файлы находятся в папках Release в архиве с исходниками. В папке Ashley_cpp-прошивка и исходники для основной платы, в папке usb_board-для платы РУ. Фьюзы для основной платы(ATMega128) Фьюзы для платы РУ(ATMega8) Теперь разберем порядок добавления Bluetooth-устройства:
Итак, с добавлением устройства разобрались. Теперь запускаем программу Ashley.exe из архива. Главное окно программы: При первом запуске сначала нажимаем кнопку Настройки. Откроется такое окно: Здесь нужно задать настройки. Порт для 2.4 ГГц можете определить в диспетчере устройств, воткнув USB-UART с припаянной к нему платой. Самое главное-указать порты. Другие настройки можете не указывать, после нажатия кнопки Сохранить они выставятся по дефолту. Сохраняете в удобном для вас месте конфигурационный файл и нажимаете кнопку Закрыть(можете нажать красный крестик, будет то же самое). Затем нажимаете кнопку Загрузить и выбираете тот самый конфигурационный файл, который мы только что создали. Настройки отобразятся справа, можете сверить. Затем выбираете способ подключения(я изменил скорость, у вас она будет 9600, в архиве прошивка для 9600, работать будет, инфа 100%). Вот тут напишу отдельно. Последние две недели я очень много слез пролил из-за nrf24l01+. В данный момент, у меня почему-то связь работает только в одну сторону-от компьютера к устройству. Так что, весь код, касающийся nrf24l01+, в программе закомментирован (заголовочный файл с классом для работы с nrf24l01+ подключен, в архиве он есть, но инициализация и работа с модулем закомментированы). В ближайшее время я, конечно же, разберусь с этой неприятностью. Может быть, ваши пытливые умы смогут найти у меня ошибки. Хотя я взял код работы с nrf24l01+ с прошлой версии, там все замечательно работало. Чудеса, да и только. Кстати, выбирать источник данных можно на лету, то есть, вы можете без перезагрузки устройства сменить Bluetooth и подключиться с помощью nrf24l01+. Ну все, немного отвлеклись и хватит. После выбора нажимаем кнопку подключить, и если вы выбрали подключение по bluetooth и все успешно, то светодиод LED4 на плате станет гореть постоянно и выскочит такая табличка: После нажатия ОК(можете красный крестик нажать, одно и то же будет) текущее окно закроется и откроется новое. Названия говорят сами за себя, но все же поясню на всякий случай. С кнопкой Закрыть все понятно, расскажу, для чего предназначена кнопка Коэфф. При установлении коннекта платой сразу же передается один пакет(32 байта данных)-это калибровочные коэффициенты барометра, которые записаны в его памяти и индивидуальны для каждого экземпляра чипа. Если вдруг вмешался Ктулху, то данные могут не передаться и будет белиберда во всех строчках, связанных с барометром. Вот для этого и предназначена кнопка Коэфф., она просит МК еще раз передать калибровочные коэффициенты. Ну а если и это не сработало, то значит, что барометр не работает или его украло НЛО. Управление платформой следующее: направление задается стрелками (WASD тут не работает!), мощность двигателя регулируется кнопками + и -, расположенными в ряду с цифрами или непосредственным движением трек-бара мышкой. Чекбоксами в разделе “Двигатели” обозначается направление работы каждого двигателя. FL-Forward Left, передний левый двигатель(или под номером 1), FR-Forward Right, передний правый двигатель(под номером 2). Остальные аналогично, BL-двигатель под номером 3, BR-под номером 4. В строке под надписью “Расстояние” выводятся показания сонара. Для контроля коннекта справа снизу есть 2 строки, которых отображается количество успешно принятых пакетов и кол-во битых пакетов. Иногда (когда вмешивается Ктулху) передача сбивается, причем так, что платформа правильно отзывается на нажатия клавиш, но показания датчиков не обновляются. В среднем, у меня выходило на 36000 успешных пакетов около 10 битых. Можно уменьшить вероятность ошибки, увеличив в коде (программы для компьютера, а не МК!) значение свойства Interval у класса timer1 (у меня стоит 90, можно смело ставить около 150, значение показывает, через какое кол-во миллисекунд будет вызываться обработчик события). Если нажать кнопку Отладка, то окно расширится, вот, что будет Менюшка справа служит для того, чтобы посмотреть, какие непосредственно байты принимаются. Очень удобная штука, не раз спасала во время отладки устройства! После нажатия кнопки Закрыть снова открывается начальное окно. Если отключить устройство, не закрывая окна, то появится такая табличка. Нажав ОК или крестик вы попадете опять в главное окно. По софту для компьютера вроде все. Да и вообще, нам с вами расставаться скоро =( Вместо заключения. В процессе разработки платформы у меня возникло достаточное кол-во идей того, что можно еще добавить, среди них:
И это не все. В настоящее время я занимаюсь разработкой приложения под Android для управления платформой с помощью телефона. Согласитесь, неплохо не зависеть от компьютера. Возможно, будет версия и под iOs(если найду девайс с iOs ). Ну и по традиции, все вопросы, замечания и пожелания-на Форум, но после Конкурса. Вы можете мне помочь сделать эту конструкцию лучше. Спасибо за внимание, я надеюсь, что не сильно вас утомил :) Исходники и прошивки в файлах. Удачи!
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |