Гид по технологиям

Собираем 4WD Arduino-робота с обходом препятствий

11 min read DIY Robotics Обновлено 02 Apr 2026
Сборка 4WD Arduino-робота с обходом препятствий
Сборка 4WD Arduino-робота с обходом препятствий

Зачем этот проект

Небольшой четырёхколёсный робот — отличный учебный проект для понимания основ электроники, управления двигателями и работы с датчиками. Вы научитесь крепить моторы и H-мост, подключать питание, управлять сервоприводом и обрабатывать данные ультразвукового датчика.

Основная идея и поведение

Робот движется вперёд, измеряет расстояние перед собой ультразвуковым сенсором. Если обнаруживается препятствие ближе заданного порога (в исходном проекте — 4 дюйма ≈ 10 см), робот отъезжает назад, поворачивает и продолжает движение.

Important: перед началом убедитесь, что питание отключено при механической сборке и проведении соединений.


Содержание

  • Необходимые детали и инструменты
  • Распаковка и подготовка деталей
  • Сборка нижней части шасси (моторы и H-повод)
  • Установка верхней части шасси, Arduino и серво-механизма
  • Подключение питания и проводки H-моста
  • Подключение ультразвукового датчика и сервопривода
  • Тесты: моторный тест, тест датчика, интегрированный код обхода препятствий
  • Отладка и типичные проблемы
  • Улучшения и альтернативы
  • Чек-листы, критерии приёмки и тест-кейсы
  • Краткий глоссарий и рекомендации

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

  1. Комплект 4WD (4 мотора, шасси, колёса, медные валы и крепёж)
  2. H-мост (движковый драйвер, в этом наборе — красная плата)
  3. Arduino UNO
  4. Ультразвуковой датчик (HC-SR04 или совместимый)
  5. Микросерво (micro servo)
  6. Плата для батареек: 6×AA + опционально держатель 9V для Arduino
  7. Кабели-переходники (Dupont/jumper wires)
  8. Набор винтов и гаек из комплекта
  9. Инструменты: крестовая/шестигранная отвертка, бокорезы/струбцина для снятия изоляции, паяльник (опционально)

Опционально:

  • Зип-застёжки (хомуты) для крепления датчика
  • Изолента, стяжки, дополнительные стойки и гайки

Факты о питании: 6×AA при щелочных батарейках дают примерно 9 В номинально; обратите внимание на допустимый вход Arduino (через Vin ~7–12 В или через разъём Barrel Jack).


Распаковка и осмотр деталей

4wd-arduino

ALT: Фото комплекта 4WD с деталями, двигателями и шасси, лежащими на столе.

Откройте упаковку и рассортируйте детали: моторы, металлические крепления, болты, гайки, колёса, платы и кабели. Убедитесь, что есть четыре мотора и визуально проверьте провода на повреждения.

arduino-bot-parts

ALT: Разложенные на столе компоненты комплекта: моторы, шасси, H-мост и держатели батарей.


Сборка нижней части шасси: моторы и кронштейны

Шаги:

  1. Прикрепите прямоугольные металлические кронштейны к каждому мотору, используя два длинных болта и две гайки на моторной коробке. Убедитесь, что сторона с двумя просверленными отверстиями направлена вниз — это видно на фото.

arduino-bot-bracket

ALT: Металлический кронштейн, прикрученный к мотору, вид крупным планом.

  1. Смотрите, чтобы провода каждого мотора выходили в сторону центра шасси — это упростит прокладку проводки.

arduino-bot-motors

ALT: Моторы установлены на шасси; провода направлены к центру.

  1. Закрепите моторы к нижней части шасси короткими болтами через отверстия в кронштейнах. Вид снизу показывает расположение отверстий.

motor-screws-bottom-view

ALT: Нижняя часть шасси с отмеченными отверстиями для болтов моторов.


Установка H-моста

H-мост — это плата, управляющая направлением и скоростью двигателей. В комплекте она была красного цвета.

  • Прикрутите H-мост к шасси. Если каких-то креплений не хватает, временно можно использовать изоленту, но лучше поставить болты и гайки.

h-bridge-bolts

ALT: H-мост закреплён на шасси; видны места для болтов и гаек.


Подключение источника питания и моторных проводов

Держатель для шести AA-шек обычно снабжён DC-проводом. Удалите штекер, если планируете припаять проводники напрямую или подключить джампер-провода.

battery-holder-dc-removed

