top of page

Le capteur suiveur de ligne.

Les capteurs suiveurs de ligne que nous avons utilisé sont des modules basés sur le réflecteur optique TCRT5000 et un amplificateur.


Alimentation: 5 Vcc
Sortie:
- état bas: ligne noire
- état haut: ligne blanche
Dimensions: 43 x 14 x 11 mm

Nous utiliserons 3 capteurs qui seront situés à l'avant de notre voiture. Avec ces capteurs, notre voiture pourra suivre une ligne noir et sera autonome.

C'est en nous aidant de la revue "Micro portable Tests" que nous avons élaboré notre programme ainsi que le plan de câblage.

# Importation des librairies pour controle du port GPIO
import RPi.GPIO as GPIO
from time import sleep

# Declaration des emplacements
CapteurLigne = 15

# Acces au port GPIO avec la numerotation Broadcom
mode = GPIO.BCM         #Lecture du capteur par "nom"
#mode = GPIO.BOARD      #Lecture du capteur par emplacement

# Parametrage
def Parametrage():
    GPIO.setmode(mode)
    GPIO.setwarnings(False)
    GPIO.setup(CapteurLigne, GPIO.IN, pull_up_down = GPIO.PUD_UP)       #initialisation


# Boucle du programme pour lire le capteur suiveur de ligne
def Boucle():
 while True:
  sensor=GPIO.input(CapteurLigne)
  if sensor==True:
   print "noir"
   print sensor
  else:
   print "blanc"
   print sensor
  sleep(1)

def Reinitialisation(): # reinitialiser le circuit GPIO
    GPIO.output(CapteurLigne, GPIO.LOW)
    GPIO.cleanup()                     # Relacher les ressources

# Le programme demarre ici
if __name__ == '__main__':
    Parametrage()
    try:
        Boucle()
    except KeyboardInterrupt:  # Si on interrompt le programme, on passe d'abord par la fonction Reinitialisation
        Reinitialisation()

sudo nano ky033.py

Ce programme fait lire le capteur suiveur de ligne et affiche "noir" si le capteur est sur une ligne et "blanc" si le capteur est à côté.

Nous avons ensuite créé un second programme avec nos 3 capteurs suiveurs de ligne.

sudo nano ky033_3capteurs.py

# Importation des librairies pour controle du port GPIO
import RPi.GPIO as GPIO
from time import sleep

# Declaration des emplacements
capteurG = 14
capteurD = 15
capteurC = 3

# Acces au port GPIO avec la numerotation Broadcom
mode = GPIO.BCM         #Lecture des pin par "nom"
#mode = GPIO.BOARD      #Lecture des pins par emplacement

# Parametrage
def Parametrage():
    GPIO.setmode(mode)
    GPIO.setwarnings(False)
    GPIO.setup(capteurG, GPIO.IN, pull_up_down = GPIO.PUD_UP)       #initialisation
    GPIO.setup(capteurD, GPIO.IN, pull_up_down = GPIO.PUD_UP)
    GPIO.setup(capteurC, GPIO.IN, pull_up_down = GPIO.PUD_UP)

# Boucle du programme pour lire les capteurs suiveurs de ligne

def Boucle():
 while True:
 

  capteurCentre=GPIO.input(capteurC)
  capteurGauche=GPIO.input(capteurG)
  capteurDroite=GPIO.input(capteurD)
  print "---------------------------------------"
  if (capteurGauche==GPIO.HIGH) and (capteurDroite==GPIO.HIGH) and (capteurCentre==GPIO.HIGH) :
   print "blanc a gauche // blanc a droite // blanc au centre"
  if (capteurGauche==GPIO.HIGH) and (capteurDroite==GPIO.LOW) and (capteurCentre==GPIO.HIGH) :
   print "blanc a gauche // noir a droite // blanc au centre"
  if (capteurGauche==GPIO.HIGH) and (capteurDroite==GPIO.LOW) and (capteurCentre==GPIO.LOW) :
   print "blanc a gauche // noir a droite // noir au centre"
  if (capteurGauche==GPIO.HIGH) and (capteurDroite==GPIO.HIGH) and (capteurCentre==GPIO.LOW) :
   print "blanc a gauche // blanc a droite // noir au centre"
  if (capteurGauche==GPIO.LOW) and (capteurDroite==GPIO.LOW) and (capteurCentre==GPIO.LOW) :
   print "noir a gauche // noir a droite // noir au centre"
  if (capteurGauche==GPIO.LOW) and (capteurDroite==GPIO.HIGH) and (capteurCentre==GPIO.LOW) :
   print "noir a gauche // blanc a droite // noir au centre"
  if (capteurGauche==GPIO.LOW) and (capteurDroite==GPIO.HIGH) and (capteurCentre==GPIO.HIGH) :
   print "noir a gauche // blanc a droite // blanc au centre"
  if (capteurGauche==GPIO.LOW) and (capteurDroite==GPIO.LOW) and (capteurCentre==GPIO.HIGH) :
   print "noir a gauche // noir a droite // blanc au centre"

 

  sleep(2)
def Reinitialisation(): # Reinitialiser le circuit GPIO
    #GPIO.setup(capteurG, GPIO.LOW)
    #GPIO.setup(capteurD, GPIO.LOW)
    #GPIO.setup(capteurC, GPIO.LOW)
    GPIO.cleanup()                     # Relacher les ressources
# Le programme demarre ici
if __name__ == '__main__':
    Parametrage()
    try:
        Boucle()
    except KeyboardInterrupt:  # Si on interrompt le programme, on passe d'abord par la fonction Reinitialisation
        Reinitialisation()
 

 

Les ports GPIO utilisés pour le branchement des capteurs suiveurs de lignes sont décris ci-dessous :

GND : masse du Raspberry

+5V ou VCC : 3,3 Volt du Raspberry

Signal ou OUT : 

- Capteur Gauche : 14 du GPIO

- Capteur Droite : 15 du GPIO

- Capteur Centre : 3 du GPIO

Ce programme nous montrera quel capteur détecte la ligne. Ensuite, en fonction de la position des capteurs par rapport à la ligne, notre programme fera tourner un moteur (gauche ou droite) ou les deux.

bottom of page