Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Сборка 4WD робота-робомобиля с ИК-управлением на Arduino

Компоненты и материалы

Необходимые инструменты

О проекте

Проект основан на дизайне с Instructables (гусеничный робот), адаптирован под 4WD платформу. Главная проблема оригинала — помехи от двигателей на ИК-приемник (двигатели работали как генераторы, поднимая потенциал земли). Решено сменой пинов ИК-приемника и их программного управления питанием.

Сборка механики

Соберите шасси по инструкции к набору SAINSMART Rover Kit.

Сборка 4WD робота-робомобиля с ИК-управлением на Arduino
Собранная платформа 4WD

Подключение ИК-приемника

ИК-модуль имеет 3 пина: VCC, GND, OUT. Чтобы избежать помех, его питание (VCC/GND) подается с цифровых пинов Arduino, которые программно устанавливаются в HIGH/LOW:

int receiver_pin = 4; // OUT ИК-приемника
int vcc = 5;          // VCC ИК-приемника (цифровой пин)
int gnd = 6;          // GND ИК-приемника (цифровой пин)
Сборка 4WD робота-робомобиля с ИК-управлением на Arduino
Питание ИК-приемника с цифровых пинов Arduino

Подключение драйвера L298N

Двигатель A (правый борт):

int enA = 8;  // PWM скорость
int in1 = 12; // Направление 1
int in2 = 11; // Направление 2

Двигатель B (левый борт):

int enB = 7;  // PWM скорость
int in3 = 10; // Направление 1
int in4 = 9;  // Направление 2

GND L298N соединяется с GND Arduino.

Сборка 4WD робота-робомобиля с ИК-управлением на Arduino
Подключение драйвера L298N к Arduino

Подключение двигателей к L298N

Набор A (правые колеса): «+» (красный) → OUT4, «-» (черный) → OUT3.

Набор B (левые колеса): «+» (красный) → OUT2, «-» (черный) → OUT1.

Батарея: «+» → VCC L298N, «-» → GND L298N.

Сборка 4WD робота-робомобиля с ИК-управлением на Arduino
Полная схема подключения всех модулей
Сборка 4WD робота-робомобиля с ИК-управлением на Arduino
Готовая электроника в корпусе

Код прошивки (Arduino)

Используется библиотека IRremote.h. Коды кнопок пульта определены константами (0xFF18E7 — кнопка «2» вперед, 0xFF10EF — «4» влево, 0xFF30CF — «1» разворот вправо, 0xFF5AA5 — «6» вправо, 0xFF7A85 — «3» разворот влево, 0xFF4AB5 — «8» назад, 0xFF38C7 — «5» стоп). Скорость задана константой 100 (из 255).

#include <IRremote.h>

char command;
int receiver_pin = 4;
int vcc = 5;
int gnd = 6;
int statusled = 13;

IRrecv irrecv(receiver_pin);
decode_results results;

// Мотор A
int enA = 8; int in1 = 12; int in2 = 11;
// Мотор B
int enB = 7; int in3 = 10; int in4 = 9;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(statusled, OUTPUT); digitalWrite(statusled, LOW);
  
  pinMode(enA, OUTPUT); pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT); pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT); pinMode(in4, OUTPUT);
  pinMode(vcc, OUTPUT); pinMode(gnd, OUTPUT);
  digitalWrite(vcc, HIGH); // Включаем питание ИК-приемника
}

void loop() {
  if (irrecv.decode(&results)) {
    digitalWrite(statusled, LOW);
    irrecv.resume();
    
    if (results.value == 0xFF18E7) { // Кнопка 2 - ВПЕРЕД
      digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, 100);
      digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 100);
    }
    else if (results.value == 0xFF10EF) { // Кнопка 4 - ВЛЕВО (поворот на месте)
      digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, 100);
      digitalWrite(in3, LOW);  digitalWrite(in4, LOW); analogWrite(enB, 100);
    }
    else if (results.value == 0xFF30CF) { // Кнопка 1 - РАЗВОРОТ ВПРАВО
      digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, 100);
      digitalWrite(in3, LOW);  digitalWrite(in4, HIGH); analogWrite(enB, 100);
    }
    else if (results.value == 0xFF5AA5) { // Кнопка 6 - ВПРАВО (поворот на месте)
      digitalWrite(in1, LOW);  digitalWrite(in2, LOW); analogWrite(enA, 100);
      digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 100);
    }
    else if (results.value == 0xFF7A85) { // Кнопка 3 - РАЗВОРОТ ВЛЕВО
      digitalWrite(in1, LOW);  digitalWrite(in2, HIGH); analogWrite(enA, 100);
      digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 100);
    }
    else if (results.value == 0xFF4AB5) { // Кнопка 8 - НАЗАД
      digitalWrite(in1, LOW);  digitalWrite(in2, HIGH); analogWrite(enA, 100);
      digitalWrite(in3, LOW);  digitalWrite(in4, HIGH); analogWrite(enB, 100);
    }
    else if (results.value == 0xFF38C7) { // Кнопка 5 - СТОП
      digitalWrite(in1, LOW); digitalWrite(in2, LOW); analogWrite(enA, 100);
      digitalWrite(in3, LOW); digitalWrite(in4, LOW); analogWrite(enB, 100);
    }
  }
}

Схема подключения (обобщенная)

Сборка 4WD робота-робомобиля с ИК-управлением на Arduino
Итоговая схема: Arduino, L298N, ИК-приемник, двигатели, батарея

Производственный процесс

  1. Управляющие цепи: основы, применение и лучшие практики
  2. Конструкторы в C#: виды, примеры и продвинутые паттерны
  3. Создание профессионального универсального пульта на Raspberry Pi с LIRC
  4. Автоматизированная система наполнения и мониторинга бассейна
  5. Система удалённого мониторинга сердечного ритма с алертами AWS IoT
  6. Управление Raspberry Pi с переделанного ИК-пульта: выключение и перезагрузка через LIRC
  7. Уязвимость Delta Controls enteliBUS: удаленное управление системами зданий раскрыто
  8. Облачный мониторинг: система удаленного контроля для управления активами в реальном времени
  9. 5 ключевых преимуществ удаленного контроля производства для современной промышленности
  10. Овладейте пультом мостового крана: безопасность и эффективность на складе