Электронный компонент:Шилд-бот V1.1

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Шилд-бот V1.1[1]

Shield botV1.1.jpg

Шилд-бот V1.1 – это мобильная робо-платформа начального уровня. В версию V1.1 был добавлен USB-порт, чтобы с его помощью заряжать батарею шилд-бота. Кроме того, разработчики заявляют, что оптимизировали электрическую цепь шилд-бота, благодаря чему зарядка стала более эффективной. Кроме того, для более быстрой зарядки можно использовать контакт Vin на Arduino/Seeeduino.

Примечание: Arduino-совместимая плата в комплекте не идет.

Купить шилд-бот можно по этой ссылке.

Особенности

  • Просто начать. Настройка шилд-бота выполняется за считанные минуты
  • Расширяемость. Шилд-бот оснащен Grove-коннекторами, которые не требуют пайки и позволяют быстро подключить к нему различные устройства ввода и вывода данных (датчики, светодиоды, дисплеи и пр.). Кроме того, на шилд-боте имеются гребешки контактов, с помощью которых к нему можно подключать Arduino-совместимые шилды
  • Открытый код. Шилд бот создан с прицелом на то, чтобы его можно было модифицировать, трансформировать и адаптировать под самые разные нужды
  • Совместимость с Arduino. Шилд-бот – это Arduino-шилд, что делает его совместимым со множеством шилдов и прочих устройств семейства Arduino
  • Эффективная зарядка. Шилд-бот очень быстро заряжается.

Примечание: В предыдущей версии выходное напряжение было выше 4.0 вольт, а в новой версии оно было увеличено до 4.5 вольт.

Характеристики

  • Датчики – 5 шт. (ИК-отражающие, для слежения и следования по линии)
  • Батарея – 900 мАч (литий-ионная, перезаряжаемая)
  • Моторы – 2 шт. (маленькие металлические моторы-редукторы; передаточное число – 160:1)
  • Grove-порты – 6 шт. (для расширения проекта)
  • Гребешки контактов – для Arduino-совместимых шилдов

Режимы зарядки

Режим Сила тока (амперы) Выходная мощность (ватты) Мощность зарядки (ватты) Эффективность зарядки (%) Время зарядки (часы)
Через USB 0.396 3.94 3.56 90.36 2.50
Через контакт Vin 0.7 6.78 6.30 92.92 1.41

Интерфейсы, моторы и датчики

Shield Bot V1.2 Foto 1.JPG
  • Переключатель питания. Если поставить его в положение «OFF» (т.е. «выкл»), то шилд-бот не будет работать, но вы по-прежнему сможете заряжать его батарею от USB-порта
  • USB-порт. Порт MiniUSB, предназначенный для зарядки батареи
  • Grove-порты. Предназначены для подключения Grove-модулей. Дают доступ к контактам D0, D1, D2, D3, D4, D5, A4 и A5
  • Потенциометр. Предназначен для настройки чувствительности ИК-датчиков. Если крутить его по часовой стрелке, чувствительность будет увеличиваться, а если против – уменьшаться
  • ИК-датчики. Используются для обнаружения линии. Пронумерованы от S1 до S5. Оснащены светодиодами, которые загораются синим, если датчики обнаруживают неотражающую поверхность
  • Переключатель ИК-датчиков. Если поставить его в положение «ON», это подключит ИК-датчики к I/O контактам A0, A1, A2, A3 и D4. В демо-примере «LineFollowingSimple» эта возможность позволяет использовать данные от ИК-датчиков для управления шилд-ботом. Если этот переключатель стоит в положении «OFF», Seeeduino/Arduino не сможет управлять шилд-ботом при помощи данных от ИК-датчиков
  • Гребешки для шилдов. Позволяют подключать к шилд-боту другие шилды

Примечания:

  1. Если ИК-датчик S5 включен, вы не сможете использовать Grove-коннекторы J14 и J13
  2. Можно использовать только одну последовательную линию Arduino (Grove-порт UART или J11), т.к. у всех них коммуникация проходит через линию D1/TX

Статусные индикаторы

Шилд-бот оснащен множеством светодиодных индикаторов, информирующих пользователя о различных состояниях устройства:

Shield bot 1.2 LEDs.JPG


Номера индикаторов Функция Статус
D22 Питание Горит зеленым, если светодиод включен
D23 и D24 Статус зарядки Загорается красный светодиод, если шилд-бот заряжается, или зеленый – если зарядка завершена.
D18 Сброс Горит красным, если нажата кнопка сброса.
D11 и D12 Индикаторы правого мотора Загорается зеленый светодиод, если мотор движется вперед, или красный – если назад. Если горят оба, то мотор неподвижен.
D13 и D15 Индикаторы левого мотора Загорается зеленый светодиод, если мотор движется вперед, или красный – если назад. Если горят оба, то мотор неподвижен.
D5, D10, D14, D17, D19 Индикаторы датчиков света Горит синим, если обнаружена неотражающая поверхность (например, линия черной ленты).

