U ovom članku pokazat ću vam kako pomoću HC-SR04 ultrazvučnog senzora za mjerenje udaljenosti između vašeg senzora i predmeta na njegov način pomoću Raspberry Pi. Započnimo.
Komponente koje su vam potrebne:
Trebate za uspješno mjerenje udaljenosti s Raspberry Pi i HC-SR04 senzorom,
- Računalo s jednom pločom Raspberry Pi 2 ili 3 s instaliranim Raspbianom.
- Modul ultrazvučnog senzora HC-SR04.
- Otpornici 3x10kΩ.
- Ploča za kruh.
- Neki muški i ženski konektori.
- Neki muški na muški konektori.
Napisao sam posvećeni članak o instaliranju Raspbiana na Raspberry Pi, koji možete provjeriti na https: // linuxhint.com / install_raspbian_raspberry_pi / ako trebate.
HC-SR04 izlazi:
HC-SR04 ima 4 pina. VCC, TRIGGER, ECHO, GROUD.
Fig1: HC-SR04 pinouts (https: // www.mouser.com / ds / 2/813 / HCSR04-1022824.pdf)
VCC pin treba biti povezan s + 5V pinom Raspberry Pi, koji je pin 2. Pin za uzemljenje trebao bi biti povezan s GND pinom na Raspberry Pi, koji je pin 4.
Klinovi TRIGGER i ECHO trebali bi biti povezani s GPIO pinovima Raspberry Pi. Dok se TRIGGER pin može izravno povezati s jednim od GPIO pinova Raspberry Pi, ECHO pin treba krug djelitelja napona.
Kružni dijagram:
Povežite ultrazvučni senzor HC-SR04 s vašim Raspberry Pi kako slijedi:
Slika2: HC-SR04 ultrazvučni senzor povezan s Raspberry Pi.
Jednom kad se sve poveže, ovako izgleda:
Slika 3: HC-SR04 ultrazvučni senzor povezan s Raspberry Pi na ploči za ploču.
Slika4: HC-SR04 ultrazvučni senzor povezan s Raspberry Pi na ploči za ploču.
Pisanje Python programa za mjerenje udaljenosti s HC-SR04:
Prvo se povežite s Raspberry Pi koristeći VNC ili SSH. Zatim otvorite novu datoteku (recimo udaljenost.py) i unesite sljedeće retke kodova:
Ovdje redak 1 uvozi Raspberry pi GPIO knjižnicu.
Redak 2 uvozi knjižnicu vremena.
Unutar probati blok, napisan je zapravo kod za mjerenje udaljenosti pomoću HC-SR04.
The konačno blok koristi se za čišćenje GPIO pinova pomoću GPIO.počistiti() metoda kada se program zatvori.
Unutar probati blok, na liniji 5, GPIO.postavljeni način rada (GPIO.ODBOR) koristi se za olakšavanje definiranja pribadača. Sada pinove možete referencirati prema fizičkim brojevima kao što je na ploči Raspberry Pi.
Na liniji 7 i 8, pinTrigger postavljeno je na 7 i pinEcho postavljeno je na 11. The OKIDAČ pin HC-SR04 spojen je na pin 7 i JEKA pin HC-SR04 spojen je na pin 11 Rapsberry Pi. Obje su GPIO pinove.
Na liniji 10, pinTrigger je postavljen za OUTPUT pomoću GPIO.postaviti() metoda.
Na liniji 11, pinEcho je postavljen za INPUT pomoću GPIO.postaviti() metoda.
Linije 13-17 koriste se za resetiranje pinTrigger (postavljanjem na logiku 0) i postavljanjem pinTrigger na logiku 1 za 10ms, a zatim na logiku 0. Za 10 ms senzor HC-SR04 šalje 8 pulsa od 40 KHz.
Linije 19-24 koriste se za mjerenje vremena potrebnog da se impulsi od 40KHz odraze na objektu i natrag na senzor HC-SR04.
Na liniji 25, udaljenost se mjeri pomoću formule,
Udaljenost = delta vrijeme * brzina (340M / S) / 2
=> Udaljenost = delta vrijeme * (170M / S)
Udaljenost sam izračunao u centimetrima umjesto u metrima, samo da budem precizan. Izračunao sam da je udaljenost zaokružena na 2 decimale.
Konačno, na retku 27 ispisuje se rezultat. To je to, vrlo jednostavno.
Sada pokrenite Python skriptu sa sljedećom naredbom:
$ python3 udaljenost.pyKao što vidite, izmjerena udaljenost je 8.40 cm.
Slika 5: objekt postavljen na oko 8.40 cm od senzora.
Pomaknuo sam se da prigovorim malo dalje, izmjerena udaljenost je 21.81cm. Dakle, radi prema očekivanjima.
Slika 6: objekt postavljen na oko 21.81 cm udaljen od senzora.
Dakle, na taj način mjerite udaljenost s Raspberry Pi pomoću ultrazvučnog senzora HC-SR04. Pogledajte kod za udaljenost.py ispod:
uvoz RPi.GPIO kao GPIOvrijeme uvoza
probati:
GPIO.postavljeni način rada (GPIO.ODBOR)
pinTrigger = 7
pinEcho = 11
GPIO.postavljanje (pinTrigger, GPIO.VAN)
GPIO.postavljanje (pinEcho, GPIO.U)
GPIO.izlaz (pinTrigger, GPIO.NISKO)
GPIO.izlaz (pinTrigger, GPIO.VISOKO)
vrijeme.spavati (0.00001)
GPIO.izlaz (pinTrigger, GPIO.NISKO)
dok GPIO.ulaz (pinEcho) == 0:
pulseStartTime = vrijeme.vrijeme()
dok GPIO.ulaz (pinEcho) == 1:
pulseEndTime = vrijeme.vrijeme()
pulseDuration = pulseEndTime - pulseStartTime
udaljenost = okrugla (trajanje impulsa * 17150, 2)
print ("Udaljenost:%.2f cm "% (udaljenost))
konačno:
GPIO.počistiti()