Измерение расстояний с помощью Raspberry Pi и ультразвукового датчика HC-SR04


В данной статье мы рассмотрим подключение ультразвукового датчика HCSR04 к плате Raspberry Pi и измерение расстояний с его помощью. Ранее на нашем сайте мы использовали совместно датчик HCSR04 и плату Raspberry Pi в проекте робота, объезжающего препятствия. Также на нашем сайте вы можете посмотреть статьи про подключение датчика HC-SR04 к микроконтроллеру AVR и плате Arduino. Также вы можете посмотреть все проекты, в которых был использован датчик HCSR04 – среди них много действительно интересных проектов.

Внешний вид проекта измерения расстояний с помощью Raspberry Pi и ультразвукового датчика HCSR04

Принцип работы ультразвукового датчика HC-SR04

Ультразвуковой датчик HC-SR04 используется для измерения расстояний в диапазоне 2-400 см с точностью 3 мм. Датчик состоит из ультразвукового передатчика, ультразвукового приемника и схемы управления.

Внешний вид ультразвукового датчика HC-SR04

Ультразвуковой датчик HC-SR04 обеспечивает на своем выходе сигнал, пропорциональный дистанции до препятствия. Датчик генерирует звуковые колебания в ультразвуковом диапазоне (после получения управляющего импульса) и после этого ждет когда они вернутся к нему (эхо), отразившись от какого-нибудь препятствия. Затем, основываясь на скорости звука (340 м/с) и времени, необходимом для того чтобы эхо достигло источника (нашего датчика), датчик обеспечивает на своем выходе сигнал, пропорциональный расстоянию до препятствия.

Временные диаграммы работы ультразвукового датчика HC-SR04

Как показано на рисунке сначала нам нужно инициировать датчик для измерения расстояний, для этого на его триггерный контакт (trigger pin) необходимо подать логический сигнал высокого уровня длительностью не менее 10 мкс, после этого датчик генерирует серию звуковых колебаний и после получения отраженного сигнала (эхо) датчик обеспечивает на своем выходе сигнал, пропорциональный расстоянию между ним и препятствием.

Ультразвуковой сигнал отражается от поверхности, возвращается обратно и улавливается приемником ультразвукового сигнала датчика. После этого на контакте Echo датчика устанавливается напряжение высокого уровня (high) на время, пропорциональное расстоянию до препятствия.

Принцип определения расстояния с помощью ультразвукового датчика HC-SR04

После этого расстояние до препятствия можно рассчитать по следующей формуле:

Distance= (Time x Speed of Sound in Air (343 m/s))/2

Таким образом, измеренное расстояние в сантиметрах можно определить по формуле: Distance in centimeter = 17150*T.

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress).
  2. ЖК дисплей 16x2 (купить на AliExpress).
  3. Ультразвуковой датчик HC-SR04 (купить на AliExpress).
  4. Резистор 1 кОм – 2 шт. (купить на AliExpress).
  5. Конденсатор 1000 мкФ (купить на AliExpress).
  6. Источник питания.
  7. Макетная плата.
  8. Соединительные провода.

Схема проекта

Схема подключения ультразвукового датчика HC-SR04 к плате Raspberry Pi представлена на следующем рисунке.

Схема подключения ультразвукового датчика HC-SR04 к плате Raspberry Pi

В данной схеме мы использовали 8-битный (D0-D7) способ подключения ЖК дисплея к плате Raspberry Pi, хотя это не обязательно – можно использовать и 4-битный способ, но в этом случае программа будет немного сложнее. Поэтому мы и выбрали более простой для начинающих способ – 8-битный. Таким образом, мы подключили к плате Raspberry Pi 10 контактов ЖК дисплея: 8 контактов для передачи данных и 2 контакта для управления. Полная схема соединений между платой Raspberry Pi и ЖК дисплеем представлена в следующей таблице.

Схема соединений между платой Raspberry Pi и ЖК дисплеем

Ультразвуковой датчик HC-SR04 содержит 4 контакта:

  1. PIN1 – VCC или +5V – на него подается питающее напряжение.
  2. PIN2 – TRIGGER – на него подается импульс длительностью 10 мкс чтобы запустить датчик в работу.
  3. PIN3 – ECHO – на этом контакте формируется импульс, длительность которого пропорциональна расстоянию до препятствия.
  4. PIN4 – GROUND.

На контакте Echo датчика HC-SR04 формируется импульс напряжением +5V, поэтому данный контакт нельзя непосредственно подключать к плате Raspberry Pi. Поэтому для его подключения к плате мы использовали делитель напряжения (на резисторах R1 и R2) чтобы получить логику +3.3V вместо логики +5V.

Объяснение работы проекта

В данном проекте мы будем выполнять следующие действия:

  1. Подаем на контакт trigger датчика импульс длительностью 10 мкс.
  2. Датчик испускает ультразвуковую волну. После ее приема (после того как она отразится от препятствия), датчик на своем контакте ECHO формирует импульс, пропорциональный расстоянию до препятствия.
  3. Мы измеряем длительность импульса, то есть интервал времени от смены состояния контакта ECHO с LOW до HIGH до момента смены его состояния с HIGH на LOW.
  4. На основе измеренной длительности импульса рассчитываем расстояние до препятствия.
  5. Отображаем рассчитанное расстояние на экране ЖК дисплея 16x2.

Соответственно, в программе для Raspberry Pi на Python мы должны запрограммировать следующие действия:

  1. Подать запускающий импульс на контакт trigger датчика.
  2. Записать время начала и окончания импульса с датчика (с его контакта ECHO).
  3. Рассчитать расстояние на основе известных моментов времени START и STOP.
  4. Отобразить полученный результат на экране ЖК дисплея 16x2.

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы на Python

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
1 243 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *