В этой статье я покажу вам, как использовать ультразвуковой датчик HC-SR04 для измерения расстояния между вашим датчиком и объектом на своем пути с помощью Raspberry Pi. Давайте начнем.
Необходимые компоненты:
Чтобы успешно измерить расстояние с помощью датчика Raspberry Pi и HC-SR04, вам потребуется,
- Одноплатный компьютер Raspberry Pi 2 или 3 с установленным Raspbian.
- Модуль ультразвукового датчика HC-SR04.
- Резисторы 3x10кОм.
- Макет.
- Некоторые разъемы между мужчинами и женщинами.
- Некоторые штекерные разъемы.
Я написал специальную статью об установке Raspbian на Raspberry Pi, которую вы можете проверить по адресу https: // linuxhint.com / install_raspbian_raspberry_pi / если вам нужно.
Распиновка HC-SR04:
HC-SR04 имеет 4 контакта. VCC, TRIGGER, ECHO, GROUD.
Рис.1: Распиновка HC-SR04 (https: // www.мышка.com / ds / 2/813 / HCSR04-1022824.pdf)
Вывод VCC должен быть подключен к выводу + 5V Raspberry Pi, который является выводом 2. Контакт заземления должен быть подключен к контакту GND Raspberry Pi, который является контактом 4.
Контакты TRIGGER и ECHO должны быть подключены к контактам GPIO Raspberry Pi. В то время как вывод TRIGGER может быть напрямую подключен к одному из выводов GPIO Raspberry Pi, для вывода ECHO требуется схема делителя напряжения.
Принципиальная электрическая схема:
Подключите ультразвуковой датчик HC-SR04 к Raspberry Pi следующим образом:
Рис.2: Ультразвуковой датчик HC-SR04, подключенный к Raspberry Pi.
Когда все подключено, это выглядит так:
Рис.3: Ультразвуковой датчик HC-SR04, подключенный к Raspberry Pi на макете.
Рис.4: Ультразвуковой датчик HC-SR04, подключенный к Raspberry Pi на макете.
Написание программы на Python для измерения расстояния с помощью HC-SR04:
Сначала подключитесь к Raspberry Pi с помощью VNC или SSH. Затем откройте новый файл (скажем, расстояние.ру) и введите следующие строки кода:
Здесь строка 1 импортирует библиотеку GPIO Raspberry Pi.
Строка 2 импортирует библиотеку времени.
Внутри пытаться блок, собственно код для измерения расстояния с помощью HC-SR04 записывается.
В наконец-то блок используется для очистки контактов GPIO с GPIO.очистка () метод при выходе из программы.
Внутри пытаться блок, в строке 5, GPIO.setmode (GPIO.ДОСКА) используется для упрощения определения булавок. Теперь вы можете ссылаться на контакты по физическим номерам, как на плате Raspberry Pi.
В строке 7 и 8, pinTrigger установлен на 7 а также pinEcho установлен на 11. В КУРОК вывод HC-SR04 подключен к выводу 7, а ЭХО Контакт HC-SR04 подключен к контакту 11 Rapsberry Pi. Оба являются контактами GPIO.
На строке 10, pinTrigger настроен для ВЫХОДА с использованием GPIO.настраивать() метод.
В строке 11, pinEcho настроен для INPUT с помощью GPIO.настраивать() метод.
Строки 13-17 используются для сброса pinTrigger (установив его на логический 0) и установив pinTrigger до логической 1 в течение 10 мс, а затем до логического 0. За 10 мс датчик HC-SR04 отправляет 8 импульсов 40 кГц.
Линии 19-24 используются для измерения времени, необходимого для отражения импульсов 40 кГц от объекта и обратно к датчику HC-SR04.
В строке 25 расстояние измеряется по формуле,
Расстояние = дельта-время * скорость (340 м / с) / 2
=> Расстояние = дельта-время * (170M / S)
Я рассчитал расстояние в сантиметрах, а не в метрах, чтобы быть точным. Я рассчитал расстояние также округлено до 2 знаков после запятой.
Наконец, в строке 27 выводится результат. Вот и все, очень просто.
Теперь запустите сценарий Python с помощью следующей команды:
расстояние $ python3.руКак видите, измеренное расстояние составляет 8.40 см.
Рис5: объект размещен примерно на 8.40 см от датчика.
Я подошел к объекту немного дальше, измеренное расстояние 21.81см. Итак, он работает, как ожидалось.
Рис. 6: объект размещен примерно на уровне 21.81 см от датчика.
Вот как вы измеряете расстояние с Raspberry Pi с помощью ультразвукового датчика HC-SR04. Смотрите код расстояния.py ниже:
импорт RPi.GPIO как GPIOвремя импорта
пытаться:
GPIO.setmode (GPIO.ДОСКА)
pinTrigger = 7
pinEcho = 11
GPIO.настройка (pinTrigger, GPIO.ВНЕ)
GPIO.настройка (pinEcho, GPIO.В)
GPIO.выход (pinTrigger, GPIO.НИЗКИЙ)
GPIO.выход (pinTrigger, GPIO.ВЫСОКАЯ)
время.спать (0.00001)
GPIO.выход (pinTrigger, GPIO.НИЗКИЙ)
а GPIO.вход (pinEcho) == 0:
pulseStartTime = время.время()
а GPIO.ввод (pinEcho) == 1:
pulseEndTime = время.время()
PulseDuration = pulseEndTime - PulseStartTime
расстояние = круглое (длительность импульса * 17150, 2)
print ("Расстояние:%.2f см "% (расстояние))
наконец-то:
GPIO.очистка ()