ALT: Держатель батарей 6×AA с отрезанным DC-разъёмом; оголённые провода готовы для подключения.

Подключения на H-мосте:

  • Положительный провод батареи — к клемме, помеченной VMS (или V+)
  • Отрицательный провод — к GND

Подключение моторов: на каждой стороне H-моста есть пара клемм для одного мотора. В этом наборе оба красных провода каждой стороны идут в центральный зелёный порт, а оба чёрных — во внешний.

h-bridge-motors-wired-up

ALT: Провода моторов подключены к клеммам H-моста; видно расположение красных и чёрных проводов.

Совет: при необходимости зачистите изоляцию моторных проводов, чтобы они лучше фиксировались в клеммах.


Установка колёс и валов

Наденьте колёса на приводные валы моторов и закрепите медные валы (по одному на каждое крепление) небольшими болтиками.

wheels-on-drive-shafts

ALT: Колёса надеты на приводные валы, рядом лежат медные соединительные валы с болтами.


Верхняя часть шасси и Arduino

Возьмите верхнюю часть шасси и прикрепите Arduino UNO. В идеале фиксируйте плату винтами и стойками, но временно можно использовать изоленту для проверки.

arduino-chassis

ALT: Плата Arduino установлена на верхнюю часть шасси; видна точка крепления и провода.


Сборка серво-держателя и установка серво

  1. Прикрутите пластиковный чёрный крестовидный рычаг (crosspiece) к серво одним из больших острых винтов из комплекта.

black-crossbar-micro-servo

ALT: Крупный план: крестовидный рычаг прикручен к микросерво.

  1. Переверните серво и вставьте в пластиковое кольцо держателя так, чтобы провод был направлен в сторону длинной части держателя. Закрепите маленькими винтами через четыре отверстия.

servo-black-ring

ALT: Серво установлен в пластиковом кольце; вид снизу с четырьмя крепёжными винтами.

  1. Соедините остальные части держателя и защёлкните их вместе.

completed-servo-holder

ALT: Завершённый держатель серво с защёлкнутыми боковинами.

  1. Прикрутите собранный держатель к верхней части шасси в указанном месте.

servo-holder-mounted

ALT: Серво-держатель установлен на шасси; вид сверху.

servo-holder-chassis-bolts

ALT: Отмеченные отверстия для болтов, которыми фиксируется серво-держатель на шасси.


Крепление ультразвукового датчика

Прикрепите HC-SR04 (или совместимый) к держателю серво с помощью zip-застёжек (стяжек). Датчик будет вращаться вместе с серво и «оглядывать» пространство перед роботом.

ultrasonic-sensor-zip-ties

ALT: Ультразвуковой датчик закреплён на серво с помощью двух пластиковых стяжек.


Опционально: сенсорный шилд

Если у вас есть Arduino sensor shield, вы можете установить его поверх UNO. В нашем проекте Шилд не обязателен, но удобен для быстрого подключения датчиков.

arduino-sensor-shield

ALT: Arduino UNO с установленным сенсорным шилдом сверху; вид общих входов и портов.


Подключение ультразвукового датчика и сервопривода к Arduino

У датчика четыре контакта: VCC, GND, TRIG и ECHO.

  • VCC → 5V на Arduino
  • GND → GND
  • TRIG → цифровой пин 12
  • ECHO → цифровой пин 13

Сервопривод подключается к выбранному PWM-порту (в примерах ниже используем пин 9). Питание серво можно брать от 5V Arduino, но при нагрузке лучше использовать отдельный 5V источник.


Подключение управляющих линий H-моста к Arduino

Протяните шесть джампер-проводов от H-моста в центр шасси и подключите их к цифровым/ШИМ-пинам Arduino так, как указано далее. Запомните цвет кабелей и к какому порту они подключены — это важно для кода.

Назначение:

  • ENA → пин 11 (PWM для моторов A)
  • ENB → пин 10 (PWM для моторов B)
  • A1 → пин 5
  • A2 → пин 6
  • B1 → пин 4
  • B2 → пин 3

h-bridge-wires

ALT: Провода от H-моста проложены в центр шасси; видны надписи ENA, IN1, IN2 и т.д.

Теперь закрепите верхнюю часть шасси на медных валах и прикрутите держатели батарей и при необходимости держатель 9V для Arduino.

arduino-bot-wiring

ALT: Собранный робот с проводами, выходящими на Arduino и H-мост.

arduino-bot-final

ALT: Финальный вид собранного робота сверху.


Немного характера роботу

