Как да направите избягване на препятствия, използвайки Arduino?

Светът се движи бързо и технологиите също се движат с него в областта на роботиката. Приложенията на роботиката могат да се видят навсякъде по света. Концепцията за мобилни или автономни роботи, които се движат без никаква външна помощ, е най-завладяващото поле за изследвания. Има толкова много видове мобилни роботи, например интерпретатори за самостоятелно локализиране и картографиране (SLAM), проследяване на линии, Sumo ботове и др. Роботът за избягване на препятствия е един от тях. Той използва техника за промяна на пътя, ако открие някакво препятствие по пътя си.



(С любезното съдействие на снимката: Схема)

В този проект е проектиран робот за избягване на препятствия, базиран на Arduino, който ще използва ултразвуков сензор за откриване на всички препятствия по пътя си.



Как да избегнем препятствия с помощта на ултразвуков сензор?

Тъй като знаем резюмето на нашия проект, нека направим крачка напред и съберем малко информация за стартиране на проекта.



Стъпка 1: Събиране на компонентите

Най-добрият подход за стартиране на всеки проект е да се направи списък с пълни компоненти в началото и да се премине през кратко проучване на всеки компонент. Това ни помага да избегнем неудобствата в средата на проекта. Пълен списък на всички компоненти, използвани в този проект, е даден по-долу.



  • Шаси за автомобилни колела
  • Батерия

Стъпка 2: Изучаване на компонентите

Сега, тъй като имаме пълен списък на всички компоненти, нека се придвижим една крачка напред и да преминем през кратко проучване на работата на всеки компонент.

Arduino nano е платка за микроконтролер, която се използва за управление или изпълнение на различни задачи във верига. Изгаряме a C код на Arduino Nano, за да каже на борда на микроконтролера как и какви операции да изпълнява. Arduino Nano има точно същата функционалност като Arduino Uno, но в доста малък размер. Микроконтролерът на платката Arduino Nano е ATmega328p.

Arduino Nano



L298N е интегрална схема с висок ток и високо напрежение. Това е двоен пълен мост, проектиран да приема стандартна TTL логика. Той има два активиращи входа, които позволяват на устройството да работи независимо. Два двигателя могат да бъдат свързани и експлоатирани едновременно. Скоростта на двигателите се променя чрез ШИМ щифтовете. Модулация на широчината на импулса (PWM) е техника, при която потокът на напрежението във всеки електронен компонент може да бъде контролиран. Този модул има H-мост, който отговаря за контрола на посоката на въртене в двигателите чрез обръщане на посоката на тока. Enable pin A и Enable Pin B се използват за промяна на скоростта на двата двигателя. Този модул може да работи между 5 и 35V и пиков ток до 2A. Входният щифт1 и входният щифт2 и за първия двигател, а входният щифт3 и входният щифт4 са за втория двигател.

L298N Двигател на двигателя

Платката HC-SR04 е ултразвуков сензор, който се използва за определяне на разстоянието между два обекта. Състои се от предавател и приемник. Предавателят преобразува електрическия сигнал в ултразвуков сигнал, а приемникът преобразува ултразвуковия сигнал обратно в електрически сигнал. Когато предавателят изпраща ултразвукова вълна, тя се отразява след сблъсък с определен обект. Разстоянието се изчислява, като се използва времето, необходимо на ултразвуковия сигнал, за да премине от предавателя и да се върне към приемника.

Ултразвуков сензор

Стъпка 3: Сглобяване на компонентите

Сега, след като вече знаем работата на повечето от използваните компоненти, нека започнем да сглобяваме всички компоненти и да създадем робот, избягващ препятствия.

  1. Вземете шасита на колелата на автомобила и залепете плоча за манипулации върху него. Монтирайте ултразвуковия сензор в предната част на шаситата и капачката на батерията зад шасите.
  2. Закрепете дъската Arduino Nano на борда и прикрепете моторния драйвер точно зад макетната плоча, върху шаситата. Свържете щифтовете Enable на бота на двигателите към Pin6 и Pin9 на Arduino nano. Пиновете In1, In2, In3 и In4 на модула на драйвера на двигателя са свързани съответно към pin2, pin3, pin4 и pin5 на Arduino nano.
  3. Trig и echo щифтът на ултразвуковия сензор е свързан съответно с pin11 и in10 на Arduino nano. Vcc и заземяващият щифт на ултразвуковия сензор са свързани към 5V и земята на Arduino Nano.
  4. Модулът на контролера на двигателя се захранва от батерията. Платката Arduino Nano получава захранването от 5V порта на модула на моторния драйвер, а ултразвуковият сензор ще захранва от нано платката Arduino. теглото и енергията на батериите могат да се превърнат в определящ фактор за нейните характеристики.
  5. Уверете се, че връзките ви са същите, както е показано по-долу на електрическата схема.

    Електрическа схема

Стъпка 4: Първи стъпки с Arduino

