V tomto článku vám ukážu, jak pomocí ultrazvukového senzoru HC-SR04 měřit vzdálenost mezi senzorem a objektem způsobem pomocí Raspberry Pi. Začněme.
Komponenty, které potřebujete:
K úspěšnému měření vzdálenosti pomocí senzoru Raspberry Pi a HC-SR04 potřebujete,
- Jednodeskový počítač Raspberry Pi 2 nebo 3 s nainstalovaným Raspbian.
- Modul ultrazvukového senzoru HC-SR04.
- Rezistory 3x10kΩ.
- Prkénko na prkénko.
- Některé konektory samec-samice.
- Některé konektory muž-muž.
Napsal jsem speciální článek o instalaci Raspbian na Raspberry Pi, který můžete zkontrolovat na https: // linuxhint.com / install_raspbian_raspberry_pi / pokud potřebujete.
HC-SR04 Pinouts:
HC-SR04 má 4 piny. VCC, TRIGGER, ECHO, GROUD.
Obr.1: Pinouty HC-SR04 (https: // www.myší lovec.com / ds / 2/813 / HCSR04-1022824.pdf)
Pin VCC by měl být připojen k pinu + 5V Raspberry Pi, což je pin 2. Kolík GROUND by měl být připojen ke kolíku GND Raspberry Pi, což je kolík 4.
Kolíky TRIGGER a ECHO by měly být připojeny ke kolíkům GPIO Raspberry Pi. Zatímco pin TRIGGER lze přímo připojit k jednomu z pinů GPIO Raspberry Pi, pin ECHO potřebuje obvod děliče napětí.
Kruhový diagram:
Připojte ultrazvukový senzor HC-SR04 k vašemu Raspberry Pi následujícím způsobem:
Obr2: Ultrazvukový senzor HC-SR04 připojený k Raspberry Pi.
Jakmile je vše propojeno, vypadá to takto:
Obr3: Ultrazvukový senzor HC-SR04 připojený k Raspberry Pi na prkénku.
Obr4: Ultrazvukový senzor HC-SR04 připojený k Raspberry Pi na prkénku.
Psaní programu v Pythonu pro měření vzdálenosti pomocí HC-SR04:
Nejprve se připojte k Raspberry Pi pomocí VNC nebo SSH. Poté otevřete nový soubor (řekněme vzdálenost.py) a zadejte následující řádky kódů:
Zde řádek 1 importuje knihovnu GPIO maliny pi.
Řádek 2 importuje knihovnu času.
Uvnitř Snaž se bloku, je zapsán skutečný kód pro měření vzdálenosti pomocí HC-SR04.
The Konečně blok se používá k vyčištění pinů GPIO pomocí GPIO.vyčištění () metoda při ukončení programu.
Uvnitř Snaž se blok, na řádku 5, GPIO.režim nastavení (GPIO.PRKNO) se používá k usnadnění definování pinů. Nyní můžete odkazovat na piny podle fyzických čísel, jak je to na desce Raspberry Pi.
Na řádku 7 a 8, pinTrigger je nastaven na 7 a pinEcho je nastaven na 11. The SPOUŠŤ pin HC-SR04 je připojen ke kolíku 7, a ECHO pin HC-SR04 je připojen k pinu 11 Rapsberry Pi. Oba jsou to GPIO piny.
Na řádku 10, pinTrigger je nastaven na VÝSTUP pomocí GPIO.založit() metoda.
Na řádku 11, pinEcho je nastaveno na VSTUP pomocí GPIO.založit() metoda.
Řádky 13-17 se používají pro resetování pinTrigger (nastavením na logiku 0) a nastavením pinTrigger do logiky 1 po dobu 10 ms a poté do logiky 0. Za 10 ms vysílá snímač HC-SR04 8 pulsů 40 KHz.
Řádky 19-24 se používají k měření času potřebného k tomu, aby se impulsy 40KHz odrazily na objekt a zpět na snímač HC-SR04.
Na řádku 25 se vzdálenost měří pomocí vzorce,
Vzdálenost = delta čas * rychlost (340M / S) / 2
=> Vzdálenost = delta čas * (170M / S)
Vypočítal jsem vzdálenost v centimetrech místo v metrech, abych byl přesný. I vypočítaná vzdálenost je také zaokrouhlena na 2 desetinná místa.
Nakonec se na řádku 27 vytiskne výsledek. To je ono, velmi jednoduché.
Nyní spusťte skript Pythonu s následujícím příkazem:
$ python3 vzdálenost.pyJak vidíte, měřená vzdálenost je 8.40 cm.
Obr.5: objekt umístěný přibližně na 8.40 cm od senzoru.
Přesunul jsem se o kousek dál, naměřená vzdálenost je 21.81 cm. Funguje to podle očekávání.
Obr.6: objekt umístěn přibližně na 21.81 cm od senzoru.
Takto tedy měříte vzdálenost pomocí Raspberry Pi pomocí ultrazvukového snímače HC-SR04. Podívejte se na kód vzdálenosti.py níže:
import RPi.GPIO jako GPIOčas importu
Snaž se:
GPIO.režim nastavení (GPIO.PRKNO)
pinTrigger = 7
pinEcho = 11
GPIO.nastavení (pinTrigger, GPIO.VEN)
GPIO.nastavení (pinEcho, GPIO.V)
GPIO.výstup (pinTrigger, GPIO.NÍZKÝ)
GPIO.výstup (pinTrigger, GPIO.VYSOKÝ)
čas.spánek (0.00001)
GPIO.výstup (pinTrigger, GPIO.NÍZKÝ)
zatímco GPIO.vstup (pinEcho) == 0:
pulseStartTime = čas.čas()
zatímco GPIO.vstup (pinEcho) == 1:
pulseEndTime = čas.čas()
pulseDuration = pulseEndTime - pulseStartTime
vzdálenost = kulatá (pulseDuration * 17150, 2)
tisk ("Vzdálenost:%.2f cm "% (vzdálenost))
Konečně:
GPIO.vyčištění ()