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