-
Введение
-
Глава 1. Аппаратная основа
- Содержание Главы 1
- Подготовка
- Плата Arduino UNO
- Плата управления моторами
- Плата связи с датчиками
- Аппаратная основа на базе набора miniQ
- Аппаратная основа на базе набора Turtle
- Аппаратная основа на базе набора ShieldBot
- Как ученики строили своих miniQ роботов
- Этапы сборки
- Система электропитания робота
- Провода энкодеров и датчиков линии
- Завершение главы 1
-
Глава 2. Начало работ с системой программирования Arduino
- Содержание Главы 2
- Подготовка
- Общие правила организации систем управления
- Входные данные. Датчики
- Обработка данных. Микроконтроллер
- Выходные данные. Исполнительные устройства
- То, что нужно всегда помнить
- Начало работы с системой Arduino
- Загрузка программы-примера “Мигающий огонь”
- Модификация программы “Мигающий огонь”
- Алгоритм программы “Мигающий огонь”
- Завершение Главы 2
-
Глава 3. Управление тяговыми моторами
-
Глава 4. Связь с ультразвуковым датчиком расстояния
- Содержание Главы 4
- Подготовка
- Постановка задач
- Электрическое подключение датчиков расстояния
- Разработка алгоритма
- Исходный текст
- Адреса Echo и Trigger как глобальные переменные
- Отладка и испытание программы
- Руководство пользователя
- Приложение 4.1. Подсказки по сложному алгоритму
- Приложение 4.2. Исходный текст (для упрощённого алгоритма)
- Завершение главы 4
- Факультативная часть главы 4
-
Глава 5. Робот следует за рукой или лидером
- Содержание главы 5
- Подготовка
- Релейный регулятор
- Пропорциональный регулятор
- Утилиты
- UTILIT_OneRangeMeter ()
- UTILIT_Motors_Control ()
- UTILIT_Hand_Follow_Proportional (int _range_needed)
- Два факультативных упражнения после перерыва
- Программа следования за лидером
- Постановка задачи
- Макрос следования за Лидером
- Отладка и испытание программы Programm_modul_5_Leader_Follow.ino
- Если что-то не так
- Исследуем робота
- Важные замечания
- Приложение 5.1 Алгоритм пропорционального регулирования
- Приложение 5.2. Исходный текст утилиты регулятора для следования за рукой
- Приложение 5.3. Документация для макроса и утилит следования за лидером
- MACROS_Leader_Follow (int _distasnce_to_leader)
- UTILIT_LeftRightRangeMeter ()
- UTILIT_Leader_Follow_Proportional (int _range_needed)
- UTILIT_Motors_Control () & UTILIT_Motors_Stop ()
- Завершение главы 5
- Как можно улучшить нашего робота?
-
Глава 6. Структура программного обеспечения
- Содержание главы 6
- Подготовка
- Уровни программного обеспечения
- loop ()
- Задачи
- Макросы
- Утилиты
- Драйверы. Библиотеки. Калькуляторы
- Ввод-вывод
- Глобальные переменные
- Правила обмена информации между уровнями
- Практическое занятие 6.1. Учтём трение в механизмах
- Практическое занятие 6.2. Доворот в сторону лидера умножением
- Практическое занятие 6.3. Доворот в сторону лидера сложением
- Практическое занятие 6.4. Доворот в сторону лидера обнулением
- Практическое занятие 6.5. Делаем калькулятор
- Гонки за лидером
- Послесловие
- Список программ для Ардуино
- Лицензионное соглашение
Этапы сборки
Сборку робота мы вели в следующей последовательности:
- Этап 1 – установка колёс, моторов, энкодеров и датчиков линии на круглую пластину. Установка держателя основной батареи, выключателя питания и гнезда подзарядки. Сборка электрических цепей питания.
- Этап 2 – установка платы Arduino UNO и подключение её к цепям электропитания.
- Этап 3 – установка платы MotorShield и подключение её к цепям электропитания и моторам.
- Этап 4 – установка платы TroykaShield и подключение к ней кабелей энкодеров и датчиков линии.
Этап 1
- Сначала надо закрепить пластмассовыми держателями на круглой пластине два электромотора с колёсами и энкодерами (если Вы используете энкодеры). К электрическим выводам моторов надо аккуратно припаять провода длиной по 15 сантиметров. Эти провода впоследствии будут подключаться к винтовым зажимам платы MotorShield. Для того чтобы избежать случайного обрыва прижмите их к пластине каким-нибудь зажимом с винтом. Зажим можно сделать из кусочка фанеры или пластика.
- Затем надо прикрепить к круглой пластине шаровую опору. Наш робот опирается на три точки – два колеса и шаровую опору. Опора расположена снизу в корме робота. А блок батарей – сверху прямо над шаровой опорой.
- Затем следует разместить впереди по ходу движения два датчика линии. Датчики расположены сверху круглой пластины, но их фотоэлементы смотрят вниз через отверстия в ней. Для того чтобы датчики не вылезали за контур, надо надфилем немного расширить соответствующие отверстия в пластине.
- От датчиков линии и энкодеров идут кабели (по три провода в каждом). Кабели поставляются в комплекте с датчиками и энкодерами. Если Вы используете и датчики линии, и энкодеры, то у Вас будет шесть кабелей по три провода, которые впоследствии будут подключаться к контактам платы TroykaShield сверху. Пока просто свяжите эти кабели в один пучок и выведите его за пределы пластины спереди.
- Далее надо разместить в корме робота пластмассовый блок для аккумуляторов основного питания. Лучше всего закрепить блок вертикально на коротких стойках высотой 5 мм. Возможно, для этого придётся просверлить в круглой пластине дополнительные отверстия. Стойки можно прикрепить к самому блоку винтами, пропустив их через отверстия, к которым крепятся плюсовые электрические контакты для аккумуляторов. Если стойки металлические, то надо быть внимательным – на них будет присутствовать напряжение от аккумуляторов. Напряжение, которые мы используем, безопасно для человека, но для электроники оно может быть губительным. Поэтому следует убедиться, что стойки касаются только блока аккумуляторов и пластмассовой круглой пластины – основания робота.
- Тумблер отключения питания надо приклеить к блоку аккумуляторов так, чтобы его рычажок смотрел назад. Разъём блока подзарядки требуется разместить на пластине, предварительно просверлив для него отверстие в удобном месте.
- Четыре аккумулятора в передней части пластмассового блока батарей лучше установить до монтажа платы Arduino UNO. Впоследствии надо будет поместить кусочек тонкого картона между аккумуляторами и пакетом плат для того чтобы исключить их касание.
- Блок аккумуляторов, тумблер выключения питания и разъём для подзарядки соединяются электрическими проводами посредством пайки так, чтобы получить на выходе две пары проводов подводки электропитания к платам Arduino UNO и MotorShield. Подключение питания потребует отдельной работы, поэтому её описание выведено в особый раздел “Система питания робота”.
Что должно получиться, можно увидеть на фотографии.

