Šiame straipsnyje aš jums parodysiu, kaip naudoti ultragarso jutiklį HC-SR04, norint išmatuoti atstumą tarp jutiklio ir objekto, naudojant „Raspberry Pi“. Pradėkime.
Jums reikalingi komponentai:
Norint sėkmingai išmatuoti atstumą naudojant „Raspberry Pi“ ir „HC-SR04“ jutiklį, jums reikia,
- „Raspberry Pi 2“ arba „3“ vieno plokštės kompiuteris su įdiegta „Raspbian“.
- HC-SR04 ultragarso jutiklio modulis.
- 3x10kΩ rezistoriai.
- Duonos lenta.
- Kai kurios vyriškos ir moteriškos jungtys.
- Kai kurios vyriškos ir vyriškos jungtys.
Parašiau specialų straipsnį apie „Raspbian“ diegimą „Raspberry Pi“, kurį galite patikrinti adresu https: // linuxhint.lt / install_raspbian_raspberry_pi / jei jums reikia.
HC-SR04 kištukai:
HC-SR04 turi 4 kaiščius. VCC, TRIGGER, ECHO, GROUD.
1 pav. HC-SR04 kištukai (https: // www.pelė.com / ds / 2/813 / HCSR04-1022824.pdf)
VCC kaištis turėtų būti prijungtas prie „Raspberry Pi“ + 5 V kaiščio, kuris yra 2 kaištis. „GROUND“ kaištis turėtų būti prijungtas prie „Raspberry Pi“ GND kaiščio, kuris yra 4 kaištis.
„TRIGGER“ ir „ECHO“ kaiščiai turėtų būti prijungti prie „Raspberry Pi“ GPIO kaiščių. Nors „TRIGGER“ kaištį galima tiesiogiai prijungti prie vieno iš „Raspberry Pi“ GPIO kaiščių, ECHO kaiščiui reikalinga įtampos daliklio grandinė.
Grandinės schema:
Prijunkite ultragarso jutiklį HC-SR04 prie „Raspberry Pi“ taip:
2 pav. HC-SR04 ultragarso jutiklis, prijungtas prie „Raspberry Pi“.
Kai viskas bus sujungta, taip atrodo:
3 pav. HC-SR04 ultragarso jutiklis, prijungtas prie aviečių Pi ant duonos lentos.
4 pav. HC-SR04 ultragarso jutiklis, prijungtas prie aviečių Pi ant duonos lentos.
„Python“ programos rašymas atstumui matuoti naudojant HC-SR04:
Pirmiausia prijunkite prie „Raspberry Pi“ naudodami VNC arba SSH. Tada atidarykite naują failą (tarkime atstumas.py) ir įveskite šias kodų eilutes:
Čia 1 eilutė importuoja aviečių pi GPIO biblioteką.
2 eilutė importuoja laiko biblioteką.
Viduje bandyti blokas, parašytas tikrasis atstumo matavimo naudojant HC-SR04 kodas.
The pagaliau blokas naudojamas GPIO kaiščių valymui naudojant GPIO.Išvalyti() metodas, kai programa išeina.
Viduje bandyti blokas, 5 eilutėje, GPIO.nustatytas režimas (GPIO.LENTA) naudojamas norint lengviau nustatyti kaiščius. Dabar smeigtukus galite nurodyti pagal fizinius skaičius, kaip yra „Raspberry Pi“ lentoje.
7 ir 8 linijose, pinTrigger yra nustatytas į 7 ir pinEcho yra nustatytas į 11. The TRIGGERIS HC-SR04 kaištis yra prijungtas prie kaiščio 7 ir ECHO HC-SR04 kaištis yra sujungtas su „Rapsberry Pi“ 11 kaiščiu. Abu šie yra GPIO kaiščiai.
10 eilutėje, pinTrigger yra sąranka OUTPUT naudojant GPIO.sąranka () metodas.
11 eilutėje, pinEcho yra INPUT sąranka naudojant GPIO.sąranka () metodas.
13–17 eilutės naudojamos atstatymui pinTrigger (nustatydami ją į logiką 0) ir nustatydami pinTrigger prie logikos 1 10ms ir tada prie 0 logikos. Per 10ms HC-SR04 jutiklis siunčia 8 40KHz impulsą.
19–24 eilutės naudojamos matuoti laiką, per kurį 40 kHz impulsai atsispindi objekte ir atgal į HC-SR04 jutiklį.
25 eilutėje atstumas matuojamas pagal formulę,
Atstumas = delta laikas * greitis (340M / S) / 2
=> Atstumas = delta laikas * (170M / S)
Atstumą skaičiavau ne metrais, o centimetrais, kad būtų tiksliau. Apskaičiavau atstumas taip pat suapvalinamas iki 2 skaitmenų po kablelio.
Galiausiai 27 eilutėje rezultatas atspausdinamas. Tai viskas, labai paprasta.
Dabar paleiskite „Python“ scenarijų naudodami šią komandą:
$ python3 atstumas.pyKaip matote, išmatuotas atstumas yra 8.40 cm.
5 pav .: objektas, pastatytas maždaug 8 vietoje.40 cm atstumu nuo jutiklio.
Objektą pajudėjau kiek toliau, išmatuotas atstumas yra 21.81cm. Taigi, tai veikia kaip tikėtasi.
6 pav .: objektas, pastatytas maždaug 21 vietoje.81 cm atstumu nuo jutiklio.
Taigi, kaip jūs matuojate atstumą su „Raspberry Pi“, naudodami ultragarso jutiklį HC-SR04. Žiūrėkite atstumo kodą.py žemiau:
importuoti RPi.GPIO kaip GPIOimporto laikas
bandyti:
GPIO.nustatytas režimas (GPIO.LENTA)
pinTrigger = 7
„pinEcho“ = 11
GPIO.sąranka (pinTrigger, GPIO.OUT)
GPIO.sąranka (pinEcho, GPIO.IN)
GPIO.išvestis (pinTrigger, GPIO.LOW)
GPIO.išvestis (pinTrigger, GPIO.AUKŠTAS)
laikas.miegas (0.00001)
GPIO.išvestis (pinTrigger, GPIO.LOW)
o GPIO.įvestis (pinEcho) == 0:
pulseStartTime = laikas.laikas()
o GPIO.įvestis (pinEcho) == 1:
pulseEndTime = laikas.laikas()
pulseDuration = pulseEndTime - pulseStartTime
atstumas = apvalus (pulso trukmė * 17150, 2)
spausdinti ("Atstumas:%.2f cm "% (atstumas)"
pagaliau:
GPIO.Išvalyti()