Ebben a cikkben bemutatom, hogyan használhatja a HC-SR04 ultrahangos érzékelőt az érzékelő és egy objektum közötti távolság mérésére a maga módján a Raspberry Pi segítségével. Kezdjük el.
Szükséges alkatrészek:
Ahhoz, hogy sikeresen mérje a távolságot a Raspberry Pi és a HC-SR04 érzékelővel, szüksége van,
- Raspberry Pi 2 vagy 3 egypaneles számítógép Raspbian telepítéssel.
- HC-SR04 ultrahangos érzékelő modul.
- 3x10kΩ ellenállások.
- Egy kenyérdeszka.
- Néhány férfi-női csatlakozó.
- Néhány férfi-férfi csatlakozó.
Külön cikket írtam a Raspbian telepítéséről a Raspberry Pi-re, amelyet a https: // linuxhint oldalon ellenőrizhet.com / install_raspbian_raspberry_pi / ha szükséges.
HC-SR04 csatlakozók:
A HC-SR04 4 csapos. VCC, TRIGGER, ECHO, GRUD.
1. ábra: HC-SR04 csatlakozók (https: // www.egér.com / ds / 2/813 / HCSR04-1022824.pdf)
A VCC csatlakozót a Raspberry Pi + 5 V-os csatlakozójához kell csatlakoztatni, amely a 2. tű. A GROUND csapot össze kell kötni a Raspberry Pi GND tűjével, ami a 4. tű.
A TRIGGER és az ECHO csapokat össze kell kötni a Raspberry Pi GPIO csapjaival. Míg a TRIGGER tű közvetlenül csatlakoztatható a Raspberry Pi egyik GPIO tűjéhez, az ECHO tűnek feszültségosztó áramkörre van szüksége.
Kördiagramm:
Csatlakoztassa a HC-SR04 ultrahangos érzékelőt a Raspberry Pi készülékhez az alábbiak szerint:
2. ábra: HC-SR04 ultrahangos érzékelő a Raspberry Pi-hez csatlakoztatva.
Miután minden összekapcsolódott, így néz ki:
3. ábra: HC-SR04 ultrahangos érzékelő a Raspberry Pi-hez csatlakoztatva a kenyérlapon.
4. ábra: HC-SR04 ultrahangos érzékelő a Raspberry Pi-hez csatlakoztatva a kenyérlapon.
Python program írása a távolság mérésére HC-SR04 segítségével:
Először VNC vagy SSH használatával csatlakozzon a Raspberry Pi készülékéhez. Ezután nyisson meg egy új fájlt (mondjuk távolság.py) és írja be a következő kódsorokat:
Itt az 1. sor a málna pi GPIO könyvtárat importálja.
A 2. sor importálja az időkönyvtárat.
Benne próbáld ki blokk, a HC-SR04 használatával a távolság mérésére szolgáló tényleges kód meg van írva.
A végül blokk a GPIO csapok megtisztítására szolgál GPIO.takarítás () módszer, amikor a program kilép.
Benne próbáld ki blokk, az 5. vonalon, GPIO.setmode (GPIO.TÁBLA) a csapok meghatározásának megkönnyítésére szolgál. Mostantól hivatkozhat a csapokra fizikai számokkal, ahogy azok a Raspberry Pi táblán találhatók.
A 7. és 8. vonalon, pinTrigger értékre van állítva 7 és pinEcho értékre van állítva 11. A TRIGGER A HC-SR04 csapja csatlakozik a 7 csaphoz, és VISSZHANG A HC-SR04 tűje a Rapsberry Pi 11 tűjéhez csatlakozik. Mindkettő GPIO csap.
10. vonalon, pinTrigger beállítása az OUTPUT használatához GPIO.beállít() módszer.
A 11. vonalon, pinEcho be van állítva az INPUT használatához GPIO.beállít() módszer.
A 13-17. Sorokat a visszaállításhoz használják pinTrigger (0 logikai beállítással) és a pinTrigger az 1 logikához 10 ms-ig, majd a 0 logikához. 10 ms alatt a HC-SR04 érzékelő 8 40KHz impulzust küld.
A 19–24. Sorokat arra használják, hogy megmérjék azt az időt, amelybe a 40 kHz-es impulzusok visszaverődnek egy objektumon, és visszajutnak a HC-SR04 érzékelőhöz.
A 25. vonalon a távolságot a képlet segítségével mérik,
Távolság = delta idő * sebesség (340M / S) / 2
=> Távolság = delta idő * (170M / S)
A távolságot centiméterben számoltam méter helyett, csak hogy pontos legyek. Számítottam a távolságot is 2 tizedesjegyre kerekítve.
Végül a 27. soron kinyomtatják az eredményt. Ez az, nagyon egyszerű.
Most futtassa a Python szkriptet a következő paranccsal:
$ python3 távolság.pyMint látható, a mért távolság 8.40 cm.
5. ábra: körülbelül 8-ra helyezett tárgy.40 cm távolságra az érzékelőtől.
Kicsit távolabb költöztem a tárgyra, a mért távolság 21.81cm. Szóval, a várakozásoknak megfelelően működik.
6. ábra: körülbelül 21-re helyezett tárgy.81 cm-re az érzékelőtől.
Tehát így méri a távolságot a Raspberry Pi segítségével a HC-SR04 ultrahangos érzékelő segítségével. Lásd a távolság kódját.py alább:
import RPi.GPIO mint GPIOimport idő
próbáld ki:
GPIO.setmode (GPIO.TÁBLA)
pinTrigger = 7
pinEcho = 11
GPIO.beállítás (pinTrigger, GPIO.KI)
GPIO.beállítás (pinEcho, GPIO.BAN BEN)
GPIO.kimenet (pinTrigger, GPIO.ALACSONY)
GPIO.kimenet (pinTrigger, GPIO.MAGAS)
idő.alvás (0.00001)
GPIO.kimenet (pinTrigger, GPIO.ALACSONY)
míg a GPIO.bemenet (pinEcho) == 0:
pulseStartTime = idő.idő()
míg a GPIO.bemenet (pinEcho) == 1:
pulseEndTime = idő.idő()
pulseDuration = pulseEndTime - pulseStartTime
távolság = kerek (impulzus időtartama * 17150, 2)
print ("Távolság:%.2f cm "% (távolság))
végül:
GPIO.takarítás ()