Search Code

Лекција 25/31: Паметен автомобил Car-3 избегнува пречки користејќи инфрацрвени сензори | SunFounder Robojax

Лекција 25/31: Паметен автомобил Car-3 избегнува пречки користејќи инфрацрвени сензори | SunFounder Robojax

Овој проект ја трансформира вашата SunFounder 3-во-1 Arduino паметна кола во автономно возило што избегнува пречки. Со монтирање на два инфрацрвени (IR) сензори—еден од левата и еден од десната страна—колата може да детектира предмети на својот пат и да донесува одлуки во дел од секундата за да ги заобиколи. Ова е основен чекор во роботиката, кој ве учи како да комбинирате сензорски влез со логика за контрола на моторите за да создадете реактивна, самоуправувачка машина. Принципите што ќе ги научите овде се применуваат на широк опсег на реални апликации, вклучувајќи:

  • Изградба на роботска правосмукалка што се движи низ просторија без да удира во мебел.
  • Креирање робот што следи линија или решава лавиринт за натпревари или образовни проекти.
  • Развивање автоматизиран безбедносен патролен робот што може да кружи околу периметар и да избегнува ѕидови.
  • Дизајнирање паметна играчка кола што може да игра самостојно без да заглави.

Овој водич директно се надоврзува на претходните лекции каде што научивте да ги контролирате моторите на колата и да разберете како работат IR сензорите. Овде, ќе ги комбинираме тие вештини за да имплементираме едноставен, но ефикасен алгоритам за избегнување пречки.

Како функционира логиката за избегнување пречки

Основната идеја е едноставна: колата користи два IR сензори за да провери за пречки на левата и десната страна. Секој сензор испраќа дигитален сигнал: LOW (0) кога детектира предмет во својот опсег (околу 20 см) и HIGH (1) кога патеката е чиста. Логиката потоа ја одредува акцијата на колата врз основа на состојбите на сензорите (во видеото на 02:35):

  • Пречка од лево, десно чисто: Колата врти надесно за да ја избегне.
  • Пречка од десно, лево чисто: Колата врти налево.
  • Пречки од двете страни: Колата се движи наназад за да избегне потенцијален ќорсокак.
  • Без пречки: Колата вози напред.

Овој реактивен пристап е класичен пример на конечен автомат, каде што однесувањето на колата е директен одговор на нејзините моментални сензорски влезови.

Sunfounder-Smartcar-Obstacle-avoideance-1

Хардверски компоненти

За да го завршите овој проект, ќе ви требаат следниве компоненти, кои сите се вклучени во SunFounder 3-во-1 Arduino комплетот:

  • 1x SunFounder 3-во-1 Arduino паметна кола комплет (или еквивалентни делови)
  • 2x Инфрацрвени сензори за избегнување пречки
  • 1x Arduino Uno (или компатибилна плоча)
  • 1x Штит/плоча за контрола на мотори
  • Поврзувачки жици

Водич за поврзување

Правилното усогласување на сензорите е критично за овој проект да работи. IR сензорите мора да бидат насочени напред и малку нанадвор, бидејќи тие ќе детектираат пречки на страните на колата (во видеото на 02:07). Следниот дијаграм за поврзување покажува како да ги поврзете сензорите со Arduino. Ве молиме забележете дека инструкторот користел специфична точка за дистрибуција на напојување на breadboard-от на колата, но врските до Arduino се она што е важно.

Sunfounder-Smartcar-Obstacle-avoideance-wiring

Врските за поврзување се следниве (во видеото на 03:47):

  • Напојување (VCC): Поврзете го VCC пинот на двата IR сензори на 5V излезот на Arduino или на напојната шина на колата.
  • Земја (GND): Поврзете го GND пинот на двата IR сензори на заедничка земја на Arduino или на земјената шина на колата.
  • Излез на десниот сензор (OUT): Поврзете го дигиталниот излезен пин на десниот IR сензор на дигиталниот пин 7 на Arduino.
  • Излез на левиот сензор (OUT): Поврзете го дигиталниот излезен пин на левиот IR сензор на дигиталниот пин 8 на Arduino.

