Роботы · путеводитель

Роботы и машинки на Arduino: с чего начать, что докупить, какие уроки нужны

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

Сразу по делу. Из одного стартового набора робот не собрать: мотор в нём один, маленький и без редуктора, а колёс, шасси и драйвера на два мотора нет совсем. Зато в нём есть всё, чтобы к покупке шасси вы уже умели крутить мотор, поворачивать сервопривод и читать датчик — это уроки 22, 23 и 24. Дальше робот — это ещё две-три детали и один вечер.

Какой робот собирать первым

Четыре робота, с которыми приходят чаще всего. Переключайте карточки: там, что нужно из набора, что докупить и какие уроки стоит пройти до того, как тратить деньги.

Машинка, которая сама объезжает препятствияИз набораПлата Uno, макетная плата, провода. Мотор из набора один ибез редуктора — он для уроков, не для ездыДокупитьРобоплатформа на двух колёсах с моторами (1 190 ₽),драйвер L298N (396 ₽), дальномер HC-SR04 (160 ₽) ипитание: два аккумулятора 18650 с держателем или модульпитания на 18650 (648 ₽)Уроки заранее23 «Мотор и транзистор», 12 «Монитор порта» и разбордальномера в базе знанийСколько возитьсяВечер на сборку, вечер на настройку скоростей и порогаСамый частый первый робот: скетч на странице
Номера уроков — из нашего курса на наборе. Цены — карточки магазина на 22 октября 2026 года, без доставки.

Если выбирать один — берите машинку-автопилот. У неё самая понятная механика, самый короткий скетч и самый громкий момент успеха: машинка впервые сама отворачивает от стены. Робот-рука эффектнее, но половина вечера уйдёт на питание сервоприводов, а робот по линии требует трассы и терпения.

Из чего состоит любой робот

ЧастьЧто уже есть в набореЧто докупить
МозгПлата Uno из набора — её хватает любому роботу из этой статьиНичего. Nano — та же плата, только занимает меньше места на шасси
НогиМотор в наборе один и без редуктора: для опытов урока 23, не для езды. Колёс нетРобоплатформа с двумя мотор-редукторами TT и роликом — или 4WD, если хочется проходимости
МышцыТранзистор из набора крутит мотор в одну сторону (урок 23)Драйвер на два мотора: L298N или Motor Shield — вперёд, назад и скорость
ГлазаФоторезистор и кнопкиДальномер HC-SR04 для препятствий, датчики линии для трассы
Голос и слухЗуммер, монитор портаИК-приёмник под пульт или HC-06 под телефон
ЕдаНичего: набор питается от USBДва аккумулятора 18650 с держателем или модуль питания на 18650: моторам 7–8 В, плате свои 5 В

Шасси: два колеса, четыре или гусеницы

Два ведущих колеса и шарик-ролик сзади — самая простая и самая управляемая схема: робот разворачивается на месте, драйвер нужен на два канала. Четыре колеса выглядят серьёзнее и лучше едут по ковру, но драйвер остаётся тот же двухканальный: левые моторы подключают параллельно на один канал, правые — на другой, и ток на канал удваивается. Для L298N четыре мотора TT — предел, два — с запасом. Гусеницы — для улицы и песка; дома они только скребут пол.

Моторы TT, которые стоят на всех недорогих платформах, по даташиту живут от 3 до 6 В. С двух аккумуляторов 7,4 В после падения на L298N им достаётся около 5,5 В — в самый раз, а батарейки AA дотягивают лишь до четырёх. Как устроен драйвер, почему он забирает себе два вольта и как задавать скорость — в разборе моторов и L298N.

Питание: главная причина, почему робот не едет

Четыре батарейки AA дают 6 В, из которых L298N съедает около двух — моторам остаётся четыре, и машинка еле ползёт, а при старте плата перезагружается от просадки. Поэтому робота кормят двумя литиевыми аккумуляторами 18650 — это 7,4 В и запас по току, — или модулем питания с одним 18650 и двумя выходами: 5 В на плату и регулируемые 5–12 В на моторы (с одного аккумулятора на 12 В тока немного, для двух TT хватает). Плату от того же источника, что и моторы, питают только через стабилизатор; USB-порт компьютера — только для прошивки. И никогда не берите ток для моторов с вывода 5V платы: это путь к сгоревшему стабилизатору. Подробно про токи и просадки — в статье про питание Arduino.

Скетч 1. Машинка объезжает препятствия

Драйвер L298N: IN1, IN2 и ENA — левый мотор, IN3, IN4 и ENB — правый, ENA и ENB на выводах с ШИМ. Дальномер HC-SR04: Trig на 3, Echo на 2. Логика в три строки: ближе 25 см — чуть назад и разворот, иначе — прямо. Скорости со знаком: минус значит назад. Всего полсотни строк и ни одной библиотеки.