arduino-bad-bot

ALT: Милый «игривый» вид робота с украшениями; робот выглядит оживлённым.


Программирование: быстрые тесты и основной код

Перед загрузкой основного кода выполните два простых теста: тест моторов и тест датчика. Это сократит время на отладку.

В редакторе Arduino (IDE) создайте новые скетчи. Ниже даны рабочие примеры кода. Они написаны простым, понятным стилем и документированы комментариями.

Код 1 — Тест моторов

// Motor test for 4WD H-bridge
// Подключения: ENA=11, ENB=10, A1=5, A2=6, B1=4, B2=3

const int ENA = 11;
const int ENB = 10;
const int A1 = 5;
const int A2 = 6;
const int B1 = 4;
const int B2 = 3;

void setup() {
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  pinMode(B1, OUTPUT);
  pinMode(B2, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  Serial.println("Вперёд");
  forward(200);
  delay(500);

  Serial.println("Назад");
  backward(200);
  delay(500);

  Serial.println("Поворот влево");
  turnLeft(200);
  delay(500);

  Serial.println("Поворот вправо");
  turnRight(200);
  delay(500);
}

void forward(int speed) {
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
  digitalWrite(A1, HIGH);
  digitalWrite(A2, LOW);
  digitalWrite(B1, HIGH);
  digitalWrite(B2, LOW);
}

void backward(int speed) {
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
  digitalWrite(A1, LOW);
  digitalWrite(A2, HIGH);
  digitalWrite(B1, LOW);
  digitalWrite(B2, HIGH);
}

void turnLeft(int speed) {
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
  digitalWrite(A1, LOW);
  digitalWrite(A2, HIGH);
  digitalWrite(B1, HIGH);
  digitalWrite(B2, LOW);
}

void turnRight(int speed) {
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
  digitalWrite(A1, HIGH);
  digitalWrite(A2, LOW);
  digitalWrite(B1, LOW);
  digitalWrite(B2, HIGH);
}

Пояснения: этот тест по очереди заставляет робота ехать вперёд, назад и поворачивать. Если направление моторов противоположно желаемому, поменяйте местами провода одного двигателя или инвертируйте HIGH/LOW в функциях.

Код 2 — Тест ультразвукового датчика (NewPing)

  1. В Arduino IDE скачайте библиотеку NewPing (через Sketch > Include Library > Manage Libraries или Add .ZIP Library).
  2. Создайте скетч:
#include 

#define TRIG_PIN 12
#define ECHO_PIN 13
#define MAX_DISTANCE 200 // см

NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
  Serial.begin(9600);
}

void loop() {
  delay(50);
  unsigned int uS = sonar.ping();
  unsigned int dist = uS / US_ROUNDTRIP_CM; // расстояние в см
  Serial.print("Расстояние: ");
  Serial.print(dist);
  Serial.println(" cm");
}

Откройте Serial Monitor (Инструменты > Последовательный монитор) и наблюдайте изменения дистанции при поднесении руки к датчику.

Код 3 — Полный код обхода препятствий

Этот скетч объединяет контроль моторов и показания датчика. Он использует сервопривод, чтобы при желании сканировать пространство (опционально).

#include 
#include 

// H-bridge pins
const int ENA = 11;
const int ENB = 10;
const int A1 = 5;
const int A2 = 6;
const int B1 = 4;
const int B2 = 3;

// Servo and ultrasonic
Servo eyeServo;
const int SERVO_PIN = 9;
#define TRIG_PIN 12
#define ECHO_PIN 13
#define MAX_DISTANCE 200 // см

NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

const int SAFE_DISTANCE_CM = 10; // ~4 inches ≈ 10 cm

void setup() {
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
  pinMode(B1, OUTPUT);
  pinMode(B2, OUTPUT);

  eyeServo.attach(SERVO_PIN);
  eyeServo.write(90); // центр

  Serial.begin(9600);
}

void loop() {
  unsigned int uS = sonar.ping();
  unsigned int dist = uS / US_ROUNDTRIP_CM; // см
  Serial.print("Дистанция: ");
  Serial.print(dist);
  Serial.println(" cm");

  if (dist > 0 && dist <= SAFE_DISTANCE_CM) {
    // препятствие слишком близко
    stopMotors();
    delay(50);
    backward(200);
    delay(400);
    // поворот влево
    turnLeft(200);
    delay(450);
    stopMotors();
    delay(200);
  } else {
    // едем вперёд
    forward(200);
  }

  delay(100);
}