Врските на контролерот на моторите за левиот и десниот мотор се исти како оние воспоставени во претходната лекција за контрола на мотори.

Објаснување на кодот

Кодот за овој проект е јасен. Главната програма е достапна за преземање подолу во статијата. Овде, ќе се фокусираме на деловите што корисникот може да ги конфигурира и што можете да ги прилагодите за вашата сопствена кола.

const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;

const int rightIR = 7;
const int leftIR = 8;

Овие линии ги дефинираат пиновите што се користат за контролерот на моторите и IR сензорите. Пиновите на моторите (A_1B, A_1A, B_1B, B_1A) ја контролираат брзината и насоката на двата мотори. Пиновите rightIR и leftIR се местата каде што ги поврзувате сигналните жици од вашите сензори. Ако користевте различни пинови, би ги промениле овие вредности тука.

int speed = 150;

Оваа променлива ја поставува основната брзина на колата. Вредноста може да се движи од 0 до 255, каде што 255 е максималната брзина. Вредноста од 150 е добра почетна точка за учење, бидејќи е доволно брза за да биде интересна, но доволно бавна за да овозможи време за реакција (во видеото на 07:10). Можете да ја прилагодите оваа вредност за да ја направите вашата кола побрза или побавна.

Остатокот од кодот ја дефинира логиката во функцијата loop(). Таа ја чита состојбата на левиот и десниот сензор и потоа ја повикува соодветната функција за движење (moveForward(), moveBackward(), backLeft(), backRight()). Овие функции се однапред дефинирани и го контролираат драјверот за мотори за да се постигне саканото движење. Инструкторот, исто така, додаде функција stop() во подоцнежна модификација за да го запре автомобилот на краток период по маневарот за избегнување, правејќи ги неговите движења поодмерени (во видеото на 10:29).

Демонстрација на проектот во живо

Во видеото, инструкторот прво ја демонстрира логиката користејќи го Serial Monitor-от. Со поставување кутија близу сензорите, можете да ги видите соодветните пораки како „Go Left", „Go Right" или „Go Backward" на екранот, што потврдува дека читањата на сензорите и логиката се точни (во видеото на 09:11).

По проверката на логиката, инструкторот додава клучно подобрување: функција stop(). Оваа функција целосно го запира автомобилот на дефиниран период (на пример, 1 секунда) откако тој ќе изврши вртење или ќе се движи наназад, спречувајќи нагли движења и овозможувајќи му на автомобилот повторно да ја процени околината (во видеото на 10:29).

На крајот, автомобилот се тестира на подот со низа пречки. Видеото покажува како автомобилот успешно се движи околу кутии, врти лево, десно и се движи наназад по потреба за да најде чист пат, демонстрирајќи ја практичната примена на овој алгоритам за избегнување пречки (во видеото на 12:13).

Поглавја

  • [00:00] Вовед во избегнување пречки со IR сензори
  • [01:24] Предуслови и преглед на проектот
  • [02:35] Како функционира логиката за избегнување пречки
  • [03:47] Поврзување на IR сензорите и моторите
  • [05:40] Отворање и објаснување на кодот
  • [09:11] Тестирање на логиката со Serial Monitor
  • [10:29] Додавање функција за стоп за помазно движење
  • [11:42] Тестирање на функцијата за стоп
  • [12:13] Финален практичен тест на подот

Images

Sunfounder-Smartcar-Obstacle-avoideance-1
Sunfounder-Smartcar-Obstacle-avoideance-1
Sunfounder-Smartcar-Obstacle-avoideance-wiring
Sunfounder-Smartcar-Obstacle-avoideance-wiring
894-Lesson 25: SunFounder's 3-in-1 Arduino kit Car-3 Smart Car Avoids Obstacle Using Infrared Sensors
Language: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Resources & references

Files📁

Arduino Libraries (zip)