Dans cet article, nous allons piloter un module GY-31, qui comporte un capteur de couleurs TCS3200, au moyen d'un Raspberry Pi programmé en Python.
Comme je l'avais mentionné lorsque j'en ai fait l'essai avec un Arduino, le capteur de couleur TCS3200 est constitué d'une matrice de minuscules photodiodes. Certaines de ces photodiodes sont munies d'un filtre qui laisse passer la lumière rouge, alors que d'autres ne captent que la lumière bleue ou la lumière verte. Ces photodiodes peuvent être activées tour à tour de façon à connaître la quantité de rouge, de bleu et de vert qui se trouve dans la lumière qui atteint le capteur.En plus du capteur TCS3200, le module GY-31 comporte 4 LEDs blanches qui assurent un éclairage adéquat de la cible dont on désire déterminer la couleur.
Les connecteurs du module GY-31 sont les suivants:
- VCC: Alimentation située entre 2,7 et 5,5 V
- GND: La masse
- S0 et S1: Sélection de l'échelle de fréquence à la sortie
- S2 et S3: Sélection des photodiodes actives
- OUT: signal de sortie
- LED: contrôle des 4 LEDs
L'état logique des entrées S2 et S3 détermine les photodiodes actives:
- Si S2 = 0 et S3 = 0 : photodiodes avec filtre rouge
- Si S2 = 0 et S3 = 1: photodiodes avec filtre bleu
- Si S2 = 1 et S3 = 1: photodiodes avec filtre vert
- Si S2 = 1 et S3 = 0: photodiodes sans filtre
Le signal de sortie est un peu inhabituel: il s'agit d'une onde carrée dont la fréquence dépend de l'intensité lumineuse (plus l'intensité lumineuse captée es grande, plus le signal de sortie oscille rapidement). Pour faciliter la mesure de cette fréquence, les entrées S0 et S1 permettent, si on le désire, de la diviser par 5 ou par 50:
- Si S0 =1 et S1 = 1: 100% de la fréquence (environ 600 kHz)
- Si S0 = 1 et S1 = 0: 20% de la fréquence (environ 120 kHz)
- Si S0 = 0 et S1 = 1: 2% de la fréquence (environ 12 kHz)
- Si S0 = 0 et S1 = 0: capteur inactif
Quant aux LEDs, elles sont allumées par défaut. Si vous désirez qu'elles demeurent éteintes, vous reliez l'entrée LED du module GY-31 à la masse, pour que sa tension soit nulle.
Connexions du module GY-31 au Rasperry Pi
Voici comment j'ai branché le module GY-31 à mon Raspberry Pi:
- Broche GND du module GY-31: Broche GND (#6) du Raspberry Pi
- Broche VCC du module GY-31: Sortie 3,3 V (#1) du Raspberry Pi
- Broche S0 du module GY-31: Broche GPIO 27 (#13) du Raspberry Pi
- Broche S1 du module GY-31: Broche GPIO 22 (#15) du Raspberry Pi
- Broche S2 du module GY-31: Broche GPIO 23 (#16) du Raspberry Pi
- Broche S3 du module GY-31: Broche GPIO 24 (#18) du Raspberry Pi
- Broche OUT du module GY-31: broche GPIO 25 (#22) du Raspberry Pi
- Broche LED du module GY-31: pas branchée
Ce code ne peut qu'être appliqué a Raspberry pi. Moi je veux l'appliqué a esp8266.
RépondreSupprimerVoici le code :
from machine import Pin
from time import sleep
import utime
s0 = Pin(12, Pin.OUT)
s1 = Pin(13, Pin.OUT)
s2 = Pin(00, Pin.OUT)
s3 = Pin(02, Pin.OUT)
ouT = Pin(14, Pin.IN)
frequency = 0
# reglage de la frequence de sortie du capteur (2% du maximum)
s0.on()
s1.on()
def get_frequency():
frequency = machine.time_pulse_us(ouT,0)
utime.sleep_ms(20)
return frequency
while(1):
s2.value(0) # s2.off()
s3.value(0)
red = get_frequency()
s2.value(1) # s2.on()
s3.value(1)
green = get_frequency()
s2.value(0)
s3.value(1)
blue = get_frequency()
#frequency= machine.freq(ouT,0)
print('R= ', red,"G= ", green, "B= ", blue)
print(" ")
#time.sleep(5)
utime.sleep_ms(100)