Всем здравствуйте. Приобрёл я этот "кит" и хочу поделиться своим опытом и попросить советов у других специалистов по некоторым вопросам.
Для начала, про этот набор можно почитать на сайте хозяев - Texas Instruments
http://ti.com/rslkКоротко, для тех кому лень лопатить сайт на ангельском языке, коротко расскажу: вы можете приобрести или базовый набор за 99$ (80€), или адванснутый набор за 199$ (160€). Ну или купив базовый набор, докупить апгрейд до адванснутого за 109$ (88€)
*(суммы без налогов).
Набор состоит из платы Launchpad MSP432P401R и механических компонентов предоставляемых фирмой
Pololu, хорошо известной тем, кто увлекается робототехникой. Состоит из шасси Romi с двигателями и платой распределения питания (содержит импульсный стабилизатор 5в (или 3.3в) и два драйвера двигателей DRV8838), шесть концевых выключателей, линейку из 8 сенсоров QTR-8RC (в даташите ошибочно указано QTR-8A), 8 аккумуляторов NiMH типоразмера AA (316), комплект проводов, кусок маленькой беспаечной макетки, горсточку резисторов, конденсаторов и светодиодов (не надейтесь! горсточка будет когда все эти компоненты ссыпете вместе. Конкретно светодиодов там две штуки. причем разных) для выполнения лабораторных работ и необходимый крепеж: винтики, гаечки с не метрической резьбой, стоечки итд. - это я примерно перечислил что входит в базовый набор. А вот фотка для иллюстрации (это из инструкции по сборке адванснутого набора: (позиции J, P, Q уже из адванснутого набора)
В адванснутый набор дополнительно входят энкодеры для двигателей(J), инфракрасные дальномеры с держателями (QP) и два "бустерпака":
SimpleLink Bluetooth® low energy CC2650 module BoosterPack™ plug-in module и SimpleLink Wi-Fi® CC3120 wireless network processor BoosterPack plug-in module.
Если я был упомянувши лабораторные работы, то для этого набора есть 20 уроков на сайте TI, которые ведет Джонатан Валвано. Они содержат лекции, состоящие из 1-2-3 видео и лабораторные работы, которые предстоит выполнить самостоятельно.
Кстати,
ПРЕДУПРЕЖДЕНИЕ. Приобретя этот набор вы не сможете просто его собрав, получить робота, который побежит и займёт на соревнованиях первое место! Вы просто его соберете, но программное обеспечение вам предстоит написать полностью самостоятельно.
И над этим придётся попотеть. Так же вашу задачу не облегчит то, что некоторые моменты в лекциях упомянуты весьма поверхностно, Даташиты у TI написаны довольно тяжелым (для меня, по крайней мере) языком и содержат неточности и пробелы. Даже при сборке возникнут проблемы. Например, установка энкодера на двигатель, выполненная "по инструкции" приведёт к кривой конструкции. Собственно, даже в даташите это видно:
т.е. нужно запаивать контакты сняв полностью пластмассовую обойму - тогда контакты попадут в гнёзда. Также, в инструкции контакты выхода сигналов с энкодера, предлагается выполнять прямыми контактами слегка изогнув "на 45 градусов" (они видны на приведённой картинке). Мне кажется, правильнее было бы их выполнить просто угловыми контактами - они там никому не мешают.
Следующая проблема с дистанцерами для крепежа отражательного сенсора QTR-8 - всё здорово, но с такого расстояния, которое будет между сенсором и поверхностью - он линию не увидит. Т.е. придется подбирать что поставить другое. По моим прикидкам надо бы дистанцер на 20мм. Тут еще надо сказать пару ласковых слов и о шасси Romi. Конечно его там наперфорировали отверстиями, типа на все случаи жизни. Правда, полного чертежа этих отверстий толком нет. И когда надо что-то закрепить, оказывается что ни одно отверстие для этого не годится. Так и с крепежом этой линейки сенсора - в инструкции указано в какие отверстия вставлять винтики. Но закрепив, оказывается, что сенсор стоит не совсем по центру, да и не очень то параллельно оси двигателей.
Теперь про ось двигателей... Когда я его собирал, у меня этот робот никак не хотел стоять на своих опорных трёх точках - два колеса и шарик сзади. Потом, до меня дошло, что я его собирал без батарей в батарейном отсеке. Когда я этот отсек заполнил (кстати, для его питания надо 6 батарей) - центр тяжести сместился и робот встал как надо. Но, при резком торможении, проекция сил выходит за этот треугольник и робот "клюёт носом". Всё бы ничего, но при этом сенсор QTR-8 ложится на поверхность пола и перестаёт получать отражённый сигнал. В результате чего выдаёт, что вокруг всё черное, давая ложные данные программе. Я своему роботу на скорую руку приделал спереди уголок с маленьким шариком, который не даёт слишком сильно "клевать". Но в планах, на 3D принтере напечатать раму, на которую будут крепиться сенсор линии QTR-8 и сенсор цвета (в этот комплект не входит, но нужно для участия в соревнованиях) и не позволять этому сенсору "ложиться".
Да, этот робот приобретался для участия в соревновании по проходу лабиринта из линий. Вот картинка из условий соревнований с примером трассы:
Робот должен за макимально короткое время, следуя линии пройти от зеленого поля до красного. Но приехав на соревнования, трасса оказалась значительно короче. Вот сейчас зашел на сайт, там уже внесены изменения, что трасса может иметь и такой вид:
Злые языки говорят, что два других участника в моей категории (свободная конструкция, любители)из-за этого сняли своих роботов с соревнований, в результате, мой робот оказался единственным и таким образом занял первое место (звучит гомерический хохот). Были, конечно, роботы в категории Лего, но они мне были не конкуренты.
Вот мой чемпион:
Одно из отличий от оригинальной сборки состоит в том, что разъём на плате ланчпада я припаял не сверху, а снизу. Подумал, что пусть все провода будут спрятаны внутри. Но при сборке, выяснилось, что крепежные отверстия стоят так близко к разъёму, что пластиковые стойки идущие в комплекте вставить уже не возможно (напомнило проблему: почему у П2К крепежные отверстия 2.5мм, а прикручивают винтами М2). Но у меня оказался комплект из 4-х металлических стоек М3 длиной 42мм, которые очень хорошо подошли. Правда опять же, отверстий шасси, чтобы точно прикрутить этот ланчпад не оказалось, поэтому эти стойки стоят "с небольшим отклонением от нормали".
Еще одна проблема в этой конструкции - распределение питания. Схема выглядит примерно так. источник питания из 6 батарей по 1.2в в сумме даёт 7.2в идёт на плату и на драйвера двигателей. Там, как уже упоминал, стоит импульсный стабилизатор на 5в, которые используются для питания сенсоров дистанции, энкодера и идут на ланчпад. На ланчпаде эти 5в преобразуются в 3.3в и питают микроконтроллер, сенсор QTR-8, драйвер двигателя и еще чего-нибудь. Например, у меня OLED дисплей и сенсор цвета. При этом, при программировании и отладке, когда ланчпад подключен к USB (как в данном случае на фото) он питается от компа. И чтобы не перегрузить порт компьютера, на это время надо разрывать цепь между платой распределения питания и ланчпадом. Поначалу я так и делал, но потом, меня это задолбало, да и разъём от этого начал сильно изнашиваться и плохо контачить, поэтому я встроил маленький ключ на полевике, который не даёт току с ланчпада попасть на плату распределения и наоборот, открывается, когда на плате распределения нажата кнопка включающая систему от батарей. Выполнен просто навесным монтажом и засунут в термоусадку.
Еще у меня применен OLED дисплей 64х128. Есть одна лекция посвященная подключению к этому ланчпаду дисплея Nokia5110. Этот (эти) дисплеи ни в один в комплект не входят. Поэтому при их отсутствии соответствующую лекцию можно пропустить. Но у меня был (получил в награду за какую-то статью, здесь, на радиокоте), поэтому попробовал, но мне уже LCD стекляшки как-то не очень нравятся, поэтому по такому же принципу подключил OLED SPI дисплей.
Ну это было вступление.
Добавлено after 25 minutes 9 seconds:В данный момент, я воюю с сенсором определения цвета. Собственно, с ним я занимался в последний день перед соревнованиями, когда я понял, что ничего не получается, плюнул и оставил так, чтобы хотя бы отличало красный цвет. В качестве датчика используется TCS3200 купленный у китайцев на e-bay. На работе попросил напечатать на листе бумаги два поля: красное и зелёное. Печатали на лазерном принтере. Так вот красное поле этот сенсор определяет - видно, что показания красного выделяются по сравнению с остальными, а вот на зеленом поле доминирование зеленого сигнала, что-то не наблюдается. И вот не могу сообразить в чем вина. В образце (вроде в принтере нет зелёного картриджа, а есть голубой и желтый) или в "белых" светодиодах подсветки.
Добавлено after 3 hours 32 minutes 11 seconds:Еще помучал этот сенсор. В комнате стало темнее... и красная компонента "сдулась" так что теперь зелёная всё же выделяется над остальными. Правда не так явно, как в случае красного поля.
Это отладочная информация на дисплее. Гистограммы слева на право: красный, зелёный, синий, прозрачный - прямые данные с сенсора, последние три красный, зелёный, синий пропорционально к прозрачному. Горизонтальная полоса - порог активации для красного цвета. Собственно, так как неизвестно из какого материала и насколько точным будет цвет на трассе, я оставляю для себя возможность подстроить определение цветов на месте. Поэтому в меню конфигурации есть три параметра: порог красного, зелёного и синего. Левая фото - зелёное поле, правая - на красном поле.
Думаю, что надо озаботиться тем, чтобы светодиоды равномернее освещали площадку под сенсором и устранить паразитную засветку сенсора от этих светодиодов. Правда, на этом модуле, светодиоды впаяны полностью в плату и их нельзя "подогнуть", чтобы светили в другое место. А у меня, почему-то в коробочке нет ни одного белого светодиода. Придется заказывать в китае и ждать месяц пока придут.
Но нужно решить еще одну проблему. Проблема распределения ресурсов. У данного микроконтроллера имеется 4 таймера типа A. Каждый из этих таймеров имеет 5 регистров захвата. Правда, нулевой регистр может еще выполнять функцию установки периода таймера. Так вот, по конструкции получилось так, что TIMER_A0 используется для генерации PWM двигателя. А TIMER_A3 используется для захвата сигналов с энкодеров двигателей. Потом я присвоил TIMER_A1 для работы с отражательным сенсором. Остался свободным TIMER_A2. Но с ним проблема. Для работы с TCS3200 надо измерять частоту на его выходе. А как измерить частоту? Подсчитать число импульсов за заданный промежуток времени. Ну вот я и считаю. А время отмеряю по прерываниям SysTick, которые происходят каждые 2 миллисекунды. Да вот проблема подать этот сигнал на вход CLK таймера. У TIMER_A2 он может соединиться с выводом P8.1. Но к моему величайшему сожалению сей вывод на плате ланчпада совсем не разведён. Зато я могу подключиться ко входу третьего таймера. Поменять местами? Смотрим, как можно соединить входы захвата второго таймера. Вроде всё нормально, кроме одного. Порт 6.7 - Он пока свободен. Но до тех пор пока я не захочу подключить BLE boosterpack. Этот модуль использует этот вывод как сброс.
Так что пока я подключил его к третьему таймеру и, возможно этот таймер буду шарить между энкодером и цветовым сенсором.