Гусеничное шасси на базе Arduino UNO

от
Железо    arduino

Шасси для робота, неотъемлемая часть конструкции любого робота, основная функция которого - перемещение. Китай предлагает не мало готовых вариантов, но большинство из них либо слишком дороги, либо не функциональны, слишком мало места под электронику. Единственный универсальный вариант - шасси для машинки, но монтажные отверстия на мой взгляд не слишком удобные.
0f.jpg

Моя хотелка сказала, хочу гусеничное шасси с возможностью прикручиванием сверху чего угодно, например "руки-манипулятора". То есть цель - получить универсальное шасси под любой роботизированный проект. На алике нашел более-менее подходящие гусеницы, которые через напечатанный переходник отлично встают на популярные ТТ двигатели.
В комплекте к ним идут уже напечатанные втулки, но скажу сразу они не того размера, они просто не налезают на вал двигателя, такие уж китайцы)
02V.jpg
Корпус проектировал в SketchUp, получился немного угловатый, но мне все равно нравится, ибо все идеально выверенно, до 10-ых миллиметра (спасибо штангенциркулю) и напечаталось все очень круто. Пластик использовал PLA.

Как итог, готовая модель у меня выглядит вот так:
TANK2-785x1000.png
А это все комплектующие для сборки:
Bezimeni-1-785x1000.png
Видео сборки:

На видео не показано подключение серво и HC-SR04, так как в моем скетче они не используются, но место на крышке я под них все равно предусмотрел.
Инструкция по сборке:
http://wiki.droidbot.store/lib...0%BB%D0%B5%D1%82.pdf

Проект "Bluetooth машинка 2WD на Arduino UNO"
А это один из возможных проектов на данном шасси. Ничего особенного в нем нет, но можно на скорую руку проверить шасси в действии.

Требуемые компоненты для проекта

Нам необходимо:
Arduino UNO
HC-05
Драйвер двигателей L298N
Две батарейки 18650
Провода

Схема подключенияновый_проект_60_.png

Скетч для Arduino
Во время записи скетча не забудьте отключить HC-05, а то выдаст ошибку!

  1. int motorRight1 = 2;       // Правый мотор.
  2. int motorRight2 = 4;
  3. int enableRight = 3;
  4.  
  5. int motorLeft1 = 6;        // Левый мотор.
  6. int motorLeft2 = 7;
  7. int enableLeft = 5;
  8.  
  9.  
  10. int control;               // Управление двигателями.
  11. int motorSpeed;            // Управление скоростью.
  12.  
  13. void setup() {
  14.   pinMode (motorRight1, OUTPUT);
  15.   pinMode (motorRight2, OUTPUT);
  16.   pinMode (enableRight, OUTPUT);
  17.  
  18.   pinMode (motorLeft1, OUTPUT);
  19.   pinMode (motorLeft2, OUTPUT);
  20.   pinMode (enableLeft, OUTPUT);
  21.  
  22.   Serial.begin (9600);
  23. }
  24.  
  25. void loop()
  26. {
  27.   if (Serial.available() > 0) {
  28.     control = Serial.read();
  29.  
  30.     /*********************** Скорость ***********************/
  31.     if (control == '1') {     // Скорость 1.
  32.       motorSpeed = 120;
  33.     }
  34.     if (control == '2') {     // Скорость 2
  35.       motorSpeed = 170;
  36.     }
  37.     if (control == '3') {     // Скорость 3.
  38.       motorSpeed = 250;
  39.     }
  40.  
  41.     /*********************** Направление ***********************/
  42.     if (control == 'W') {      // Ехать вперёд.
  43.       rightWheelForward ();
  44.       leftWheelForward ();
  45.     }
  46.  
  47.     if (control == 'S') {      // Ехать назад.
  48.       rightWheelBack ();
  49.       leftWheelBack ();
  50.     }
  51.  
  52.     if (control == 'E') {      // Повернуть направо вперёд.
  53.       rightWheelStop ();
  54.       leftWheelForward ();
  55.     }
  56.  
  57.     if (control == 'Q') {      // Повернуть налево вперёд.
  58.       leftWheelStop ();
  59.       rightWheelForward ();
  60.     }
  61.  
  62.     if (control == 'D') {      // Повернуть направо назад.
  63.       rightWheelStop ();
  64.       leftWheelBack ();
  65.     }
  66.  
  67.     if (control == 'A') {      // Повернуть налево назад.
  68.       leftWheelStop ();
  69.       rightWheelBack ();
  70.     }
  71.  
  72.     if (control == 'P') {      // Остановиться.
  73.       rightWheelStop ();
  74.       leftWheelStop ();
  75.     }
  76.   }
  77. }
  78.  
  79. /*********************** Функции колёс ***********************/
  80. void rightWheelForward () {               // Правое колесо вперёд.
  81.   digitalWrite (motorRight1, LOW);
  82.   digitalWrite (motorRight2, HIGH);
  83.   analogWrite(enableRight, motorSpeed);
  84. }
  85.  
  86. void leftWheelForward () {                // Левое колесо вперёд.
  87.   digitalWrite (motorLeft1, LOW);
  88.   digitalWrite (motorLeft2, HIGH);
  89.   analogWrite(enableLeft, motorSpeed);
  90. }
  91.  
  92. void rightWheelBack () {                  // Правое колесо назад.
  93.   digitalWrite (motorRight1, HIGH);
  94.   digitalWrite (motorRight2, LOW);
  95.   analogWrite(enableRight, motorSpeed);
  96. }
  97.  
  98. void leftWheelBack () {                   // Левое колесо назад.
  99.   digitalWrite (motorLeft1, HIGH);
  100.   digitalWrite (motorLeft2, LOW);
  101.   analogWrite(enableLeft, motorSpeed);
  102. }
  103.  
  104. void rightWheelStop () {                  // Правое колесо остановить.
  105.   digitalWrite (motorRight1, LOW);
  106.   digitalWrite (motorRight2, LOW);
  107.   analogWrite(enableRight, 0);
  108. }
  109.  
  110. void leftWheelStop () {                   // Левое колесо остановить.
  111.   digitalWrite (motorLeft1, LOW);
  112.   digitalWrite (motorLeft2, LOW);
  113.   analogWrite(enableLeft, 0);
  114. }

Программа для управление с андроида:
https://arduino-lab.ru/sketches/Remote_control.apk (программа не моя)

На правах рекламы
И кого заинтересовал, вот сам набор, доступен под заказ в моем магазине:
https://droidbot.store/nabor-g...bota-na-baze-arduino