Ardulego или Mindstorm для нищебродов

Розділ про навчання та змагання з робототехніки.
y.ganusyak
Повідомлень:20
З нами з:27 травня 2017, 21:53
Ardulego или Mindstorm для нищебродов

Повідомлення y.ganusyak » 31 травня 2017, 18:55

Всем - привет!

Часть первая. Введение:

ЗображенняЗображення

Когда твоему сыну 7 лет и на вопрос "чем занимается папа?" он отвечает: "я не знаю, что-то в компьютере нажимает", возникают всякие дурные мысли. Тем более, сын вырос из того возраста, когда его интеллекта достаточно максимум для складывания плюшевых кубиков и у нас начали появляться общие интересы :)

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

"Хочу сделать робота с Machine Learning", - приснилась мне мысль пару недель назад. На утро она показалась мне достаточно интересной, чтобы не откладывать ее в долгий ящик.

Проблем было несколько, часть из них - достаточно существенные:
1) у меня не было шасси для робота
2) у меня не было электроники и приводов для робота
3) мои знания в схемотехнике ограничивались примерно тем, как рисуется резистор
4) я никогда не держал в руках паяльник
5) и программирую я не очень
6) кстати, идеи, что именно должен делать этот робот тоже не было, но очень хотелось

В общем, идея обладала некоторым уровнем абстрактности, если можно так выразиться в данном случае.

Мысли о шасси
Довольно быстро стало очевидно, что большинство вариантов шасси для роботов требуют либо ЧПУ фрезеровки, либо заказа каких-то комплектов за не всегда разумные деньги, без точного понимания, что это - именно то, что мне нужно.

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

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

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

Я зашел на OLX.ua, ввел запрос: "Lego Technic", потом случилась кратковременная потеря памяти и... Теперь у моего сына есть чем заняться на ближайшие лет 5.
ЗображенняЗображення

Теперь можно собирать почти что угодно, ставить туда моторы, имеющиеся в ассортименте и...

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

Переходим к вопросу электроники

Сразу возникло две идеи:
1) подключить Lego к обычному RC пульту
2) подключить его к чему-то, что умеет думать само.

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

Выбор пал на Arduino. Не особо осознанно: все побежали и я побежал.

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

Но быстро выяснилось, что если рулевое управление на 42035 может поворачиваться от мелкой сервы, то любая сколько-нибудь крупная модель требует более мощных приводов, которые во-первых стоят дорого, во-вторых их еще нужно впихнуть в формат Lego и сделать так, чтобы сервы можно было крепить.
ЗображенняЗображення
Поигравшись с подобным гетто, я решил плюнуть и заказал оригиналные моторы и сервы, так как они хоть и не особо дешевы, но гораздо удобнее в монтаже. Все варианты прикрепить крупную серву требовали либо CNC, либо выглядели ужасно, плюс цена резко отличалась от 60 грн за штуку, в бОльшую, конечно сторону.

Итак, спустя 5 дней мы имеем:
13999 деталей Lego, если верить Rebrickable
кучку моторов и серва, которая скоро приедет
Arduino Uno
полное отсутствие умения паять и понимания схемотехники

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

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

ЗображенняЗображення

Правильно припаяв пару компонентов, я чуть осмелел и решился таки на первый челлендж

Challenge #1: Подключить моторы Lego PF к Arduino Uno и сделать так, чтобы они управлялись с нее.
В добавок нужно было сделать это не инвазивно, т.е. так, чтобы компоненты не умерли и их можно было использовать повторно.
Проведя какое-то количество минут с мультиметром и батарейным блоком Lego, я набросал для себя схему питания PowerFunctions, впрочем, ее можно было за 10 секунд нагуглить, но это было бы не так педагогично
Зображення

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

Я сделал один коннектор для батарейного блока, два коннектора для моторов и остался один обрезок, который уйдет на подключение сервы, когда она приедет.
ЗображенняЗображення

ЗображенняЗображення

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

Теперь это нужно как-то подключить к Arduino.

