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

Ако търсите начин да увеличите драматично очарованието и функционалността на вашата кухня, помислете за минимизиране на човешките усилия там. Човешките усилия могат да бъдат сведени до минимум, като се направи домашен робот, който ще присъства в кухнята и той ще носи мръсни прибори към мивката и ще спре там. Когато човекът разтовари приборите от робота, той ще се върне и ще донесе повече от тях. Понякога в големите кухни мивката не е толкова близо до шкафовете, така че роботът ще отнесе съдовете от едното място на рафта към другото. Път за робота ще бъде направен на рафта с помощта на черната лента. Роботът ще използва два инфрачервени сензора за близост, за да открие пътя и въз основа на входа, получен от сензорите, Arduino ще насочи двигателите да се движат с помощта на двигател.



Домашен робот

Как да свържем всички необходими периферни устройства при създаването на домашен робот?

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



Стъпка 1: Използвани компоненти

  • Arduino uno
  • IR сензор (x5)
  • DC двигатели
  • Преследвания на колелата на автомобила
  • Черна лента
  • Джъмперни проводници
  • DC батерия
  • Пистолет за лепило
  • Комплект отвертки

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

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



The Arduino UNO е платка за микроконтролер, която се състои от микрочип ATMega 328P и е разработена от Arduino.cc. Тази платка има набор от цифрови и аналогови щифтове за данни, които могат да бъдат свързани с други разширителни платки или вериги. Тази платка има 14 цифрови щифта, 6 аналогови щифта и програмируеми с Arduino IDE (интегрирана среда за разработка) чрез USB кабел тип B. Необходимо е 5V за захранване НА и а C код да оперира.



Arduino UNO

L298N Motor Driver се използва за работа с DC двигатели. L298N е двоен H-Bridge двигател, който позволява едновременно управление на скоростта и посоката на два постояннотокови мотора. Модулът може да задвижва постояннотокови двигатели, които имат напрежение между 5 и 35V, с пиков ток до 2А. Това зависи от напрежението, което се използва на VCC клемата на двигателите. В нашия проект 5V щифтът ще се използва като вход, тъй като трябва да го свържем към 5V захранване, за да работи интегралната схема правилно. Схемата на схемата на драйвера на двигателя L298N със свързани DC двигатели е показано по-долу за разбиране на механизма на драйвера на двигателя L298N. За демонстрацията входът се дава от Логическо състояние вместо IR сензори.

Електрическа схема, направена на Proteus 8 Professional



Стъпка 3: Разбиране на блоковата диаграма и принципа на работа

Първо, ще преминем през блоковата схема, ще разберем принципа на работа и след това ще преминем към сглобяване на хардуерните компоненти.

Блокова диаграма

Сензорите, които ще използваме, са цифрови и те могат да дадат на изхода 0 или 1. Тези сензори, които сме закупили, дават 1 върху бели повърхности и 0 върху черните повърхности. Сензорите, които купуваме, дават произволни стойности, понякога те дават 0 върху белите повърхности и 1 върху черните повърхности. Ще използваме пет сензора в този робот В кода има четири условия за пет сензора.

  1. Препращане по линията: Когато средният сензор е на черната повърхност, а останалите сензори са на бялата повърхност, състоянието напред ще се изпълни и роботът ще се придвижи право напред. Ако тръгнем от Сензор 1 и продължете до Сензор 5, стойността, която всеки от датчиците ще дава съответно е (1 1 0 1 1) .
  2. Остър десен завой: Когато Сензор 1 и Сензор 2 са на бялата повърхност, а останалите сензори са на черната повърхност, условието за рязък десен завой ще се изпълни и роботът ще се обърне рязко надясно. Ако тръгнем от Сензор 1 и продължете до Сензор 5, стойността, която всеки от датчиците ще дава съответно е (1 1 0 0 0).
  3. Остър ляв завой: Когато Сензор 4 и Сензор 5 са на бялата повърхност, а останалите сензори са на черната повърхност, условието за остър ляв завой ще се изпълни и роботът ще се обърне рязко наляво. Ако тръгнем от Сензор 1 и продължете до Сензор 5, стойността, която всеки от датчиците ще дава съответно е (0 0 0 1 1) .
  4. Спри се: Когато всички от петте сензора са на черната повърхност, роботът ще спре и двигателите ще се завъртят ИЗКЛЮЧЕНО Тази точка с пет черни повърхности ще бъде близо до мивката, за да може съдомиялната машина да разтовари чиниите от робота за измиване.

