Как построить свой первый робот с Raspberry Pi
Этот урок покажет вам, как создать робота на основе языка python, который избегает препятствия и свободно перемещается. Система использует инфракрасные модули для обнаружения объектов.
.
Вся система избегает столкновения с препятствиями благодаря встроенным датчикам. Здесь этот робот использует два инфракрасных сенсорных модуля, которые могут обнаруживать объекты в диапазоне 5-6 см. Этот датчик выдает цифровой сигнал LOW (0 В), если в пределах его диапазона находится объект. И выдает цифровой сигнал HIGH (5 В) в противном случае.
Так как же работают эти ИК-датчики? Эти модули состоят из пары ИК-светодиодов приемника и передатчика. Когда объект попадает на ИК-датчик, поверхность объекта отражает часть ИК-света обратно к приемнику. Таким образом, приемник выдает сигнал LOW, уведомляющий о том, что объект находится перед датчиком.
Датчики подключены к входным контактам GPIO Raspberry Pi. Затем pi, используя скрипт python, проверяет, не уменьшены ли контакты GPIO, подключенные к ИК-датчикам. Если он пойдет на низком уровне, то он приказывает двигателям постоянного тока сначала двигаться в обратном направлении, а затем поворачиваться. Более того, этот робот сначала активируется, когда мы нажимаем кнопку на макете, после чего Raspberry Pi управляет двигателями постоянного тока, чтобы двигаться вперед через плату драйвера L293D.
Во-первых, вам нужно включить свой Raspberry Pi после подключения к монитору, клавиатуре и т. Д. Затем мы должны проверить ИК-модули датчиков. Для этого подключите ИК-модули к вашей Raspberry Pi, как показано на следующей схеме. Подайте питание на датчик, подав 5V (+ pin), GND (- pin) из Raspberry Pi. Подключите контакт B на датчиках к контактам 3 GPIO pIO GPI pi. Вы можете проверить вывод pin GPI pasp, как показано на схеме контактов. Мы используем конфигурацию GPIO.BOARD, что означает, что выводы нумеруются в соответствии с их обычным порядком на плате (1,2,3, ..). Прочитайте конфигурацию контактов на сенсорном модуле и подключите соответственно.
Затем вам нужно скопировать и вставить следующий код и сохранить его как файл python irtest.py:
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(3, GPIO.IN) #Right sensor connection
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Left sensor connection
while True:
i=GPIO.input(3) #Reading output of right IR sensor
j=GPIO.input(16) #Reading output of left IR sensor
if i==0: #Right IR sensor detects an object
print "Obstacle detected on Left",i
time.sleep(0.1)
elif j==0: #Left IR sensor detects an object
print "Obstacle detected on Right",j
time.sleep(0.1)
После сохранения этого файла и его запуска: «sudo python irtest.py». Вы заметите, что когда вы блокируете датчик рукой, на экране появляется следующий вывод:
После тестирования модулей ИК-датчиков, вам необходимо подключить и протестировать модуль L293D и двигатели. Включите модуль L293D, подключив + и - штырьки платы к батарее 9 В. Также подключите «-» платы к GND Raspberry Pi. Вы можете обратиться к схеме подключения здесь для завершения соединений:
Затем вы должны предоставить входные данные для платы. Четыре выходных контакта GPIO от Raspberry Pi управляют направлением вращения двух двигателей. Затем два вывода двигателей подключаются к 4 выходным клеммам платы. Затем двигатели, в зависимости от команды от Raspberry Pi, питаются от батареи 9 В. Логика управления двигателями из Raspberry Pi приведена ниже:
Здесь HIGH означает сигнал 5V или цифровой 1, а LOW - 0V или цифровой 0. Например: GPIO.output (5,1), эта команда посылает сигнал HIGH (цифровой 1), чтобы вывести 5 на пине Raspberry Pi. Таким образом, направление каждого мотора можно контролировать, записывая сигналы HIGH / LOW через два вывода GPIO из pasp pi. Затем вам нужно направить нажимную кнопку Raspberry Pi, как показано на приведенной выше схеме соединений. Эта кнопка используется для активации робота. После подключения робота вам нужно прикрепить колеса. Используйте двустороннюю ленту для фиксации деталей на шасси робота. После этого у вас будет еонструкция, которая выглядит примерно так:
После подключения двигателей вам необходимо их проверить. Используйте приведенный ниже код для проверки двигателей и L293D. Убедитесь, что вы подключили плату драйвера (L293D) и подключены согласно приведенной выше схеме. После этого скопируйте приведенный ниже код и сохраните его как файл python: motor.py на вашем paspberry pi. Затем запустите его с помощью команды: sudo python motor.py. Вы заметите, что оба двигателя сначала вращаются в одном направлении, а затем через секунду вращаются в противоположном направлении. Этот процесс повторяется, пока вы его не прерываете.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(5,GPIO.OUT) #Left motor input A
GPIO.setup(7,GPIO.OUT) #Left motor input B
GPIO.setup(11,GPIO.OUT) #Right motor input A
GPIO.setup(13,GPIO.OUT) #Right motor input B
GPIO.setwarnings(False)
while True:
print "Rotating both motors in clockwise direction"
GPIO.output(5,1)
GPIO.output(7,0)
GPIO.output(11,1)
GPIO.output(13,0)
time.sleep(1) #One second delay
print "Rotating both motors in anticlockwise direction"
GPIO.output(5,0)
GPIO.output(7,1)
GPIO.output(11,0)
GPIO.output(13,1)
time.sleep(1)
#One second delay
После завершения всех настроек оборудования вам необходимо загрузить и скопировать эту программу на Python отсюда на ваш paspberry pi. Эта программа , называемая : robot.py , выполняется с помощью команды: sudo python robot.py. Она оживит ваш робот, и он начнет двигаться, когда вы нажмете кнопку. И вы заметите, как он избегает объекты перед своими датчиками и свободно перемещается.
Всякий раз, когда ваши ИК-модули обнаруживают объект в пределах 5 см перед ним, они сообщают Raspberry Pi, что объект находится рядом с ним (отправка цифровых сигналов LOW). Затем pi посылает команды двигателю, заставляя его двигаться в обратном направлении, а затем поворачивая вправо / влево, и снова робот движется вперед, уклоняясь от объекта. Робот активируется, когда мы снова нажимаем кнопку.После копирования кода на свой Raspberry Pi, вы можете сделать его по-настоящему беспроводным, используя для этого аккумулятор для смартфонов. И USB-ключ для Wi-Fi, чтобы общаться с ним.