Этап 2
Следующий этап сборки робота – монтаж и электрическое подключение платы Arduino UNO.
- Приложите плату Arduino UNO к роботу сверху так, чтобы разъёмы USB и питания платы смотрели вперёд по ходу движения. Сама плата должна располагаться между колёсами робота, над моторами и датчиками линии, не касаясь их.
- У платы Arduino UNO есть четыре отверстия для крепления её на стойки. В нашем случае можно использовать только три из них, так как одно расположено слишком близко к электрическим элементам платы и поставить там стойку не удастся.
- Закрепите плату на круглой пластине тремя стойками так, чтобы плата не касалась других элементов робота. Возможно, придётся просверлить в пластине дополнительные отверстия для того, чтобы стойки крепления стояли строго вертикально. Прижмите плату к стойкам, завинтив другие стойки поверх платы. На следующем этапе на эти стойки ляжет плата MotorShield. Длина верхних стоек должна быть либо 10, либо 15 миллиметров, в зависимости от длины штырей платы MotorShield.
- Далее надо подвести к плате электропитание от одной из пар проводов, которые мы сделали на предыдущем этапе. Тут есть два варианта. Либо припаять провода непосредственно к площадкам платы Arduino UNO снизу. Либо припаять провода к разъёму, который будет вставляться в разъём питания платы. Любой вариант годится. Наши ученики выбрали первый.
Должно получиться, как показано на фотографии ниже. Неподключенными останется пара проводов питания платы MotorShield, четыре провода от моторов, которые впоследствии мы подключим к винтовым зажимам платы MotorShield, и пучок проводов от датчиков линии и энкодеров.