// Функции движения
void forward(int speed) {
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
  digitalWrite(A1, HIGH);
  digitalWrite(A2, LOW);
  digitalWrite(B1, HIGH);
  digitalWrite(B2, LOW);
}

void backward(int speed) {
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
  digitalWrite(A1, LOW);
  digitalWrite(A2, HIGH);
  digitalWrite(B1, LOW);
  digitalWrite(B2, HIGH);
}

void turnLeft(int speed) {
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
  digitalWrite(A1, LOW);
  digitalWrite(A2, HIGH);
  digitalWrite(B1, HIGH);
  digitalWrite(B2, LOW);
}

void turnRight(int speed) {
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
  digitalWrite(A1, HIGH);
  digitalWrite(A2, LOW);
  digitalWrite(B1, LOW);
  digitalWrite(B2, HIGH);
}

void stopMotors() {
  analogWrite(ENA, 0);
  analogWrite(ENB, 0);
}

Пояснения: пороги скорости и времени поворота зависят от конструкции шасси и состояния батарей. Подберите задержки и скорость эмпирически.


Отладка и типичные проблемы

  1. Робот не двигается вовсе:

    • Проверьте питание батареек и полярность.
    • Убедитесь, что на H-мост подано питание (VMS) и кабели прочно зажаты.
    • Убедитесь, что пины в коде соответствуют реальным подключениям.
  2. Моторы крутятся в обратную сторону:

    • Инвертируйте проводку одного мотора (поменяйте местами его красный и чёрный провод) или поменяйте HIGH/LOW в функциях для этого мотора.
  3. Датчик не реагирует или даёт шумные значения:

    • Проверьте соединения TRIG/ECHO к плате.
    • Установите максимальную дистанцию в NewPing и увеличьте задержку между ping.
    • Убедитесь, что вокруг нет резонансных поверхностей и параллельных отражателей.
  4. Серво «дергается» или искажает показания:

    • Возможно недостаточно питания 5V. Используйте отдельный стабилизированный 5V источник для серво.
  5. H-мост сильно греется:

    • Проверьте ток потребления моторов. При высоких токах H-мост может перегреваться; используйте радиатор и обеспечьте адекватное питание.

Примеры улучшений и альтернативные подходы

  • Альтернативные датчики:

    • Инфракрасные дальномеры (IR) — дешёвы, но чувствительны к цвету/отражению.
    • LIDAR или Time-of-Flight (ToF) — дают более точные измерения и возможность картирования.
  • Управление поведением:

    • Состояния (FSM): движение → обнаружение → манёвр → повтор.
    • Стохастические решения: случайный выбор направления поворота при столкновении.
    • Алгоритмы SLAM/локализации для продвинутых проектов.
  • Альтернативы для привода:

    • Использовать мотор-драйвер с I2C/Serial управлением для упрощения проводки.
    • Применить драйверы с текущим ограничением.

Ментальные модели и эвристики

  • «Чем проще — тем надежнее»: начните с минимальной логики (вперёд/назад/поворот) и постепенно усложняйте.
  • «Разделяй и властвуй»: тестируйте моторы и датчики отдельно, затем интегрируйте.
  • «Безопасность питания»: всегда выключайте питание при смене проводки и при механическом вмешательстве.

Чек-лист перед первым запуском

  • Батареи вставлены и подают нужное напряжение.
  • H-мост правильно подключён к VMS и GND.
  • Провода моторов прочно закреплены в клеммах H-моста.
  • Arduino подключён USB (для загрузки кода) или имеет питание.
  • Ультразвуковой датчик подключён к 5V, GND, TRIG (12) и ECHO (13).
  • Сервопривод подключён к пину 9 и получает питание.
  • Код соответствует назначенным пинам.

Критерии приёмки

  • При запуске скетча Motor Test робот выполняет циклы: вперёд, назад, влево, вправо.
  • При тесте датчика NewPing в Serial Monitor наблюдается корректное отображение дистанции при приближении руки.
  • После установки финального скетча робот движется и меняет траекторию при появлении препятствий ближе 10 см.

