Cod Arduino și Video pentru un Modul de Senzor de Lumină cu Releu
În acest tutorial, vom învăța cum să folosim un modul senzor de lumină pentru a controla o lampă de curent alternativ (AC). Proiectul va permite lămpii să se aprindă automat când este întuneric și să se stingă când devine luminos. Acest lucru este util în special pentru aplicații precum iluminatul exterior sau luminile din garaj. La finalul acestui tutorial, veți avea un sistem funcțional care poate gestiona eficient lumina pe baza condițiilor ambientale. (în videoclip la 02:15)

Vom folosi un modul senzor de lumină, care include un rezistor dependent de lumină (LDR) pentru detectarea nivelurilor de lumină, și un releu pentru a controla lampa AC. Sistemul va include, de asemenea, un potențiometru pentru a regla sensibilitatea detectării luminii. Această configurație permite atât control digital, cât și analog al lămpii pe baza luminii ambientale detectate de senzor. Pentru clarificări detaliate, consultați videoclipul la 04:30.
Hardware Explicat
Componentele principale ale acestei construcții sunt modulul senzor de lumină, releul și Arduino. Modulul senzor de lumină constă dintr-un LDR care își schimbă rezistența în funcție de intensitatea luminii, oferind o ieșire digitală sau analogică. Releul acționează ca un comutator care poate controla o lampă AC de înaltă tensiune, fiind operat în siguranță de Arduino la tensiune joasă. Această separare este crucială pentru siguranță și funcționalitate.
Releul are trei pini principali: comun (COM), normal deschis (NO) și normal închis (NC). Când este activat, releul conectează pinul comun la pinul normal deschis, permițând curentului să circule prin lampa conectată. Acest mecanism permite releului să controleze lampa pe baza semnalelor primite de la Arduino.
Detalii din Fișa Tehnică
| Producător | Generic |
|---|---|
| Număr de piesă | Modul Senzor de Lumină |
| Tensiune logică/IO | 5 V |
| Tensiune de alimentare | 5 V |
| Curent de ieșire (pe canal) | 10 mA |
| Curent de vârf (pe canal) | 20 mA |
| Ghid frecvență PWM | N/A |
| Praguri logice de intrare | 2,5 V (ridicat) / 0,8 V (scăzut) |
| Cădere de tensiune / RDS(on) / saturație | 0,2 V tipic |
| Limite termice | 85 °C |
| Pachet | Modul |
| Note / variante | Include potențiometru pentru reglarea sensibilității |
- Asigurați o disipare adecvată a căldurii pentru releu.
- Folosiți un rezistor de pull-up pentru intrarea senzorului de lumină.
- Verificați valorile tensiunii înainte de a conecta dispozitive AC.
- Evitați atingerea firelor expuse când sistemul este alimentat.
- Reglați potențiometrul pentru sensibilitatea dorită a luminii.
Instrucțiuni de Cablare

Pentru a cabla modulul senzor de lumină și releul la Arduino, începeți prin conectarea pinului VCC al modulului senzor de lumină la pinul 5V de pe Arduino. Apoi, conectați pinul de masă al senzorului de lumină la un pin GND de pe Arduino. Pinul de ieșire digitală al senzorului de lumină ar trebui conectat la pinul 2 de pe Arduino, în timp ce pinul de ieșire analogică se conectează la A0 pentru citiri analogice.
Acum, pentru releu, conectați pinul său VCC la pinul 5V de pe Arduino și pinul său de masă la GND. Pinul de intrare al releului ar trebui conectat la pinul 9 de pe Arduino. În final, conectați un fir al lămpii AC la pinul comun (COM) al releului și celălalt fir la pinul normal deschis (NO). Această configurație va permite releului să controleze lampa AC pe baza citirilor de la senzorul de lumină.

Exemple de Cod & Explicații
În codul digital de bază pentru senzorul de lumină, definim pinii pentru senzor și releu. Funcția setup inițializează comunicarea serială și setează modurile pinilor:
#define LIGHT 2 // definește pinul 2 pentru senzor
#define RELAY 9 // definește pinul 9 pentru releu
void setup() {
Serial.begin(9600); // configurează Monitorul Serial
pinMode(LIGHT, INPUT_PULLUP); // definește pinul ca intrare senzor
pinMode(RELAY, OUTPUT); // definește pinul ca IEȘIRE pentru releu
}
Acest cod configurează pinul 2 ca intrare pentru citirea senzorului de lumină și pinul 9 ca ieșire pentru controlul releului. Monitorul serial este, de asemenea, inițializat pentru a oferi feedback despre starea luminii.
În interiorul funcției loop, citim continuu starea senzorului:
int L = digitalRead(LIGHT); // citește senzorul
if (L == 1) {
Serial.println(" lumina este APRINSĂ");
digitalWrite(RELAY, LOW); // pornește releul
} else {
Serial.println(" === lumina este STINSĂ");
digitalWrite(RELAY, HIGH); // oprește releul
}
Această logică verifică starea senzorului de lumină și pornește sau oprește releul în consecință, oferind feedback prin monitorul serial.
În codul analogic avansat, încorporăm o metodă pentru a citi valori de la ieșirea analogică:
if (digital == true) {
int L = digitalRead(LIGHT); // citește senzorul
if (L == 1) {
Serial.println(" lumina este APRINSĂ");
digitalWrite(RELAY, LOW); // pornește releul
} else {
Serial.println(" === lumina este STINSĂ");
digitalWrite(RELAY, HIGH); // oprește releul
}
} else {
int a0Value = analogRead(A0); // citește valoarea A0
if (a0Value >= LightValue) {
Serial.print(analogRead(A0));
Serial.println(" Lumina este APRINSĂ");
digitalWrite(RELAY, LOW); // pornește releul
} else {
Serial.print(analogRead(A0));
Serial.println(" === lumina STINSĂ");
digitalWrite(RELAY, HIGH); // oprește releul
}
}
Această secțiune permite ajustarea sensibilității pe baza citirii analogice de la senzorul de lumină, oferind un control mai bun asupra pragurilor de activare a luminii.
Demonstrație / Ce să te aștepți
Când configurația este finalizată și alimentată, lumina ar trebui să se aprindă în condiții de lumină scăzută și să se stingă în condiții de lumină puternică. Poți testa sistemul acoperind senzorul de lumină pentru a simula întunericul și observând activarea releului. Dacă este configurat corect, monitorul serial va afișa „lumina este APRINSĂ” sau „lumina este STINSĂ” pe baza citirilor senzorului. Fii atent la inversarea polarității atunci când conectezi lumina de curent alternativ, deoarece aceasta poate cauza defecțiuni sau pericole de siguranță (în videoclip la 10:00).
Marcaje temporale din videoclip
- 00:00 Introducere în proiect
- 02:15 Prezentare generală a componentelor și a cablajului
- 04:30 Explicația codului
- 10:00 Demonstrarea funcționalității
++
/*
* 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
}
}
Lucruri de care ai putea avea nevoie
-
Amazon
Resurse și referințe
Încă nu sunt resurse.
Fișiere📁
Fișier Fritzing
-
LDR light sensor module black
LDR_module_black.fzpz0.01 MB