Pour de nombreux projets (en plein air), une mesure de distance est nécessaire ou avantageuse. Ces petits modules sont disponibles commençant à 1-2 dollars et peuvent mesurer la distance jusqu’à 4-5 mètres par ultrasons et sont étonnamment précis. Ce tutoriel montre la connexion et le contrôle.
Matériel
-
- Module HC-SR04
- Résistances : 330 Ω et 470 Ω
- Câble Jumper
Câblage
Il y a quatre broches sur le module d’ultrasons qui sont connectées au Raspberry :
- VCC à la broche 2 (VCC)
- GND à la broche 6 (GND)
- TRIG à la broche 12 (GPIO18)
- connectez la résistance 330 Ω à ECHO. Sur ses extrémités vous le connectez à la broche 18 (GPIO24) et via une résistance 470 Ω vous le connectez aussi à la broche 6 (GND).
Nous le faisons parce que les broches GPIO ne tolèrent qu’une tension maximale de 3,3 V. La connexion à GND doit avoir un signal évident sur GPIO24. Si aucune impulsion n’est envoyée, le signal est 0 (via la connexion avec GND), sinon il est 1. S’il n’y aurait pas de connexion avec GND, l’entrée serait indéfinie si aucun signal n’est envoyé (de manière aléatoire 0 ou 1), si ambigu.
Voici la structure comme un diagramme de circuit :
Script pour le contrôle
Pour utiliser le module, nous créons un nouveau script
sudo nano ultrasonic_distance.py
avec le contenu suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#Libraries import RPi.GPIO as GPIO import time #GPIO Mode (BOARD / BCM) GPIO.setmode(GPIO.BCM) #set GPIO Pins GPIO_TRIGGER = 18 GPIO_ECHO = 24 #set GPIO direction (IN / OUT) GPIO.setup(GPIO_TRIGGER, GPIO.OUT) GPIO.setup(GPIO_ECHO, GPIO.IN) def distance(): # set Trigger to HIGH GPIO.output(GPIO_TRIGGER, True) # set Trigger after 0.01ms to LOW time.sleep(0.00001) GPIO.output(GPIO_TRIGGER, False) StartTime = time.time() StopTime = time.time() # save StartTime while GPIO.input(GPIO_ECHO) == 0: StartTime = time.time() # save time of arrival while GPIO.input(GPIO_ECHO) == 1: StopTime = time.time() # time difference between start and arrival TimeElapsed = StopTime - StartTime # multiply with the sonic speed (34300 cm/s) # and divide by 2, because there and back distance = (TimeElapsed * 34300) / 2 return distance if __name__ == '__main__': try: while True: dist = distance() print ("Measured Distance = %.1f cm" % dist) time.sleep(1) # Reset by pressing CTRL + C except KeyboardInterrupt: print("Measurement stopped by User") GPIO.cleanup() |
Après cela, nous lançons :
sudo python ultrasonic_distance.py
Ainsi, toutes les secondes, la distance sera mesurée jusqu’à ce que le script soit annulé en appuyant sur CTRL + C.
C’est ça. Vous pouvez l’utiliser dans de nombreux domaines, mais ceux qui veulent encore mesurer de plus grandes distances devraient se fier à des appareils de mesure laser, qui, cependant, sont beaucoup plus coûteux.
Un commentaire
Merci pour ce tutoriel