V tem članku vam bom pokazal, kako z uporabo ultrazvočnega senzorja HC-SR04 za merjenje razdalje med senzorjem in predmetom na njegov način z uporabo Raspberry Pi. Začnimo.
Komponente, ki jih potrebujete:
Za uspešno merjenje razdalje s senzorjem Raspberry Pi in HC-SR04 potrebujete,
- Računalnik z eno ploščo Raspberry Pi 2 ali 3 z nameščenim Raspbian.
- Ultrazvočni senzorski modul HC-SR04.
- 3x10kΩ upori.
- Tabela.
- Nekaj moških do ženskih konektorjev.
- Nekaj moških do moških konektorjev.
Napisal sem poseben članek o namestitvi Raspbian na Raspberry Pi, ki ga lahko preverite na https: // linuxhint.com / install_raspbian_raspberry_pi / po potrebi.
Izvlečki HC-SR04:
HC-SR04 ima 4 nožice. VCC, TRIGGER, ECHO, GROUD.
Fig1: HC-SR04 pinouts (https: // www.mouser.com / ds / 2/813 / HCSR04-1022824.pdf)
Zatič VCC mora biti povezan s + 5V zatičem Raspberry Pi, ki je zatič 2. Zatič GROUND mora biti povezan z zatičem GND na Raspberry Pi, ki je zatič 4.
Zatiči TRIGGER in ECHO morajo biti povezani z zatiči GPIO na Raspberry Pi. Medtem ko je zatič TRIGGER mogoče neposredno povezati z enim od GPIO zatičev Raspberry Pi, zatič ECHO potrebuje vezje delilnika napetosti.
Shema vezja:
Ultrazvočni senzor HC-SR04 priključite na Raspberry Pi, kot sledi:
Slika2: Ultrazvočni senzor HC-SR04, priključen na Raspberry Pi.
Ko je vse povezano, je videti tako:
Slika3: Ultrazvočni senzor HC-SR04, priključen na Raspberry Pi na plošči.
Slika4: Ultrazvočni senzor HC-SR04, priključen na Raspberry Pi na plošči.
Pisanje Python programa za merjenje razdalje s HC-SR04:
Najprej se povežite z Raspberry Pi s pomočjo VNC ali SSH. Nato odprite novo datoteko (recimo razdalja.py) in vnesite naslednje vrstice kod:
Tukaj vrstica 1 uvozi knjižnico maline pi GPIO.
Vrstica 2 uvozi časovno knjižnico.
Znotraj poskusite blok, je napisana dejanska koda za merjenje razdalje s pomočjo HC-SR04.
The končno blok se uporablja za čiščenje zatičev GPIO z GPIO.pospravi() metoda, ko program zapre.
Znotraj poskusite blok, v vrstici 5, GPIO.nastavljeni način (GPIO.ODBOR) se uporablja za lažje določanje zatičev. Zdaj se lahko na nožke sklicujete s fizičnimi številkami, kot je na plošči Raspberry Pi.
Na vrstici 7 in 8, pinTrigger je nastavljeno na 7 in pinEcho je nastavljeno na 11. The TRIGGER zatič HC-SR04 je priključen na zatič 7 in ECHO zatič HC-SR04 je povezan z zatičem 11 Rapsberry Pi. Oba sta zatiča GPIO.
Na liniji 10, pinTrigger je nastavitev za OUTPUT z uporabo GPIO.nastaviti() metoda.
V vrstici 11, pinEcho je nastavitev za INPUT z uporabo GPIO.nastaviti() metoda.
Vrstice 13-17 se uporabljajo za ponastavitev pinTrigger (z nastavitvijo na logiko 0) in nastavitvijo pinTrigger do logike 1 za 10 ms in nato do logike 0. V 10 ms senzor HC-SR04 pošlje 8 impulzov 40 KHz.
Vrstice 19-24 se uporabljajo za merjenje časa, ki je potreben, da se impulzi 40KHz odbijejo na predmet in nazaj na senzor HC-SR04.
V vrstici 25 se razdalja meri po formuli,
Razdalja = delta čas * hitrost (340M / S) / 2
=> Razdalja = delta čas * (170M / S)
Razdaljo sem izračunal v centimetrih namesto v metrih, čisto natančno. Izračunal sem, da je razdalja tudi zaokrožena na dve decimalni mesti.
Na koncu se v vrstici 27 natisne rezultat. To je to, zelo preprosto.
Zdaj zaženite skript Python z naslednjim ukazom:
$ python3 razdalja.pyKot lahko vidite, je izmerjena razdalja 8.40 cm.
Slika 5: objekt postavljen na približno 8.40 cm stran od senzorja.
Premaknil sem se proti objektu nekoliko dlje, izmerjena razdalja je 21.81cm. Torej, deluje po pričakovanjih.
Slika 6: objekt postavljen na približno 21.81 cm stran od senzorja.
Torej tako merite razdaljo z Raspberry Pi z ultrazvočnim senzorjem HC-SR04. Glejte kodo za razdaljo.py spodaj:
uvoz RPi.GPIO kot GPIOčas uvoza
poskusite:
GPIO.nastavljeni način (GPIO.ODBOR)
pinTrigger = 7
pinEcho = 11
GPIO.nastavitev (pinTrigger, GPIO.OUT)
GPIO.nastavitev (pinEcho, GPIO.IN)
GPIO.izhod (pinTrigger, GPIO.LOW)
GPIO.izhod (pinTrigger, GPIO.VISOKO)
čas.spanje (0.00001)
GPIO.izhod (pinTrigger, GPIO.LOW)
medtem ko GPIO.vhod (pinEcho) == 0:
pulseStartTime = čas.čas ()
medtem ko GPIO.vhod (pinEcho) == 1:
pulseEndTime = čas.čas ()
pulseDuration = pulseEndTime - pulseStartTime
razdalja = okrogla (trajanje impulza * 17150, 2)
print ("Razdalja:%.2f cm "% (oddaljenost))
končno:
GPIO.pospravi()