- Необхідні компоненти:
- Ультразвуковий модуль датчика:
- Пояснення схеми:
- Як це працює:
- Пояснення програмування:
Роботи - це машини, які зменшують людські зусилля у важких роботах шляхом автоматизації завдань у галузях промисловості, на фабриках, в лікарнях тощо. Більшість роботів запускаються за допомогою певного блоку управління або компонентів, таких як кнопка, пульт, джойстик, ПК, жести виконання якоїсь команди за допомогою контролера або процесора. Але сьогодні ми тут з автоматичним роботом, який рухається автономно, без яких - або зовнішніх подій, уникаючи всіх перешкод на своєму шляху, так, ми говоримо про Перешкода Як уникнути робота. У цьому проекті ми використовували драйвер Raspberry Pi та Motor для керування роботом та ультразвуковий датчик для виявлення об’єктів на шляху роботи.
Раніше ми розглядали багато корисних роботів, ви можете знайти їх у нашому розділі проектів робототехніки.
Необхідні компоненти:
- Raspberry Pi
- Модуль ультразвукового датчика HC-SR04
- ROBOT Шасі в комплекті з гвинтом
- Двигуни постійного струму
- L293D ІС
- Колеса
- Хлібна дошка
- Резистор (1k)
- Конденсатор (100 нФ)
- Підключення проводів
- Блок живлення або блок живлення
Ультразвуковий модуль датчика:
Перешкода Avoider Робот є Автоматизований робот, і це не потрібно управляти з допомогою будь-якого пульта дистанційного керування. Ці типи автоматизованих роботів мають деякі датчики "шостого чуття", такі як детектори перешкод, детектор звуку, детектор тепла або металошукачі. Тут ми зробили виявлення перешкод за допомогою ультразвукових сигналів. Для цього ми використали ультразвуковий модуль датчика.
Ультразвукові датчики зазвичай використовуються для виявлення предметів та визначення відстані перешкоди від датчика. Це чудовий інструмент для вимірювання відстані без будь-якого фізичного контакту, наприклад, Вимірювання рівня води в резервуарі, вимірювання відстані, робот, який уникає перешкод тощо. Отже, тут ми виявили об'єкт і виміряли відстань за допомогою ультразвукового датчика та Raspberry Pi.
Ультразвуковий датчик HC-SR04 використовується для вимірювання відстані в діапазоні 2 см-400 см з точністю до 3 мм. Модуль датчика складається з ультразвукового передавача, приймача та схеми управління. Ультразвуковий датчик складається з двох круглих очей, з яких одне використовується для передачі ультразвукової хвилі, а друге для її отримання.
Ми можемо розрахувати відстань об’єкта, виходячи з часу, за який ультразвукова хвиля повертається назад до датчика. Оскільки час і швидкість звуку відомі, ми можемо розрахувати відстань за наступними формулами.
- Відстань = (Час х Швидкість звуку в повітрі (343 м / с)) / 2.
Значення ділиться на два, оскільки хвиля рухається вперед і назад, покриваючи однакову відстань. Таким чином, час досягнення перешкоди складає лише половину від загального часу.
Отже, ми розрахували відстань (в сантиметрах) від перешкоди, як показано нижче:
pulse_start = time.time (), а GPIO.input (ECHO) == 1: # Перевірте, чи ECHO ВИСОКИЙ GPIO. вихід (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 відстань = кругла (відстань, 2) avgDistance = avgDistance + distance
Де тривалість імпульсу - це час між передачею та прийомом ультразвукового сигналу.
Пояснення схеми:
Схема дуже проста для цього робота, який уникає перешкод за допомогою Raspberry Pi. Модуль ультразвукового датчика, який використовується для виявлення предметів, підключений до штифтів GPIO 17 і 27 Raspberry Pi. Motor Driver IC L293D підключений до Raspberry Pi 3 для управління двигунами робота. Вхідні штифти 2, 7, 10 і 15 драйвера двигуна підключені до контактів Raspberry Pi GPIO No 12, 16, 20 і 21 відповідно. Тут ми використовували два двигуни постійного струму для керування роботом, в якому один двигун підключений до вихідних штифтів 3 і 6 мікросхеми драйвера двигуна, а інший двигун підключений до контактів 11 і 14 мікросхеми драйвера двигуна.
Як це працює:
Робота з цим автономним роботом дуже проста. Коли робот увімкнено і починає працювати, Raspberry Pi вимірює відстань предметів до нього за допомогою модуля ультразвукового датчика і зберігає у змінній. Потім RPi порівнює це значення із заздалегідь визначеними значеннями і приймає відповідні рішення щодо переміщення робота вліво, вправо, вперед або назад.
У цьому проекті ми вибрали відстань 15 см для прийняття будь-якого рішення Raspberry Pi. Тепер, коли Raspberry Pi стає менше 15 см від будь-якого об’єкта, Raspberry Pi зупиняє робота і переміщує його назад, а потім повертає вліво або вправо. Тепер перед тим, як знову рухатись вперед, Raspberry Pi знову перевіряє, чи є якась перешкода в межах відстані 15 см, якщо так, то знову повторює попередній процес, інакше рухайте робота вперед, доки він знову не виявить будь-яку перешкоду або предмет.
Пояснення програмування:
Для програми ми використовуємо мову Python. Перед кодуванням користувачеві потрібно налаштувати Raspberry Pi. Ви можете переглянути наші попередні підручники з Початок роботи з Raspberry Pi та Встановлення та налаштування ОС Raspbian Jessie в Pi.
Програмна частина цього проекту відіграє дуже важливу роль для виконання всіх операцій. Перш за все, ми включаємо необхідні бібліотеки, ініціалізуємо змінні та визначаємо висновки для ультразвукового датчика, двигуна та компонентів.
імпорт RPi.GPIO як час GPIO імпорт # Бібліотека часу імпорту GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Після цього ми створили деякі функції def forward (), def back (), def left (), def right () для переміщення робота вперед, назад, вліво або вправо відповідно і def stop () для зупинки робота, перевірте функції в коді, наведені нижче.
Потім в основній програмі ми ініціювали ультразвуковий датчик і зчитували час між передачею та прийомом сигналу та обчислювали відстань. Тут ми повторили цей процес 5 разів для кращої точності. Ми вже пояснювали процес розрахунку відстані за допомогою ультразвукового датчика.
i = 0 avgDistance = 0 для i в діапазоні (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) while GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time () while GPIO.input (ECHO) == 1: # Перевірте, чи ECHO HIGH GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distance = round (distance, 2) avgDistance = avgDistance + distance
Нарешті, якщо Робот знаходить перед собою будь-яку перешкоду, то після того, як віддалиться від перешкоди, ми запрограмували Роботу піти іншим маршрутом.
if avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): right () flag = 1 else: правий () прапор = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () прапор = 0
Повний код цього робота Raspberry Pi, щоб уникнути перешкод, поданий нижче з демонстраційним відео.