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