// Машинка на двух моторах через L298N объезжает препятствия по HC-SR04.
const byte IN1 = 7, IN2 = 8, ENA = 5;   // левый мотор
const byte IN3 = 9, IN4 = 10, ENB = 6;  // правый мотор
const byte TRIG = 3, ECHO = 2;          // дальномер
const int SPEED = 180;                  // 0-255, ниже ~100 моторы обычно не трогаются

void setup() {
  pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA, OUTPUT);
  pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENB, OUTPUT);
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  Serial.begin(9600);
}

// Расстояние в сантиметрах; 0 — эхо не вернулось.
unsigned int distanceCm() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  unsigned long us = pulseIn(ECHO, HIGH, 25000);  // ждём не дольше 25 мс
  return us / 58;
}

void drive(int left, int right) {  // скорость со знаком: минус — назад
  digitalWrite(IN1, left > 0);
  digitalWrite(IN2, left < 0);
  digitalWrite(IN3, right > 0);
  digitalWrite(IN4, right < 0);
  analogWrite(ENA, abs(left));
  analogWrite(ENB, abs(right));
}

void loop() {
  unsigned int cm = distanceCm();
  Serial.println(cm);
  if (cm > 0 && cm < 25) {
    drive(-SPEED, -SPEED);  // чуть назад
    delay(300);
    drive(SPEED, -SPEED);   // разворот на месте
    delay(400);
  } else {
    drive(SPEED, SPEED);
  }
  delay(60);  // HC-SR04 нельзя дёргать чаще
}

Первое, что вы увидите: машинка едет не прямо, а дугой — два одинаковых мотора одинаково не крутятся. Лечится поправкой скорости одному колесу в drive(). Второе: моторы гудят, но не трогаются — ШИМ ниже порога трогания, поднимите SPEED или проверьте питание. Третье: дальномер видит стену только в упор или ловит пол — поставьте его ровно, выше бампера и не за пластиком. Как работает сам дальномер и почему он иногда возвращает ноль — в разборе HC-SR04.

Скетч 2. Машинка с телефона

Модуль HC-06 выглядит для платы как последовательный порт: телефон шлёт буквы, плата их читает. Любое приложение-«пульт» для Bluetooth из магазина приложений умеет отправлять символы по кнопкам — назначьте F, B, L, R и S и включите в приложении повтор команды, пока кнопка удерживается. Модуль подключают к программному порту, чтобы не мешать прошивке через USB, а его вход RXD — через делитель на 3,3 В. В статье про Bluetooth модуль сидит на выводах 10 и 11; здесь 10 занят мотором, поэтому взяты 4 и 11. Как собрать делитель и спарить телефон, рассказано в статье про Bluetooth.

// Машинка с телефона через Bluetooth HC-06: команды F, B, L, R, S.
#include <SoftwareSerial.h>

SoftwareSerial bt(4, 11);  // 4 — к TXD модуля, 11 — к RXD через делитель на 3,3 В
const byte IN1 = 7, IN2 = 8, ENA = 5;
const byte IN3 = 9, IN4 = 10, ENB = 6;
const int SPEED = 200;
unsigned long lastCommand = 0;

void setup() {
  pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA, OUTPUT);
  pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENB, OUTPUT);
  bt.begin(9600);  // скорость HC-06 с завода
}

void drive(int left, int right) {
  digitalWrite(IN1, left > 0);
  digitalWrite(IN2, left < 0);
  digitalWrite(IN3, right > 0);
  digitalWrite(IN4, right < 0);
  analogWrite(ENA, abs(left));
  analogWrite(ENB, abs(right));
}

void loop() {
  if (bt.available()) {
    char c = bt.read();
    switch (c) {
      case 'F': drive(SPEED, SPEED); break;
      case 'B': drive(-SPEED, -SPEED); break;
      case 'L': drive(-SPEED, SPEED); break;
      case 'R': drive(SPEED, -SPEED); break;
      case 'S': drive(0, 0); break;
      default:  return;  // переводы строки и прочий мусор не считаем командой
    }
    lastCommand = millis();
  }
  // Команд нет дольше секунды — стоим, а не уезжаем в стену.
  if (millis() - lastCommand > 1000) {
    drive(0, 0);
  }
}

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

Скетч 3. Робот-рука с джойстиком