В комплекте с набором шла микросхема L293D, которая хоть и устарела по всем параметрам и не способна давать больше 600мА на выходе (L-мотор, например, требует до 1300мА), но она вполне неплохо подходит для того, чтобы понять, как это все вообще работает. Она способна управлять двумя моторами или мотором и сервой. И стоит 7 грн. Т.е. можно купить пучек и не бояться сжечь все.

После сборки первого прототипа на монтажной плате ардуино, еще с участием дешевого китайского родственника тех мотором, которые я собирался использовать, появилось двоякое ощущение. С одной стороны, появилось чувство тотального доминирования над собственной неспособностью что-то сделать своими руками. С другой стало ясно, как многого я не знаю об электронике. К примеру, микросхема L293D не только не тянет максимальную силу тока, которую требует L-мотор, но и известна большим Voltage Drop. Об этом знают все, кто когда-либо имел с ней дело, но в тот момент, когда мотор начал вращаться гораздо медленнее положенного, я еще не знал, куда делись мои законные 2.5V.

ЗображенняЗображення

Несложный поиск привел к тому, что ко мне уже едет пакетик драйверов TB6612FNG.
Они имеют гораздо более высокий КПД, чем L293D, тянут нужные 1300мА, очень компактны и обошлись мне по доллару за штуку, в то время, как потерявшие связь с реальность барыги продают их в Киеве в 5-10 раз дороже.
Зображення

К слову о компактности: Arduino UNO R3 - отличная плата, чтобы поиграться и чему-то научиться, но в лего я планирую всунуть схему, которая поместится внутри двух склееных панелей 5х11

Скорее всего придется поработать с дремелем и такой то матерью, но никто не обещал что будет легко :)
Так вот, для компактности отлично подходит комбинация Arduino Pro Mini и моста TB6612FNG:
Зображення

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

Здесь людям, которые умеют паять, лучше выпить корвалола закрыть глаза и пролистать пару страниц!

Фасад платы выглядит вот так:

На сейчас она очень стремная, легко перепутать разъемы и даже полярность, но это все от отсутствия нужных коннекторов. Завтра наведаюсь в магазин и куплю все необходимое:
ЗображенняЗображення
На плате есть выходы для двух моторов, разъем для питания моторов, отдельная линия 5V от Arduino, и два коннектора по 3 пина для подключения логических выходов Arudino.

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

Но у этой платы есть одно очень важное преимущество, вернее два: она работает и это первое, что я сделал своими руками, связанное с электроникой.

Попробовав на кошках в лице дешевых китайских моторов с редуктором, я понял, что они не горят и крутятся себе в нужные стороны. Накатив баночку колы для смелости, я подключил все адаптированные Lego-компоненты к своей схеме и получил вот что:
ЗображенняЗображення
Основная линия питания идет от блока питания Lego PF, моторы подключены к выходам через переходники. Остальное идет на ардуино с помощью обычных проводов.

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

Вживую это выглядит примерно так:



Планы на ближайшее будущее (~недели):
1. Запитать Arduino от блока питания Lego PF
2. Сделать свой собственный дистанционный пульт с пропорциональным управлением
3. Попробовать, как моторы работают с 11.1V Li-Ion и адаптировать схему под питание от 11.1V с DC-DC конвертером
4. Подружить эту схему с RC-приемником

Планы на будущее, которое сразу после ближайшего:
1. Адаптировать это все под использование с сервой Lego PF
2. Переделать это все под связку Arduino Pro Mini + TB6612FNG, и впихнуть в две склеенные панели 5х11 с коннекторами PF, чтобы было компактное, удобно крепить и подключаться

Среднесрочные (в масштабах увлечения Lego + Arduino)
1. Реализовать нейронную сеть, с помощью которой машина будет объезжать препятствия, в т.ч. подвижные.

Если вдруг кто-то дочитал до конца и ему интересно, продолжение, я буду ждать очередной порции свободного времени на написание :)

Всем - вкусного борща!
Востаннє редагувалось 31 травня 2017, 20:04 користувачем y.ganusyak, всього редагувалось 4 разів.
Аватар користувача
Qbeat
Повідомлень:577
З нами з:25 січня 2015, 14:23
Звідки:Киев

