Arduino – Capteur de luminosité
Bonjour à tous,
Pour reprendre un peu le rythme des tutos, un petit tutoriel pour lire une photorésistance et ainsi calculer la luminosité dans une pièce.
Le matériel
- Un Arduino (Uno Rev 3 dans mon cas)
- Une breadboard 170 pts
- Une photorésistance
- Une résistance 10Kohm
Et évidemment quelques fils de connexion mâle / mâle. Et c’est tout. C’est un montage on ne peut plus simple, qui permettra ensuite d’être facilement étendu pour interagir avec d’autres éléments.
Vous pouvez acheter ces photorésistances sur ebay pour moins d’un euros assez facilement !
Le principe
Une photorésistance est un composant dont la résistivité dépend de la luminosité ambiante. On va donc s’en servir pour détecter le fortes variation de la luminosité.
On note l’illumination en « lux », voici un graphe qui montre l’évolution en lux en fonction de la résistance :
Il faut noter aussi que ces capteurs ne sont pas sensibles de la même manière à toutes les longueurs d’onde (et donc aux couleurs). Les lumières bleues seront par exemple moins efficaces que des lumières jaunes / vertes.
Je vous invite à faire un tour sur la page wikipedia qui explique ce que sont les Lux. On notera notamment ce tableau de valeur indicative :
Activité ou lieu concerné | Éclairement moyen |
---|---|
Sensibilité d’une caméra de bas niveau | 0,001 lux |
Nuit de pleine lune | 0,5 lux |
Rue de nuit bien éclairée | 20 à 70 lux |
Local de vie | 100 à 200 lux |
Appartement bien éclairé | 200 à 400 lux |
Local de travail | 200 à 3 000 lux |
Stade de nuit (suivant les différentes catégories (E1,E2,E3,E4,E5)) | 150 à 1 500 lux |
Extérieur par ciel couvert | 500 à 25 000 lux |
Extérieur en plein soleil | 50 000 à 100 000 lux |
Le montage
Vu le peu de composants, vous allez voir, le montage est extrêmement complexe !
Hop, finger in ze noze comme on dit !
Le code
On va, comme souvent, se baser sur un code fournit par Adafruit.
/* Photocell simple testing sketch. Connect one end of the photocell to 5V, the other end to Analog 0. Then connect one end of a 10K resistor from Analog 0 to ground For more information see http://learn.adafruit.com/photocells */ int photocellPin = 0; // the cell and 10K pulldown are connected to a0 int photocellReading; // the analog reading from the analog resistor divider void setup(void) { // We'll send debugging information via the Serial monitor Serial.begin(9600); } void loop(void) { photocellReading = analogRead(photocellPin); Serial.print("Analog reading = "); Serial.print(photocellReading); // the raw analog reading // We'll have a few threshholds, qualitatively determined if (photocellReading < 10) { Serial.println(" - Noir"); } else if (photocellReading < 200) { Serial.println(" - Sombre"); } else if (photocellReading < 500) { Serial.println(" - Lumiere"); } else if (photocellReading < 800) { Serial.println(" - Lumineux"); } else { Serial.println(" - Tres lumineux"); } delay(5000); }
Voila pour le code.
Dans le cas d’une utilisation plus poussée au sein d’un montage plus complexe, on se contentera évidemment de lire le pin analog sans afficher d’info.
Idées d’utilisations
Voici plusieurs exemple d’utilisation de ce capteur.
- Contrôle de la lumière : éteindre automatiquement la lumière d’une pièce grâce à un relais contrôlant l’arrivé de courant de la lampe. Lorsque la lumière est forte, on envoi alors un signal au relai pour qu’il se ferme ou reste fermé, inversement, quand il fait sombre, il déclenche l’allumage de la lumière. Si on rajoute à cela un capteur de mouvement ou de présence, cela permet de gérer plus finement le fonctionnement. Le must : mettre cela en place pour une serre, afin de diffuser de la lumière en permanence sur ses plants.
- Robot suiveur de lumière : un robot (de ce type par exemple), qui va se diriger vers la source la plus lumineuse, assez fun à utiliser.
- Station météo : ce genre de petit composant peu chère a tout à fait sa place au sein d’une station météo.
Et évidemment, bien d’autres applications auxquelles je n’ai pas encore pensé.
Personnellement, je compte utiliser de tels capteurs au sein de Ydle, pour pouvoir créer des scénarios d’allumage / extinction de pièces.
Laisser un commentaire