V tomto článku vám ukážem, ako používať ultrazvukový snímač HC-SR04 na meranie vzdialenosti medzi vašim snímačom a objektom spôsobom, ktorý využíva Raspberry Pi. Začnime.
Komponenty, ktoré potrebujete:
Ak chcete úspešne zmerať vzdialenosť pomocou senzorov Raspberry Pi a HC-SR04, potrebujete,
- Jednodeskový počítač Raspberry Pi 2 alebo 3 s nainštalovaným Raspbian.
- Modul ultrazvukového snímača HC-SR04.
- Rezistory 3x10kΩ.
- Nepál.
- Niektoré konektory mužského a ženského pohlavia.
- Niektoré konektory samec - samec.
Napísal som špecializovaný článok o inštalácii Raspbian na Raspberry Pi, ktorý si môžete skontrolovať na https: // linuxhint.com / install_raspbian_raspberry_pi / ak potrebujete.
HC-SR04 Pinouts:
HC-SR04 má 4 piny. VCC, TRIGGER, ECHO, GROUD.
Obr.1: Pinouty HC-SR04 (https: // www.mouser.com / ds / 2/813 / HCSR04-1022824.pdf)
Kolík VCC by mal byť pripojený k kolíku + 5 V na Raspberry Pi, čo je kolík 2. Kolík GROUND by mal byť pripojený k kolíku GND Raspberry Pi, čo je pin 4.
Kolíky TRIGGER a ECHO by mali byť pripojené ku kolíkom GPIO Raspberry Pi. Zatiaľ čo pin TRIGGER je možné priamo pripojiť k jednému z GPIO pinov Raspberry Pi, pin ECHO vyžaduje obvod deliča napätia.
Schéma zapojenia:
Pripojte ultrazvukový snímač HC-SR04 k svojmu Raspberry Pi nasledujúcim spôsobom:
Obrázok 2: Ultrazvukový senzor HC-SR04 pripojený k Raspberry Pi.
Keď je všetko spojené, vyzerá to takto:
Obrázok 3: Ultrazvukový senzor HC-SR04 pripojený k Raspberry Pi na doske.
Obrázok 4: Ultrazvukový snímač HC-SR04 pripojený k Raspberry Pi na nepájivej doske.
Písanie programu v Pythone na meranie vzdialenosti pomocou HC-SR04:
Najskôr sa pripojte k svojmu Raspberry Pi pomocou VNC alebo SSH. Potom otvorte nový súbor (povedzme vzdialenosť.py) a zadajte nasledujúce riadky kódov:
Riadok 1 tu importuje GPIO knižnicu maliny pi.
2. riadok importuje časovú knižnicu.
Vnútri skús bloku, zapíše sa skutočný kód na meranie vzdialenosti pomocou HC-SR04.
The konečne blok slúži na vyčistenie pinov GPIO pomocou GPIO.vyčistiť() metóda pri ukončení programu.
Vnútri skús blok, na riadku 5, GPIO.režim nastavenia (GPIO.RADA) sa používa na uľahčenie definovania kolíkov. Teraz môžete odkazovať na piny podľa fyzických čísel, ako je to na doske Raspberry Pi.
Na linke 7 a 8, pinTrigger je nastavený na 7 a pinEcho je nastavený na 11. The SPUŠŤ pin HC-SR04 je pripojený k pin 7, a ECHO pin HC-SR04 je pripojený k pin 11 Rapsberry Pi. Oba sú to GPIO piny.
Na riadku 10, pinTrigger je nastavený na VÝSTUP pomocou GPIO.nastaviť() metóda.
Na linke 11, pinEcho je nastavený na VSTUP pomocou GPIO.nastaviť() metóda.
Na resetovanie sa používajú riadky 13 - 17 pinTrigger (nastavením na logiku 0) a nastavením pinTrigger do logiky 1 na 10ms a potom do logiky 0. Za 10ms pošle snímač HC-SR04 8 impulzov 40KHz.
Riadky 19-24 sa používajú na meranie času potrebného na odrazenie 40KHz impulzov na objekt a späť do snímača HC-SR04.
Na riadku 25 sa vzdialenosť meria pomocou vzorca,
Vzdialenosť = delta čas * rýchlosť (340 M / S) / 2
=> Vzdialenosť = delta čas * (170 M / S)
Pre presnosť som vypočítal vzdialenosť v centimetroch namiesto v metroch. Počítal som, že vzdialenosť je tiež zaokrúhlená na 2 desatinné miesta.
Nakoniec sa na riadok 27 vytlačí výsledok. To je všetko, veľmi jednoduché.
Teraz spustite skript Pythonu s nasledujúcim príkazom:
$ python3 vzdialenosť.pyAko vidíte, nameraná vzdialenosť je 8.40 cm.
Obr. 5: objekt umiestnený asi na 8.40 cm od senzora.
Posunul som sa o niečo ďalej, nameraná vzdialenosť je 21.81cm. Funguje teda podľa očakávania.
Obr. 6: objekt umiestnený približne na 21.81 cm od senzora.
Takto teda meriate vzdialenosť pomocou Raspberry Pi pomocou ultrazvukového snímača HC-SR04. Pozrite sa na kód vzdialenosti.py nižšie:
import RPi.GPIO ako GPIOčas importu
skúste:
GPIO.režim nastavenia (GPIO.RADA)
pinTrigger = 7
pinEcho = 11
GPIO.nastavenie (pinTrigger, GPIO.VON)
GPIO.nastavenie (pinEcho, GPIO.IN)
GPIO.výstup (pinTrigger, GPIO.NÍZKY)
GPIO.výstup (pinTrigger, GPIO.VYSOKÉ)
čas.spánok (0.00001)
GPIO.výstup (pinTrigger, GPIO.NÍZKY)
zatiaľ čo GPIO.vstup (pinEcho) == 0:
pulseStartTime = čas.čas ()
zatiaľ čo GPIO.vstup (pinEcho) == 1:
pulseEndTime = čas.čas ()
pulseDuration = pulseEndTime - pulseStartTime
vzdialenosť = zaokrúhlené (pulseDuration * 17150, 2)
print ("Vzdialenosť:%.2f cm "% (vzdialenosť))
nakoniec:
GPIO.vyčistiť()