Этап 3
Теперь пришло время закрепить на роботе плату MotorShield и подключить к ней питание и моторы.
Это очень просто – аккуратно вставляем контакты боковых разъёмов платы MotorShield в гнёзда платы Arduino UNO и навинчиваем поверх MotorShield три стойки, на которые впоследствии будет крепиться плата TroykaShield.
Здесь есть небольшая тонкость. Как говорилось выше, высота стоек между платами должна быть либо 10, либо 15 мм в зависимости от длины контактов боковых разъёмов плат.
Следить за этим надо, потому что стойки крепления должны давать возможность контактам полностью войти в гнёзда электрических разъёмов. Иначе робот будет работать неустойчиво или вообще не будет работать.
В принципе свинчивать платы стойками не обязательно; можно обойтись только боковыми разъёмами. Робот будет работать и без стоек. Но со стойками робот выглядит надёжнее.
После механического крепления платы MotorShield надо подключить к ней провода питания и моторов. Все эти провода подключаются к винтовым зажимам на плате.
Сначала подключается питание. Обратите внимание на полярность подключения – “плюс” батареи к “плюсу” платы, и “минус” батареи к “минусу” платы. Если перепутать, большой беды не будет, – на плате есть устройства защиты от переполюсовки, но работать плата и моторы не будут.
Пары проводов от моторов надо подключить, соответственно, к парным (правому и левому) входам платы. Полярность здесь важна, но на данном этапе некритична. Если мы перепутаем полярность, то моторы будут крутиться в сторону противоположную той, на которую мы рассчитываем.
В этом случае надо будет просто поменять подключение проводов от соответствующего мотора.
Что действительно важно – убедится, что оба провода от правого мотора подключены к одному парному входу, а оба провода левого – к другому. Если мы перепутаем левую и правую пару, то на этапе настройки программы драйвера мы так же это увидим и просто поменяем подключение пар проводов.
Должно получиться что-то подобное на фотографии внизу. Неподключённым останется пучок кабелей от энкодеров и датчиков линии. На фотографии видно, как он спускается под крышку стола.

Этап 4
Теперь подключим плату Troyka Shield. Для этого просто аккуратно вставим контакты боковых разъёмов платы в гнёзда платы MotorShield и закрепим плату на стойках. Плата TroykaShield последняя в пакете электроники робота, поэтому стойки нам уже не нужны. Можно прикрепить плату простыми винтами.
Почему контакты боковых разъёмов одной платы нужно вставлять в гнёзда другой платы аккуратно? Дело в том, что число пар гнездо-контакт на платах очень много. Если хоть одна пара не будет соединена или соединена неправильно, то робот работать не будет, а электроника может быть испорчена.
Если у Вас есть датчики линии и энкодеры, то теперь можно подключить к плате Troyka Shield пучок проводов от них. Как это сделать описано в разделе “Провода энкодеров и датчиков линии”.
На фотографии ниже Вы можете видеть, что получилось после этого этапа работ.

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