Сборка

Сборка несложна и интересна для студентов.

Небольшое разочарование происходит при попытке прикрепиить ЖК-экран. В нем крепежные отверстия под 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