Электронный компонент:Мобильная робо-платформа Tricycle Bot

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

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


Мобильная робо-платформа Tricycle Bot[1]

Робот Tricycle Bot (можно перевести как «трехколесный бот») – это мобильная Grove-совместимая робо-платформа, для управления которой можно использовать платы разных производителей (к примеру, Arduino, Raspberry Pi или Beaglebone). В комплекте для сборки бота есть как структурные детали, так и электронные компоненты, а также руководство для соединения всех этих компонентов друг с другом.

В собранном виде Tricycle Bot имеет три яруса. Между панелями для второго и третьего ярусов ставится пять «стенок» (с отверстиями для коннекторов), а на панели третьего яруса имеется множество отверстий, предназначенных для крепления модулей. Второй ярус предназначен для «сердца» бота (микроконтроллерной платы и макетной платы), а «стенки» второго яруса – для крепления одного-двух Grove-модулей (к примеру, Grove-модулей с RGB-светодиодом или ультразвуковым датчиком).

Кроме того, в комплекте для сборки бота идет держатель для 12-вольтовой батареи.

Купить Tricycle Bot можно по этой ссылке.

Внимание! Микроконтроллерная плата, драйвер моторов или комплектная плата в комплекте Tricycle Bot не идут.

Список компонентов

Компонент Характеристики Количество
Колесо 64 x 30 мм 2 шт.
DC-мотор - 2 шт.
Шариковое колесо 49 х 32 х 22 мм 1 шт.
Держатель батареи 62 х 58 х 30 мм 1 шт.
Ремешок 20.5 х 31.8 мм 1 шт.
Нижняя пластина (1 ярус) 220 х 155 х 3.8 мм 1 шт.
Средняя пластина (2 ярус) 220 х 155 х 3.8 мм 1 шт.
Верхняя пластина (2 ярус) 160 х 158 х 3.8 мм 1 шт.
Передняя стенка 62 х 56 х 3.8 мм 1 шт.
Боковые стенки 62 х 31 х 3.8 мм 4 шт.
Заклепка (1) R3090 4 шт.
Стойка (2) M3x22 6 шт.
Стойка (3) M3x55+6 4 шт.
Винт (4) PM3x8 14 шт.
Винт (5) PM3x25 4 шт.
Гайка (6) M3x2.3 6 шт.
Заклепка (7) R2064 15 шт.
Винт (8) KM2x10 15 шт.
Гайка (9) M2x1.5 15 шт.
Гаечный ключ - 2 шт.
Отвертка - 1 шт.

Цифры в скобочках указывают на номер в инструкции ниже.

Инструкция по сборке



«Мозгом» Tricycle Bot могут послужить разные микроконтроллерные платы – к примеру, Arduino, Raspberry Pi или Beaglebone. При использовании Beaglebone для управления DC-моторами и Grove-модулями можно воспользоваться кейпами (от англ. «cape»; так называют шилды для плат Beaglebone) Motor Bridge Cape v1.0 и Grove Base Cape for Beaglebone v2.

Глава ниже расскажет, какая именно плата лучше подойдет для вашего проекта.

Работа с Arduino

Arduino – это самая известная открытая прототипная платформа. Одной из ее разновидностей являются платы Seeeduino, оснащенные Grove-портами, которые позволяют дополнить проект функциями вроде светодиодной подсветки, дистанционного управления, обнаружения препятствий и т.д.

Seeeduino V4.2

Это открытая Arduino-совместимая плата на базе микроконтроллера ATmega328.

Шилд Motor Shield V2.0

Это шилд, выполняющий роль драйвера моторов. Его можно подключить к Arduino-плате, а затем управлять с его помощью скоростью и направлением движения моторов.

Базовый шилд V2

Это Arduino-совместимый шилд, оснащенный большим количеством Grove-модулей, что позволяет дополнить проект новыми функциями.

Рекомендуемые компоненты:

О других Grove-модулях, а также о том, что такое система Grove, читайте по этой ссылке.

Работа с Raspberry Pi

Raspberry Pi – это один из популярнейших одноплатных компьютеров, и его вычислительная мощность выше, чем у Arduino. Благодаря популярности в сети можно найти много руководств по созданию проектов на базе Raspberry Pi. Некоторые из них можно найти на нашем сайте.

Raspberry Pi 3

В эту версию Raspberry Pi встроена поддержка WLAN 802.11 b/g/n, а также Bluetooth и BLE. Таким образом, вам не нужны дополнительные устройства, чтобы оснастить Raspberry Pi беспроводной связью. По словам разработчиков, Raspberry Pi 3 в три раза производительней Raspberry Pi 1.

Raspberry Pi Motor Board v1.0

Это плата позволяет при помощи Raspberry Pi независимо управлять скоростью и направлением движения двух DC-моторов.

GrovePi+

Это система, которая позволяет использовать Grove-модули на Raspberry Pi. Она также поддерживает модели Raspberry Pi Model B+ и Model A+.

Рекомендуемые компоненты:

О других Grove-модулях, а также о том, что такое система Grove, читайте по этой ссылке.

Работа с Beaglebone

Beaglebone – это еще одно популярное семейство одноплатных компьютеров, использующих операционную систему Linux. В отличие от Raspberry Pi, некоторые платы Beaglebone оснащены Grove-модулями, которыми можно управлять при помощи библиотек MRAA и UPM.

Beaglebone Green Wireless

