Code Arduino et vidéo pour un module capteur de lumière avec relais
Dans ce tutoriel, nous apprendrons comment utiliser un module capteur de lumière pour contrôler une lampe en courant alternatif (AC). Le projet permettra à la lampe de s'allumer automatiquement lorsqu'il fait sombre et de s'éteindre lorsqu'il fait jour. Cela est particulièrement utile pour des applications telles que l'éclairage extérieur ou l'éclairage de garage. À la fin de ce tutoriel, vous disposerez d'un système fonctionnel capable de gérer efficacement l'éclairage en fonction des conditions ambiantes. (dans la vidéo à 02:15)

Nous allons utiliser un module capteur de lumière, qui comprend une photorésistance (LDR) pour détecter les niveaux de lumière, et un relais pour commander la lampe en courant alternatif. Le système incorporera également un potentiomètre pour ajuster la sensibilité de la détection lumineuse. Cette configuration permet un contrôle à la fois numérique et analogique de la lumière en fonction de la luminosité ambiante détectée par le capteur. Pour des précisions détaillées, référez-vous à la vidéo à 04:30.
Le matériel expliqué
Les composants principaux de ce montage sont le module capteur de lumière, le relais et l'Arduino. Le module capteur de lumière se compose d'une LDR (résistance dépendante de la lumière) qui modifie sa résistance en fonction de l'intensité lumineuse, fournissant une sortie numérique ou analogique. Le relais agit comme un interrupteur pouvant commander une lampe à haute tension en courant alternatif tout en étant piloté en toute sécurité par l'Arduino à basse tension. Cette séparation est cruciale pour la sécurité et le fonctionnement.
Le relais possède trois broches principales : commune (COM), normalement ouverte (NO) et normalement fermée (NC). Lorsqu'il est activé, le relais relie la broche commune à la broche normalement ouverte, permettant au courant de circuler à travers la lampe connectée. Ce mécanisme permet au relais de contrôler la lampe en fonction des signaux reçus de l'Arduino.
Détails de la fiche technique
| Fabricant | Générique |
|---|---|
| Numéro de pièce | Module capteur de lumière |
| Tension logique/E/S | 5 V |
| Tension d'alimentation | 5 V |
| Courant de sortie (par canal) | 10 mA |
| Courant de crête (par canal) | 20 mA |
| Recommandations sur la fréquence PWM | Sans objet |
| Seuils logiques d'entrée | 2.5 V (haut) / 0.8 V (bas) |
| Chute de tension / RDS(on)/ saturation | 0.2 V typique |
| Limites thermiques | 85 °C |
| Paquet | Module |
| Notes / variantes | Comprend un potentiomètre pour le réglage de la sensibilité |
- Assurez une dissipation thermique adéquate pour le relais.
- Utilisez une résistance pull-up pour l'entrée du capteur de lumière.
- Vérifiez les tensions nominales avant de connecter des appareils en courant alternatif.
- Évitez de toucher les fils exposés lorsque le système est sous tension.
- Ajustez le potentiomètre pour obtenir la sensibilité à la lumière souhaitée.
Instructions de câblage

Pour câbler le module capteur de lumière et le relais à l'Arduino, commencez par connecter la broche VCC du module capteur de lumière à la broche 5V de l'Arduino. Ensuite, connectez la broche de masse (GND) du capteur de lumière à une broche GND de l'Arduino. La broche de sortie numérique du capteur de lumière doit être connectée à la broche 2 de l'Arduino, tandis que la broche de sortie analogique se connecte à A0 pour les lectures analogiques.
Maintenant, pour le relais, connectez sa broche VCC à la broche 5V de l'Arduino et sa broche de masse à GND. La broche d'entrée du relais doit être connectée à la broche 9 de l'Arduino. Enfin, connectez un fil de votre lampe en courant alternatif à la borne commune (COM) du relais et l'autre fil à la borne normalement ouverte (NO). Ce montage permettra au relais de contrôler la lampe en courant alternatif en fonction des mesures du capteur de lumière.
Exemples de code et guide pas à pas
Dans le code numérique de base pour le capteur de lumière, nous définissons les broches pour le capteur et le relais. La fonction setup initialise la communication série et définit les modes des broches :

