- Необходимые компоненты:
- Модуль ультразвукового датчика:
- Описание схемы:
- Как это устроено:
- Объяснение программирования:
Роботы - это машины, которые сокращают человеческие усилия при выполнении тяжелых работ за счет автоматизации задач в промышленности, на заводах, больницах и т. Д. Большинство роботов управляются с помощью какого-либо блока управления или компонентов, таких как кнопка, пульт дистанционного управления, джойстик, ПК, жесты и выполнение какой-либо команды с помощью контроллера или процессора. Но сегодня мы здесь с автоматическим роботом, который движется автономно без каких-либо внешних событий, избегая всех препятствий на своем пути, да, мы говорим о роботе, избегающем препятствий. В этом проекте мы использовали Raspberry Pi и драйвер двигателя для управления роботом и ультразвуковой датчик для обнаружения объектов на пути робота.
Ранее мы рассмотрели много полезных роботов, вы можете найти их в нашем разделе проектов робототехники.
Необходимые компоненты:
- Raspberry Pi
- Модуль ультразвукового датчика HC-SR04
- РОБОТ Шасси в комплекте с винтом
- Двигатели постоянного тока
- L293D IC
- Колеса
- Хлебная доска
- Резистор (1к)
- Конденсатор (100 нФ)
- Соединительные провода
- Блок питания или блок питания
Модуль ультразвукового датчика:
Препятствие Avoider Робот является Автоматизированный робот, и это не нужно управлять с помощью любого пульта дистанционного управления. Эти типы автоматизированных роботов имеют некоторые датчики «шестого чувства», такие как детекторы препятствий, звуковой детектор, тепловой детектор или металлоискатели. Здесь мы сделали обнаружение препятствий с помощью ультразвуковых сигналов. Для этого мы использовали модуль ультразвукового датчика.
Ультразвуковые датчики обычно используются для обнаружения объектов и определения расстояния от препятствия до датчика. Это отличный инструмент для измерения расстояния без какого-либо физического контакта, например, измерение уровня воды в резервуаре, измерение расстояния, робот, избегающий препятствий и т. Д. Итак, здесь мы обнаружили объект и измерили расстояние с помощью ультразвукового датчика и Raspberry Pi.
Ультразвуковой датчик HC-SR04 используется для измерения расстояния в диапазоне от 2 см до 400 см с точностью до 3 мм. Модуль датчика состоит из ультразвукового передатчика, приемника и цепи управления. Ультразвуковой датчик состоит из двух круглых глазков, один из которых используется для передачи ультразвуковой волны, а другой - для ее приема.
Мы можем рассчитать расстояние до объекта на основе времени, которое требуется ультразвуковой волне, чтобы вернуться обратно к датчику. Поскольку время и скорость звука известны, мы можем рассчитать расстояние по следующим формулам.
- Расстояние = (Время x скорость звука в воздухе (343 м / с)) / 2.
Значение делится на два, поскольку волна движется вперед и назад, преодолевая одинаковое расстояние. Таким образом, время, необходимое для достижения препятствия, составляет лишь половину от общего времени.
Итак, мы рассчитали расстояние (в сантиметрах) до препятствия, как показано ниже:
pulse_start = time.time () while GPIO.input (ECHO) == 1: # Проверить, является ли ECHO ВЫСОКИМ 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
Где pulse_duration - время между отправкой и получением ультразвукового сигнала.
Описание схемы:
Схема очень проста для этого робота, избегающего препятствий, использующего Raspberry Pi. Модуль ультразвукового датчика, используемый для обнаружения объектов, подключается к выводам 17 и 27 GPIO Raspberry Pi. Motor Driver IC L293D подключен к Raspberry Pi 3 для управления двигателями робота. Входные контакты 2, 7, 10 и 15 драйвера двигателя подключены к контактам Raspberry Pi GPIO с номерами 12, 16, 20 и 21 соответственно. Здесь мы использовали два двигателя постоянного тока для управления роботом, в котором один двигатель подключен к выходным контактам 3 и 6 IC драйвера двигателя, а другой двигатель подключен к контактам 11 и 14 IC драйвера двигателя.
Как это устроено:
Работать с этим автономным роботом очень просто. Когда робот включается и начинает работать, Raspberry Pi измеряет расстояния до объектов перед ним с помощью модуля ультразвукового датчика и сохраняет в переменной. Затем RPi сравнивает это значение с предопределенными значениями и принимает соответствующие решения о перемещении робота влево, вправо, вперед или назад.
В этом проекте мы выбрали расстояние 15 см для принятия любого решения Raspberry Pi. Теперь, когда Raspberry Pi оказывается на расстоянии менее 15 см от любого объекта, Raspberry Pi останавливает робота и перемещает его назад, а затем поворачивает влево или вправо. Теперь, прежде чем снова двигать его вперед, Raspberry Pi снова проверяет, присутствует ли какое-либо препятствие в пределах диапазона 15 см, если да, то снова повторяет предыдущий процесс, иначе переместите робота вперед, пока он снова не обнаружит какое-либо препятствие или объект.
Объяснение программирования:
Здесь для Программы мы используем язык Python. Перед кодированием пользователю необходимо настроить Raspberry Pi. Вы можете проверить наши предыдущие руководства по началу работы с Raspberry Pi и установке и настройке Raspbian Jessie OS в Pi.
Программная часть этого проекта играет очень важную роль для выполнения всех операций. Прежде всего, мы включаем необходимые библиотеки, инициализируем переменные и определяем контакты для ультразвукового датчика, двигателя и компонентов.
import RPi.GPIO as GPIO import time #Import time library 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) в то время как GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time () в то время как GPIO.input (ECHO) == 1: # Проверить, является ли ECHO ВЫСОКИМ GPIO.output (led, Ложь) 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: left () flag = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () flag = 0
Полный код этого робота для обхода препятствий на Raspberry Pi приведен ниже с демонстрационным видео.