Автономный линий-следующий робот на Arduino UNO
Компоненты и материалы
- Arduino UNO — 1 шт.
- Два BO-мотора с колёсами — 1 комплект
- Опорное колесико (caster) — 1 шт.
- Два ИК-сенсора линии (TCRT5000 или аналог) — 2 шт.
- Драйвер двигателей L293D — 1 шт.
- Печатная плата (PCB) или монтажная плата — 1 шт.
- Корпус: картон / акрил / 3D-печать
- Крона 9V — 1 шт.
- Провода, паяльник
Приложения
- Arduino IDE
О проекте
Сборка шасси
Закрепите моторы, опорное колесо, Arduino, драйвер и батарею на базе (акрил/картон). Монтаж показан на фото: два мотора сзади, кастер спереди, плата поверх.
Схема подключения
- Левый двигатель: L293D OUT1/OUT2 → пины Arduino 8 (lm1), 9 (lm2)
- Правый двигатель: OUT3/OUT4 → пины 10 (rm1), 11 (rm2)
- Левый ИК-сенсор → пин 13 (sl)
- Правый ИК-сенсор → пин 12 (sr)
- Питание L293D: VCC2 → 9V (через стабилизатор или от батареи), VCC1 → 5V от Arduino, GND общий.
Готовый PCB можно заказать по ссылке (PCBWay) или собрать на монтажной плате.
Алгоритм следования (2 сенсора)
| Левый (sl) | Правый (sr) | Действие |
|---|---|---|
| LOW (на линии) | LOW (на линии) | Вперёд |
| HIGH (фон) | LOW (на линии) | Поворот влево |
| LOW (на линии) | HIGH (фон) | Поворот вправо |
| HIGH | HIGH | Стоп (линия потеряна/перекрёсток) |
Сенсоры выдают LOW над чёрной линией, HIGH над белым полем.
Полный скетч
int lm1=8, lm2=9, rm1=10, rm2=11;
int sl=13, sr=12;
int SlV=0, SrV=0;
void setup() {
pinMode(lm1,OUTPUT); pinMode(lm2,OUTPUT);
pinMode(rm1,OUTPUT); pinMode(rm2,OUTPUT);
pinMode(sl,INPUT); pinMode(sr,INPUT);
sTOP();
}
void loop() {
SlV = digitalRead(sl);
SrV = digitalRead(sr);
if (SrV==LOW && SlV==LOW) ForWard();
else if (SrV==HIGH && SlV==LOW) Left();
else if (SrV==LOW && SlV==HIGH) Right();
else if (SrV==HIGH && SlV==HIGH) sTOP();
}
void ForWard() { digitalWrite(lm1,HIGH); digitalWrite(lm2,LOW); digitalWrite(rm1,HIGH); digitalWrite(rm2,LOW); }
void BackWard() { digitalWrite(lm1,LOW); digitalWrite(lm2,HIGH); digitalWrite(rm1,LOW); digitalWrite(rm2,HIGH); }
void Left() { digitalWrite(lm1,LOW); digitalWrite(lm2,HIGH); digitalWrite(rm1,HIGH); digitalWrite(rm2,LOW); }
void Right() { digitalWrite(lm1,HIGH); digitalWrite(lm2,LOW); digitalWrite(rm1,LOW); digitalWrite(rm2,HIGH); }
void sTOP() { digitalWrite(lm1,LOW); digitalWrite(lm2,LOW); digitalWrite(rm1,LOW); digitalWrite(rm2,LOW); }
Развитие проекта
- Добавить PID-регулятор для плавного движения.
- Использовать 4–8 сенсоров для высокой скорости.
- Добавить ультразвуковой датчик препятствий.
- Перейти на LiPo + зарядный модуль.
Классический учебный проект для старта в робототехнике. Собирается за пару часов.
Производственный процесс
- Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
- Simple Pi Robot — Сборка 2WD автономного ровера на Raspberry Pi
- Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
- Робот Джой: Умный робот на Arduino и ESP8266 для развлечения детей в больницах
- Робот-трассер V4 на Arduino Nano: продвинутая линия с PID и кастомным PCB
- Голосовой робот на Arduino Nano: Управление речью через Bluetooth
- PiBot: Робот-пианист на Arduino для точного исполнения музыки
- Учебный стенд Arduino Mega 2560: сенсоры, моторы, дисплеи и собственная PCB
- Автономный домашний помощник-робот: полный список деталей и руководство по настройке (ROS, Alexa, MoveIt)
- Набор для создания робота с умной внутренней навигацией на базе Arduino