Re: Ardulego или Mindstorm для нищебродов

Повідомлення Qbeat » 31 травня 2017, 19:29

Добро пожаловать на форум!

В виду моего параллельного увлечения велоспортом, слышал о вас и искренне желаю скорейшего выздоровления!
лего и велоспорт прекрасно сочетаются (если кошелек позволяет), посему это увлечение (лего) надолго

Отличная статья, особенно доставило про паяльник, очень жизненно
У меня точно такой же алиекспресовский паяльник и инструментарий, вопрос - какой вы брали мультиметр?

по теме - в серии техник есть много интересных вещей, которые сняты с производства, и посему могут быть неизвестны начинающим (например тросс и рубашка, идентичный переключению передач в велосипеде)
y.ganusyak
Повідомлень:20
З нами з:27 травня 2017, 21:53

Re: Ardulego или Mindstorm для нищебродов

Повідомлення y.ganusyak » 31 травня 2017, 19:51

Qbeat писав:Отличная статья, особенно доставило про паяльник, очень жизненно
У меня точно такой же алиекспресовский паяльник и инструментарий, вопрос - какой вы брали мультиметр?
Если честно, мультиметр "какой-то" за 250 что-ли гривен.
решил купить любой, попользоваться пару месяцев и если будет ясно, что нужно что-то получше, выбирать уже осознанно
Аватар користувача
Sergio
Повідомлень:417
З нами з:04 серпня 2014, 10:22

Re: Ardulego или Mindstorm для нищебродов

Повідомлення Sergio » 31 травня 2017, 20:39

Уже в вайбере общались, но еще раз отмечаю что 1А для контроллера мотора мало. Потому лучше использовать мотор шилд вроде L298, который выдает 2А на канал.
y.ganusyak
Повідомлень:20
З нами з:27 травня 2017, 21:53

Re: Ardulego или Mindstorm для нищебродов

Повідомлення y.ganusyak » 31 травня 2017, 20:45

Sergio писав:Уже в вайбере общались, но еще раз отмечаю что 1А для контроллера мотора мало. Потому лучше использовать мотор шилд вроде L298, который выдает 2А на канал.
в худшем случае будет решение под М-моторы :)
они помещаются в ампер
Аватар користувача
MaximB
Повідомлень:2424
З нами з:24 липня 2012, 02:06
Звідки:Ужгород

Re: Ardulego или Mindstorm для нищебродов

Повідомлення MaximB » 01 червня 2017, 00:35

Очень интересно и познавательно!
Жду продолжения :)
Зображення Зображення Зображення Зображення
Зображення
y.ganusyak
Повідомлень:20
З нами з:27 травня 2017, 21:53

Re: Ardulego или Mindstorm для нищебродов

Повідомлення y.ganusyak » 02 червня 2017, 15:56

Часть вторая: "Третьего дня оно поехало..."

Сегодня рассказ будет не столько о Lego, сколько о том, как впихнуть в него нужную ардуину.

Достаточно быстро стало понятно, что стандартная Arduino UNO справляется со всеми задачами кроме того, чтобы быть компактной. И, конечно, на помощь пришел Aliexpress с платами Arduino Nano по 2 бакса за штучку.

Nano гораздо меньше по размеру, чем UNO и, что самое главное, она помещается внутрь панели 11х5, но об этом - далее в картинках.

Начал я с прототипа на бредборде, чтобы убедиться, что все, что мне нужно работает:
ЗображенняЗображення

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

Основная линия питания на 9V:
ЗображенняЗображення

Отныне Arduino питается от основной линии питания, а не от собственного источника. Благо обещанные 9V попадают в разрешенный для нее диапазон напряжений на входе Vin, на каком-то из следующих шагов вместо блока питания Lego будет LiPo аккумулятор на 11.1V, который при полном заряде дает 12+V, и на этот случай у нас будет понижающая напряжение схема, но сейчас она не нужна.

ЗображенняЗображення

С ардуино у нас уходит линия 5V, необходимая для работы микросхемы L293D, ну и общая земля:
ЗображенняЗображення