Структура

Position for seeeduino.jpg

Части 1, 2 и 3 сделаны на 3D-принтере. Части 1 и 2 (держатели мотора) одинаковы.

Shield Bot V1.1 Print diagram 1.JPG


Shield Bot V1.1 3d print 1.JPG

С чего начать

В этой главе будет рассказано, как настроить шилд-бота.

Подготовка

1. Подключите плату Arduino к нижней части шилд-бота, а затем подключите его к ПК при помощи USB-кабеля

ShieldBot Programming2.JPG

2. Перед загрузкой кода переключатель ИК-датчиков лучше выставить в положение «OFF». В противном случае шилд-бот может неожиданно начать двигаться и даже напугать вас!

Для того, чтобы управлять шилд-ботом, разработчики написали библиотеку «Shieldbot» (ссылку на скачивание смотрите ниже, в разделе «Полезные ссылки»). В комплекте с нею также идет несколько демо-скетчей, демонстрирующих различные функции шилд-бота.

3. Загрузите библиотеку «Shieldbot» (ссылка на скачивание) и распакуйте ее. Перед использованием библиотеки рекомендуем ознакомиться с инструкциями в файле «Note.txt»

4. Скопируйте папку библиотеки «Shieldbot» и поместите ее в папку библиотек IDE Arduino. Она находится по маршруту «...\arduino-1.0.1\libraries»

Подключение батареи

Чтобы шилд-бот мог ездить по земле, в него нужно установить батарею. Когда батарея будет установлена, вы сможете заряжать ее при помощи кабеля MiniUSB. Во время зарядки батареи будет гореть красный светодиод, а когда зарядка будет завершена – зеленый.

Примечания:

  • Если вам нужно загрузить код, USB-порт платы Arduino/Seeeduino нужно подключить к ПК. USB-порт шилд-бота используется для зарядки батареи
  • У шилд-бота версии V1.1 управляющие контакты были изменены. Поэтому перед использованием библиотеки «Shieldbot» соответствующим образом отредактируйте файл «*.cpp». Порядок редактирования файла «*.cpp» описан в текстовом файле «Note.txt»

Демо-скетчи

Эта глава расскажет о скетчах, демонстрирующих различные функции шилд-бота.

Демо-скетч 1: Управление моторами

1. Откройте IDE Arduino и кликните на Файл > Примеры > Shieldbot > drive (File > Examples > Shieldbot > drive). Также выберите правильные плату и порт в меню Инструменты > Плата (Tools > Board) и Инструменты > Порт (Tools > Port)

2. Загрузите этот скетч на Arduino/Seeeduino. Если код будет загружен успешно, в нижней части должна появиться надпись «Загрузка завершена» («Done uploading»)

3. Загрузив код, отключите кабель от USB-порта

4. Поставьте шилд-бот на просторное место и поставьте переключатель питания в положение «ON»

5. После этого шилд-бот начнет перемещаться с заданной скоростью

Демо-скетч 2: Следование по черной линии

Шилд-бот оснащен ИК-датчиками (S1, S2, S3, S4, S5), которые умеют определять неотражающую поверхность (например, линию из черной ленты). Если ИК-датчик обнаруживает такую поверхность, у него загорается синий светодиод.

Демо-скетч ниже демонстрирует, как сделать так, чтобы шилд-бот следовал по черной линии. Важно: убедитесь, что переключатели ИК-датчиков стоят в положении «ON», и ни один из шилдов не использует контакты A0, A1, A2, A3 и D4.

1. При помощи USB-кабеля подключите Seeeduino к ПК и загрузите на шилд-бота скетч «LineFollowingSimple»

2. Загрузив код, поставьте шилд-бота на заранее подготовленный «трек»:

Shield Bot Line Finder.jpg

3. Покрутите потенциометр, чтобы изменить чувствительность ИК-датчиков. Если покрутить потенциометр по часовой стрелке, чувствительность будет увеличиваться, а если против – уменьшаться

Примеры использования

Эта глава расскажет о проектах, в которых используется шилд-бот V1.1.

Проект 1: Часы

Это очень простые часы. В этом проекте одно колесо шилд-бота движется вперед, а другое – назад. В результате ИК-датчики (вместе с шилд-ботом) перемещаются внутри круглого «обода», указывая на минуты. Спустя час шилд-бот передвигается по линейным рельсам, на которых расположены часовые отметки. Линейные «рельсы» сделаны из целлофановой ленты и дерева, оставшегося после лазерной резки.

