Outils pour utilisateurs

Outils du site


raspberry_pi:photoresistance_mesure_lumi

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

raspberry_pi:photoresistance_mesure_lumi [11/01/2015 00:55] (Version actuelle)
sky99 créée
Ligne 1: Ligne 1:
 +====== Mesure de la luminosité via une photorésistance connectée au MCP3008 ======
 +Nous allons utiliser une [[wpfr>​Photorésistance|photorésistance]] (LDR en anglais, pour Light Dependent Resistor) pour mesurer la luminosité. On peut se servir de ce montage pour simplement mesurer l'​intensité lumineuse ambiante, détecter s'il s'agit du jour ou de la nuit, orienter un dispositif vers une source de lumière, allumer ou éteindre un dispositif en fonction de la luminosité,​ faire un capteur détectant qu'un objet passe dans son "champ de vision",​ et bien d'​autres applications.
  
 +===== Prérequis =====
 +Nous aurons besoin d'un Raspberry Pi (A, A+, B, B+) configuré, ainsi que d'une breadboard, de câbles, d'une puce MCP3008, d'une photorésistance,​ ainsi que d'une résistance de 1 à 10KOhms (nous utiliserons ici un 4.7KOhms). Il faudra avoir déjà interfacé le Raspberry Pi et le MCP3008 comme nous l'​avons vu dans le [[raspberry_pi:​mcp3008_lecture_analogique|tutoriel sur l'​utilisation d'un MCP3008 pour ajouter des entrées analogiques]].
 +
 +===== Montage =====
 +Le montage est le suivant : l'une des broches de la photorésistance sera connectée au +3.3V (en rouge), tandis que l'​autre broche sera connectée à notre résistance de 4.7KOhms qui ira à la masse. Sur la broche de la photorésistance connectée à la résistance,​ nous ajouterons un câble partant vers la broche A0 du MCP3008 (câble brun). Nous obtenons alors le montage suivant : 
 +{{ :​raspberry_pi:​rpi_mcp3008_ldr_bb.png?​400 |Schéma de montage d'une photorésistance connectée au Raspberry pi via un MCP3008}}
 +Vous pouvez également {{:​raspberry_pi:​rpi_mcp3008_ldr_bb.pdf|télécharger le schéma de montage de la photorésistance connectée au Raspberry pi via un MCP3008 en version PDF}}.
 +
 +===== Code en Python =====
 +Nous utiliserons sensiblement le même code que pour la lecture du potentiomètre :
 +<file python readLDR.py>​
 +#​!/​usr/​bin/​env python
 +import time
 +import os
 +import RPi.GPIO as GPIO
 +GPIO.setmode(GPIO.BCM)
 +GPIO.setwarnings(False)
 +#fonction lisant les donnees SPI de la puce MCP3008, parmi 8 entrees, de 0 a 7
 +def readadc(adcnum,​ clockpin, mosipin, misopin, cspin):
 +     if ((adcnum > 7) or (adcnum < 0)):
 +  ​   return -1
 +     GPIO.output(cspin,​ True)
 +     GPIO.output(clockpin,​ False) ​ # start clock low
 +     GPIO.output(cspin,​ False) ​   # bring CS low
 +     commandout = adcnum
 +     commandout |= 0x18  # start bit + single-ended bit
 +     commandout <<= 3    # we only need to send 5 bits here
 +     for i in range(5):
 +  ​   if (commandout & 0x80):
 +  ​   GPIO.output(mosipin,​ True)
 +  ​   else:
 +  ​   GPIO.output(mosipin,​ False)
 +  ​   commandout <<= 1
 +  ​   GPIO.output(clockpin,​ True)
 +  ​   GPIO.output(clockpin,​ False)
 +     adcout = 0
 +     # read in one empty bit, one null bit and 10 ADC bits
 +     for i in range(12):
 +  ​   GPIO.output(clockpin,​ True)
 +  ​   GPIO.output(clockpin,​ False)
 +  ​   adcout <<= 1
 +  ​   if (GPIO.input(misopin)):​
 +  ​   adcout |= 0x1
 +     GPIO.output(cspin,​ True)
 +     adcout /= 2    # first bit is '​null'​ so drop it
 +     return adcout
 +# ces numeros de pins GPIO doivent etre modifies pour correspondre aux broches utilisées si vous avez utilisé un autre câblage que celui du tutoriel.
 +SPICLK = 18
 +SPIMISO = 23
 +SPIMOSI = 24
 +SPICS = 25
 +# definition de l'​interface SPI
 +GPIO.setup(SPIMOSI,​ GPIO.OUT)
 +GPIO.setup(SPIMISO,​ GPIO.IN)
 +GPIO.setup(SPICLK,​ GPIO.OUT)
 +GPIO.setup(SPICS,​ GPIO.OUT)
 +#definition du ADC utilise (broche du MCP3008). Cette valeur peut aller de 0 à 7.
 +adcnum = 0
 +# Lecture de la valeur brute du capteur
 +read_adc0 = readadc(adcnum,​ SPICLK, SPIMOSI, SPIMISO, SPICS)
 +# conversion de la valeur brute lue en milivolts = ADC * ( 3300 / 1024 )
 +millivolts = read_adc0 * ( 3300.0 / 1024.0)
 +print "​\tLuminosite - valeur brute : %s" % read_adc0
 +print "​\ttension : %s millivolts"​ % millivolts
 +</​file>​
 +
 +===== Conclusions =====
 +Nous pouvons par ce montage mesurer la luminosité en un lieu. La photorésistance n'est pas un composant particulièrement précis, ni calibré, ce qui fait que nous n'​aurons pas de valeur ayant une grandeur physique.
 +On utilisera plutôt ce composant économique pour mesurer des différences relatives, en prenant des valeurs de référence. Ce capteur permettra par exemple de distinguer le jour de la nuit, ou si un objet passe devant une source lumineuse.
 +
 +La valeur de la résistance fixe permet d'​ajuster la sensibilité du montage, de façon à pouvoir fonctionner dans une plage de plus ou moins fortes luminosités.
 +
 +[[raspberry_pi:​tutoriels|Retour à la liste des tutoriels]]
 +
 +[[raspberry_pi:​|Retour à la l'​accueil de la section]]
raspberry_pi/photoresistance_mesure_lumi.txt · Dernière modification: 11/01/2015 00:55 par sky99