Pour utiliser, par exemple, une station météorologique, il est important de connaître la luminosité. Avec un capteur de lumière Raspberry Pi (photorésistance/capteur de luminosité), il est très facile de déterminer une valeur, qui peut dire, par exemple, si c’est le jour, le crépuscule ou la nuit.
En retour, des projets pourraient être mis en œuvre pour contrôler les lampes (extérieures), qui s’allument automatiquement après un certain niveau d’obscurité. Dans ce tutoriel, nous connectons un tel capteur de luminosité et nous lisons les valeurs de lumière en conséquence, afin de pouvoir réagir.
Pièces de matériel nécessaires
La photorésistance utilisée est en plus de la version réelle sur un PCB (circuit imprimé), sur lequel les résistances et autres sont soudées. Il est ainsi possible de lire un signal numérique qui signifie « au-dessus/en dessous de la valeur seuil ». La lecture de ce signal numérique est très facile et sera traitée dans d’autres tutoriels (par exemple ici). Les deux versions peuvent être utilisées avec ce tutoriel, seule l’une d’entre elles possède une fonctionnalité supplémentaire. Pour des projets tels que la distinction entre clair/obscur, il s’agit certainement d’une alternative simple.
Les éléments suivants sont nécessaires pour ce tutoriel:
- Raspberry Pi 3 ou similaire
- Photorésistance
- module de photorésistance
- MCP3008
- Résistance 10k Ω
- Breadboard
- Câble jumper
Si vous vous intéressez au fonctionnement des photorésistances (LDR) en général, vous pouvez en apprendre davantage à leur sujet ici. En général, on peut dire que les changements de résistance dépendent de la luminosité.
Connecter le capteur de lumière Raspberry Pi
Toutefois, avant de pouvoir connecter et lire la photo transmission, nous devons connecter un convertisseur analogique-numérique. En outre, vous trouverez ici un article assez détaillé sur le MCP3008, que nous utilisons également dans ce tutoriel. Afin de ne pas gonfler inutilement cet article, je n’entrerai pas dans le détail du MCP3008. Le lien exact entre l’ADC et le Raspberry Pi peut également être trouvé dans un autre article.
Il est important que le capteur de luminosité ait également une connexion (via une résistance 10k Ω) à la terre, sinon, la valeur ne peut pas être lue clairement. Si aucune tension ne passe par le LDR, alors elle est à 0 (en raison de la connexion à la masse). Si la tension circule, une partie repasse par la résistance 10kΩ, mais cette partie est très faible car la résistance est importante. Comme pour les autres résistances, peu importe de quel côté la tension positive est appliquée à la photorésistance.
Schématiquement, la structure ressemble à ceci:
Si vous voyez plus tard des niveaux assez élevés même avec une faible lumière, vous pouvez ajouter une résistance supplémentaire entre la tension positive et la broche du capteur de lumière.
Si vous utilisez une photorésistance soudée, vous n’avez besoin que de 3,3V (broche 1) du Raspberry Pi pour le VCC et de GND et GND (broche 6) du Pi. La broche A0 est connectée directement au convertisseur analogique-numérique. Ainsi, aucune résistance de rappel de 10k n’est nécessaire. L’avantage est que vous pouvez régler la résistance série par un potentiomètre (résistance de rotation) individuellement – en fonction de la luminosité maximale.
Lecture du capteur de luminosité sur le Raspberry Pi
Dans l’autre tutoriel pour le MCP3008, nous avons créé une classe, que nous utiliserons également ici. Assurez-vous que SpiDev est installé comme décrit. Pour rappel, vous trouverez ici encore le contenu de la classe :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from spidev import SpiDev class MCP3008: def __init__(self, bus = 0, device = 0): self.bus, self.device = bus, device self.spi = SpiDev() self.open() self.spi.max_speed_hz = 1000000 # 1MHz def open(self): self.spi.open(self.bus, self.device) self.spi.max_speed_hz = 1000000 # 1MHz def read(self, channel = 0): adc = self.spi.xfer2([1, (8 + channel) << 4, 0]) data = ((adc[1] & 3) << 8) + adc[2] return data def close(self): self.spi.close() |
Si cette classe existe dans le répertoire courant, vous pouvez simplement ouvrir le console Python via
sudo python
(ou créer un script) et entrez:
1 2 3 |
de MCP3008 importation MCP3008 adc = MCP3008() print( adc.read( channel = 0 ) ) # si nécessaire, effectuer plusieurs fois |
Dans mon cas, l’obscurité totale (les doigts maintenus dessus) a donné une valeur d’environ 600, ce qui signifie qu’un voltage d’environ 1,95V est venu des 3,3V d’origine au MCP3008. À la luminosité, j’avais en permanence une valeur de 1023.
La résistance maximale varie légèrement en fonction de la résistance à la lumière. Si la luminosité est très élevée (lumière du jour), nous recommandons une résistance en série ou une autre résistance de traction (auparavant 10k).