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

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1892 статей для сайта.

Контакты:

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


Ambox content.png Черновик


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

Tricycle Bot 3 1.jpg

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

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

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

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

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

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

Tricycle Bot 4 2.jpg
Компонент Характеристики Количество
Колесо 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 Assebling Instructions (1).png


Tricycle Bot Assebling Instructions (2).png


«Мозгом» 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.

Tricycle Bot cover 3.JPG

Шилд Motor Shield V2.0

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

Tricycle Bot-Motorshield 01 4.jpg

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

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

Tricycle Bot Base Shield v2-1 5.png

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

О других 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.

Tricycle Bot rpi 3 6.jpg

Raspberry Pi Motor Board v1.0

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

Tricycle Bot Raspberry Pi Motor Board v1.0 7.jpg

GrovePi+

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

Raspberry Pi Motor Board v1.0 GrovePi+ 8.jpg

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

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

Работа с Beaglebone

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

Beaglebone Green Wireless

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

GrovePi+ BBGW cover 9.png

Motor Bridge Cape v1.0

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

Motor bridge driver 10.jpg

Grove Base Cape for Beaglebone v2

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

Grove Base Cape for BeagleBone v2 product view 1200 11.jpg

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

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

Tricycle Bot на базе Arduino Uno

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

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

Tricycle Bot Things we need 12.png

Сборка

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

Код

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

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

  1. /*
  2.  * Демо-скетч «TricycleBotDemo.ino»
  3.  *
  4.  * Робот Tricycle Bot движется и поворачивает перед препятствиями.
  5.  *
  6.  * Авторские права (c) 2016 Seeed Technology Limited.
  7.  * Лицензия MIT
  8.  *
  9.  */
  10.  
  11. #include "MotorDriver.h"
  12. #include "Adafruit_NeoPixel.h"
  13. #include "Ultrasonic.h"
  14.  
  15. #define BEE           4
  16. #define LEDPIN        6
  17. #define LEDNUM        10
  18. #define PIXELS_SPACE  128
  19. #define BRIGHTNESS    150
  20. #define DistanceCM    35
  21.  
  22. Adafruit_NeoPixel strip = Adafruit_NeoPixel(LEDNUM, LEDPIN, NEO_GRB + NEO_KHZ800);
  23. MotorDriver motor;
  24. Ultrasonic ultrasonic(5);
  25.  
  26. //  в блоке setup() функции вызываются только один раз,
  27. //  в начале работы скетча:
  28. void setup() {
  29.  
  30.     pinMode(BEE, OUTPUT);
  31.     strip.setBrightness(BRIGHTNESS);
  32.     strip.begin();
  33.     strip.show();
  34.     motor.begin();
  35.     pixelStart();
  36. }
  37.  
  38. //  в блоке loop() функции будут выполняться бесконечно,
  39. //  пока работа устройства не будет остановлена:
  40. void loop() {
  41.  
  42.     long RangeInCentimeters;
  43.     RangeInCentimeters = ultrasonic.MeasureInCentimeters();
  44.  
  45.     if (RangeInCentimeters < DistanceCM) {
  46.         turnRight();
  47.         beep();
  48.         pixelState2();
  49.     }
  50.     else {
  51.         goStraight();
  52.         pixelState1();
  53.     }
  54.     delay(100);
  55. }
  56.  
  57. void goStraight() {
  58.     motor.speed(0, 100);
  59.     motor.speed(1, 100);
  60. }
  61.  
  62. void turnRight() {
  63.     motor.speed(0, -100);
  64.     motor.speed(1, 100);
  65. }
  66.  
  67. //  едем прямо:
  68. void pixelState1() {
  69.     for (uint32_t t = 0; t < (PIXELS_SPACE * LEDNUM); ++t) {
  70.         for (int i = 0; i < (LEDNUM / 2); i++) {
  71.             strip.setPixelColor(((LEDNUM / 2) - i -1) , triangular_color((t + i * PIXELS_SPACE) % (PIXELS_SPACE * LEDNUM)));
  72.             strip.setPixelColor(i + 5, triangular_color((t + i * PIXELS_SPACE) % (PIXELS_SPACE * LEDNUM)));
  73.         }
  74.         strip.show();
  75.     }
  76. }
  77.  
  78. //  поворачиваем вправо:
  79. void pixelState2() {
  80.     for (int i = 0; i < 3; i++) {
  81.         for (int j = 0; j < LEDNUM; j++) {
  82.             strip.setPixelColor(j, 250, 0, 0);
  83.             strip.show();
  84.         }
  85.         delay(50);
  86.         for (int j = 0; j < LEDNUM; j++) {
  87.             strip.setPixelColor(j, 0, 0, 0);
  88.             strip.show();
  89.         }
  90.         delay(50);
  91.     }
  92. }
  93.  
  94. void pixelStart() {
  95.     for (int i = 0; i < LEDNUM; i++) {
  96.         for (int j = 0; j< 255; j++) {
  97.             strip.setPixelColor(i, 0, j, 0);
  98.             strip.show();
  99.         }
  100.         delay(50);
  101.     }
  102. }
  103.  
  104. uint32_t triangular_color(uint32_t t) {
  105.     uint32_t c = 0;
  106.  
  107.     if (t < 256) {
  108.         c = strip.Color(0, 0, t);
  109.     } else if (t < 512) {
  110.         c = strip.Color(0, 0, 511 - t);
  111.     }
  112.  
  113.     return c;
  114. }
  115.  
  116. void beep() {
  117.     digitalWrite(BEE, HIGH);
  118.     delay(100);
  119.     digitalWrite(BEE, LOW);
  120. }

Результат

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

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

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

См.также

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

  1. wiki.seeed.cc - Tricycle Bot