Рубрики
Проекты на Raspberry Pi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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