Geplaatst op Geef een reactie

HC-SR04 Ultrasone sensor gebruiken met Raspberry Pi

In deze tutorial gebruiken we een ultrasone sensor om afstanden te meten. Met een Python script op je Raspberry Pi berekenen we de afstand tot een object. Wanneer je deze tutorial voltooid hebt, kan je de HC-SR04 aansluiten op je Pi via de GPIO-pinnen. Je hebt tevens de basiselementen om via een Python script de metingen van de sensor om te zetten naar een gemeten afstand.

Wat je nodig hebt voor deze tutorial

Allereerst moet je een Raspberry Pi 3 hebben die op de nieuwste versie van Raspbian draait. Deze versie bevat “Thonny”. We zullen deze gebruiksvriendelijke IDE gebruiken om onze Python-code te schrijven. Als je niet bekend bent met Python of met Thonny en de GPIO-pinnen, raad ik je aan onze volgende tutorials te bekijken “Eerste Python programma op de Raspberry Pi” en “Starten met GPIO op de Raspberry Pi” voor een snelle introductie.

Vervolgens heb je wat extra hardware nodig:

  • een breadboard (we gebruiken een breadboard van 400 punten)
  • een HC-SR04 ultrasone sensor
  • een weerstand van 1k Ohm en één van 2k Ohm
  • Dupont jumper kabels
  • een T-cobbler (optioneel)
  • een 40 pins GPIO-kabel (optioneel)

Raspberry Pi GPIO discovery kit

 

Indien je dingen zou missen, aarzel dan niet om onze shop te bezoeken. We hebben een goed bedachte kit die alle nodige componenten bevat .

De HC-SR04 ultrasone sensor

De HC-SR04 ultrasone sensor gebruikt het sonar principe om de afstand tot een voorwerp te bepalen. Het biedt een contactloze meting met een goede nauwkeurigheid en stabiele aflezingen. Op de module vinden we een ultrasone zender en een ontvanger. De sensor heeft een bereik van 2 tot 400cm. De nauwkeurigheid van de meting is +/- 0,5cm.

Om de afstand te bepalen gebruikt de sensor ultrasone geluidssignalen:

  • De zender stuurt een geluidssignaal in de richting van het object.
  • Wanneer het signaal het object bereikt, wordt het weerkaatst naar de sensor.
  • De ontvanger kan het weerkaatste signaal waarnemen.

We kunnen het tijdsverschil berekenen tussen het tijdstip wanneer de zender het signaal verstuurt en het tijdstip wanneer de ontvanger het signaal opvangt. Vermits de snelheid van het geluid gekend is (343,3m/s of 34330cm/s) kunnen we nu de afstand berekenen:

afstand = snelheid * tijd , of in ons geval:

afstand = 34330 * tijd / 2 , of afstand = 17165 * tijd

Opmerking: Vermits de gemeten tijd rekening houdt met de afstand van sensor tot object en de afstand van object tot sensor, dienen we deze waargenomen tijd te delen door 2.

Het hardware gedeelte opzetten

Voordat je begint met het aansluiten van kabels op de GPIO-pinnen van je Raspberry Pi, dien je ervoor te zorgen dat je de Pi goed afsluit en de voedingskabel van het bordje hebt verwijderd!

HC-SR04 ultrasone sensor aansluiten op Raspberry Pi
  • sluit de 40-pins kabel op de GPIO-pinnen van je Pi aan (verwijder indien nodig eerst het deksel van je Pi)
  • sluit de T-cobbler op het breadboard aan zoals wordt weergegeven in de afbeelding hierboven of hieronder
  • sluit het andere uiteinde van de 40-pins kabel aan op de T-cobbler
  • verbind de VCC pin van de sensor met een 5V pin (rode kabel)
  • verbind de Trig pin van de sensor met pin 23 (groene kabel)
  • verbind de Echo pin van de sensor met de 1kOhm weerstand, verbind het andere uiteinde van de weerstand met pin 24 (gele kabel)
  • sluit de GND van de sensor aan de “-” rij van de breadboard en verbind de GPIO GND tevens met de “-“rij van de breadboard (zwarte kabel)
  • steek de 2kOhm weerstand tussen pin 24 en de “-” rij
