Bringebær Pi

Hvordan måle avstand med Raspberry Pi

Hvordan måle avstand med Raspberry Pi
Du kan måle avstand ved hjelp av HC-SR04 ultralydssensor med Raspberry Pi. HC-SR04-sensoren kan måle avstand fra 2 mm (.02m) til 400cm (4m). Den sender 8 burst 40KHz signaler og venter på at den skal treffe et objekt og reflekteres tilbake. Tiden det tar for ultralyd 40 KHz lydbølge å reise frem og tilbake brukes til å beregne avstanden mellom sensoren og objektet på vei. Det er i utgangspunktet slik HC-SR04-sensoren fungerer.

I denne artikkelen vil jeg vise deg hvordan du bruker en HC-SR04 ultralydssensor for å måle avstanden mellom sensoren din og et objekt på sin måte ved hjelp av Raspberry Pi. La oss komme i gang.

Komponenter du trenger:

For å kunne måle avstand med Raspberry Pi og HC-SR04-sensor, trenger du,

Jeg har skrevet en dedikert artikkel om installering av Raspbian på Raspberry Pi, som du kan sjekke på https: // linuxhint.com / install_raspbian_raspberry_pi / hvis du trenger det.

HC-SR04 Pinouts:

HC-SR04 har 4 pinner. VCC, TRIGGER, ECHO, GROUD.

Fig1: HC-SR04 pinouts (https: // www.mouser.com / ds / 2/813 / HCSR04-1022824.pdf)

VCC-pinnen skal kobles til + 5V-pinnen på Raspberry Pi, som er pinne 2. GROUND-pinnen skal kobles til GND-pinnen på Raspberry Pi, som er pin 4.

TRIGGER- og ECHO-pinnene skal kobles til GPIO-pinnene på Raspberry Pi. Mens TRIGGER-pinnen kan kobles direkte til en av GPIO-pinnene på Raspberry Pi, trenger ECHO-pinnen en spenningsdelerkrets.

Kretsdiagram:

Koble HC-SR04 ultralydssensoren til Raspberry Pi på følgende måte:

Fig2: HC-SR04 ultralydssensor koblet til Raspberry Pi.

Når alt er koblet sammen, ser det slik ut:

Fig3: HC-SR04 ultralydssensor koblet til Raspberry Pi på brødbrett.

Fig4: HC-SR04 ultralydssensor koblet til Raspberry Pi på brødbrett.

Skrive et Python-program for måling av avstand med HC-SR04:

Først kobler du til Raspberry Pi ved hjelp av VNC eller SSH. Åpne deretter en ny fil (la oss si avstand.py) og skriv inn følgende kodelinjer:

Her importerer linje 1 raspberry pi GPIO-biblioteket.

Linje 2 importerer tidsbiblioteket.

Inne i prøve blokk, blir den faktiske koden for måling av avstanden ved hjelp av HC-SR04 skrevet.

De endelig blokk brukes til å rydde opp i GPIO-pinnene med GPIO.rydde opp() metode når programmet avsluttes.

Inne i prøve blokk, på linje 5, GPIO.setmode (GPIO.BORDE) brukes til å gjøre definering av pinner enklere. Nå kan du referere til pinner med fysiske tall slik det er på Raspberry Pi-kortet.

På linje 7 og 8, pinTrigger er satt til 7 og pinEcho er satt til 11. De AVTREKKER pin av HC-SR04 er koblet til pin 7, og EKKO pin av HC-SR04 er koblet til pin 11 på Rapsberry Pi. Begge disse er GPIO-pinner.

På linje 10, pinTrigger er satt opp for OUTPUT ved hjelp GPIO.oppsett () metode.

På linje 11, pinEcho er satt opp for INNGANG å bruke GPIO.oppsett () metode.

Linjene 13-17 brukes til tilbakestilling pinTrigger (ved å sette den til logikk 0) og stille inn pinTrigger til logikk 1 i 10 ms og deretter til logikk 0. På 10 ms sender HC-SR04-sensoren 8 40 KHz-puls.

Linjene 19-24 brukes til å måle tiden det tar før 40KHz-pulser reflekteres til et objekt og tilbake til HC-SR04-sensoren.

På linje 25 måles avstanden ved hjelp av formelen,

Avstand = deltatid * hastighet (340M / S) / 2

=> Avstand = deltatid * (170M / S)

Jeg beregnet avstanden i centimeter i stedet for meter, bare for å være presis. Jeg beregnet avstanden er også avrundet til 2 desimaler.

Til slutt, på linje 27, blir resultatet skrevet ut. Det er det, veldig enkelt.

Kjør nå Python-skriptet med følgende kommando:

$ python3 avstand.py

Som du ser er avstanden målt 8.40 cm.

Fig5: objekt plassert ca 8.40 cm fra sensoren.

Jeg flyttet for å innvende litt lenger, avstanden som er målt er 21.81cm. Så det fungerer som forventet.

Fig6: objekt plassert omtrent 21.81 cm fra sensoren.

Så det er slik du måler avstand med Raspberry Pi ved hjelp av HC-SR04 ultralydsensor.  Se koden for avstand.py under:

importer RPi.GPIO som GPIO
importtid
prøve:
GPIO.setmode (GPIO.BORDE)
pinTrigger = 7
pinEcho = 11
 
GPIO.oppsett (pinTrigger, GPIO.UTE)
GPIO.oppsett (pinEcho, GPIO.I)
 
GPIO.utgang (pinTrigger, GPIO.LAV)
GPIO.utgang (pinTrigger, GPIO.HØY)
 
tid.sove (0.00001)
GPIO.utgang (pinTrigger, GPIO.LAV)
 
mens GPIO.inngang (pinEcho) == 0:
pulseStartTime = tid.tid()
mens GPIO.inngang (pinEcho) == 1:
pulseEndTime = tid.tid()
 
pulseDuration = pulseEndTime - pulseStartTime
avstand = rund (pulsvarighet * 17150, 2)
 
utskrift ("Avstand:%.2f cm "% (avstand))
endelig:
GPIO.rydde opp()
Beste spillkonsollemulatorer for Linux
Denne artikkelen vil liste opp populære programvare for spillkonsollemulering tilgjengelig for Linux. Emulation er et programvarekompatibilitetslag so...
Beste Linux Distros for spill i 2021
Linux-operativsystemet har kommet langt fra det originale, enkle, serverbaserte utseendet. Dette operativsystemet har forbedret seg enormt de siste år...
Hvordan fange opp og streame spilløkten din på Linux
Tidligere ble spill bare ansett som en hobby, men med tiden så spillindustrien en enorm vekst når det gjelder teknologi og antall spillere. Spillpubli...