Dans ce tutoriel, je veux vous montrer comment installer et utiliser une petite barrière lumineuse infrarouge, qui donne un signal dès que la barrière lumineuse est interrompue. En traversant les deux cellules photoélectriques l’une derrière l’autre, la vitesse peut être mesurée.
Accessoires
- Émetteur et récepteur IR (j’utilise ceci)
- Câble Jumper
- Résistances (470Ω et 10kΩ)
Installation
Dès que la barrière lumineuse est interrompue, un signal positif doit être envoyé, sinon un signal négatif (0). J’utilise une résistance de pull-up avec le récepteur IR (noir) au lieu de l’interrupteur.
Les deux cellules photoélectriques sont distantes de 10 cm pour moi. Pour que la vitesse soit calculée correctement, vous devrez peut-être ajuster la distance dans votre script. La structure réelle est la suivante :
La petite LED rouge est uniquement destinée aux tests et peut être omise.
Une fois que vous avez installé le circuit, la LED doit s’allumer dès que la barrière lumineuse est fermée (par exemple, les doigts entre les deux).
Mesurer la vitesse
Pour que la vitesse puisse maintenant être mesurée, on mesure le temps qui passe, jusqu’à ce que les deux barrières lumineuses soient franchies. Si la distance n’est pas exactement de 10 cm, vous devez ajuster cela.
sudo nano distance_test.py
Et ajoutez le code 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 |
#!/usr/bin/python import time import RPi.GPIO as GPIO GPIO_BEGIN_PIN = 4 GPIO_END_PIN = 17 DISTANCE = 10.0 # (in cm) Anpassen, falls notwendig TIMEOUT = 5 # sek GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) if __name__ == '__main__': GPIO.setup(GPIO_BEGIN_PIN, GPIO.IN) GPIO.setup(GPIO_END_PIN, GPIO.IN) start_time, end_time = 0, 0 while GPIO.input(GPIO_BEGIN_PIN) == GPIO.LOW: time.sleep(0.001) start_time = time.time() end_time = 0 while GPIO.input(GPIO_END_PIN) == GPIO.LOW and time.time()-start_time < TIMEOUT: time.sleep(0.001) else: if time.time()-start_time >= TIMEOUT: print "Timeout" exit() else: end_time = time.time() speed = DISTANCE / (end_time - start_time) print "Geschwindigkeit: %.2f cm/s" % speed |
Sauvegardez et quittez avec CTRL + O et CTRL + X. Nous pouvons maintenant le démarrer.
sudo python distance_test.py
Si le script ne fonctionne pas correctement, c’est très probablement dû au fait que les cellules photoélectriques ne pointent pas exactement l’une vers l’autre et qu’une certaine quantité d’électricité peut donc circuler, mais cela est en dehors de la norme acceptée et il n’est pas déterminé si 0 ou 1
Pour conclure avec une autre photo de ma structure :