#define LIGHT 2 // define pin 2 for sensor
#define RELAY 9 // define pin 9 as for relay
void setup() {
Serial.begin(9600); // setup Serial Monitor
pinMode(LIGHT, INPUT_PULLUP); // define pin as Input sensor
pinMode(RELAY, OUTPUT); // define pin as OUTPUT for relay
}
Ce code configure la broche 2 en entrée pour lire le capteur de lumière et la broche 9 en sortie pour commander le relais. Le moniteur série est également initialisé pour fournir un retour sur l'état de la lumière.
Dans la fonction loop, nous lisons en continu l'état du capteur :
int L = digitalRead(LIGHT); // read the sensor
if (L == 1) {
Serial.println(" light is ON");
digitalWrite(RELAY, LOW); // turn the relay ON
} else {
Serial.println(" === light is OFF");
digitalWrite(RELAY, HIGH); // turn the relay OFF
}
Cette logique vérifie l'état du capteur de lumière et active ou désactive le relais en conséquence, fournissant des informations via le moniteur série.
Dans le code analogique avancé, nous incorporons une méthode pour lire les valeurs de la sortie analogique :
if (digital == true) {
int L = digitalRead(LIGHT); // read the sensor
if (L == 1) {
Serial.println(" light is ON");
digitalWrite(RELAY, LOW); // turn the relay ON
} else {
Serial.println(" === light is OFF");
digitalWrite(RELAY, HIGH); // turn the relay OFF
}
} else {
int a0Value = analogRead(A0); // read A0 value
if (a0Value >= LightValue) {
Serial.print(analogRead(A0));
Serial.println(" Light is ON");
digitalWrite(RELAY, LOW); // turn the relay ON
} else {
Serial.print(analogRead(A0));
Serial.println(" === light OFF");
digitalWrite(RELAY, HIGH); // turn the relay OFF
}
}
Cette section permet d'ajuster la sensibilité en fonction de la lecture analogique du capteur de lumière, offrant davantage de contrôle sur les seuils d'activation de l'éclairage.
Démonstration / À quoi s'attendre
Une fois l'installation terminée et sous tension, la lumière devrait s'allumer en cas de faible luminosité et s'éteindre en cas de forte luminosité. Vous pouvez tester le système en couvrant le capteur de lumière pour simuler l'obscurité et en observant l'activation du relais. Si la configuration est correcte, le moniteur série affichera "light is ON" ou "light is OFF" en fonction des relevés du capteur. Faites attention à ne pas inverser la polarité lors du branchement de la lampe en courant alternatif, car cela peut provoquer des dysfonctionnements ou des risques pour la sécurité (dans la vidéo à 10:00).
Horodatages vidéo
- 00:00Introduction au projet
- 02:15Vue d'ensemble des composants et du câblage
- 04:30Explication du code
- 10:00Démonstration de la fonctionnalité
++
/*
* This is the Arduino code for the Light module for Arduino (basic).
This video shows you how to turn an AC light ON during the night using a light sensor
and turn it OFF during the day. This code is a basic version where
the digital output of the module is used.
// Written for Robojax.com video
* Watch the HC-SR505 Motion Sensor video for details https://youtu.be/qhThpxiXubI
* Code is available at http://robojax.com/learn/arduino
*
// Written by Ahmad S. for Robojax.com on
// February 10, 2018 at 13:43 in Ajax, Ontario, Canada
*/
#define LIGHT 2 // define pin 2 for sensor
#define RELAY 9 // define pin 9 as for relay
/*
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
void setup() {
// Light LDR Sensor Code by Robojax.com 20180210
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(LIGHT, INPUT_PULLUP);// define pin as Input sensor
pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}
void loop() {
// Light LDR Sensor Code by Robojax.com 20180210
int L =digitalRead(LIGHT);// read the sensor
if(L == 1){
Serial.println(" light is ON");
digitalWrite(RELAY,LOW);// turn the relay ON
}else{
Serial.println(" === light is OFF");
digitalWrite(RELAY,HIGH);// turn the relay OFF
}
delay(500);
// Light LDR Sensor Code by Robojax.com 20180210
}
/*
Light Sensor module for Arduino (Advanced: analog)
This video shows you how to turn an AC light ON during the night using
a light sensor and turn it OFF during the day.
This code is to control a light either digitally and control
the sensitivity with the potentiometer on the module.
You can control the light using an analog value from pin A0
and set your own sensitivity. Make sure you turn the
potentiometer to the maximum value and set digital=false.
// Written for Robojax.com video
* Watch Light Sensor video https://youtu.be/CyDAWcY8_5w
* Code is available at http://robojax.com/learn/arduino
*
*/
#define LIGHT 2 // define pin 2 for sensor
#define RELAY 9 // define pin 9 as for relay
/*
*
// Written by Ahmad S. for Robojax.com on
// February 10, 2018 at 13:43 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
// LDR, Light Dependant Resistor
boolean digital = false;// set true to use digital and control the sensitivity with potentiometer on the module
// set to false to control with A0 value on Arduino
unsigned int LightValue = 350;// LightValue to determine
// at what value the relay should be ON
void setup() {
// Light LDR Sensor Code by Robojax.com 20180210
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(LIGHT, INPUT_PULLUP);// define pin as Input sensor
pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}
void loop() {
delay(500);
relay();// call the relay() method
// Light LDR Sensor Code by Robojax.com 20180210
}
void relay()
{
if(digital == true)
{
// Light LDR Sensor Code by Robojax.com 20180210
int L =digitalRead(LIGHT);// read the sensor
if(L == 1){
Serial.println(" light is ON");
digitalWrite(RELAY,LOW);// turn the relay ON
}else{
Serial.println(" === light is OFF");
digitalWrite(RELAY,HIGH);// turn the relay OFF
} // if
}// if digital end
else
{
int a0Value = analogRead(A0);// read A0 value
if( a0Value >= LightValue){
Serial.print(analogRead(A0));
Serial.println(" Light is ON");
digitalWrite(RELAY,LOW);// turn the relay ON
}else{
Serial.print(analogRead(A0));
Serial.println(" === light OFF");
digitalWrite(RELAY,HIGH);// turn the relay OFF
} // if
}
}
Ce dont vous pourriez avoir besoin
-
Amazon
Ressources et références
Aucune ressource pour le moment.
Fichiers📁
Fichier Fritzing
-
Module de capteur de lumière LDR noir
LDR_module_black.fzpz0.01 MB