Gamit ang HC-SR04 kasama ang Raspberry Pi

Using the HC-SR04 With the Raspberry Pi

Ang HC-SR04 ultrasonic sensor ay isang tanyag, epektibong tool para sa pagsukat ng distansya sa iba't ibang mga proyekto ng DIY at propesyonal. Kapag ipinares sa isang Raspberry Pi, binubuksan nito ang isang mundo ng mga posibilidad para sa paglikha ng mga aplikasyon tulad ng pagtuklas ng balakid, pagsukat sa antas, at kahit na mga interactive na pag -install. Ang post sa blog na ito ay gagabay sa iyo sa proseso ng pag-set up at paggamit ng HC-SR04 sensor sa iyong Raspberry Pi.

Ano ang HC-SR04 Ultrasonic Sensor?

Ang HC-SR04 ay isang module ng ultrasonic sensor na sumusukat sa distansya sa pamamagitan ng paglabas ng mga ultrasonic waves at pagkalkula ng oras na kinakailangan upang bumalik ang echo. Nagpapatakbo ito sa 5V at kilala para sa kawastuhan at pagiging maaasahan nito sa maikli hanggang medium-range na mga sukat ng distansya, karaniwang sa pagitan ng 2 cm at 400 cm.

Mga sangkap na kakailanganin mo

  • Raspberry Pi (anumang modelo na may mga GPIO pin, tulad ng Raspberry Pi 4)
  • HC-SR04 Ultrasonic Sensor
  • Jumper wires
  • Tinapay
  • 10kΩ risistor (para sa dibisyon ng boltahe)
  • Opsyonal: LED at risistor para sa visual feedback

Ang mga kable ng HC-SR04 sa Raspberry Pi

Ang pagkonekta sa HC-SR04 sa Raspberry Pi ay nangangailangan ng maingat na paghawak, lalo na dahil ang Raspberry Pi GPIO pin ay gumana sa 3.3V at ang HC-SR04 ay nagpapatakbo sa 5V. Upang maiwasan ang pinsala sa iyong PI, mahalagang gumamit ng isang boltahe na divider sa echo pin.

Mga koneksyon sa pin

  • VCC ng HC-SR04 hanggang 5v pin sa raspberry pi
  • Gnd ng HC-SR04 hanggang Gnd sa Raspberry Pi
  • Trig pin ng hc-sr04 hanggang a GPIO PIN Sa Raspberry Pi (hal., GPIO23)
  • Echo Pin ng HC-SR04 sa Raspberry Pi sa pamamagitan ng isang boltahe divider

Pag -set up ng boltahe divider

Upang ligtas na ikonekta ang echo pin sa Raspberry Pi, gumamit ng isang boltahe na divider na may 10kΩ risistor at isang 20kΩ risistor. Bababa ito ng signal ng 5V sa humigit -kumulang na 3.3V.


# Example schematic for voltage divider
# HC-SR04 Echo pin ---- 10kΩ ----> Raspberry Pi GPIO (Echo)
#                             |
#                           20kΩ
#                             |
#                           GND

Pag -install ng mga kinakailangang aklatan

Bago isulat ang code, tiyakin na ang iyong Raspberry Pi ay napapanahon at na -install ang mga kinakailangang aklatan.


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-rpi.gpio

Pagsulat ng script ng Python

Nasa ibaba ang isang simpleng script ng Python upang makipag-ugnay sa sensor ng HC-SR04. Ang script na ito ay nagpapadala ng isang pulso ng trigger, naghihintay para sa echo, at kinakalkula ang distansya batay sa oras na kinuha para bumalik ang echo.


import RPi.GPIO as GPIO
import time

# GPIO Mode (BOARD / BCM)
GPIO.setmode(GPIO.BCM)

# Set GPIO Pins
TRIG = 23
ECHO = 24

print("Distance Measurement In Progress")

# Set GPIO direction (IN / OUT)
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)

def distance():
    # Set TRIG to LOW
    GPIO.output(TRIG, False)
    time.sleep(2)

    # Send 10us pulse to TRIG
    GPIO.output(TRIG, True)
    time.sleep(0.00001)
    GPIO.output(TRIG, False)

    start_time = time.time()
    stop_time = time.time()

    # Save StartTime
    while GPIO.input(ECHO) == 0:
        start_time = time.time()

    # Save Time of Arrival
    while GPIO.input(ECHO) == 1:
        stop_time = time.time()

    # Time difference between start and arrival
    time_elapsed = stop_time - start_time
    # Multiply with speed of sound (34300 cm/s)
    # and divide by 2, because there and back
    distance = (time_elapsed * 34300) / 2

    return distance

if __name__ == '__main__':
    try:
        while True:
            dist = distance()
            print("Measured Distance = %.1f cm" % dist)
            time.sleep(1)
    except KeyboardInterrupt:
        print("Measurement stopped by User")
        GPIO.cleanup()

Pagpapatakbo ng script

Tiyaking tama ang iyong mga kable at pagkatapos ay patakbuhin ang script gamit ang Python 3:


python3 hc-sr04.py

Dapat mong makita ang sinusukat na distansya sa mga sentimetro na nakalimbag sa console. Kung gumagamit ka ng isang LED para sa visual feedback, maaari mong baguhin ang script upang magaan ang LED kapag ang isang bagay ay nasa loob ng isang tiyak na saklaw.

Pagpapahusay ng iyong proyekto

Kapag mayroon kang pangunahing mga sukat sa distansya na gumagana, isaalang -alang ang pagsasama ng mga karagdagang tampok:

  • LED Indicator: Gumamit ng mga LED upang ipahiwatig ang iba't ibang mga saklaw ng distansya.
  • LCD display: Ipakita ang distansya sa isang LCD screen.
  • Pag -log ng Data: Itala ang mga sukat ng distansya sa paglipas ng panahon para sa pagsusuri.
  • Mga Alert System: Mag -trigger ng mga alarma o abiso kapag ang mga bagay ay masyadong malapit.

Pag -aayos ng mga karaniwang isyu

Ang pagtatrabaho sa mga sensor at GPIO ay maaaring maging mahirap. Narito ang ilang mga karaniwang isyu at kung paano matugunan ang mga ito:

  • Maling mga kable: I-double-check ang lahat ng mga koneksyon, lalo na ang boltahe divider sa echo pin.
  • Maingay na mga sukat: Tiyakin na ang iyong pag -setup ay matatag at isaalang -alang ang pagdaragdag ng mga capacitor upang i -filter ang ingay.
  • Mga salungatan sa GPIO: Siguraduhin na walang ibang mga script o serbisyo ang gumagamit ng parehong mga GPIO pin.
  • Mga Pahintulot: Patakbuhin ang iyong mga script na may naaangkop na pahintulot, gamit sudo kung kinakailangan.

Konklusyon

Ang HC-SR04 ultrasonic sensor ay isang maraming nalalaman at maaasahang sangkap na, kapag pinagsama sa Raspberry Pi, ay maaaring maghatid ng maraming mga aplikasyon mula sa simpleng pagsukat ng distansya sa mga kumplikadong sistema ng automation. Sa pamamagitan ng pagsunod sa mga hakbang na nakabalangkas sa gabay na ito, dapat mong mai-set up at simulan ang pag-eksperimento sa HC-SR04 sa iyong Raspberry Pi. Maligayang pag -ikot!

Mag -iwan ng komento

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.