Тест-кейсы и приёмо-сдаточные проверки

  1. TC01: Механическая проверка

    • Условие: батареи отключены.
    • Шаги: проверьте затяжку болтов, отсутствие лишних деталей, свободный ход колёс.
    • Ожидаемый результат: колёса свободно вращаются вручную, нет заеданий.
  2. TC02: Проверка питания H-моста

    • Условие: включено питание батарей.
    • Шаги: измерьте напряжение на VMS относительно GND.
    • Ожидаемый результат: ~9 В (для 6×AA);
  3. TC03: Функциональный моторный тест

    • Условие: загружен Motor Test скетч.
    • Шаги: наблюдать последовательность движений.
    • Ожидаемый результат: робот выполняет 4 поведения (вперёд/назад/лево/право).
  4. TC04: Тест датчика

    • Условие: загружен тест NewPing.
    • Шаги: поднести руку до 5–50 см.
    • Ожидаемый результат: в serial monitor показания меняются адекватно.
  5. TC05: Интеграционный тест обхода препятствий

    • Условие: финальный скетч загружен.
    • Шаги: поместить препятствие впереди робота.
    • Ожидаемый результат: робот сработал на пороге, отъехал и повернул.

Руководство по устранению неполадок (короткая инструкция)

  1. Если моторы гудят, но не крутятся — проверьте напряжение батарей при нагрузке.
  2. Если H-мост сильно греется — сократите время тестов, проверьте ток, подумайте об усилении охлаждения.
  3. Если показания датчика нестабильны — добавьте усреднение нескольких измерений в коде.

Безопасность и советы по питанию

  • Никогда не подключайте аккумуляторы с обратной полярностью.
  • Для длённой работы рассматривайте NiMH аккумуляторы для AA (они дают ~1.2 В на элемент) или литий-ионные сборки с соответствующим контроллером.
  • Если вы используете отдельный источник 5V для серво, соедините общую землю (GND) с Arduino и H-мостом.

Что дальше — идеи для улучшений

  • Добавить несколько датчиков и алгоритм выбора наилучшего пути (fusion).
  • Добавить Bluetooth или Wi‑Fi для удалённого управления и телеметрии.
  • Реализовать поведение «следуй за светом» или «поиск стены».
  • Добавить звуковое сопровождение (зуммер) и светодиоды для обратной связи.

Роли и чек-листы (быстро)

  • Для новичка/ученика:

    • Пройти по шагам сборки, выполнить тесты мотор/датчик, загрузить финальный код.
  • Для преподавателя/ментора:

    • Подготовить запасные провода, мультиметр, набор батарей и примеры кода; дать задание по модификации поведения.
  • Для хоббиста/инженера:

    • Оптимизировать питание, заменить H-мост на более мощный драйвер, интегрировать SLAM-датчики.

Мини‑методология: как эффективно учиться на этом проекте

  1. Разделите работу на слои: механика → питание → электроника → ПО.
  2. Тестируйте каждый слой отдельно.
  3. Документируйте изменения: какие пины, цвета проводов, версии кода.
  4. Итеративно улучшайте: небольшие изменения и проверка результата.

Короткий глоссарий (1‑строчные определения)

  • H-мост: электронный модуль для управления направлением и скоростью двигателя.
  • TRIG/ECHO: контакты ультразвукового датчика для отправки и приёма сигнала.
  • PWM: широтно-импульсная модуляция, позволяет регулировать скорость двигателей.
  • Servo: сервопривод для точного поворота датчика.

Заключение

Этот проект даёт надёжную базу: вы собрали механическую часть шасси, подключили H-мост, настроили питание, интегрировали ультразвуковой датчик и написали код для простой стратегии обхода препятствий. Дальше — расширяйте поведение, добавляйте датчики и улучшайте электронику. Главное — разбивайте задачу на маленькие части и тестируйте их отдельно.

Если вы соберёте этот робот или модифицируете его, расскажите о своих результатах и проблемах — сообщество и практическая отладка помогут вам двигаться дальше.


Copyright — ваши заметки и правки к сборке остаются у вас. Удачи и приятной сборки!

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как копировать формулы в Excel эффективно
Excel

Как копировать формулы в Excel эффективно

Фокус на iPad — настройка и лучшие практики
iPad

Фокус на iPad — настройка и лучшие практики

Защитить домашний Wi‑Fi: как не дать соседям воровать интернет
Безопасность сети

Защитить домашний Wi‑Fi: как не дать соседям воровать интернет

Профессиональный баннер LinkedIn в Canva
Дизайн

Профессиональный баннер LinkedIn в Canva

Spotify Wrapped 2024 — как посмотреть и что нового
Музыка

Spotify Wrapped 2024 — как посмотреть и что нового

Проверка отправителей в Gmail против фишинга
Безопасность

Проверка отправителей в Gmail против фишинга