Манипулятор — это три-четыре сервопривода, поставленные друг на друга: поворот основания, плечо, локоть, захват. Джойстик — два потенциометра и кнопка: отклонили ручку — угол ползёт, отпустили — рука замерла, нажали — захват сжался. Сервоприводы MG996R держат до 10 кг·см, для руки длиной в 20 см этого хватает на лёгкие предметы.

// Робот-рука на трёх сервоприводах: джойстик задаёт положение.
#include <Servo.h>

Servo base, shoulder, grip;        // поворот, плечо, захват
const byte JOY_X = A0, JOY_Y = A1;  // джойстик: поворот и плечо
const byte BTN = 12;                // кнопка джойстика: сжать/разжать

int baseAngle = 90, shoulderAngle = 90;
bool closed = false;
bool btnWasDown = false;

void setup() {
  base.attach(9);
  shoulder.attach(10);
  grip.attach(11);
  pinMode(BTN, INPUT_PULLUP);
}

// Джойстик в центре — стоим; отклонили — угол ползёт в ту сторону.
int step(int raw) {
  if (raw < 400) return -1;
  if (raw > 624) return 1;
  return 0;
}

void loop() {
  baseAngle = constrain(baseAngle + step(analogRead(JOY_X)), 10, 170);
  shoulderAngle = constrain(shoulderAngle + step(analogRead(JOY_Y)), 30, 150);
  base.write(baseAngle);
  shoulder.write(shoulderAngle);

  bool btnDown = digitalRead(BTN) == LOW;
  if (btnDown && !btnWasDown) {    // ловим момент нажатия, а не удержание
    closed = !closed;
    grip.write(closed ? 40 : 110);
    delay(50);                      // от дребезга
  }
  btnWasDown = btnDown;
  delay(15);  // плавность: ~60 шагов в секунду
}

Три сервопривода под нагрузкой тянут два-три ампера, а в момент старта — вдвое больше. Питайте их от отдельного блока 5–6 В на 5 А или от понижающего преобразователя на 3 А с аккумуляторов, землю соединяйте с платой, а сигнальные провода — на выводы с ШИМ не обязательно: библиотеке Servo годится любой цифровой. Если рука дёргается и плата перезагружается при каждом движении — это питание, не код. Как устроен сервопривод и что значит угол в write() — в уроке 22.

Робот по линии: что отличается

Датчик линии — это ИК-светодиод и фототранзистор рядом: от белого пола свет отражается, от чёрной изоленты — нет. Два датчика по краям трассы и простое правило «левый увидел чёрное — поворачиваем влево» уже везут робота по кругу; на соревнованиях ставят пять-девять датчиков и подравнивают поворот плавно. Трассу рисуют чёрной изолентой на белом ватмане, ширина линии — 15–20 мм. В наборе ROBORACE линейка из девяти датчиков и трасса уже в коробке, а в методичке к нему есть проект езды по линии; набор «Малыш» с пятью датчиками магазин обещает скоро.

Что купить

Всё перечисленное — с карточек нашего магазина, цены и наличие на 22 октября 2026 года. Для машинки-автопилота хватит первых трёх позиций.

Робоплатформа на двух колёсах

Акриловый корпус, два мотор-редуктора TT с колёсами, опорный ролик, крепёж. Есть вариант на четыре колеса за 1 490 ₽ и вариант с готовой электроникой.

1 190 ₽
В магазин
арт. 1833 · цена и наличие на 22.10.2026

Драйвер моторов L298N

Два мотора по 2 А, питание моторов 5–35 В, на плате стабилизатор 5 В. Для 4WD левая и правая пара подключаются параллельно на свои каналы.

396 ₽
В магазин
арт. 60 · цена и наличие на 22.10.2026

Ультразвуковой дальномер HC-SR04

Видит препятствия от 2 см до 4 м. Питание 5 В, четыре провода, библиотека не нужна — в скетче выше он читается одной функцией.

160 ₽
В магазин
цена и наличие на 22.10.2026

Источник питания на 18650: 5 В и 5–12 В

Один аккумулятор 18650 (покупается отдельно), два выхода: 5 В для платы и регулируемые 5–12 В для моторов, зарядка через USB-C прямо в роботе.

648 ₽
В магазин
цена и наличие на 22.10.2026

Сервопривод MG996R

Металлические шестерни, 10 кг·см, поворот 0–180°. Основа руки-манипулятора; для захвата подойдёт и маленький TS90A за 308 ₽.

881 ₽
В магазин
цена и наличие на 22.10.2026

Набор ROBORACE — машинка целиком

Если не хочется собирать по частям: Nano, два мотор-модуля с колёсами, линейка из девяти датчиков линии, HC-SR04, ИК-приёмник с пультом, питание от аккумулятора, трасса и методичка с проектами: линия, объезд, пульт. 14+.

