I den här artikeln kommer jag att visa dig hur du använder en HC-SR04 ultraljudssensor för att mäta avståndet mellan din sensor och ett objekt på sitt sätt med Raspberry Pi. Låt oss börja.
Komponenter du behöver:
För att framgångsrikt mäta avstånd med Raspberry Pi och HC-SR04-sensor behöver du,
- En Raspberry Pi 2 eller 3 enkel kortdator med Raspbian installerad.
- En HC-SR04 ultraljudssensormodul.
- 3x10kΩ motstånd.
- En brädbräda.
- Några manliga till kvinnliga kontakter.
- Några manliga till manliga kontakter.
Jag har skrivit en dedikerad artikel om installation av Raspbian på Raspberry Pi, som du kan kolla på https: // linuxhint.com / install_raspbian_raspberry_pi / om du behöver.
HC-SR04 Pinouts:
HC-SR04 har 4 stift. VCC, TRIGGER, ECHO, GROUD.
Fig1: HC-SR04-pinouts (https: // www.råttfångare.com / ds / 2/813 / HCSR04-1022824.pdf)
VCC-stiftet ska anslutas till + 5V-stift på Raspberry Pi, vilket är stift 2. GROUND-stiftet ska anslutas till GND-stiftet på Raspberry Pi, vilket är stift 4.
TRIGGER- och ECHO-stiften ska anslutas till GPIO-stiften på Raspberry Pi. Medan TRIGGER-stiftet kan anslutas direkt till en av GPIO-stiften på Raspberry Pi, behöver ECHO-stiftet en spänningsdelarkrets.
Kretsschema:
Anslut HC-SR04 ultraljudssensor till din Raspberry Pi enligt följande:
Fig2: HC-SR04 ultraljudssensor ansluten till Raspberry Pi.
När allt är anslutet ser det ut så här:
Fig3: HC-SR04 ultraljudssensor ansluten till Raspberry Pi på brödbräda.
Fig4: HC-SR04 ultraljudssensor ansluten till Raspberry Pi på brödbräda.
Skriva ett Python-program för mätning av avstånd med HC-SR04:
Anslut först till din Raspberry Pi med VNC eller SSH. Öppna sedan en ny fil (låt oss säga distans.py) och skriv in följande rader med koder:
Här importerar rad 1 raspberry pi GPIO-biblioteket.
Rad 2 importerar tidsbiblioteket.
Inuti Prova block, skrivs den faktiska koden för att mäta avståndet med HC-SR04.
De till sist block används för att städa upp GPIO-stiften med GPIO.städa() metod när programmet avslutas.
Inuti Prova blockera, på rad 5, GPIO.setmode (GPIO.STYRELSE) används för att göra det lättare att definiera stift. Nu kan du referera stift med fysiska siffror som det är på Raspberry Pi-kortet.
På rad 7 och 8, pinTrigger är satt till 7 och pinEcho är satt till 11. De TRIGGER stift på HC-SR04 är anslutet till stift 7 och EKO stift av HC-SR04 är ansluten till stift 11 på Rapsberry Pi. Båda dessa är GPIO-stift.
På rad 10, pinTrigger är inställt för OUTPUT med GPIO.uppstart() metod.
På rad 11, pinEcho är inställt för INPUT med GPIO.uppstart() metod.
Linjerna 13-17 används för återställning pinTrigger (genom att ställa in den på logik 0) och ställa in pinTrigger till logik 1 i 10 ms och sedan till logik 0. På 10 ms skickar HC-SR04-sensorn 8 40 KHz-puls.
Linjerna 19-24 används för att mäta den tid det tar för 40KHz-pulserna att reflekteras till ett objekt och tillbaka till HC-SR04-sensorn.
På rad 25 mäts avståndet med formeln,
Avstånd = deltatid * hastighet (340M / S) / 2
=> Avstånd = deltatid * (170M / S)
Jag beräknade avståndet i centimeter istället för meter, bara för att vara exakt. Jag beräknade avståndet är också avrundat till 2 decimaler.
Slutligen, på rad 27, skrivs resultatet ut. Det är det, väldigt enkelt.
Kör nu Python-skriptet med följande kommando:
$ python3 avstånd.pySom du kan se är det uppmätta avståndet 8.40 cm.
Fig5: objekt placerat vid cirka 8.40 cm från sensorn.
Jag rörde mig för att invända lite längre, det uppmätta avståndet är 21.81cm. Så det fungerar som förväntat.
Fig6: objekt placerat vid cirka 21.81 cm från sensorn.
Så det är så du mäter avstånd med Raspberry Pi med hjälp av HC-SR04 ultraljudssensor. Se koden för avstånd.py nedan:
importera RPi.GPIO som GPIOimporttid
Prova:
GPIO.setmode (GPIO.STYRELSE)
pinTrigger = 7
pinEcho = 11
GPIO.inställning (pinTrigger, GPIO.UT)
GPIO.inställning (pinEcho, GPIO.I)
GPIO.utgång (pinTrigger, GPIO.LÅG)
GPIO.utgång (pinTrigger, GPIO.HÖG)
tid.sova (0.00001)
GPIO.utgång (pinTrigger, GPIO.LÅG)
medan GPIO.input (pinEcho) == 0:
pulseStartTime = tid.tid()
medan GPIO.input (pinEcho) == 1:
pulseEndTime = tid.tid()
pulseDuration = pulseEndTime - pulseStartTime
avstånd = rund (pulsDuration * 17150, 2)
skriv ut ("Avstånd:%.2f cm "% (avstånd))
till sist:
GPIO.städa()