Ако все още не сте запознати с Arduino IDE, не се притеснявайте, защото по-долу е обяснена поетапна процедура за настройка и използване на Arduino IDE с микроконтролер.

  1. Изтеглете най-новата версия на Arduino IDE от Arduino.
  2. Свържете вашата платка Arduino Nano към вашия лаптоп и отворете контролния панел. в контролния панел щракнете върху Хардуер и звук . Сега кликнете върху Устройства и принтери. Тук намерете порта, към който е свързана вашата платка за микроконтролер. В моя случай е така COM14 но при различните компютри е различно.

    Намиране на порт

  3. Щракнете върху менюто Инструмент. и настройте дъската на Arduino Nano от падащото меню.

    Съвет за настройка

  4. В същото меню на инструмента задайте порта на номера на порта, който сте наблюдавали преди в Устройства и принтери .

    Настройка на порт

  5. В същото меню на инструмента задайте процесора на ATmega328P (стар буутлоудър).

    Процесор

  6. Изтеглете кода, приложен по-долу, и го поставете във вашия ID на Arduino. Щракнете върху качване бутон, за да запишете кода на платката на вашия микроконтролер.

    Качване

За да изтеглите кода, Натисни тук.

Стъпка 5: Разбиране на кодекса

Кодът е добре коментиран и обясним сам по себе си. Но все пак това е обяснено по-долу

1. В началото на кода се инициализират всички щифтове на платката Arduino Nano, които са свързани към ултразвуковия сензор и модула на двигателя на двигателя. Pin6 и Pin9 са ШИМ щифтове, които могат да променят потока на напрежението, за да променят скоростта на робота. Две променливи, продължителност, и разстояние се инициализират за съхраняване на данни, които по-късно ще бъдат използвани за изчисляване на разстоянието на ултразвуковия сензор и препятствието.

int enable1pin = 6; // щифтове за първи двигател int motor1pin1 = 2; int motor1pin2 = 3; int enable2pin = 9; // щифтове за втори двигател int motor2pin1 = 4; int motor2pin2 = 5; const int trigPin = 11; // Задействащ щифт на ултразвуков Sesnor const int echoPin = 10; // Echo Pin Of Ultrasonic Sesnor голяма продължителност; // променливи за изчисляване на разстоянието на плаващо разстояние;

2. настройка за празнота () е функция, която се използва за задаване на всички използвани щифтове, като ВХОД и ИЗХОД. Скоростта на предаване е дефинирана в тази функция. Скорост на предаване е скоростта на комуникация, чрез която платката на микроконтролера комуникира със сензорите, интегрирани с нея.

void setup () {Serial.begin (9600); pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode (enable1pin, OUTPUT); pinMode (enable2pin, OUTPUT); pinMode (мотор1pin1, ИЗХОД); pinMode (мотор1pin2, ИЗХОД); pinMode (motor2pin1, OUTPUT); pinMode (motor2pin2, OUTPUT); }

3. цикъл void () е функция, която се изпълнява многократно в цикъл. В тази функция ние казваме на платката на микроконтролера как и какви операции да се извършат. Тук, първо, задействащият щифт е настроен да изпраща сигнал, който ще бъде открит от ехо-пина. След това времето, което е необходимо на ултразвуковия сигнал за пътуване от и обратно до сензора, се изчислява и запаметява в променливата продължителност. След това това време се използва във формула за изчисляване на разстоянието до препятствието и ултразвуковия сензор. Тогава се прилага условие, че ако разстоянието е повече от 5ocm, роботът ще се придвижи напред по права линия и ако разстоянието е по-малко от 50cm, роботът ще направи остър десен завой.

void loop () {digitalWrite (trigPin, LOW); // Изпращане и откриване на забавяне на ултразвуковия сигналMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); продължителност = pulseIn (echoPin, HIGH); // Изчисляване на времето, взето от ултразвуковата вълна, за да отрази обратното разстояние = 0,034 * (продължителност / 2); // Изчисляване на разстоянието между теб робот и препятствието. if (разстояние> 50) // Придвижване напред, ако разстоянието е по-голямо от 50 cm {digitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); digitalWrite (motor1pin1, HIGH); digitalWrite (motor1pin2, LOW); digitalWrite (motor2pin1, HIGH); digitalWrite (motor2pin2, LOW); } else if (разстояние<50) // Sharp Right Turn if the distance is less than 50cm { digitalWrite(enable1pin, HIGH); digitalWrite(enable2pin, HIGH); digitalWrite(motor1pin1, HIGH); digitalWrite(motor1pin2, LOW); digitalWrite(motor2pin1, LOW); digitalWrite(motor2pin2, LOW); } delay(300); }

Приложения

Така че тук беше процедурата за създаване на робот за избягване на препятствия Тази технология за избягване на препятствия може да бъде съдена и в други приложения. Някои от тези приложения са както следва.

  1. Система за проследяване.
  2. Цели за измерване на разстояние.
  3. Това може да се използва в автоматични роботи за прахосмукачки.
  4. Това може да се използва в Стикове за слепи хора.