HC-SR04 ultrasone sensor aansluiten op Raspberry Pi

De 2 weerstanden worden gebruikt om de spanning van het Echo signaal van 5V te verminderen naar 3,3V. De Echo pin rechtstreeks op een GPIO-pin aansluiten (voorzien voor 3,3V) zou deze kunnen beschadigen. We doen dit aan de hand van het “Voltage divider” principe.

De code schrijven

Het doel is hier om een heel eenvoudig Python programma te schrijven dat ons toelaat een afstand in cm te bepalen tussen de ultrasone sensor en een object. Om de code te schrijven, gebruiken we de Thonny IDE. Je kan Thonny onder het applicatiemenu van je Raspberry Pi terugvinden .

Schrijf of plak de volgende code in de IDE:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
TRIG = 23
ECHO = 24

GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)

GPIO.output(TRIG, False)
print ('Waiting a few seconds for the sensor to settle')
time.sleep(2)
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)

while GPIO.input(ECHO)==0:
pulse_start = time.time()

while GPIO.input(ECHO)==1:
pulse_end = time.time()

pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17165
distance = round(distance, 1)
print ('Distance:',distance,'cm')
GPIO.cleanup()

Wat verklaringen over de code:

  • GPIO.setmode (GPIO.BCM): De GPIO.BCM-optie betekent dat we naar de pinnen verwijzen via het “Broadcom SOC-kanaal” -nummer, dit zijn de cijfers na “GPIO”
  • GPIO.setwarnings (False): we gebruiken deze coderegel om waarschuwingsberichten te vermijden.
  • GPIO.setup(TRIG,GPIO.OUT): We definiëren de TRIG-pin (= 23) als een uitvoerpin
  • GPIO.setup(ECHO,GPIO.IN): We definiëren de ECHO-pin (= 24) als een invoerpin
  • GPIO.output(TRIG, False)
    print ('Waiting a few seconds for the sensor to settle')
    time.sleep(2)
    We zetten de TRIG-pin laag en wachten 2 seconden.
  • GPIO.output(TRIG, True)
    time.sleep(0.00001)
    GPIO.output(TRIG, False)
    Vervolgens sturen we via de TRIG-pin een puls van 10 µs.
  • while GPIO.input(ECHO)==0:
    pulse_start = time.time()
    dit is een lus die ons toelaat om de laatste timestamp te registreren alvorens het signaal de ontvanger als eerst bereikt.
  • Wees voorzichtig, Python is witruimte gevoelig. Verwijder de “tab” niet voor de regel die na de “while” opdracht volgt
  • while GPIO.input(ECHO)==1:
    pulse_end = time.time()
    hier registreren we de laatste timestamp waarop de ontvanger het signaal waarneemt. De ontvanger zal namelijk starten met een rechtstreeks signaal te ontvangen tot uiteindelijk het weerkaatste signaal volledig ontvangen is.
  • pulse_duration = pulse_end - pulse_start we berekenen het tijdsverschil tussen beide timestamps
  • distance = pulse_duration * 17165 aan de hand van de berekende tijd berekenen we de afstand (zie uitleg in voorgaande paragraaf)
  • Ten slotte ronden we het resultaat op één cijfer na de comma af, we drukken het resultaat af en resetten de GPIO-pinnen.
HC-SR04 ultrasone sensor Python script

Wanneer je klaar bent met de code, richt de sensor op een voorwerp met een vlak oppervlak en klik op de Run-knop. Je zal de afstand tussen de sensor en het voorwerp als resultaat op het scherm zien.

Let op met andere voorwerpen in de buurt. Deze zouden ook een echo kunnen sturen. Waarmee je dan verkeerde meetwaarden zou krijgen.

Gefeliciteerd! Met deze opstelling heb je het principe begrepen hoe sommige afstandmeters werken. Je kan de script verder gebruiken om het resultaat te verwerken in een toepassing waar je zelf een bepaalde afstand wenst te meten of te monitoren. Nog veel plezier ermee!

Deel een reactie

Your email address will not be published. Required fields are marked *

Abonneer u op onze nieuwsbrief

Door u te abonneren, gaat u akkoord met ons privacy beleid.