Эта плата сделана компанией Seeed Studio на основе Beaglebone Black. Оснащена интерфейсами WiFi и Bluetooth, благодаря чему с ее помощью можно сделать, к примеру, радиоуправляемого мобильного робота, как показано в этом руководстве.

Motor Bridge Cape v1.0

Этот «кейп» позволяет управлять двумя шаговыми моторами или четырьмя коллекторными DC-моторами с 6-15 вольтами и не более 1 ампера на один мотор. Кроме того, Motor Bridge Cape v1.0 оснащен интерфейсами для управления шестью сервомоторами и шестью GPIO-контактами, с помощью которых к роботу можно подключить, к примеру, робо-руку.

Grove Base Cape for Beaglebone v2

Это аналог базового шилда для плат Beaglebone. Позволяет подключать Grove-модули к плате Beaglebone.

Рекомендуемые компоненты:

О других Grove-модулях, а также о том, что такое система Grove, читайте по этой ссылке.

Tricycle Bot на базе Arduino Uno

Эта глава расскажет о том, как «оживить» Tricycle Bot при помощи микроконтроллерной платы Arduino Uno.

Необходимые компоненты

Сборка

  1. Соберите Tricycle Bot (более подробно смотрите выше, в разделе «Инструкция по сборке»)
  2. Закрепите Grove-модули на стенках и верхнем ярусе Tricycle Bot
  3. Подключите Grove-модуль с зуммером к контакту D4, Grove-модуль с ультразвуковым датчиком – к контакту D5, а светодиодную ленту – к шилду Base Shield
  4. Готово!

Код

Загрузите в IDE Arduino библиотеки «SeeedMotorShieldV2» (для шилда Motor Shield V2), «Grove_Ultrasonic_Ranger» (для Grove-модуля с ультразвуковым датчиком) и «Adafruit_NeoPixel» (для светодиодной ленты).

Затем загрузите на Arduino Uno код ниже:

/*
 * Демо-скетч «TricycleBotDemo.ino»
 *
 * Робот Tricycle Bot движется и поворачивает перед препятствиями.
 *
 * Авторские права (c) 2016 Seeed Technology Limited.
 * Лицензия MIT
 *
 */

#include "MotorDriver.h"
#include "Adafruit_NeoPixel.h"
#include "Ultrasonic.h"

#define BEE           4
#define LEDPIN        6
#define LEDNUM        10
#define PIXELS_SPACE  128
#define BRIGHTNESS    150
#define DistanceCM    35

Adafruit_NeoPixel strip = Adafruit_NeoPixel(LEDNUM, LEDPIN, NEO_GRB + NEO_KHZ800);
MotorDriver motor;
Ultrasonic ultrasonic(5);

//  в блоке setup() функции вызываются только один раз,
//  в начале работы скетча: 
void setup() {

    pinMode(BEE, OUTPUT);
    strip.setBrightness(BRIGHTNESS);
    strip.begin();
    strip.show();
    motor.begin();
    pixelStart();
}

//  в блоке loop() функции будут выполняться бесконечно,
//  пока работа устройства не будет остановлена:
void loop() {

    long RangeInCentimeters;
    RangeInCentimeters = ultrasonic.MeasureInCentimeters();

    if (RangeInCentimeters < DistanceCM) {
        turnRight();
        beep();
        pixelState2();
    }
    else {
        goStraight();
        pixelState1();
    }
    delay(100);
}

void goStraight() {
    motor.speed(0, 100);
    motor.speed(1, 100);
}

void turnRight() {
    motor.speed(0, -100);
    motor.speed(1, 100);
}

//  едем прямо:
void pixelState1() {
    for (uint32_t t = 0; t < (PIXELS_SPACE * LEDNUM); ++t) {
        for (int i = 0; i < (LEDNUM / 2); i++) {
            strip.setPixelColor(((LEDNUM / 2) - i -1) , triangular_color((t + i * PIXELS_SPACE) % (PIXELS_SPACE * LEDNUM)));
            strip.setPixelColor(i + 5, triangular_color((t + i * PIXELS_SPACE) % (PIXELS_SPACE * LEDNUM)));
        }
        strip.show();
    }
}

//  поворачиваем вправо:
void pixelState2() {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < LEDNUM; j++) {
            strip.setPixelColor(j, 250, 0, 0);
            strip.show();
        }
        delay(50);
        for (int j = 0; j < LEDNUM; j++) {
            strip.setPixelColor(j, 0, 0, 0);
            strip.show();
        }
        delay(50);
    }
}

void pixelStart() {
    for (int i = 0; i < LEDNUM; i++) {
        for (int j = 0; j< 255; j++) {
            strip.setPixelColor(i, 0, j, 0);
            strip.show();
        }
        delay(50);
    }
}

uint32_t triangular_color(uint32_t t) {
    uint32_t c = 0;

    if (t < 256) {
        c = strip.Color(0, 0, t);
    } else if (t < 512) {
        c = strip.Color(0, 0, 511 - t);
    }

    return c;
}

void beep() {
    digitalWrite(BEE, HIGH);
    delay(100);
    digitalWrite(BEE, LOW);
}

Результат

В итоге получится примерно следующее: Видео

  • Tricycle Bot замечает препятствия и поворачивает, когда расстояние до препятствия составляет менее 35 см
  • Когда Tricycle Bot едет прямо, светодиодная лента горит синим цветом, а когда поворачивает – загорается красным, а зуммер издает предупреждающий сигнал

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

См.также

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