Создание робота, избегающего препятствия, на Raspberry Pi — руководство для начинающих
Если вы новичок в Raspberry Pi и хотите практичный проект, сочетающий софт и железо, это руководство проведет через построение Python-контролируемого робота, обнаруживающего и избегающего препятствия с помощью инфракрасных датчиков.
Роботы-исключители препятствий популярны для изучения робототехники и удивительно просты в сборке. Следуя этому туториалу, вы добавите надежное избегание объектов к своему роботу или просто исследуете Python и GPIO-экосистему Raspberry Pi.
Что понадобится
- Raspberry Pi B, B+, 2, 3 или 4 плюс базовая периферия (SD-карта, клавиатура, мышь, блок питания).
- IR-модули датчиков расстояния (напр., популярный 4-канальный IR-сенсор).
- Геарные DC-моторы с подходящим крутящим моментом для вашего шасси.
- Плата драйвера моторов L293D.
- Робот-шасси и колеса.
- Опорное колесо для стабильности.
- Макетная плата и двусторонний скотч.
- Перемычки male-to-male / female-to-male.
- 9 V батарея и подходящие коннекторы.
- Кнопка и резистор 220 Ом (для контроля включения).
Как это работает
Ядро функциональности робота опирается на два IR-сенсора, обнаруживающих объекты в диапазоне 5–6 см. Когда объект присутствует, выходной пин датчика идет в LOW (0 В). Когда объект отсутствует, он остается HIGH (5 В). Raspberry Pi считывает эти цифровые сигналы через свои GPIO-пины, и прикрепленный Python-скрипт направляет моторы соответственно.
IR (инфракрасные) модули состоят из IR-светодиода-передатчика и фотодиода-приемника. Объект отражает часть испускаемого IR-света обратно к приемнику, вызывая LOW-сигнал, сигнализирующий о приближении. Эти сигналы идут на GPIO-входы Pi.
Когда робот стартует — запускается нажатием кнопки — Pi запускает DC-моторы вперед через драйвер L293D. Если IR-сенсор обнаруживает препятствие, скрипт сначала кратковременно реверсирует моторы, затем выполняет поворот для обхода препятствия.
Шаг 1: Проводка IR-сенсоров
Подайте питание сенсорам 5 В и GND от Raspberry Pi, и соедините выходные пины с GPIO пинами 3 и 16 (используя официальную схему GPIO pinout). Режим GPIO.BOARD нумерует пины как они появляются на хедере.
Сохраните следующий скрипт как irtest.py:
import RPi.GPIO as GPIO import time GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) # Правый сенсор (GPIO 3) GPIO.setup(3, GPIO.IN) # Левый сенсор (GPIO 16) с pull-up GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP) while True: right = GPIO.input(3) left = GPIO.input(16) if right == 0: print "Obstacle detected on Right", right time.sleep(0.1) elif left == 0: print "Obstacle detected on Left", left time.sleep(0.1) Запустите sudo python irtest.py. Когда вы перекроете сенсор рукой, консоль выведет сообщение, указывающее, с какой стороны обнаружено препятствие.
Шаг 2: Подключение моторов через драйвер L293D
Подайте питание L293D от 9 V батареи (плюс на + пин, минус на – пин). Соедините землю платы с GND Raspberry Pi. Выводы моторов подключите к выходным пинам драйвера, а контрольные пины — к дополнительным GPIO (см. даташит L293D для определения пинов). С подключенными моторами скрипт может командовать движением вперед, назад и поворотами.
После сборки железа включите Raspberry Pi, нажмите кнопку и наблюдайте, как робот навигирует, избегая препятствий.
Для дополнительных ресурсов скачайте наш бесплатный eBook по Raspberry Pi и Arduino для углубления навыков.
Производственный процесс
- Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
- Создание метеостанции на Raspberry Pi с ежедневными email-отчётами о погоде
- Построение DIY инфракрасного датчика движения для Raspberry Pi — пошаговое руководство
- Управление светодиодом с PIR-датчиком движения на Raspberry Pi
- Построение низкобюджетного датчика влажности почвы на Raspberry Pi для умного полива
- Создание счетчика Гейгера на Raspberry Pi — туториал по открытому датчику радиации
- Создайте свой первый IoT-проект с Raspberry Pi, DHT11 и ThingSpeak
- Лучшие аксессуары для раскрытия полного потенциала Raspberry Pi
- Учебник по датчику света на Raspberry Pi: подключение фоторезистора и чтение уровня освещенности на Python
- Создайте домашний монитор температуры на Raspberry Pi с MCP9808, InfluxDB и Grafana