Ще направим пътека на кухненския рафт с помощта на черна лента и тази пътека ще завърши близо до мивката, така че роботът ще спре близо до мивката, а миялната машина ще разтовари чиниите и след това роботът ще се придвижи към пътеката и ще търси приборите отново.

Track Of Robot

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

Ако не сте запознати с Arduino IDE преди, не се притеснявайте, защото по-долу можете да видите ясни стъпки за записване на код на платката на микроконтролера, използвайки Arduino IDE. Можете да изтеглите най-новата версия на Arduino IDE от тук и следвайте стъпките по-долу:

  1. Когато платката Arduino е свързана с вашия компютър, отворете „Контролен панел“ и кликнете върху „Хардуер и звук“. След това кликнете върху „Устройства и принтери“. Намерете името на порта, към който е свързана вашата платка Arduino. В моя случай това е “COM14”, но може да е различно на вашия компютър.

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

  2. Сега отворете IDE на Arduino. От Инструменти задайте дъската Arduino на Arduino / Genuino UNO.

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

  3. От същото меню на инструмента задайте номера на порта, който видяхте в контролния панел.

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

  4. Изтеглете кода, приложен по-долу, и го копирайте във вашата IDE. За да качите кода, щракнете върху бутона за качване.

Можете да изтеглите кода от Тук

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