7 400 ₽
В магазин
цена и наличие на 22.10.2026

Что ломается у всех

  • Плата перезагружается при старте моторов. Просадка питания. Отдельный источник для моторов, конденсатор 470–1000 мкФ у драйвера, общая земля.
  • Едет дугой. Моторы разные. Поправка скорости одному колесу; для серьёзной точности — моторы с энкодерами.
  • Гудит и стоит. ШИМ ниже порога трогания или аккумуляторы сели. Поднимите скорость, проверьте напряжение под нагрузкой.
  • Прошивка не заливается. Bluetooth-модуль висит на выводах 0 и 1 и занимает порт. Переставьте его на программный порт, как в скетче, или отключайте на время прошивки.
  • Дальномер видит стену, которой нет. Эхо ловит пол или собственный корпус. Поднимите датчик и наклоните чуть вверх.

Эта тема в Trema IDE

  • Скетчи со страницы собираются как есть: библиотеки Servo и SoftwareSerial уже в среде, ничего ставить не нужно.
  • Монитор порта с графиком показывает расстояние с дальномера линией — порог срабатывания подбирается на глаз, а не наугад.
  • Проекты в облаке: машинка собрана дома, а скетч правится в школе — тот же проект открывается на любом компьютере.
  • Ошибки по-русски — когда Servo и другая библиотека не поделили таймер или в скетче перепутаны имена выводов.

Вопросы и ответы

Коротко о главном

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

Можно ли собрать робота из стартового набора Arduino?

Нет: мотор в наборе один и без редуктора, а колёс, шасси и драйвера на два мотора нет. Зато в нём есть всё, чтобы заранее научиться крутить мотор, поворачивать сервопривод и читать датчики — уроки 22, 23 и 24. Для машинки докупают робоплатформу с двумя моторами, драйвер L298N и дальномер HC-SR04 — около 1 750 ₽, плюс питание.

Какой робот на Arduino самый простой для начинающего?

Машинка на двух колёсах, которая объезжает препятствия: плата Uno, платформа с моторами, драйвер L298N и дальномер HC-SR04. Скетч — сорок строк без библиотек, сборка — один вечер. Робот-рука эффектнее, но требует мощного питания для сервоприводов, а робот по линии — трассы и долгой настройки.

2WD или 4WD — какое шасси выбрать?

Для первого робота — два ведущих колеса и ролик: он разворачивается на месте и легко управляется. Четыре колеса лучше едут по ковру, но драйвер остаётся двухканальным: левые моторы ставят параллельно на один канал, правые — на другой, ток на канал удваивается, и L298N работает на пределе.

Почему робот не едет или плата перезагружается при старте?

Почти всегда питание. Четыре батарейки AA дают 6 В, из которых L298N забирает около двух — моторам остаётся мало, а при старте напряжение проседает и плата перезагружается. Поставьте два аккумулятора 18650 или модуль питания с отдельными выходами для платы и моторов, соедините земли и не берите ток для моторов с вывода 5V.

Как управлять машинкой с телефона?

Модуль Bluetooth HC-06 подключают к программному порту платы, а на телефон ставят любое приложение-пульт, которое шлёт символы по кнопкам: F, B, L, R, S. Скетч читает букву и включает моторы. Обязательно остановка, если команд нет дольше секунды, — иначе при потере связи машинка уедет в стену.

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

Три-четыре: поворот основания, плечо, локоть и захват. Под нагрузкой они берут два-три ампера, при старте вдвое больше, поэтому питание — отдельный блок 5–6 В на 5 А или понижающий преобразователь на 3 А с аккумуляторов, а не вывод 5V платы. Земля источника соединяется с землёй платы.

Что такое датчик линии и сколько их нужно?

ИК-светодиод и фототранзистор рядом: белый пол отражает свет, чёрная изолента — нет. Двух датчиков по краям линии хватает, чтобы робот ехал по кругу; на соревнованиях ставят пять-девять и плавно подравнивают поворот. Трасса — чёрная изолента шириной 15–20 мм на белом ватмане.

Чем готовый набор-робот лучше сборки по частям?

В наборе вроде ROBORACE уже подобраны плата, моторы с колёсами, линейка датчиков линии, дальномер, ИК-пульт и питание, а к ним — методичка с проектами. По частям выходит дешевле и гибче, но подбирать совместимость и питание придётся самому. Для кружка и подарка удобнее набор, для своего проекта — части.

Дальше по теме

Как крутить мотор в обе стороны — Мотор и Arduino. Откуда брать ток — Питание Arduino. Что ещё собрать из набора — Проекты на Arduino. Что лежит в наборе — Набор Arduino.