
Сборка
Сборка несложна и интересна для студентов.
Небольшое разочарование происходит при попытке прикрепиить ЖК-экран. В нем крепежные отверстия под 2,5 мм, а в наборе есть только 3 мм. Поэтому необходимо запастись крепежом помельче.
Кроме того, нет крепежа, с помощью которого можно было бы правильно закрепить сервомашинку. Для этого нужно вставить в отверстия сервомашинки вначале резиновые втулки, затем латунные, в которые уже продеваются винты. Но винтов такого размера тоже нет в наборе, поэтому крепить её приходится без втулок, только на винты. Это приводит к тому, что «ушки» сервомашинки быстрее отламываются из-за вибрации.
Программирование
На CD есть только дистрибутив Arduino 0017 под Windows. Если нет желания устанавливать уже устаревшую среду (самая новая — Arduino 0022), или нет возможности (например, если стоит Linux), то нужно сделать всего 2 несложные манипуляции:
1. Установить среду (в Linux - из-под эмулятора wine) и достать оттуда примеры (папка POP-BOT), положить в arduino/examples. Потом эту версию можно удалить.
2. Добавить в arduino/hardware/arduino/boards. txt дополнительный фрагмент.
Примеры программ, приложенные к роботу, оставляют смешанные чувства. Их много, они разнообразны и разной сложности — от «азбуки» вроде мигания светодиодом и управления сервомашинкой, до несложных алгоритмов обнаружения объекта и езды по линии. С другой стороны, написаны они немного на скорую руку, и в основном сделаны методом хардкодинга, то есть все повороты и отрезки записаны константами. Никаких калибровок, порогов — всё подобрано заранее. Поэтому ничего удивительного, что более-менее сложные алгоритмы из примеров сразу не работают, и даже простую езду по линии пришлось редактировать и дописывать код. Кстати, это хорошее упражнение для студентов и шанс устроить соревнование.
Устройство платы
В качестве платы используется модуль POP-168. Он является Arduino-совместимым. Если сравнить с Arduino Nano, то бросается в глаза немного другое расположение выводов, и «урезанность» платы: D10, D11, D12, D13 заняты под разъём ISP-программатора и не выведены сбоку. Но, как бы то ни было, все выводы можно использовать. Нет стабилизатора на 5В (он есть на «большой» плате) и 3.3В.
Выведены 7 аналоговых входов. К ним подключается через разъёмы JST (Japanese Solderless Terminal) вся периферия (датчики, экран). Расположение выводов такое же, как у ИК-дальномеров SHARP GP2D120 и модулей DFRobot, так что дополнительные устройства подключаются без труда. Разъёмы с ключами, так что при всём желании их нельзя вставить неправильно. Их трудно вынимать из гнезда, приходится подцеплять ногтями или щипчиками. На практике обжимка таких разъёмов сложна из-за небольших размеров. Продаются в магазине «Кварц», если необходимо подключить к роботу что-либо не из набора. Для сервомашинок — два отдельных выхода, сделаны тоже с учетом стандартного расположения проводов у сервомашинки. Экран снабжен встроенным контроллером и соединяется с основной платой по интерфейсу RS-232. На плате робота не выведен отдельно аппаратный UART, поэтому экранчик подсоединяется при помощи SoftwareSerial на свободном выходе.
Остальные выводы: 2 кнопки (в режиме входа)/светодиода (в режиме выхода), ценный аналоговый вход А0 работает как выход и занят под динамик. 4 выхода заняты для управления моторами, 4 выведены на программатор. Ещё 2 — RX и TX. Выходит, подключить можно сразу всё, что есть в комплекте: сервомашинку, ИК-дальномер, 2 кнопки, 2 датчика полосы, экранчик, и ещё останутся свободные выводы.
К сожалению, заняты оба вывода с внешним прерыванием. Но проблема невелика. Почти на всех выводах микроконтроллера ATMega88/168/328 можно включить внешние прерывания по смене состояния (с высокого на низкое) — называется PinChangeInterrupt, есть библиотека PCInt. Зато, что гораздо важнее, свободны выводы SDA и SDL для подключения устройств с интерфейсом I2C.
Задачи с роботом
1. Сборка робота
Первая задача состоит в том, чтобы аккуратно собрать робота согласно инструкции. Особое внимание нужно уделить ровному креплению двигателей. Очень легко перепутать верх и низ у основной пластины.
После того, как робот собран в минимальном варианте (пока без датчиков), нужно подсоединить моторы и попробовать запрограммировать базовые движения: старт, стоп, повороты, движение с заданными маневрами, движение по времени. Чтобы студенты могли их написать, достаточно только указать им номера выводов, которые подсоединены к микросхеме управления моторами. Эти движения обязательно нужно оформить как функции, чтобы использовать в дальнейшем.
Когда эти функции отлажены, хорошим заданием на дом будет поместить их в объекты класса «Мотор», то есть переписать эту несложную программу в С++. В конструктор мотора передаются два номера вывода. У мотора есть методы «Вращаться вперёд», «Вращаться назад», «Остановиться». В качестве параметров туда передаётся скорость. Также можно вынести всё в отдельный файл и использовать как библиотеку для дальнейших проектов. Для этого нужно посмотреть, как устроены библиотеки Arduino и оформить аналогично.
2. Отъезд от препятствий
В этой задаче необходимо подсоединить кнопки к роботу и заставить его отъезжать от препятствий при касании. Дополнительный вариант этой задачи — подключить ИК-дальномер SHARP GP2D120 и отъезжать при встрече с препятствием на расстоянии.
Код, имеющийся в примерах (файл BumperRobot. pde), вполне работает, но полезнее написать его самостоятельно, чтобы освоить работу со входами.
3. Езда по линии с одним датчиком
Самая первая задача — это езда по линии с одним датчиком, когда робот отслеживает край линии. Входящий в набор пример программы не очень хорош и предназначен для варианта с двумя датчиками, поэтому лучше написать её самостоятельно, дополнив предыдущую программу. Хорошо, если студенты попробуют разные варианты расположения датчика относительно робота: под основанием, на длинном креплении, строго по центру или чуть с краю.
4. Езда по линии с двумя датчиками
Когда робот может пройти дистанцию с одним датчиком, можно добавить второй. Теперь робот будет проходить дистанцию быстрее, так как не будет сбиваться и задерживаться на черных поперечных полосках.
Уже можно проводить соревнования роботов на время. Как показывает практика, эти соревнования вызывают интерес и азарт у студентов, а побеждает тот, кто не боится экспериментировать с расположением датчиков и догадывается применить уже известный ему из лекций П-регулятор.
5. Калибровка
Когда становится понятно, что подбирать параметр Ref долго и сложно, естественно встаёт вопрос о калибровке датчиков робота. Несложно написать код, в котором дважды производятся измерения по нажатию кнопки. Затем берется среднее арифметическое и оно считается параметром Ref. Эта процедура выполняется для обоих датчиков линии. Задача простая и вполне может быть выполнена дома.
6. Езда с компасом
Если есть в наличии электронный компас, можно сделать интересную задачу, в которой робот всегда поворачивается и едет в нужную сторону света.
Компас HMC6352 подключается через интерфейс I2C. Купить его можно в магазине 4robots. ru. Вначале необходимо подключить компас к плате Arduino. Для этого нужно открыть в Интернете страничку про него на сайте sparkfun и посмотреть Wiring Example - схему подключения и пример программы. Затем можно поднести магнит (он есть в любом электромоторе) и посмотреть, как изменятся показания компаса.
Затем можно ставить компас на робота при условии, что заблаговременно подготовлен провод с разъёмами JST для подключения к плате робота.
Устанавливать компас нужно строго горизонтально на мачте длиной около 20 см, чтобы не мешали магниты в двигателях. Для езды в нужную сторону света достаточно запрограммировать простой П-регулятор.
7. Энкодеры
Роботу очень полезно обладать хотя бы примитивной системой одометрии. Очень часто для измерения пройденного пути используют оптические энкодеры, подобные тем, что есть в механической «мышке».
Возможно соорудить энкодеры из входящих в набор ИК-отражателей. Бумажные круги должны быть заранее нарисованы и распечатаны в AutoCAD. На каждом — по 20 чёрных и 20 белых полосок. Для начала, энкодеры нужно очень аккуратно закрепить так, чтобы датчик не тёрся о колесо, и при этом был бы достаточно близко к нему, чтобы различать полоски. Чтобы оценить, насколько точно закреплён датчик, необходимо написать простую программу, которая бы считала количество переходов между белым и чёрным и выводила их на экран компьютера. То, что видят в данный момент датчики (черную или белую полосу), удобно выводить на встроенных светодиодах D2 и D4.
На практике, если крутить колесо рукой и смотреть на счетчик полосок, и на левом, и на правом «пропадает» 2-3 полоски, то есть после полного оборота колеса датчик насчитывает около 37 переходов.
Самая простая задача с энкодерами — это выровнять скорости моторов, приведя их какой-либо заданной наперед скорости. Это получается при помощи ПИ-регулятора (Д-составляющая здесь была не очень критична).
Программа получается длинная и сложная.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