Shield Bot V1.1 Team1 2.jpg

Проект 2: Бот-бармен

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

Shield Bot V1.1 Team7 2.jpg

Проект 3: Игра «Саймон»

Интересный, но незаконченный проект по созданию клона игры «Саймон» на два игрока. Шилд-бот проигрывает ноты, после чего игрок должен показать эти ноты на выпиленном «привидении». Затем шилд-бот подъезжает вперед и при помощи ИК-датчиков определяет, правильные ли ноты отметил игрок. В игру могут играть даже незрячие – благодаря тексту на шрифте Брайля.

Shield Bot V1.1 Team6 2.jpg

Проект 4: Рисующая машина

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

Shield Bot V1.1 Team8.jpg

Функции библиотеки «Shieldbot»

Чтобы воспользоваться в своем скетче библиотекой «Shieldbot», просто установите ее в IDE Arduino, а затем, работая над скетчем, просто создайте экземпляр класса Shieldbot в верхней части скетча, выше блока setup():

#include <Shieldbot.h>               //  подключение библиотеки «Shieldbot»
Shieldbot shieldbot = Shieldbot();   //  объявление объекта «shieldbot»

Кроме того, библиотека «Shieldbot» включает в себя несколько функций:

  • Функция setMaxSpeed(both). Задает максимальную скорость обоих моторов. Аргумент both – это и есть задаваемая скорость. Тип данных – int. Значения для аргумента both варьируются между «0» (полностью выключен) и «255» (полная скорость).
  • Функция setMaxSpeed(left, right). Задает максимальную скорость для левого и правого моторов. Аргументы left – скорость для левого мотора, right – для правого. Тип данных – int. Значения для аргументов left и right варьируются между «0» (полностью выключен) и «255» (полная скорость).
  • Функция rightMotor(mag). Активирует правый мотор. Чтобы мотор поехал вперед, в аргументе mag (тип данных – char) нужно указать положительное значение, а назад – отрицательное. Значение «-128» – полная скорость назад, «0» – не двигаться, «128» – полная скорость вперед. Если уменьшить скорость правого мотора, то шилд-бот начнет поворачиваться в этом направлении. Если направить моторы в противоположные стороны, шилд-бот начнется вертеться.
  • Функция leftMotor(mag). Активирует левый мотор. Чтобы мотор поехал вперед, в аргументе mag (тип данных – char) нужно указать положительное значение, а назад – отрицательное. Значение «-128» – полная скорость назад, «0» – не двигаться, «128» – полная скорость вперед.
  • Функция forward(). Включает моторы и заставляет их двигаться прямо вперед на скорости, заданной функцией setMaxSpeed().
  • Функция backward(). Включает моторы и заставляет их двигаться прямо назад на скорости, заданной функцией setMaxSpeed().
  • Функция drive(left, right). Напрямую вызывает функции leftMotor() и rightMotor(). Аргумент left – для левого мотора, а right – для правого мотора. Тип данных для обоих аргументов – char. Значения для этих аргументов варьируются между «-128» (полный назад), «0» (остановка») и «128» (полный вперед).
  • Функция stop(). Отключает моторы. В качестве альтернативы можно воспользоваться drive(0,0)
  • Функция stopLeft(). Отключает левый мотор. В качестве альтернативы можно воспользоваться drive(0,X)
  • Функция stopRight(). Отключает правый мотор.
  • Функция fastStop(). Быстро отключает оба мотора. Негативно влияет на драйвер моторов, так что используйте на свой страх и риск.
  • Функция fastStopLeft(). Быстро отключает левый мотор. Негативно влияет на драйвер моторов, так что используйте на свой страх и риск.
  • Функция fastStopRight(). Быстро отключает правый мотор. Негативно влияет на драйвер моторов, так что используйте на свой страх и риск.
  • Функции readS1(), readS2(), readS3(), readS4(), readS5(). Используются для считывания данных с ИК-датчиков. Но просто добавить эти функции в код недостаточно – вам также нужно подключить эти ИК-датчики к портам Arduino-чипа, выставив переключатель нужного ИК-датчика в положение «ON». Если переставить его в «OFF», это освободит порты Arduino-чипа для других задач. Возвращаемое значение: LOW – если датчик обнаружил светоотражающую (например, белую) поверхность, HIGH – если обнаружил поверхность, которая не отражает свет (например, черная).
ShieldBot driveLibrary.png

Полезные ссылки

См.также

Внешние ссылки