Кодът е много прост. По-долу е обяснено накратко:

  1. В началото на кода щифтовете на сензора се инициализират и заедно с това се инициализират и щифтовете за драйвера на двигателя L298N.
    int enable1pin = 10; // Инициализиране на ШИМ щифт за аналогов вход за двигател 1 int motor1pin1 = 2; // Инициализиране на положителен щифт за двигател 1 int motor1pin2 = 3; // Инициализиране на отрицателен щифт за двигател 1 int enable2pin = 11; // Инициализиране на ШИМ щифт за аналогов вход за двигател 2 int motor2pin1 = 4; // Инициализиране на положителен щифт за мотор 2 int motor2pin2 = 5; // Инициализиране на отрицателен щифт за двигател 2 int S1 = 12; // Инициализиране на щифт 12 за сензор 1 int S2 = 9; // Инициализиране на щифт 9 за сензор 2 int S3 = 8; // Инициализиране на щифт 8 за сензор 3 int S4 = 7; // Инициализиране на щифт 7 за сензор 4 int S5 = 6; // Инициализиране на щифт 6 за сензор 5
  2. настройка за празнота () е функция, която се използва за задаване на щифтовете като INPUT или OUTPUT. Той също така определя скоростта на предаване на Arduino. Скорост на предаване е скоростта, с която платката на микроконтролера комуникира с другите прикрепени компоненти.
    {pinMode (enable1pin, OUTPUT); // Активиране на ШИМ за двигател 1 pinMode (enable2pin, OUTPUT); // Активиране на PWM за Motor 2 pinMode (motor1pin1, OUTPUT); // Задаване на мотор1 pin1 като изход pinMode (motor1pin2, OUTPUT); // Задаване на мотор1 pin2 като изход pinMode (motor2pin1, OUTPUT); // Задаване на мотор2 pin1 като изход pinMode (motor2pin2, OUTPUT); // Задаване на мотор2 pin2 като изход pinMode (S1, INPUT); // Настройка на сензор1 като входен pinMode (S2, INPUT); // Настройка на сензор2 като входен режим (S3, INPUT); // Настройка на сензор3 като входен режим (S4, INPUT); // Настройка на сензор4 като входен pinMode (S5, INPUT); // Настройка на сензор5 като вход Serial.begin (9600); // Задаване на скорост на предаване}
  3. цикъл void () е функция, която работи отново и отново в цикъл. В този цикъл ние даваме инструкции на Arduino UNO какви операции да се извършат. Пълната скорост на двигателите е 255 и двата двигателя имат различна скорост. Така че, ако искаме да преместим робота напред, обърнете се надясно и т.н., трябва да регулираме скоростта на двигателите. Използвали сме аналогови щифтове в кода, защото искаме да променяме скоростта на двата двигателя при различни условия. Можете сами да регулирате скоростта на вашите двигатели.
    void loop () {if (! (digitalRead (S1)) &&! (digitalRead (S2)) && (digitalRead (S3)) &&! (digitalRead (S4)) &&! (digitalRead (S5))) // Препращане напред реда {analogWrite (enable1pin, 61); // Двигател 1 скорост analogWrite (enable2pin, 63); // Двигател с 2 скорости digitalWrite (motor1pin1, HIGH); // Двигател 1 пин 1, настроен на High digitalWrite (motor1pin2, LOW); // Двигател 1 пин 2 е настроен на Low digitalWrite (motor2pin1, HIGH); // Двигател 2-пинов 1, зададен на High digitalWrite (motor2pin2, LOW); // Двигател 2 пин 2 е настроен на Нисък} ако (! (DigitalRead (S1)) &&! (DigitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) / / Остър завой надясно {analogWrite (enable1pin, 60); // Двигател 1 скорост analogWrite (enable2pin, 80); // Двигател с 2 скорости digitalWrite (motor1pin1, HIGH); // Двигател 1 пин 1, настроен на High digitalWrite (motor1pin2, LOW); // Двигател 1 пин 2 е настроен на Low digitalWrite (motor2pin1, LOW); // Двигател 2-пинов 1, зададен на Low digitalWrite (motor2pin2, LOW); // Двигател 2 пин 2 е настроен на Ниско} if ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) &&! (DigitalRead (S4)) &&! (DigitalRead (S5))) / / Остър завой наляво {analogWrite (enable1pin, 80); // Двигател 1 скорост analogWrite (enable2pin, 65); // Двигател с 2 скорости digitalWrite (motor1pin1, LOW); // Двигател 1 пин 1 настроен на Low digitalWrite (motor1pin2, LOW); // Двигател 1 пин 2 е настроен на Low digitalWrite (motor2pin1, HIGH); // Двигател 2-пинов 1, зададен на High digitalWrite (motor2pin2, LOW); // Двигателят 2 пин 2 е настроен на Low} ако ((digitalRead (S1)) && (digitalRead (S2)) && (digitalRead (S3)) && (digitalRead (S4)) && (digitalRead (S5))) // стоп {analogWrite (enable1pin, 0); // Двигател 1 скорост analogWrite (enable2pin, 0); // Двигател с 2 скорости digitalWrite (motor1pin1, LOW); // Двигател 1 пин 1 настроен на Low digitalWrite (motor1pin2, LOW); // Двигател 1 пин 2 е настроен на Low digitalWrite (motor2pin1, LOW); // Двигател 2-пинов 1, зададен на Low digitalWrite (motor2pin2, LOW); // Двигателят 2 пин 2 е настроен на Нисък}}

Приложения

  1. Промишлени приложения : Тези роботи могат да се използват като автоматизирани носители на оборудване в индустрии, заместващи традиционните конвейерни ленти.
  2. Домашни приложения : Те могат да се използват и в домове за домашни цели като почистване на пода, кухненски работи и др.
  3. Заявления за насоки : Тези роботи могат да се използват на обществени места като търговски центрове, хранителни съдилища, музеи и др., За да осигурят насоки по пътя