Arduino-code en video voor een lichtsensormodule met relais
In deze tutorial leren we hoe we een lichtsensormodule kunnen gebruiken om een AC-lamp te bedienen. Het project zorgt ervoor dat de lamp automatisch aangaat wanneer het donker is en uitgaat wanneer het licht wordt. Dit is vooral handig voor toepassingen zoals buitenverlichting of garagelampen. Aan het einde van deze tutorial heb je een werkend systeem dat effectief licht kan beheren op basis van de omgevingsomstandigheden. (in video op 02:15)

We gebruiken een lichtsensormodule, die een lichtafhankelijke weerstand (LDR) bevat voor het detecteren van lichtniveaus, en een relais om de AC-lamp te bedienen. Het systeem bevat ook een potentiometer om de gevoeligheid van de lichtdetectie aan te passen. Deze opstelling maakt zowel digitale als analoge bediening van het licht mogelijk op basis van het omgevingslicht dat door de sensor wordt gedetecteerd. Voor gedetailleerde uitleg, raadpleeg de video op 04:30.
Hardware Uitgelegd
De belangrijkste componenten van deze build zijn de lichtsensormodule, het relais en de Arduino. De lichtsensormodule bestaat uit een LDR die van weerstand verandert op basis van lichtintensiteit en een digitale of analoge uitgang biedt. Het relais fungeert als een schakelaar die een hoogspannings-AC-lamp kan bedienen terwijl het veilig wordt aangestuurd door de laagspannings-Arduino. Deze scheiding is cruciaal voor veiligheid en functionaliteit.
Het relais heeft drie primaire pinnen: gemeenschappelijk (COM), normaal open (NO) en normaal gesloten (NC). Wanneer geactiveerd, verbindt het relais de gemeenschappelijke pin met de normaal open pin, waardoor stroom door de aangesloten lamp kan stromen. Dit mechanisme stelt het relais in staat om de lamp te bedienen op basis van de signalen die van de Arduino worden ontvangen.
Datasheet Details
| Fabrikant | Generiek |
|---|---|
| Onderdeelnummer | Lichtsensormodule |
| Logica/IO-spanning | 5 V |
| Voedingsspanning | 5 V |
| Uitgangsstroom (per kanaal) | 10 mA |
| Piekstroom (per kanaal) | 20 mA |
| PWM-frequentierichtlijn | N/A |
| Ingangslogische drempels | 2,5 V (hoog) / 0,8 V (laag) |
| Spanningsval / RDS(on) / verzadiging | 0,2 V typisch |
| Thermische limieten | 85 °C |
| Behuizing | Module |
| Opmerkingen / varianten | Bevat potentiometer voor gevoeligheidsaanpassing |
- Zorg voor goede warmteafvoer voor het relais.
- Gebruik een pull-up weerstand voor de lichtsensor-ingang.
- Controleer spanningswaarden voordat u AC-apparaten aansluit.
- Vermijd het aanraken van blootliggende draden wanneer het systeem is ingeschakeld.
- Pas de potentiometer aan voor de gewenste lichtgevoeligheid.
Bedradingsinstructies

Om de lichtsensormodule en het relais op de Arduino aan te sluiten, begin met het verbinden van de VCC-pin van de lichtsensormodule met de 5V-pin op de Arduino. Verbind vervolgens de aardingspin van de lichtsensor met een GND-pin op de Arduino. De digitale uitgangspin van de lichtsensor moet worden verbonden met pin 2 op de Arduino, terwijl de analoge uitgangspin wordt verbonden met A0 voor analoge metingen.
Nu, voor het relais, verbind de VCC-pin met de 5V-pin op de Arduino en de aardingspin met GND. De ingangspin van het relais moet worden verbonden met pin 9 op de Arduino. Verbind ten slotte één draad van uw AC-lamp met de gemeenschappelijke pin (COM) van het relais en de andere draad met de normaal open pin (NO). Deze opstelling stelt het relais in staat om de AC-lamp te bedienen op basis van de metingen van de lichtsensor.

Codevoorbeelden & Uitleg
In de basis digitale code voor de lichtsensor definiëren we de pinnen voor de sensor en het relais. De setup-functie initialiseert de seriële communicatie en stelt de pinmodi in:
#define LIGHT 2 // definieer pin 2 voor sensor
#define RELAY 9 // definieer pin 9 voor relais
void setup() {
Serial.begin(9600); // setup Seriële Monitor
pinMode(LIGHT, INPUT_PULLUP); // definieer pin als ingangssensor
pinMode(RELAY, OUTPUT); // definieer pin als UITGANG voor relais
}
Deze code stelt pin 2 in als ingang voor het lezen van de lichtsensor en pin 9 als uitgang om het relais te bedienen. De seriële monitor wordt ook geïnitialiseerd om feedback te geven over de lichtstatus.
Binnen de loop-functie lezen we continu de sensortoestand:
int L = digitalRead(LIGHT); // lees de sensor
if (L == 1) {
Serial.println(" licht is AAN");
digitalWrite(RELAY, LOW); // zet het relais AAN
} else {
Serial.println(" === licht is UIT");
digitalWrite(RELAY, HIGH); // zet het relais UIT
}
Deze logica controleert de toestand van de lichtsensor en zet het relais dienovereenkomstig aan of uit, met feedback via de seriële monitor.
In de geavanceerde analoge code integreren we een methode om waarden van de analoge uitgang te lezen:
if (digital == true) {
int L = digitalRead(LIGHT); // lees de sensor
if (L == 1) {
Serial.println(" licht is AAN");
digitalWrite(RELAY, LOW); // zet het relais AAN
} else {
Serial.println(" === licht is UIT");
digitalWrite(RELAY, HIGH); // zet het relais UIT
}
} else {
int a0Value = analogRead(A0); // lees A0-waarde
if (a0Value >= LightValue) {
Serial.print(analogRead(A0));
Serial.println(" Licht is AAN");
digitalWrite(RELAY, LOW); // zet het relais AAN
} else {
Serial.print(analogRead(A0));
Serial.println(" === licht UIT");
digitalWrite(RELAY, HIGH); // zet het relais UIT
}
}
Deze sectie maakt het mogelijk om de gevoeligheid aan te passen op basis van de analoge uitlezing van de lichtsensor, wat meer controle biedt over de drempelwaarden voor het activeren van het licht.
Demonstratie / Wat te Verwachten
Wanneer de opstelling compleet is en ingeschakeld, zou het licht moeten aangaan bij weinig licht en uitgaan bij heldere omstandigheden. Je kunt het systeem testen door de lichtsensor af te dekken om duisternis te simuleren en de relaisactivering te observeren. Indien correct geconfigureerd, zal de seriële monitor "light is ON" of "light is OFF" weergeven op basis van de sensoruitlezingen. Wees voorzichtig met het omkeren van de polariteit bij het aansluiten van het AC-licht, aangezien dit storingen of veiligheidsrisico's kan veroorzaken (in video op 10:00).
Videotijdstempels
- 00:00 Introductie tot het project
- 02:15 Overzicht van componenten en bedrading
- 04:30 Uitleg van de code
- 10:00 Demonstratie van de functionaliteit
++
/*
* 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
}
}
Dingen die je misschien nodig hebt
-
Amazon
Hulpmiddelen en referenties
Nog geen middelen.
Bestanden📁
Fritzing-bestand
-
LDR light sensor module black
LDR_module_black.fzpz0.01 MB