Как да си направим прост робот
Сглобяването на прост робот е забавен начин да се научи електроника, основна механика и програмиране. Много хора смятат, че роботите трябва да са скъпи и сложни, но всъщност можем да започнем с малки проекти, които са лесни за сглобяване у дома. В тази статия ще изградим прост робот за избягване на препятствия, използвайки ултразвукови сензори. Този робот може да върви напред и автоматично да се завърта, когато засече обект пред себе си. Този проект е подходящ за начинаещи , студенти или всеки, който иска да започне да учи роботика.
1. Разберете концепцията за прости роботи
Като цяло, роботите имат три основни компонента: мозък (контролер), сетива (сензори) и мускули (актуатори). В този проект:
– Контролер: Arduino Uno (или съвместим)
– Сензор: HC-SR04 ултразвуков сензор за измерване на разстояние
– Задвижващ механизъм: DC двигател, който задвижва колелата
– Драйвер за мотор: L298N (или L293D) драйвер за мотор, така че моторът да може да се управлява от Arduino
Когато сензорът отчита разстоянието пред робота и то е твърде близо, Arduino ще даде команда на драйвера на двигателя да промени посоката на движение, например да завие надясно или наляво.
2. Необходими инструменти и материали
Ето списък с често използвани компоненти, които лесно могат да бъдат намерени в магазини за електроника или на пазари:
1. Ардуино Уно (1 брой)
2. L298N драйвер за мотор (1 брой)
3. Ултразвуков сензор HC-SR04 (1 брой)
4. DC мотор + скоростна кутия и колела (2 броя) за двуколесен робот (диференциално задвижване)
5. Колело за повдигане (1 брой) малко балансиращо колело отпред или отзад
6. Батерии (напр. 2×18650 или 7,4V пакет) или 6xAA, според нуждите на двигателя
7. Шаси на робот (може да се закупи готово или изработено от акрил/шперплат)
8. Кабели за пускане на двигателя (мъжко-женски и мъжко-мъжко)
9. Бутон за включване/изключване (по избор, но много полезен)
10. Малка дъска за макет (по избор)
11. Болтове, гайки, отвертки и горещо лепило, ако е необходимо
Ако искате нещо още по-просто (без ултразвукови сензори), можете да построите робот, който „следи линия“ със сензори за линия, но версиите за избягване на препятствия често се усещат по-„живи“, защото реагират на обекти пред тях.
3. Проектиране на шасито на робота
Шасито е рамката, върху която са монтирани всички компоненти. Можете да използвате готов комплект шаси или да си направите сами от леки материали като акрил, PVC или тънко дърво. Принципът е:
– Монтирайте два DC двигателя от лявата и дясната страна.
– Монтирайте колелата на мотоциклета.
– Добавете колелце като балансьор, за да направите робота стабилен.
– Поставете батерията на място, което не накланя робота.
– Arduino и драйверите за мотори трябва да бъдат поставени отгоре за лесен достъп.
Уверете се, че кабелът не виси надолу, за да не се закачи в колелата.
4. Основна схема на окабеляване
Ето обща концепция за свързване (пиновете могат да се персонализират):
а) Мотор към драйвер L298N
– Ляв мотор към изходите OUT1 и OUT2
– Десен мотор към изходи OUT3 и OUT4
б) L298N драйвер за Arduino
– IN1, IN2 за левия мотор към някои цифрови пинове на Arduino
– IN3, IN4 за десен мотор към някои цифрови пинове на Arduino
– ENA и ENB (enable) могат да бъдат свързани към PWM пиновете на Arduino за контрол на скоростта (по избор). Ако не, някои L298N модули вече имат джъмпер за активиране, който позволява на двигателя да работи с пълна скорост.
в) Сензор HC-SR04 към Arduino
– VCC към 5V Ардуино
– GND към GND Ардуино
– TRIG към цифровия пин на Arduino
– ECHO към цифров пин на Arduino
г) Мощност
Моторът изисква по-голям ток, отколкото Arduino може да осигури. Следователно:
– Основната батерия отива към драйвера на двигателя (+12V и GND клеми на L298N).
– Arduino може да се захранва и от батерия (чрез VIN) или от отделна външна батерия/USB.
– Заземяване: Заземяването на батерията/драйвера и заземяването на Arduino трябва да бъдат свързани, за да бъде управляващият сигнал стабилен.
Най-често срещаната грешка сред начинаещите е да забравят да свържат GND, така че роботът се движи хаотично.
5. Работна логика на робота за избягване на препятствия
Роботът ще работи с прост последователност:
1. Отчетете разстоянието от ултразвуковия сензор.
2. Ако разстоянието е > прага (напр. 20 см), роботът се движи напред.
3. Ако разстоянието е ≤ 20 см, роботът спира за кратко.
4. Роботът се отдръпва малко назад и след това се завърта (например надясно) за няколкостотин милисекунди.
5. Прочетете разстоянието отново и повторете.
С този модел, роботът ще изглежда сякаш „избягва“ препятствия, дори и да не избере най-оптималния път.
6. Пример за прост код за Arduino
По-долу е даден основен примерен код. Можете да персонализирате пиновете, за да отговарят на вашата схема:
„`cpp
дефиниране на TRIG 8
дефиниране на ECHO 9
// Ляв мотор
дефиниране на IN1 2
дефиниране на IN2 3
// Десен мотор
дефиниране на IN3 4
дефиниране на IN4 5
дълга продължителност;
разстояние int;
int readDistance() {
digitalWrite(TRIG, LOW);
забавянеМикросекунди(2);
digitalWrite(TRIG, HIGH);
забавянеМикросекунди(10);
digitalWrite(TRIG, LOW);
продължителност = pulseIn(ECHO, HIGH);
int cm = продължителност 0.034 / 2;
връщане см;
}
void forward() {
дигитален запис (IN1, HIGH);
дигитален запис (IN2, LOW);
дигитален запис (IN3, HIGH);
дигитален запис (IN4, LOW);
}
void обратен() {
дигитален запис (IN1, LOW);
дигитален запис (IN2, HIGH);
дигитален запис (IN3, LOW);
дигитален запис (IN4, HIGH);
}
void завой надясно() {
дигитален запис (IN1, HIGH);
дигитален запис (IN2, LOW);
дигитален запис (IN3, LOW);
дигитален запис (IN4, HIGH);
}
void stop() {
дигитален запис (IN1, LOW);
дигитален запис (IN2, LOW);
дигитален запис (IN3, LOW);
дигитален запис (IN4, LOW);
}
void setup () {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin (9600);
}
цикъл void () {
разстояние = readDistance();
Serial.println(разстояние);
ако (разстояние > 20) {
продължи();
} Още {
стоп();
забавяне (200);
обратен();
забавяне (300);
стоп();
забавяне (200);
завийте надясно();
забавяне (400);
стоп();
}
забавяне (50);
}
„„
Този код е най-основната версия. Ако роботът се срива твърде често, можете да увеличите прага до 25–30 см или да увеличите времето за завиване.
7. Тестване и настройка
След като роботът е сглобен, извършете стъпка по стъпка тестване:
1. Първо тествайте двигателя: пуснете функцията за движение напред/назад, за да се уверите, че колелата се въртят в правилната посока.
2. Тествайте ултразвуковия сензор: вижте резултатите от разстоянието в Arduino IDE Serial Monitor.
3. Комбинирайте системата: пуснете пълната програма и наблюдавайте реакцията на робота.
Ако роботът се завърта или движи назад, когато би трябвало да се движи напред, може да се наложи да размените кабелите на двигателя или да обърнете логиката IN1-IN2 (и IN3-IN4).
8. Често срещани проблеми и решения
Някои препятствия, които често възникват:
– Роботът изобщо не се движи: проверете батерията, проверете драйвера на двигателя, уверете се, че джъмперът за активиране е активен.
– Arduino се рестартира, докато моторът работи: недостатъчно захранване или шум от мотора. Опитайте да използвате отделна батерия за Arduino, да добавите кондензатор и да поправите заземяването.
– Показанията на сензора за разстояние са нестабилни: уверете се, че сензорът е насочен право, пазете го от прекомерни вибрации и се уверете, че кабелът не е хлабав.
– Роботът е „заседнал“ в ъгъл: добавете логика за произволно завиване или използвайте сервомотори, за да преместите сензорите, така че да могат да „гледат“ наляво и надясно.
9. Идеи за развитие след успех
След като основният робот е готов и работи, можете да го надстроите до нещо по-интересно:
– Добавяне на сервомотори за движение на ултразвуковите сензори, така че роботът да избере най-добрия път.
– Добавено е Bluetooth управление (HC-05), за да може да се управлява от мобилен телефон.
– Използване на линейни сензори за създаване на робот, следващ линия.
– Регулирайте скоростта на ШИМ за по-плавно движение.
– Добавете зумер или светодиод като индикатор при откриване на препятствие.
Заключение
Изграждането на прост робот не е задължително да е трудно. С Arduino, DC мотор, драйвер за мотор и ултразвуков сензор можете да създадете робот, който може да се движи и да избягва препятствия автоматично. Ключовете към успеха са стриктно окабеляване, достатъчно ресурси и щателно тестване. След като се справите с този проект, ще бъдете по-добре подготвени да се справите с по-сложни роботизирани проекти, като например интелигентен робот, базиран на камера, или такъв, който може да следва обекти.
Ако желаете, мога да ви помогна да създадете по-подробна схема на свързване според избраните от вас пинове или да коригирате кода, така че роботът да може да завива наляво/надясно произволно и да бъде по-„интелигентен“.