Подключаем питание микросхемы. Она питается по двум линиям: 9V и 5V для логики.
Большинство пускает 5V сразу и на оба еnable микросхемы, получая управление в стиле ВКЛ/ВЫКЛ, но в моем случае управление моторами пропорциональное и сигнал на ноги 1 и 9 будет идти от Arduino:
ЗображенняЗображення

Заземляем 4 центральные ноги:
ЗображенняЗображення

И схема почти готова, осталось подключить 6 сигнальных проводов и все контакты ИК приемника:
Как ни странно, получилось все собрать с первого раза. Распиновку этой микросхемы я уже могу рассказать, если меня разбудить в 3 ночи :)
ЗображенняЗображення

Проверили, работает. Собираем плату. На этот раз она получилась гораздо компактнее с учетом того, что на нее уже установлена ардуина. Провод питания с коннектором Lego я припаял от греха подальше, получилось даже лучше, чем я ожидал:
ЗображенняЗображення

То же самое, но уже со всеми установленным компонентами. Получилось вполне компактно и функционально: ИК порт и два выхода для моторов с пропорциональным управлением.
По размеру не намного больше, чем ИК приемник Lego, но чуть умнее:
ЗображенняЗображення

Как и обещано, помещается внутрь панели 5х11. Сейчас не входит по высоте в две склеенных панели, но это исправится, путем впаивания ардуины и L293D прямо в плату, а не на "ножки":
ЗображенняЗображення

Добавляем "фиксатор" платы, чтобы не выпадала и планку для коннекторов моторов:
ЗображенняЗображення

И собираем танк шасси, которое уже что-то умеет:
ЗображенняЗображення

Умеет оно пока не много, а именно выполнять команды: MoveForward, MoveBack, TurnRight, TurnLeft.
Может делать это либо по команде с ИК пульта, с нажатием кнопок "2", "4", "6", "8", либо просто из программы.

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


В общем, пока небольшими шажками, но движемся вперед :)

Купил акселерометр и 6 пар ИК светодиодов и фотодиодов. Будем расширять функциональность :)
Аватар користувача
Sergio
Повідомлень:417
З нами з:04 серпня 2014, 10:22

Re: Ardulego или Mindstorm для нищебродов

Повідомлення Sergio » 02 червня 2017, 16:37

Очень круто!
Касаемо ик. Я использовал какой-то копеешный(1или 2 доллара) блютуз\вайфай модуль. Выходит не так компактно как IR но зато можно управлять с ноутбука, с джойстика.
y.ganusyak
Повідомлень:20
З нами з:27 травня 2017, 21:53

Re: Ardulego или Mindstorm для нищебродов

Повідомлення y.ganusyak » 02 червня 2017, 16:54

Sergio писав:Очень круто!
Касаемо ик. Я использовал какой-то копеешный(1или 2 доллара) блютуз\вайфай модуль. Выходит не так компактно как IR но зато можно управлять с ноутбука, с джойстика.
Я планирую делать сразу RC 2.4GHz, а с ИК, блютуз и вайфай возиться не особо интересно, пока во всяком случае.
Ну и основная идея не в дистанционном управлении, а в автономных функциях, сегодня добавлю ему "глаза" и посмотрю, что он ими там увидит
romaxa11
Повідомлень:77
З нами з:01 грудня 2016, 01:16

Re: Ardulego или Mindstorm для нищебродов

Повідомлення romaxa11 » 04 червня 2017, 07:45

Я також вважав Mindstorm невиправдано дорогим колись. Розуміння ціни прийшло відносно недавно. В ціну крім вартості детальок, приводів, датчиків, програматора закладено ще й унікальні навчальні програми з повним циклом для вчителя і учня. Це і прикладна фізика, робототехніка, програмування, аеронавтика, які знаходяться у відкритому доступі на офіційному сайті, в розділі Education. Плюс унікальне навчальне програмне середовище для дітей. Коли зважити плюси і мінуси, то ціна EV3 в половину вартості хорошого смарта - це недорогий і дуже якісний завершений навчальний пакет. Technic це також унікальний адаптований інженерний проект, можливості якого виправдовують вартість.
Відповісти

Повернутись до “Робототехніка”