Электронный компонент:Мобильная робо-платформа 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-модулей, что позволяет дополнить проект новыми функциями.

Рекомендуемые компоненты:
- Светодиодная лента W2812B
- Grove-модуль с ультразвуковым датчиком
- Grove-модуль с искателем линии
- Grove-модуль с зуммером
- Grove-модуль с радиочастотным трансивером
- Grove-модуль с Bluetooth
О других 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.

Рекомендуемые компоненты:
- USB-вебкамера
- Светодиодная лента W2812B
- Grove-модуль с чипом отслеживания движений
- Grove-модуль с OLED-дисплеем
- Grove-модуль с датчиком света
- Grove-модуль с GPS-модулем
О других Grove-модулях, а также о том, что такое система Grove, читайте по этой ссылке.
Tricycle Bot на базе Arduino Uno
Эта глава расскажет о том, как «оживить» Tricycle Bot при помощи микроконтроллерной платы Arduino Uno.
Необходимые компоненты

- Плата Arduino Uno – 1 шт.
- Шилд Motor Shield V2.0 – 1 шт.
- Шилд Base Shield V2 – 1 шт.
- Мобильная робо-платформа Tricycle Bot – 1 шт.
- Светодиодная лента (60 RGB-светодиодов, 1 метр) – 1 шт.
- Grove-модуль с ультразвуковым датчиком – 1 шт.
- Grove-модуль с зуммером – 1 шт.
Сборка

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

Код
Загрузите в 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 едет прямо, светодиодная лента горит синим цветом, а когда поворачивает – загорается красным, а зуммер издает предупреждающий сигнал
Полезные ссылки
См.также
Внешние ссылки
| Arduino продукты | |
|---|---|
| Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino | 
| Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter | 
| Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle | 
| Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap | 
| 3D-печать | Arduino Materia 101 | 
| Устаревшие устройства | - | 
| Примеры Arduino | |
|---|---|
| Стандартные функции | |
| Основы | 
 | 
| Цифровой сигнал | 
 | 
| Аналоговый сигнал | 
 | 
| Связь | 
 | 
| Управляющие структуры | 
 | 
| Датчики | 
 | 
| Дисплей | Примеры, объясняющие основы управления дисплеем: 
 | 
| Строки | 
 | 
| USB (для Leonardo, Micro и Due плат) | В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due. 
 | 
| Клавиатура | 
 | 
| Мышь | 
 | 
| Разное | |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Электронный компонент
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Мобильная робо-платформа Tricycle Bot
- Платформа Arduino
- Arduino платформа
- Arduino
